モデルの当たり判定

[最終更新日:2019/01/18]

 

モデル自体には当たり判定を行う機能はありませんが、

アートメッシュの頂点情報を取得できることを利用して当たり判定処理を実装することができます。

ここで述べる”当たり判定”とは、

画面上の指定のポイントに対象のメッシュがあるかどうかのテストのことを指します。

 

 

当たり判定の用意

当たり判定にはアートメッシュを利用します。
Editor上での当たり判定用のアートメッシュの用意は「Editor上での当たり判定の設定」を確認してください。
当たり判定を用意した後、Cubism3 Viewer (for OW)の機能で当たり判定を設定して.model3.jsonファイルに組み込む必要があります。

Cubism3 Viewer (for OW)上で当たり判定を設定して出力すると、.model3.jsonファイルには以下のように記述されます。

 

 

Cubism3 Viewer (for OW)ではHitArea~とIDが設定されたアートメッシュしか登録できませんが、
.model3.jsonファイルをテキストエディタで直接加工すればHitArea~以外のアートメッシュでも当たり判定に設定できます。

当たり判定を行う

当たり判定にはNative(C++)のCubismUserModel::IsHit関数、またはWeb(TypeScript)のCubismUserModel.isHit関数が利用できます。
第一引数で対象のdrawableのID、第二、第三引数で検査する描画上のX、Yの値を指定します。

 

 

当たり判定の内容と注意点

当たり判定はアートメッシュの頂点をすべて走査し、頂点のXY座標の最大、最小値から矩形の範囲を作り、
検査対象の画面座標をモデルの変換行列から逆変換し、矩形に収まっているか確認する仕組みです。
この関数をつかう場合、以下の点に注意が必要です。

・モデルの変換座標に回転が入ると正しく変換されない。

・四角形に近いアートメッシュが回転デフォーマなどで回転すると大きくサイズが変わる。

Copyright © 2019 Live2D Inc.