-
-
Notifications
You must be signed in to change notification settings - Fork 23
【アーカイブ】変換の詳細仕様
100の人 edited this page Jul 12, 2022
·
2 revisions
- すべてのメッシュを一つのオブジェクトへ結合し、・同一のマテリアルを持つサブメッシュも一つのサブメッシュとして結合します。
- 負荷軽減のため。
- ライトの当たり方によるポリゴンの色合いのズレを防止するため。
- カリングにより一部ポリゴンが消えるのを防止するため。
- シェイプキーを含むポリゴンを分離しなければglTFファイルが肥大化するため、VRChat向けに変換する時点で結合する必要があるため。
- 結合を行わない場合の挙動は未定義です。
カスタムアニメーションオーバーライドでPRONEIDLE、PRONEFWDを割り当て、それぞれのアニメーションのHipsボーンのPosition.zへ、次の値を設定します。
−[(HipsボーンのY座標 − 視点のY座標) − (HipsボーンのX座標 − 視点のX座標)]
- RightEye/LeftEyeボーンのウェイトを、メッシュの頂点ごとに次のように変更する
- Headボーン ← RightEye/LeftEyeボーンのウェイト × (1 - VRMLookAtBoneApplyerの上下左右のCurveYRangeDegreeのうち最小の角度 ÷ 30°)
- RightEye/LeftEyeボーン ← RightEye/LeftEyeボーンのウェイト × (VRMLookAtBoneApplyerの上下左右のCurveYRangeDegreeのうち最小の角度 ÷ 30°)
- 同じ構造の階層が存在しない場合、以下のダミーオブジェクト階層を生成します。
- VRC_Avatar Descriptorコンポーネントが追加されたオブジェクト (以下、ルート)
- Armature
- Hips
- Spine
- Chest
- Neck
- Head
- RightEye
- LeftEye
- Head
- Neck
- Chest
- Spine
- Hips
- Armature
- VRC_Avatar Descriptorコンポーネントが追加されたオブジェクト (以下、ルート)
- メッシュを
Body
という名前でルート直下に存在するオブジェクトとします。 - メッシュへダミーのブレンドシェイプ4つを先頭に追加します。
- 無効化する場合、Humanoid Rig の Right Eye と Left Eye の関連付けを解除します。
以下のボーン対して、Humanoid RigにおけるZ軸のPositionへ設定値を加算します。
- LeftEye
- RightEye
- VRMのBlendShapeのA、I、Oに対応するシェイプキーについて、Cats Blender Pluginのブレンド値をもとに、次のシェイプキーを生成し、これを設定します。
- vrc.v_sil
- vrc.v_pp
- vrc.v_ff
- vrc.v_th
- vrc.v_dd
- vrc.v_kk
- vrc.v_ch
- vrc.v_ss
- vrc.v_nn
- vrc.v_rr
- vrc.v_aa
- vrc.v_e
- vrc.v_ih
- vrc.v_oh
- vrc.v_ou
- すでに同名のシェイプキー名が存在すれば、それを優先します。
- VRMのBlendShapeのNEUTRALとBlinkに関連付けられたシェイプキーを利用します。
次のように割り当てます。指は設定を行わない場合と同じ形になります。
VRM | VRChat | VIVEトラックパッド (右手) |
---|---|---|
Joy | VICTORY | ↗ |
Angry | HANDGUN | ↙ |
Sorrow | THUMBSUP | ↖ |
Fun | ROCKNROLL | ↘ |
- NEUTRAL/Blinkと同じシェイプキーが使用されている場合、そのシェイプキーを複製して利用します。
- ハンドサインを行っていない状態だと、該当のシェイプキーの値へ常に0が設定され、Animatorコンポーネント側のシェイプキーの変更が機能しなくなるため。
- パラメータを引き継ぐ場合は、VRM Spring Bone コンポーネントのパラメータを以下のように変換し、Dynamic Boneコンポーネントに置き換えます。
- Stiffness Force × 0.05 → Elasticity
- Drag Force × 0.6 → Damping
- 0 → Stiffness
- 0 → Inert
- 上記のアルゴリズムは、変換ダイアログで Callback Functions を設定することで変更できます。
- VRM Spring Bone Collider Group コンポーネントを、同じ位置と大きさで Dynamic Bone Collider コンポーネントに置き換えます。
シェーダーを同一ディレクトリに複製し、SubShaderのQueueタグを書き替えます。
※Standard等のビルトインシェーダーは放置
サブメッシュをRender Queueが小さい順に並べ替えます。
以下のボーン対して、Humanoid RigにおけるY軸のPositionへ設定値を加算します。
- LeftShoulder
- RightShoulder
- LeftUpperArm
- RightUpperArm
アバターのルートに対して、Humanoid RigにおけるY軸のPositionへ設定値を加算します。