【Unity】3D Game KitのキャラクターをVRoidモデルに差し替える方法

 

3D Game Kitのデフォルトキャラクター「Ellen」を、別のモデルに差し替えます。


下記の動画解説を参考にさせていただきました。

 

【Unity + VRoid】3D Game Kit LiteでVRoidのキャラを動かす方法

 

やり方はほぼ同じなので、基本的には動画解説をみていただければ幸いです。


自分は動画だけだと頭にスンナリ入ってこないタイプなので、補助と学習のためにもフローチャートをまとめておこうと思った次第です。


ただの書き起こしではなく、個人的な注釈やメモもそえておきます。「Lite版」の解説ですが、通常版でもほぼ同じ操作だとおもいます。

 

スポンサーリンク

この記事の目次

必要なもの

 

  • Unity(3D Game Kit対応)
  • UniVRM
  • Vroid Studio製の3Dモデル

 

 

フローチャート

 

1,3D Game Kit Liteをインポート

 

空のプロジェクトを作成し、アセットストアから3D Game Kit Liteをダウンロード&インポート。

 

▼ 3D Game Kit Lite

 

 

2,UniVRMをインポート

 

▼ UniVRM導入方法はこちら

【Unity】UniVRMを導入してVRMファイルをインポートする方法

 

 

3,VRoidモデルをインポート

 

Assets内に「My」ディレクトリを作成し、そこにVRoidモデルをD&Dする。

 

 

4,テンプレートシーンを読みこむ

 

Assets/3DGamekitLite/Scenesの「_TemplateScene」を開く。

 

 

5,VRoidモデルをシーンに入れる

 

インポートしたVRoidモデルをHierarchyにD&Dする。

 

 

6,VRoidモデルの名前を変更する

 

この例では「Player」とする。

 

 

7,prefabを作成

 

ヒエラルキーのplayerを、ProjectタブのMyフォルダにD&Dし、Prefab Variantを選択する。

 

 

8,PlayerのHierarchyの位置をCharactersに移動

 

「Ellen」がある「—- Characters —–」の部分にD&Dする。

 

 

9,Ellenの位置をPlayerに合わせる

 

元々のモデルであるEllenを、Playerと同じ位置&向きに合わせる。


InspectorタブのTransformから位置情報(X:Y:Z)を調整する。

 

 

10,必要なコンポーネントをコピーアンドペースト

 

  • Character Controller
  • Damageable
  • Player Input
  • Player Controller
  • Target Distributor

 

▲ 上記5つのコンポーネントを、EllenからPlayerにコピーアンドペーストする。


コンポーネントはInspectorタブに存在する。右クリックすると「Copy Component」が表示される。一つ一つ手作業でコピーアンドペースト。

 

スポンサーリンク

 

11,必要なオブジェクトをコピーアンドペースト

 

  • HeadTarget
  • TrailEffect
  • Staff
  • RepawnParticles
  • AudioSources
  • PistolRoot

 

▲ 上記6つのオブジェクトをEllenからPlayerにコピーアンドペーストする。


HierarchyのEllenを開き、Ctrl+クリックで複数選択してコピーし、Playerにペーストする。

 

 

12,Animatorの設定

 

  • Controller : Ellen
  • Update Mode : Animate Physics

 

▲ PlayerのAnimatorを上記のように設定する。


AnimatorはInspectorタブにある。

 

 

13,Player Controllerの設定

 

ReferenceのCamera Setting以外を、「Ellen」のオブジェクトから「Player」のオブジェクトに設定変更する。


(PlayerのInspectorタブの下部にPlayer Controllerがあり、そこのReferenceを開く)

 

▼ Camera Setting : CameraRig以外

  • Melee Weapon : Staff
  • Footstep Random Audio Player : FootstepSource
  • Hurt Random Audio Player : HurtSource
  • Landing Random Audio Player : LandingSource
  • Emote Landing Player : EmoteLanding
  • Emote Death Player : Emoter Death
  • Emoter Attack Player : EmoteAttack
  • Emote Jump Player : EmoteJump

 

HierarchyのPlayerから該当するものを探しだし、InspectorタブのReferencesの該当箇所にD&Dすれば、Ellenから設定が変更される。


ひとつひとつ手作業でD&Dしていく。「Staff」以外は、HierarchyのPlayer/AudioSources内にある。

 

 

14-1,シールドエフェクトの作成1

 

Playerが攻撃をうけたときのシールドエフェクトを作成する。


Playeraの下に空のGameObjectを作成し、Player_shieldにリネームする。

 

 

14-2,シールドエフェクトの作成2

 

  • Face
  • Body
  • Hair001

 

▲ 上記のPlayer内のオブジェクトを複製し、Player_Shieldの下に移動させ、それぞれ「○○_Shield」にリネームする。

 

 

14-3,シールドエフェクトの作成3

 

輪郭のみにエフェクトが発声するように、透明なマテリアルを作成する。


My直下のなにもない場所で右クリック⇒Create⇒Materialで作成。名前は「Shield_Transparent_Mat」とする。


Rendering ModeをOpaque(不透明)⇒Transparent(透明)に変更する。カラー部分をクリックし、A(透明度)を100⇒0にする。

 

 

14-4,シールドエフェクトの作成4

 

Face_Shieldにエフェクト用のマテリアルを割り当てる。F00_000_Face_00_SKIN(肌のスキン)以外は、前項で作成した透明なマテリアルを割り当てる。


つまりAssets/3DGamekitLite/Art/Effects/Characters/Ellenを開き、「Ellen_Shield_Effect_Mat」をFace_ShieldのMaterialsの「Element0」と「Element9 」にD&Dする。


のこりのElement1~Element8には、Myに作成した「Shield_Transparent_Mat」をD&Dする。

 

 

14-5,シールドエフェクトの作成5

 

VRoidモデルのマツゲが描画順の影響で消えているので、Ellen_Shield_Effect_Matの「Render Queue」を3000⇒5000に変更する。


マツゲが表示される値であれば数値はなんでもOK。

 

 

14-6,シールドエフェクトの作成6

 

14-2で作成したBody_Shieldにシールドエフェクトのマテリアルを割り当てる(Assets/3DGamekitLite/Art/MaterialsからEllen_Shield_Effect_MatをD&D)。


またF00_000_HairBack_00_HAIRのみ、透明なマテリアルを割り当てる(MyからShield_Transparent_MatをD&D)。

 

▼ 割り当て後のBody_ShieldのMaterials

  • Element 0 : Ellen_Shield_Effect_Mat
  • Element 1 : Ellen_Shield_Effect_Mat
  • Element 2 : Ellen_Shield_Effect_Mat
  • Element 3 : Ellen_Shield_Effect_Mat
  • Element 4 : Ellen_Shield_Effect_Mat
  • Element 5 : Ellen_Shield_Effect_Mat
  • Element 6 : Shield_Transparent_Mat

 

 

14-7,シールドエフェクトの作成7

 

14-2で作成したHair001_Shieldにシールドエフェクトを割り当てる。


量が多いため、Materialのサイズを一旦1にしてから、シールドエフェクト用のマテリアルを割り当てる。それからサイズを元に戻せばいっぺんに割り当てられる。


つまりHair001_ShieldのMaterialsのSizeを「46⇒1」に変更してから、Element 0にEllen_Shield_Effect_MatをD&Dし、Sizeを「1⇒46」にすればいっぺんに割り当てられる。

 

 

14-8,シールドエフェクトの作成8

 

見た目に問題がなければ、HierarchyのPlayer_Shieldをオフにする。


Inspectorの名前欄の左側にチェック項目があるので、それを外せばOK。

 

スポンサーリンク

 

15,シールドエフェクトの設定

 

Playerがダメージをうけたときにエフェクトが発生するように設定する。


DamageableコンポーネントのEllen_ShieldをPlayer_Shieldに置き換える。設定枠の右にあるGameObject.SetActiveもいっしょに設定する。


つまり、PlayerのInspectorにあるDamageableコンポーネントを探し、「Ellen_Shield」となっている3ヵ所に「Player_Shield」をD&Dする。そのさい「GameObject.SetActive」が一旦外れて「No Function」になってしまうので、再びGameObject⇒SetActiveを選択してつけなおす。

 

 

16,HeadTargetの位置調整

 

HierarchyのPlayerのHeadTargetを、Playerの頭の位置に修正する。


つまり、HeadTargetを選択して表れる三色矢印を、ドラッグしてPlayerの頭の中心に変更する。さいしょPlayerモデルは床にしずんでいるが、気にせずその位置に三色矢印をもっていく。

 

 

17,武器の位置調整

 

Playerが持つ武器の位置を調整する。


RootのJ_Bip_L_Handを探し、その下にL_Attach_Pointを作成する。


J_Bip_L_Handがある場所は、HierarchyのPlayer/Root/Global/Position/J_Bip_C_Hips/J_Bip_C_Spine/J_Bip_C_Chest/J_Bip_C_UpperChest/J_Bip_L_Shoulder/J_Bip_L_UpperArm/J_Bip_L_LowerArm。


(バージョンによって場所がすこしちがう)


L_Attach_Pointを作成するには、J_Bip_L_Hand上で右クリックし、Create Emptyで空のGameObjectを作成してリネームすればOK。


このとき、L_Attach_Pointの高さをやや下げると、表示位置がちょうどいいかもしれない。武器の持ち手の表示をたしかめつつ、ドラッグして調整すればOK。

 

 

18,武器(Staff)の設定

 

前項で作成したL_Attach_Pointを、StaffのFixed Update FollowコンポーネントのTo Followに割り当てる(D&D)。

 

 

19,Layerの設定とprefabの反映

 

Playerを選択し、LayerをDefault⇒Playerに変更する。それからoverridesをクリックし、Apply Allをクリックし、prefabを反映させる。

 

 

20,CameraRigの設定

 

CameraRigを選択し、Camera SettingsコンポーネントのFollowとLook Atを設定する。


つまりFollowにはPlayerを、Loot AtにはPlayerのHeadTargetをD&Dする。また念のためにOverrides⇒Apply Allでprefabの反映をしておく。

 

 

21,HealthCanvasの設定

 

HierarchyのHealthCanvasを選択し、Health UIコンポーネントのRepresented DamageableのEllenをPlayerに置き換える(D&D)。


念のためにOverrides⇒Apply Allでprefabの反映をしておくこと。

 

 

22,playerController.csの修正

 

今回はVRoidモデルの関係上リスポンエフェクトが使えないため、リスポンエフェクトを無効化する。


PlayerController.csのEllenSpawnが使われている590、591、608行目をコメントアウトする。


つまりPlayerのPlayer ControllerのScript : PlayerController(グレーになっている)をクリックして、Projectタブに強調表示されたPlayerControllerをクリックすると、Visual Studioが起動するので、そこからスクロールして該当する行を見つけだす。

 

▼ 590行目

EllenSpawn Spawn = GetComponent InChildren<EllenSpawn>();

 

▼ 591行目

spawn.enabled = true;

 

▼ 608行目

spawn.StartEffect();

 

これらの先頭に「//」を追加すればコメントアウトできる。


コメントアウト後は上書き保存をして、Visual Studioを閉じる。

 

 

23,試しに動かしてみる

 

Ellenをオフにし、テストプレイをする。


この時点ではAnimationが正常に動作しないのを確認する。(モデルが床にしずんでいて、並行移動してしまう)

 

スポンサーリンク

 

24-1,Animationをhumanoidにする1

 

Assets/3DGamekitLite/Art/Models/Characters/EllenにあるEllenのAnimationTypeをhumanoidにする。


さいしょ「Animation」が選択されているので、「Rig」をクリックし、Animation Type : Generic⇒Humanoidに変更してApplyボタンを押せばOK。

 

 

24-2,Animationをhumanoidにする2

 

前項でApplyボタンを押したあと、その上にあるConfigureボタンを押して、humanoidの調整をする。(ダイアログが表示されるので「Save」を選択)


(バージョンによってはhumanoidの調整が不要で、Configureボタンがグレーアウトされたままになる)

 

 

24-3,Animationをhumanoidにする3

 

このときT-Poseに異常があるので、エラーがなくなるように赤い部分のボーンの角度を修正する。(スクロールしてモデルに近づいて修正)


ボーンの角度修正は、赤いボーンをクリックして、TransformのX,Y,Zの値を調整することでおこなう。左右の腕や手や指をそれぞれ1つずつ調整して、赤⇒緑になるようにする。指ボーンの先端も。すべてのボーンが緑になればOK。


(バージョンによってはエラーが出ず、この操作は不要)

 

 

24-4,Animationをhumanoidにする4

 

humanoidに変換したEllenAvatarを使い、Animationを変換する。


ただしこのまま使うと、Animation中にVRoidモデルが白目をむく問題があるので、HeadのLeft EyeRight Eyeの割り当てを解除する。


やり方は、EllenAvatarのInspectorからHeadを選択し、Left Eyeを選択して、「None」に変更する。Right Eyeも同様。


両方Noneに変更したあとは、Doneボタンを押す。

 

 

24-5,Animationをhumanoidにする5

 

前項で調整したEllen Avatarを元に、Animationをhumanoidに変換する。


Assets/3DGamekitLite/Art/Animations/AnimationClips/Characters/Ellenにある「@Ellen○○」すべてを選択し、InspectorのRigのAnimation TypeをGeneric⇒Humanoidに変更し、Source : None⇒Ellen Avatarに変更し、Applyボタンを押す。

 

 

24-6,Animationをhumanoidにする6

 

変換後、AnimationのプレビューでVRoidモデルにし、再生テストをする。


向きや高さがおかしいので、以下の方法で対処してApplyを押す。

 

▼ 向きが真っ直ぐにならないとき

Root Transform Rotation
Bake Into Pose : チェックオン
Based Upon : Original

ただしQuickTurnLeftとQuickTurnRightは、Body Orientationのままにしておく。

 

▼ 空中に浮いているとき

Root Transform Position(Y)
Bake Into Pose : チェックオン
Based Upon : Original

 

Root Transform Position(XY)のBake Into Poseにチェックが入っている場合は外す。


「@EllenJump」「@EllenRunForward」「@EllenWalkForward」などはClipsの項目が複数あるので、それぞれ変更する。

 

スポンサーリンク

 

25,動かしてみる

 

Animationが正常に動作するか確認する。画面中央上の再生ボタンを押す。

 

 

26-1,揺れものが荒ぶるのを抑える1

 

MyフォルダにC#スクリプト「TimeStepAutoConfigurator」を作成する。


次の項で編集する。

 

 

26-2,揺れものが荒ぶるのを抑える2

 

「描画の更新タイミング」と「物理演算の更新タイミング」をできるだけ合わせ、揺れものが荒ぶるのを抑える。

 

▼ 5行目からの変更箇所

public class TimeStepAutoConfigurato : MonoBehaviour
{
   // Update is called once per frame
   void Update()
   {
        Time.fixedDeltaTime = Time.deltaTime;
   }
}

 

上書きしてVisual Studioを閉じる。

 

 

26-3,揺れものが荒ぶるのを抑える3

 

シーン内に空のオブジェクト「TimeStepAutoConfigurator」を作成し、前項で作成したスクリプトを割り当てる。


つまりHierarchy上で空のオブジェクト「TimeStepAutoConfigurator」を作成し、Inspectorの上に前項で作成したスクリプトをD&Dする。


それからオブジェクト「TimeStepAutoConfigurator」をHierarchyの「—– Gameplay —–」の真下に移動し、ProjectのMyフォルダにD&Dする。

 

 

26-4,揺れものが荒ぶるのを抑える4

 

また再生ボタンを押し、動作確認をする。


より自然にするには細かい調整が必要。Dynamic Boneを使用したほうが揺れものの調整はカンタンかもしれない。

 

 

26-5,揺れものが荒ぶるのを抑える5

 

揺れものをオフにしたい場合は、secondaryのVRM Spring Boneをオフにする。


secondaryはHierarchyのPlayerにある。Inspectorに複数のVRM Spring Boneがあるので、揺らしたくないならチェックをすべて外す。

 

 

27,仕上げ

 

メニューのFile⇒SaveでSceneを保存する。


それからメニューのKit Tools⇒Create New Sceneで新しいシーンを好きな名前で作成し、VRoidモデルが適用されていれば成功。

 

 

まとめ「ふつうにできた」

 

▼ 実際にいれてみたもの。

 

ふつうに動きました


モデル差し替えるだけなのに……けっこう操作がおおいですね。動画解説がなかったらまずムリだったとおもいます。ほんと感謝です。


VRoidモデルのテクスチャの表示がおかしいのは、ちょっとモデルの作りが甘いだけなんで、あとで修正しておきます。


今回は以上です。よき3Dライフを────ではまた🐺

 

▼ ゲーミングPCでサクサク開発したいなら

 

▼ 3Dの関連記事

【Unity】3D Game Kitの使い方・情報まとめ
「VRoidっぽい顔」をそうじゃなくする6つの解決策【UnityとBlenderは不使用】
スポンサーリンク
タイトルとURLをコピーしました