3DCG

VRMモデルの視線が動かない原因

unity vrm 視線制御

2年くらいかけて作っている、PlayAniMaker用のミクモデルの設定がとりあえず終わりました。

まだ問題はあるものの、ひとまずVRoidのモデルをBlenderで編集し、書き出したFBXをVRMモデルにする手順が理解できた感じです。

そこで、FBXをVRMするにあたって、自分がハマった事などをブログに書き残しておこうと思います。

ということで、今回は視線制御のトラブルについてです。

VRMモデルで視線が動かない!

無事にFBXをVRMにできたのですが、視線制御が効かないという問題に直面。

結論から言うと、原因はUnityでのHumanoidのボーン の割り当てで間違ってました(汗)

Unity上では、モデルを読み込めば、ボーンは自動的に割り当ててくれるのですね。

unity

視線制御ができない原因

で、問題は「Head」の部分です。

自動的に読み込まれた状態では、目のボーンは「J_Adj_L_FaceEyeSet」と「J_Adj_R_FaceEyeSet」(VRoidのボーン名のまま)が割り当てられます。

unity vrm 視線制御 6 2021 9 47 53 PM

これが間違いなので、それぞれを「J_Adj_L_FaceEye」と「J_Adj_R_FaceEye」に割り当て直します。

unity vrm 視線制御

これだけです。初歩的な事ではあるのですが、自分のような初心者はハマりやすいので、注意してください。

 
ちなみに、VRMで視線制御する方法は、以下の3種類があります。

  • Bone:eye ボーンが回転するタイプ
  • BlendShape:BlendShapeの頂点移動で制御するタイプ
  • TextureUV:目のテクスチャの UV Offset で制御するタイプ
LookAt
VRMでは頭から目標(注視点)への相対的な回転(Yaw, Pitch)を得て、 目に適用できます。 VRMLookAtHead + VRMLookAtBoneApplyer または VRMLookAtBlendShapeApplyer の2つのコンポーネントで設定しま

よって、視線が動かない原因は ボーンの割り当てが原因とは限らないです。

けど、自分が使ってるPlayAniMakerの視線制御はボーン回転タイプです。なので、VRM Look At Bone Applyerで制御範囲を設定します。

unity vrm 視線制御

LookAt(Bone)
VRMLookAtHead + VRMLookAtBoneApplyer の2つのコンポーネントを組み合わせます。 ボーン制御の視線: VRMLookAtBoneApplyer VRMLookAtBoneApplyer VRMLookAtHeadの計算した視線方向のパラメーターをEyeBon

もし、PlayAniMakerで視線を動かそうとすると目の周りが動く場合は、先述のように「J_Adj_L_FaceEyeSet」が割り当てられてますので、それを修正してください。

【著者:Mitchie M @_MitchieM

コメント

タイトルとURLをコピーしました