概要
Vroid Studioにて作成したキャラクターをUE4に持っていく方法の自分用メモ(の続き)です。
前回の記事はこちらからご覧ください。
今回はMayaでのデータ調整方法になりますが、前回よりも増して自己流なやり方になってます!笑
ので、参考程度ということでご勘弁ください…!
環境
- VRoid Studio v0.5.4-p1
- Unreal Engine 4.21.2
- Blender 2.79b
- Maya LT 2017
手順
1. Mayaでデータを整理する
1. アウトライナ上で不要なデータを削除する
下記のデータは不要なので削除
- Lamp(Blenderからついてきた場合)
- Camera(Blenderからついてきた場合)
- ブレンドシェイプのターゲットメッシュ
2. メッシュ名を修正
メッシュの名称をシンプルなものに直しておきます。
旧 | 新 |
Hair001FBXASC046baked | Hair |
BodyFBXASC046baked | Body |
FaceFBXASC046baked | Face |
3. ジョイントを整理
不要なジョイントの削除、ジョイントの並び替え、名称変更などを行います。
1. ジョイントの削除
方針としては、ロケーター全般と、語尾に”_end”とついているエンドジョイントを削除します。
手作業でやると結構手間なのでMELにしていますが、これはあくまで現行バージョンの「千駄ヶ谷 渋」ちゃんを想定しており、ご自身のデータを修正する場合は以下のMELの通りではうまくいかないと思います。その場合は結果を見ながら自分用に修正してください。(特に髪の毛!)
// 不要なジョイントを削除 // select -r Global ; RemoveJoint; select -r Position ; RemoveJoint; select -r skelton ; ungroup; select -r skelton ; delete; select -r J_Bip_R_UpperLeg_collider_2 ; delete; select -r J_Bip_R_UpperLeg_collider_1 ; delete; select -r J_Bip_R_UpperLeg_collider_0 ; delete; select -r J_Bip_L_UpperLeg_collider_2 ; delete; select -r J_Bip_L_UpperLeg_collider_1 ; delete; select -r J_Bip_L_UpperLeg_collider_0 ; delete; select -r J_Bip_C_Spine_collider_0 ; delete; select -r J_Bip_C_UpperChest_collider_2 ; delete; select -r J_Bip_C_UpperChest_collider_1 ; delete; select -r J_Bip_C_UpperChest_collider_0 ; delete; select -r J_Bip_R_UpperArm_collider_2 ; delete; select -r J_Bip_R_UpperArm_collider_1 ; delete; select -r J_Bip_R_UpperArm_collider_0 ; delete; select -r J_Bip_R_LowerArm_collider_3 ; delete; select -r J_Bip_R_LowerArm_collider_2 ; delete; select -r J_Bip_R_LowerArm_collider_1 ; delete; select -r J_Bip_R_LowerArm_collider_0 ; delete; select -r J_Bip_R_Hand_collider_0 ; delete; select -r J_Bip_L_UpperArm_collider_2 ; delete; select -r J_Bip_L_UpperArm_collider_1 ; delete; select -r J_Bip_L_UpperArm_collider_0 ; delete; select -r J_Bip_L_LowerArm_collider_3 ; delete; select -r J_Bip_L_LowerArm_collider_2 ; delete; select -r J_Bip_L_LowerArm_collider_1 ; delete; select -r J_Bip_L_LowerArm_collider_0 ; delete; select -r J_Bip_L_Hand_collider_0 ; delete; select -r J_Bip_C_Neck_collider_0 ; delete; select -r J_Bip_C_Head_collider_0 ; delete; // 右足 // select -r J_Bip_R_ToeBase_end ; delete; select -r J_Sec_R_LowerLeg_end ; delete; select -r J_Sec_R_SkirtSide_end ; delete; select -r J_Sec_R_SkirtFront_end ; delete; select -r J_Sec_R_SkirtBack_end ; delete; select -r J_Sec_R_UpperLeg_end ; delete; // 左足 // select -r J_Bip_L_ToeBase_end ; delete; select -r J_Sec_L_LowerLeg_end ; delete; select -r J_Sec_L_SkirtSide_end ; delete; select -r J_Sec_L_SkirtFront_end ; delete; select -r J_Sec_L_SkirtBack_end ; delete; select -r J_Sec_L_UpperLeg_end ; delete; // 右手 // select -r J_Bip_R_Thumb3_end ; delete; select -r J_Bip_R_Ring3_end ; delete; select -r J_Bip_R_Middle3_end ; delete; select -r J_Bip_R_Little3_end ; delete; select -r J_Bip_R_Index3_end ; delete; select -r J_Sec_R_LowerArm_end ; delete; select -r J_Sec_R_UpperArm_end ; delete; // 左手 // select -r J_Bip_L_Thumb3_end ; delete; select -r J_Bip_L_Ring3_end ; delete; select -r J_Bip_L_Middle3_end ; delete; select -r J_Bip_L_Little3_end ; delete; select -r J_Bip_L_Index3_end ; delete; select -r J_Sec_L_LowerArm_end ; delete; select -r J_Sec_L_UpperArm_end ; delete; // 眼 // select -r J_Adj_R_FaceEye_end ; delete; select -r J_Adj_L_FaceEye_end ; delete; // 胸 // select -r J_Sec_R_Bust2_end ; delete; select -r J_Sec_L_Bust2_end ; delete; // 髪 // select -r HairJointFBXASC04576f251b5FBXASC04525b0FBXASC0454882FBXASC0458e23FBXASC0458883ec50ef59_end ; delete; select -r HairJointFBXASC04560de1643FBXASC045eab0FBXASC0454af9FBXASC0459009FBXASC0451224aab7c934_end ; delete; select -r HairJointFBXASC0452efd2204FBXASC04578eeFBXASC04549d7FBXASC045aeb0FBXASC045f3427e8ee41c_end ; delete; select -r HairJointFBXASC045fa6be46aFBXASC0452b0cFBXASC045429aFBXASC0459860FBXASC045d99be16f6202_end ; delete; select -r HairJointFBXASC045a3eb3cc9FBXASC045022cFBXASC045455dFBXASC04598daFBXASC0456fd99adeb1f5_end ; delete; select -r HairJointFBXASC0451228e397FBXASC045dc7bFBXASC0454a07FBXASC045a596FBXASC04521637462b95b_end ; delete; select -r HairJointFBXASC04542a997d0FBXASC045311aFBXASC04546a4FBXASC045bdbaFBXASC045ec37dc34ba20_end ; delete; select -r HairJointFBXASC045bef70c9dFBXASC045db6aFBXASC045453fFBXASC045b754FBXASC04555576a091cb5_end ; delete; select -r HairJointFBXASC0458fcd18cfFBXASC045f70cFBXASC0454b57FBXASC045958bFBXASC0451d705adf7c8d_end ; delete; select -r HairJointFBXASC0455a19dd4bFBXASC045e27fFBXASC0454e05FBXASC045ae88FBXASC045ce6f37072a1d_end ; delete; select -r HairJointFBXASC04547abc8e5FBXASC0451a6dFBXASC0454b56FBXASC045a4a2FBXASC045ce87870c9c4b_end ; delete; select -r HairJointFBXASC04509341a53FBXASC045cba3FBXASC0454835FBXASC045b2d0FBXASC04591b5066b5dda_end ; delete; select -r HairJointFBXASC045b6fab7f2FBXASC04519e4FBXASC0454f4cFBXASC0459184FBXASC045b1dfe71f0e31_end ; delete; select -r HairJointFBXASC04507972c93FBXASC0455c49FBXASC045440cFBXASC045aab6FBXASC045666d97f53896_end ; delete;
2. ジョイントの並び替え
UE4側で管理しやすいように並び替えます。
reorder -relative -2 J_Bip_C_Spine ; reorder -relative -1 J_Bip_L_UpperLeg ; reorder -relative -1 J_Bip_L_Shoulder ; reorder -relative -1 J_Sec_L_Bust1 ; reorder -relative -4 J_Bip_L_Index1 ; reorder -relative -2 J_Bip_L_Middle1 ; reorder -relative -2 J_Bip_L_Little1 ; reorder -relative -1 J_Bip_L_Ring1 ; reorder -relative -4 J_Bip_R_Index1 ; reorder -relative -2 J_Bip_R_Middle1 ; reorder -relative -2 J_Bip_R_Little1 ; reorder -relative -1 J_Bip_R_Ring1 ; reorder -relative -15 J_Adj_L_FaceEyeSet ; reorder -relative -14 J_Adj_R_FaceEyeSet ; reorder -relative -3 J_Sec_L_UpperLeg ; reorder -relative 1 J_Sec_L_SkirtSide ; reorder -relative -3 J_Sec_R_UpperLeg ; reorder -relative 1 J_Sec_R_SkirtSide ;
3. 名称変更
UE4のHumanoid Rigに合わせた名称に変更します。
rename "J_Bip_C_Hips" "Pelvis"; rename "J_Bip_C_Spine" "Spine_01"; rename "J_Bip_C_Chest" "Spine_02"; rename "J_Bip_C_UpperChest" "Spine_03"; rename "J_Bip_L_Shoulder" "Clavicle_L"; rename "J_Bip_L_UpperArm" "UpperArm_L"; rename "J_Bip_L_LowerArm" "LowerArm_L"; rename "J_Bip_L_Hand" "Hand_L"; rename "J_Bip_L_Index1" "Index_01_L"; rename "J_Bip_L_Index2" "Index_02_L"; rename "J_Bip_L_Index3" "Index_03_L"; rename "J_Bip_L_Middle1" "Middle_01_L"; rename "J_Bip_L_Middle2" "Middle_02_L"; rename "J_Bip_L_Middle3" "Middle_03_L"; rename "J_Bip_L_Little1" "Pinky_01_L"; rename "J_Bip_L_Little2" "Pinky_02_L"; rename "J_Bip_L_Little3" "Pinky_03_L"; rename "J_Bip_L_Ring1" "Ring_01_L"; rename "J_Bip_L_Ring2" "Ring_02_L"; rename "J_Bip_L_Ring3" "Ring_03_L"; rename "J_Bip_L_Thumb1" "Thumb_01_L"; rename "J_Bip_L_Thumb2" "Thumb_02_L"; rename "J_Bip_L_Thumb3" "Thumb_03_L"; rename "J_Bip_R_Shoulder" "Clavicle_R"; rename "J_Bip_R_UpperArm" "UpperArm_R"; rename "J_Bip_R_LowerArm" "LowerArm_R"; rename "J_Bip_R_Hand" "Hand_R"; rename "J_Bip_R_Index1" "Index_01_R"; rename "J_Bip_R_Index2" "Index_02_R"; rename "J_Bip_R_Index3" "Index_03_R"; rename "J_Bip_R_Middle1" "Middle_01_R"; rename "J_Bip_R_Middle2" "Middle_02_R"; rename "J_Bip_R_Middle3" "Middle_03_R"; rename "J_Bip_R_Little1" "Pinky_01_R"; rename "J_Bip_R_Little2" "Pinky_02_R"; rename "J_Bip_R_Little3" "Pinky_03_R"; rename "J_Bip_R_Ring1" "Ring_01_R"; rename "J_Bip_R_Ring2" "Ring_02_R"; rename "J_Bip_R_Ring3" "Ring_03_R"; rename "J_Bip_R_Thumb1" "Thumb_01_R"; rename "J_Bip_R_Thumb2" "Thumb_02_R"; rename "J_Bip_R_Thumb3" "Thumb_03_R"; rename "J_Bip_C_Neck" "Neck_01"; rename "J_Bip_C_Head" "Head"; rename "J_Adj_L_FaceEyeSet" "FaceEyeSet_L"; rename "J_Adj_L_FaceEye" "FaceEye_L"; rename "J_Adj_R_FaceEyeSet" "FaceEyeSet_R"; rename "J_Adj_R_FaceEye" "FaceEye_R"; rename "J_Bip_L_UpperLeg" "Thigh_L"; rename "J_Bip_L_LowerLeg" "Calf_L"; rename "J_Bip_L_Foot" "Foot_L"; rename "J_Bip_L_ToeBase" "Ball_L"; rename "J_Bip_R_UpperLeg" "Thigh_R"; rename "J_Bip_R_LowerLeg" "Calf_R"; rename "J_Bip_R_Foot" "Foot_R"; rename "J_Bip_R_ToeBase" "Ball_R";
最終的に以下のようになりました。
修正前 | 修正後 |
skelton | |
Root | Root |
Global | |
Position | |
J_Bip_C_Hips | Pelvis |
J_Bip_C_Spine | Spine_01 |
J_Bip_C_Spine_collider_0 | |
J_Bip_C_Chest | Spine_02 |
J_Bip_C_UpperChest | Spine_03 |
J_Bip_C_UpperChest_collider_2 | |
J_Bip_C_UpperChest_collider_1 | |
J_Bip_C_UpperChest_collider_0 | |
J_Bip_L_Shoulder | Clavicle_L |
J_Bip_L_UpperArm | UpperArm_L |
J_Bip_L_UpperArm_collider_2 | |
J_Bip_L_UpperArm_collider_1 | |
J_Bip_L_UpperArm_collider_0 | |
J_Bip_L_LowerArm | LowerArm_L |
J_Bip_L_LowerArm_collider_3 | |
J_Bip_L_LowerArm_collider_2 | |
J_Bip_L_LowerArm_collider_1 | |
J_Bip_L_LowerArm_collider_0 | |
J_Bip_L_Hand | Hand_L |
J_Bip_L_Hand_collider_0 | |
J_Bip_L_Index1 | Index_01_L |
J_Bip_L_Index2 | Index_02_L |
J_Bip_L_Index2 | Index_03_L |
J_Bip_L_Index3_end | |
J_Bip_L_Index3_end_end | |
J_Bip_L_Middle1 | Middle_01_L |
J_Bip_L_Middle2 | Middle_02_L |
J_Bip_L_Middle3 | Middle_03_L |
J_Bip_L_Middle3_end | |
J_Bip_L_Middle3_end_end | |
J_Bip_L_Little1 | Pinky_01_L |
J_Bip_L_Little2 | Pinky_02_L |
J_Bip_L_Little3 | Pinky_03_L |
J_Bip_L_Little3_end | |
J_Bip_L_Little3_end_end | |
J_Bip_L_Ring1 | Ring_01_L |
J_Bip_L_Ring2 | Ring_02_L |
J_Bip_L_Ring3 | Ring_03_L |
J_Bip_L_Ring3_end | |
J_Bip_L_Ring3_end_end | |
J_Bip_L_Thumb1 | Thumb_01_L |
J_Bip_L_Thumb2 | Thumb_02_L |
J_Bip_L_Thumb3 | Thumb_03_L |
J_Bip_L_Thumb3_end | |
J_Sec_L_LowerArm | J_Sec_L_LowerArm |
J_Sec_L_LowerArm_end | |
J_Sec_L_UpperArm | J_Sec_L_UpperArm |
J_Sec_L_UpperArm_end | |
J_Bip_R_Shoulder | Clavicle_R |
J_Bip_R_UpperArm | UpperArm_R |
J_Bip_R_UpperArm_collider_2 | |
J_Bip_R_UpperArm_collider_1 | |
J_Bip_R_UpperArm_collider_0 | |
J_Bip_R_LowerArm | LowerArm_R |
J_Bip_R_LowerArm_collider_3 | Hand_R |
J_Bip_R_LowerArm_collider_2 | |
J_Bip_R_LowerArm_collider_1 | |
J_Bip_R_LowerArm_collider_0 | |
J_Bip_R_Hand | |
J_Bip_R_Hand_collider_0 | |
J_Bip_R_Index1 | Index_01_R |
J_Bip_R_Index2 | Index_02_R |
J_Bip_R_Index2 | Index_03_R |
J_Bip_R_Little3_end | |
J_Bip_R_Little3_end_end | |
J_Bip_R_Middle1 | Middle_01_R |
J_Bip_R_Middle2 | Middle_02_R |
J_Bip_R_Middle3 | Middle_03_R |
J_Bip_R_Middle3_end | |
J_Bip_R_Middle3_end_end | |
J_Bip_R_Little1 | Pinky_01_R |
J_Bip_R_Little2 | Pinky_02_R |
J_Bip_R_Little3 | Pinky_03_R |
J_Bip_R_Little3_end | |
J_Bip_R_Little3_end_end | |
J_Bip_R_Ring1 | Ring_01_R |
J_Bip_R_Ring2 | Ring_02_R |
J_Bip_R_Ring3 | Ring_03_R |
J_Bip_R_Ring3_end | |
J_Bip_R_Ring3_end_end | |
J_Bip_R_Thumb1 | Thumb_01_R |
J_Bip_R_Thumb2 | Thumb_02_R |
J_Bip_R_Thumb3 | Thumb_03_R |
J_Bip_R_Thumb3_end | |
J_Sec_R_LowerArm | J_Sec_R_LowerArm |
J_Sec_R_LowerArm_end | |
J_Sec_R_UpperArm | J_Sec_R_UpperArm |
J_Sec_R_UpperArm_end | |
J_Bip_C_Neck | Neck_01 |
J_Bip_C_Neck_collider_0 | |
J_Bip_C_Head | Head |
J_Bip_C_Head_collider_0 | |
Hair関連は省略 | Hair関連は省略 |
J_Adj_L_FaceEyeSet | FaceEyeSet_L |
J_Adj_L_FaceEye | FaceEye_L |
J_Adj_L_FaceEye_end | |
J_Adj_R_FaceEyeSet | FaceEyeSet_R |
J_Adj_R_FaceEye | FaceEye_R |
J_Adj_R_FaceEye_end | |
J_Sec_R_Bust1 | J_Sec_R_Bust1 |
J_Sec_R_Bust2 | J_Sec_R_Bust2 |
J_Sec_R_Bust2_end | |
J_Sec_L_Bust1 | J_Sec_L_Bust1 |
J_Sec_L_Bust2 | J_Sec_L_Bust2 |
J_Sec_L_Bust2_end | |
J_Bip_L_UpperLeg | Thigh_L |
J_Bip_L_UpperLeg_collider_2 | |
J_Bip_L_UpperLeg_collider_1 | |
J_Bip_L_UpperLeg_collider_0 | |
J_Bip_L_LowerLeg | Calf_L |
J_Bip_L_Foot | Foot_L |
J_Bip_L_ToeBase | Ball_L |
J_Bip_L_ToeBase_end | |
J_Bip_L_ToeBase_end_end | |
J_Sec_L_LowerLeg | J_Sec_L_LowerLeg |
J_Sec_L_LowerLeg_end | |
J_Sec_L_UpperLeg | J_Sec_L_UpperLeg |
J_Sec_L_UpperLeg_end | |
J_Sec_L_SkirtFront | J_Sec_L_SkirtFront |
J_Sec_L_SkirtFront_end | |
J_Sec_L_SkirtFront_end | |
J_Sec_L_SkirtSide | J_Sec_L_SkirtSide |
J_Sec_L_SkirtSide_end | |
J_Sec_L_SkirtSide_end_end | |
J_Sec_L_SkirtBack | J_Sec_L_SkirtBack |
J_Sec_L_SkirtBack_end | |
J_Sec_L_SkirtBack_end_end | |
J_Bip_R_UpperLeg | Thigh_R |
J_Bip_R_UpperLeg_collider_2 | |
J_Bip_R_UpperLeg_collider_1 | |
J_Bip_R_UpperLeg_collider_0 | |
J_Bip_R_LowerLeg | Calf_R |
J_Bip_R_Foot | Foot_R |
J_Bip_R_ToeBase | Ball_R |
J_Bip_R_ToeBase_end | |
J_Bip_R_ToeBase_end_end | |
J_Sec_R_LowerLeg | J_Sec_R_LowerLeg |
J_Sec_R_LowerLeg_end | |
J_Sec_R_UpperLeg | J_Sec_R_UpperLeg |
J_Sec_R_UpperLeg_end | |
J_Sec_R_SkirtFront | J_Sec_R_SkirtFront |
J_Sec_R_SkirtFront_end | |
J_Sec_R_SkirtFront_end | |
J_Sec_R_SkirtSide | J_Sec_R_SkirtSide |
J_Sec_R_SkirtSide_end | |
J_Sec_R_SkirtSide_end | |
J_Sec_R_SkirtBack | J_Sec_R_SkirtBack |
J_Sec_R_SkirtBack_end | |
J_Sec_R_SkirtBack_end |
くどいようですが、これはあくまで現行バージョンの「千駄ヶ谷 渋」ちゃんに対する修正です。この辺りは要件に合わせて対応するのがよいかと思います。
このように対応した理由としてはUE4側でHumanoid Rigというキャラクターアニメーションを別キャラクターから持ってくる(リターゲット)するための推奨ボーン構成に準拠させる目的があります。
また、モバイルではボーン数が75までという制限がありますので、上記表よりも更にジョイントを削除する必要があります。(エンジン改造でボーン数上限を拡張可能)
6. ブレンドシェイプの名称変更
ここからは好みです。デフォルトの名称は長いので、シンプルなものに書き換えます。
MELの書き方として、名称変更の順番を先頭から何番目かで指定しています。これが前記事でのBlenderでブレンドシェイプの順番を並び替えた理由です。(Mayaで並び替えようとしても何故かうまくいかなかったのでBlenderで並び替えました…)
rename FaceFBXASC046baked1 FaceAnim; blendShapeRenameTargetAlias FaceAnim 0 Face_ALL_Fun; blendShapeRenameTargetAlias FaceAnim 1 Face_ALL_Sorrow; blendShapeRenameTargetAlias FaceAnim 2 Face_ALL_Angry; blendShapeRenameTargetAlias FaceAnim 3 Face_ALL_Joy; blendShapeRenameTargetAlias FaceAnim 4 Face_ALL_Surprised; blendShapeRenameTargetAlias FaceAnim 5 Face_BRW_Fun; blendShapeRenameTargetAlias FaceAnim 6 Face_BRW_Sorrow; blendShapeRenameTargetAlias FaceAnim 7 Face_BRW_Angry; blendShapeRenameTargetAlias FaceAnim 8 Face_BRW_Joy; blendShapeRenameTargetAlias FaceAnim 9 Face_BRW_Surprised; blendShapeRenameTargetAlias FaceAnim 10 Face_EYE_Close; blendShapeRenameTargetAlias FaceAnim 11 Face_EYE_Close_R; blendShapeRenameTargetAlias FaceAnim 12 Face_EYE_Close_L; blendShapeRenameTargetAlias FaceAnim 13 Face_EYE_Joy; blendShapeRenameTargetAlias FaceAnim 14 Face_EYE_Joy_R; blendShapeRenameTargetAlias FaceAnim 15 Face_EYE_Joy_L; blendShapeRenameTargetAlias FaceAnim 16 Face_EYE_Angry; blendShapeRenameTargetAlias FaceAnim 17 Face_EYE_Sorrow; blendShapeRenameTargetAlias FaceAnim 18 Face_EYE_Surprised; blendShapeRenameTargetAlias FaceAnim 19 Face_MTH_Neutral; blendShapeRenameTargetAlias FaceAnim 20 Face_MTH_Up; blendShapeRenameTargetAlias FaceAnim 21 Face_MTH_Down; blendShapeRenameTargetAlias FaceAnim 22 Face_MTH_A; blendShapeRenameTargetAlias FaceAnim 23 Face_MTH_I; blendShapeRenameTargetAlias FaceAnim 24 Face_MTH_U; blendShapeRenameTargetAlias FaceAnim 25 Face_MTH_E; blendShapeRenameTargetAlias FaceAnim 26 Face_MTH_O; blendShapeRenameTargetAlias FaceAnim 27 Face_MTH_Angry; blendShapeRenameTargetAlias FaceAnim 28 Face_MTH_Fun; blendShapeRenameTargetAlias FaceAnim 29 Face_MTH_Joy; blendShapeRenameTargetAlias FaceAnim 30 Face_MTH_Sorrow; blendShapeRenameTargetAlias FaceAnim 31 Face_MTH_Surprised; blendShapeRenameTargetAlias FaceAnim 32 Face_HA_Fung1; blendShapeRenameTargetAlias FaceAnim 33 Face_HA_Fung1_Up; blendShapeRenameTargetAlias FaceAnim 34 Face_HA_Fung1_Low; blendShapeRenameTargetAlias FaceAnim 35 Face_HA_Fung2; blendShapeRenameTargetAlias FaceAnim 36 Face_HA_Fung2_Up; blendShapeRenameTargetAlias FaceAnim 37 Face_HA_Fung2_Low; blendShapeRenameTargetAlias FaceAnim 38 Face_EYE_Extra; blendShapeRenameTargetAlias FaceAnim 39 Face_EYE_Fox;
7. マテリアルの名称変更
マテリアルの名称もシンプルに。こちらもモデルデータの構成によってマテリアル数など異なるかもしれません。
rename F00_000_Hair_00_HAIR_01 "Hair_HAIR_01" ; rename F00_000_Hair_00_HAIR_02 "Hair_HAIR_02" ; rename F00_001_Body_00_SKIN "Body_SKIN" ; rename F00_000_HairBack_00_HAIR "HairBack_HAIR" ; rename F00_001_Tops_01_CLOTH "Tops_CLOTH" ; rename F00_001_Shoes_01_CLOTH "Shoes_CLOTH" ; rename F00_001_Bottoms_01_CLOTH "Bottoms_CLOTH" ; rename F00_001_Accessory_01_CLOTH "Accessory_CLOTH" ; rename F00_000_Face_00_SKIN "Face_SKIN" ; rename F00_000_EyeHighlight_00_EYE "EyeHighlight_EYE" ; rename F00_000_EyeIris_00_EYE "EyeIris_EYE" ; rename F00_000_FaceBrow_00_FACE "FaceBrow_FACE" ; rename F00_000_FaceEyelash_00_FACE "FaceEyelash_FACE" ; rename F00_000_FaceEyeline_00_FACE "FaceEyeline_FACE" ; rename F00_000_EyeWhite_00_EYE "EyeWhite_EYE" ; rename F00_000_FaceMouth_00_FACE "FaceMouth_FACE" ; rename F00_000_EyeExtra_01_EYE "EyeExtra_EYE" ;
8. トランスフォームをフリーズする
メッシュやジョイントにデフォルトで回転やスケールが入っているため、後々問題になることがあります。(AllrightRigとか)
今のうちにフリーズして初期値に戻しておきます。
ここでは私のやり方を記載しますが、Mayaの操作に慣れている人にとってはご自身のやり方で問題ありません。
1. メッシュのウェイトを書き出しておく。
「DoraSkinWeightImpExp」というMELを使って、3つのメッシュのウェイトを書き出しておきます。
2. バインドを解除する
メッシュを選択した状態で [スキン]->[スキンのバインド解除]でバインドを解除する。
3. メッシュのトランスフォームをフリーズする
メッシュそれぞれ選択し、チャネルボックスにてロックを解除したのちに[修正]->[トランスフォームのフリーズ]を選択してフリーズする。
再度チャネルボックスにてロックしておく。
4. ジョイントのトランスフォームをフリーズする
アウトライナでジョイントを展開し、すべて選択した状態で[修正]->[トランスフォームのフリーズ]を選択してフリーズする。
ジョイントのサイズが小さくなってしまうので、全ジョイントを選択した状態でチャネルボックスの[半径]の値を3くらいにしておく。
5. メッシュをバインドしてウェイトを元に戻す
アウトライナでメッシュとジョイントを選択した状態で[スキン]->[スキンのバインド]を選択。
メッシュを一つずつ選択して先ほどの「DoraSkinWeightImpExp」のImportタグから、先ほど書き出したウェイトデータを選択して[Import DSW]を選択する。
Importは時間がかかるので画面左下のプログレスバーを見ながら気長に待つ。
6. アウトライナ上でdswというオブジェクトを削除してヒストリ削除
ウェイト書き出しデータはもう不要なのでアウトライナ上でdswというオブジェクトを選択して削除する。
その後、[編集]->[種類ごとにすべてを削除]->[デフォーマ以外のヒストリ]をしてヒストリを削除する。([種類ごとにすべてを削除]->[ヒストリ]を選択するとブレンドシェイプの情報が消えてしまうので注意!)
9. FBXエクスポートする
データが整理できたので、FBXファイルにエクスポートします。
私は [ゲームエクスポータ] を使用していますが、どのエクスポータを使用しても問題ないかと思います。
2. Unreal Engineにインポートする
いよいよUE4にインポートしていきます。
フォルダ構成は私は以下のようにしていますので、Meshesの中にFBXファイルをインポートします。
└ Shibu ┬ Animations … アニメーション └ Character ┬ Materials … マテリアル ├ Meshes … メッシュ └ Textures … テクスチャ
インポートオプションの注意点は、[Import Morph Targets] のチェックがデフォルトだと入っていないので、忘れずにチェックしてください。
[Import Materials] と [Import Textures] はここではオフにしていますが、この辺りはこの記事では取り扱いません。
ブレンドシェイプのモーフターゲットが消失せず、スケルトンも使いやすい形で取り込むことができました。
まとめ
Vroid Studioで作成したキャラクターをUE4で使用するにはひと手間かける必要がありますが、その手間をかけるだけの価値があると思いますので、皆さんもぜひVRoidのキャラクターをUE4に登場させてみてはいかがでしょうか。
次回はリターゲットによってVroidにアニメーションを当ててみたり、可愛くなるマテリアルを作ったりしてみたいですね!要望があれば!
最近のコメント