VRMFirstPerson

2018-04-16 16:30:00 +0900 +0900
最終更新 2020/09/15: tags(unity, detail, api, gltf...) (cdaf1eb)

2系統の設定があります。

  • VRMモデル内で、VRヘッドセット位置を指定する
  • VRで、メッシュごとにカメラの可視設定を分ける

※ アプリケーション側でこれらのパラメーターを使っている場合のみ有効です

ヘッドセットの位置指定

ヘッドの動きの頭部への反映を微調整できます。

FirstPersonBone

通常頭ボーンを指定します。 一人称時にヘッドセットに追随させるボーンです。

FirstPersonOffset

追随する位置をFirstPersonBoneの位置からオフセットします。 デフォルト値[0, 0.06, 0]は、Headから両目の間へのオフセットを想定しています。

VRの可視設定

VRアプリでの可視設定です。 VRアプリでは2種類のカメラが想定されます。

  • 一人称(HMDにレンダリングされる)
  • 三人称(HMD以外。配信用、鏡、マルチユーザーの他のユーザーのHMD)

です。 このとき、一人称で普通に自身のモデルがすべて見えると不都合があります。

  • 近平面で自分の輪切りが見える
  • 髪が邪魔で何も見えない
  • 自分モデルの頭部の中身が見えてしまう(歯とか)

など。 これらの自体に対処するために、メッシュ毎に2種類のカメラに対する可視性を設定できます。

設定一人称カメラ三人称カメラ備考
Both体、手、足など頭部から遠い部位を指する
FirstPersonOnly使わない?
ThirdPersonOnly外部カメラしか見えない。頭部、髪、帽子などを指定する
Auto後述後述デフォルト

設定のリセット

FirstPerson は、最初に自動で Auto の設定になるようになっています。 Mesh が増減するなどでモデルの構成が変わった場合に、参照が Missing になるなどエクスポートできない状態になる場合があります。 VRMFirstPerson をリセットすることで再設定することができます。 リセットする方法は、

VRM First Person(Script) インスペクタの右上角の 歯車アイコン ⚙ で表示されるメニューから Reset を選択してください。

firstperson reset

Auto による Both と ThirdPersonOnly への自動分割

設定をAutoにしておくと、ロード時にメッシュを自動で BothThirdPersonOnly に分離することを指示できます。 UniVRMでは VRMFirstPerson.Setup() を呼び出します。 Autoによる自動分割は、重めの処理になります。

分割基準は、

  • 含まれる頂点が headhead の子孫の weight を持っているか否か

です。 すべて同じ側の場合は分割せずに、BothThirdPersonOnly として扱います。

推奨される構成

あらかじめ、頭と体にモデルを分割しておき

  • 頭に ThirdPersonOnly を指定
  • 体に Both を指定
立体ちゃんは頭とそれ以外が分かれているので体をBoth、頭をThirdPersonOnlyに設定します。
firstperson
動作例。ThirdPersonOnlyに設定したメッシュがFirstPersonで非表示になりました。

VRM - humanoid 3d avatar format for VR