Enhanced EyePointer Installer

収録パッケージ: kb10uy’s Various Tools / org.kb10uy.zatools

2024-09-03 以降はAutomatic EyePointer Installer ではなくこちらをご利用ください。

概要

Siromori 氏の Eye Pointer のセットアップを自動化するスクリプトです。 Constraint の挿入などをアバターのビルド時に自動で実行します。

使い方

Eye Pointer のプレハブをアバターに追加したあと、その GameObject に KusakaFactory/Enhanced EyePointer Installer を追加します。

Component View Component View

  • VRC Constraint を使ってセットアップする: Unity の Aim Constraint ではなく VRC Aim Constraint を目のボーンに設定します。Eye Pointer が v1.2 以降である必要があります。
  • ダミーボーンを挿入する: 元の目のボーンの上に DummyEye_L/R を挿入します。元の目のボーンの角度が (0, 0, 0) から大きく離れている場合に有効です。
  • 最適化された FX Layer を生成する: 現在この機能は開発中です。

現状では両方のチェックボックスを有効にするのをおすすめします。

v1.4.2 以降Eye Pointer のプレハブの配置場所はアバタールートの直下である必要はありません。 ビルド時に自動でアバタールートの直下に移動されます。

Eye ボーンの判定方法

以下の順序で判定されます。

  1. Avatar Descriptor の Eye Look が有効な場合、その設定の Left EyeRight Eye を参照します。
  2. Avatar Descriptor の Eye Look が無効な場合、アバタールートの Animator にセットされている Avatar アセット1に記録されているボーンの対応付けのうち、 Left Eye と Right Eye の値を参照します。
  3. いずれにもない場合、Enhanced EyePointer Installer は何もしません。

MA Merge Armature と併用する際の注意点

MA Merge Armature を利用して Unity 上で別アバターの頭部を合成するといった構成では、 Eye Look の設定には身体側2のボーンを設定する必要があります。 頭部側の Eye ボーンを設定した場合、Merge Armature によってそのボーンが消滅し上記の参照先の検索に失敗してしまいます。

Enhanced EyePointer Installer は処理中に Eye ボーンの Transform 値を操作しますが、 MA の処理の一部でボーンの参照先を修正する3際に Transform 値が操作する前の値に戻ってしまいます4(Unity が悪い)。 なお現在はボーンの参照先を修正する前の値に再設定する処理が追加されている5ためこの問題は発生しません。

既知の問題

(v1.2.1) EyePointer v1.2 でダミーボーンを挿入するとフルトラキャリブレーション時に Constraint が意図しない挙動をすることが確認されています。また、他のプレイヤーからも同様に正面ではない(無効化されていない)状態で見えることがあります。

上記の現象は Avatar Descriptor の Eye Look の設定に起因します。 詳しくはIssue #16 のコメントを参照してください。 v1.4.1 以降はこの場合無意味な GameObject を追加し Eye Look をそれに対して有効化します。


  1. 紛らわしいですが、Humanoid リグの FBX ファイルをインポートした後に Jaw を外したり Force T-pose したりするアレです。 ↩︎

  2. 厳密には Merge Armature で統合先に指定されている、最終的に残る方の Armature に含まれる Eye ボーン ↩︎

  3. キメラアバターでビルド後Validation時にエラーになることがある。 ↩︎

  4. Avatar にバインドされる Humanoid ボーンの Transform に対する操作が Rebind humanoid avatar パスで破棄される ↩︎

  5. Preserve local transform when rebinding humanoid avatar ↩︎