Skip to content

【アーカイブ】変換の詳細仕様

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
  • メッシュを 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
  • すでに同名のシェイプキー名が存在すれば、それを優先します。

NEUTRALと自動まばたき

  • 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 コンポーネントに置き換えます。

VRChat上でRender Queueが無視されるバグへの対策

シェーダーを同一ディレクトリに複製し、SubShaderのQueueタグを書き替えます。
※Standard等のビルトインシェーダーは放置

VRChat上のメニュー上でRender Queueが無視されるバグへの対策

サブメッシュをRender Queueが小さい順に並べ替えます。

モデルがなで肩、またはいかり肩になる問題の解消

以下のボーン対して、Humanoid RigにおけるY軸のPositionへ設定値を加算します。

  • LeftShoulder
  • RightShoulder
  • LeftUpperArm
  • RightUpperArm

靴が沈む問題の解消

アバターのルートに対して、Humanoid RigにおけるY軸のPositionへ設定値を加算します。