3D Game Kitのデフォルトキャラクター「Ellen」を、別のモデルに差し替えます。
下記の動画解説を参考にさせていただきました。
やり方はほぼ同じなので、基本的には動画解説をみていただければ幸いです。
自分は動画だけだと頭にスンナリ入ってこないタイプなので、補助と学習のためにもフローチャートをまとめておこうと思った次第です。
ただの書き起こしではなく、個人的な注釈やメモもそえておきます。「Lite版」の解説ですが、通常版でもほぼ同じ操作だとおもいます。
この記事の目次
- 必要なもの
- フローチャート
- 1,3D Game Kit Liteをインポート
- 2,UniVRMをインポート
- 3,VRoidモデルをインポート
- 4,テンプレートシーンを読みこむ
- 5,VRoidモデルをシーンに入れる
- 6,VRoidモデルの名前を変更する
- 7,prefabを作成
- 8,PlayerのHierarchyの位置をCharactersに移動
- 9,Ellenの位置をPlayerに合わせる
- 10,必要なコンポーネントをコピーアンドペースト
- 11,必要なオブジェクトをコピーアンドペースト
- 12,Animatorの設定
- 13,Player Controllerの設定
- 14-1,シールドエフェクトの作成1
- 14-2,シールドエフェクトの作成2
- 14-3,シールドエフェクトの作成3
- 14-4,シールドエフェクトの作成4
- 14-5,シールドエフェクトの作成5
- 14-6,シールドエフェクトの作成6
- 14-7,シールドエフェクトの作成7
- 14-8,シールドエフェクトの作成8
- 15,シールドエフェクトの設定
- 16,HeadTargetの位置調整
- 17,武器の位置調整
- 18,武器(Staff)の設定
- 19,Layerの設定とprefabの反映
- 20,CameraRigの設定
- 21,HealthCanvasの設定
- 22,playerController.csの修正
- 23,試しに動かしてみる
- 24-1,Animationをhumanoidにする1
- 24-2,Animationをhumanoidにする2
- 24-3,Animationをhumanoidにする3
- 24-4,Animationをhumanoidにする4
- 24-5,Animationをhumanoidにする5
- 24-6,Animationをhumanoidにする6
- 25,動かしてみる
- 26-1,揺れものが荒ぶるのを抑える1
- 26-2,揺れものが荒ぶるのを抑える2
- 26-3,揺れものが荒ぶるのを抑える3
- 26-4,揺れものが荒ぶるのを抑える4
- 26-5,揺れものが荒ぶるのを抑える5
- 27,仕上げ
- まとめ「ふつうにできた」
必要なもの
- Unity(3D Game Kit対応)
- UniVRM
- Vroid Studio製の3Dモデル
フローチャート
1,3D Game Kit Liteをインポート
空のプロジェクトを作成し、アセットストアから3D Game Kit Liteをダウンロード&インポート。
▼ 3D Game Kit Lite
2,UniVRMをインポート
▼ UniVRM導入方法はこちら

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 EyeとRight 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モデルをUnityの3DGameKitにいれてみた。イケボすぎる🐺 pic.twitter.com/Gg0e8QVPCj
— hoshimi12(ほしみ) (@hoshimi12) January 17, 2020
ふつうに動きました。
モデル差し替えるだけなのに……けっこう操作がおおいですね。動画解説がなかったらまずムリだったとおもいます。ほんと感謝です。
VRoidモデルのテクスチャの表示がおかしいのは、ちょっとモデルの作りが甘いだけなんで、あとで修正しておきます。
今回は以上です。よき3Dライフを────ではまた🐺
▼ 3Dの関連記事






