VRoid Studioというのは3Dキャラが作成できるソフトだ
といってもよくあるMayaや3dsMaxなどと違っていちいちポリゴンをこねくり回してリグ設定してなどする必要はなく、
どちらかと言えばゲームのキャラメイキングのようにキャラを作れるツールとなっている
https://vroid.com/studio
しかも無料でダウンロードできるのだ
じゃあ、実際ゲームとか商用で使っていいのかというと以下規約を見ると
https://vroid.pixiv.help/hc/ja/articles/4405813333657
VRoid Studioで作ったモデルは、商用利用できます。
とのように記載されている
もちろん出力したモデルを使ってVRoidStudioのようなキャラクターメイキングツールを作ることは禁止されているが、個人で作るゲームとしてキャラをこれで作成する分には問題ないとのこと
注意点としてVRoid Studio自体を商用利用することは禁止されているので基本は出力されているモデルのみ商用利用できるということを念頭に置いておこう
https://vroid.pixiv.help/hc/ja/articles/360008211814-VRoid-Studio%E3%81%AE%E5%95%86%E7%94%A8%E5%88%A9%E7%94%A8%E3%81%AF%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%81%8B-
となると出力されたモデルをどうやってUnityで読み込むかという話になるのだが一応VRoid SDKというものがあるのだがこれはVRoid Hubというプラットフォームからキャラをダウンロードしてプレイできるようにするものなので
オンラインを経由することになる。あとVRoid Hubに掲載したアプリしか使えないそうなのでハードルもそこそこあがる
https://vroid.pixiv.help/hc/ja/articles/360011743973-VRoid-SDK%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B-
というかどちらかと言えばユーザーが自分がVRoid Studioで作ったキャラクターでゲームができるよというものが正しい使い方なのだろう
ではどうやってUnityで読み込むのかというと以下のステップで実現できそうだ
①VRoidStudioで適当にモデルを作成
②作成したモデルをVRM形式で出力
③VRM形式の3DモデルデータをUnityで読み込む
④Animator設定を行う
というわけでステップごとにやってみた
*①VRoidStudioで適当にモデルを作成は各自VRoidStudioを使って楽しんでやればいいので説明は割愛
②作成したモデルをVRM形式で出力
これはVRoidStudio上で全部完結できる
右上にあるエクスポートボタンを押すとVRMエクスポートの項目がでてくるのでそれをクリック
VRoidエクスポート設定が出てくるので適当に設定して出力
.vrmファイルができていたら無事成功
③VRM形式の3DモデルデータをUnityで読み込む
デフォルトではUnityはVRM形式に対応していないのでUniVRMをインストールする
https://github.com/vrm-c/UniVRM/releases
UniVRM-0.97.0_ac30.unitypackageを落としたら、そのまま展開
推奨verが2019だったのでUnity2021で動くかどうかドキドキしながら展開
無事展開するとwindowでcolor設定をガンマからリニアに変更する旨が出てくるので許可
これでVRM形式のファイルをインポートできるようになった
ために②で作ったVRMファイルをドラッグアンドドロップすると無事展開されたことが確認できる
④Animator設定を行う
キャラは動かせなければゲームには使えない
ただ検証のためにいちいち自前でアニメーションを用意するくらいなら便利アセットを使ったほうが時短になるので早速落とす
今回はUnity Technologiesが用意しているStarter Assets-Third Person Character Controllerを使ってみる
このAssetにはPlaygroundというSceneでキャラを動かせるサンプルがある
操作方法は
A→左、S→後ろ、W→前、D→右
マウス→視点変更
のシンプルな構成
デフォルトはこんな感じ
この操っているキャラクターを先ほどインポートしたVRoid製モデルに変更する
prefabのアニメーターにStarterAssetsThirdPersonを設定すると今までのTポーズから普通の待機アニメーションが適応されていることがわかる
この時点で無事にアニメーションちゃんと設定できていることは確認とれてますがせっかくなので他のコンポーネントも設定してサンプルのように動かしてみる
☆設定するComponent
- CharacterController
- 当たり判定用コンポーネント適当に数値調整する
- Step Offset must be less or equal to <scaled Height> + <scaled Radius> * 2
- この時Step Offsetの値がHeight + Radius * 2よりも多いとエラーが出るので注意
- Step Offset must be less or equal to <scaled Height> + <scaled Radius> * 2
- 当たり判定用コンポーネント適当に数値調整する
- ThirdPersonController
- StarterAssetsInputs
- BasicRigidBodyPush
- PlayerInput
コンポーネントを設定したら次はPlayerFollowCameraのFollowに適当にFace位置でを設定する
ChinemachineVirtualCameraはあまり使ったことないのでちょっと色々調べたいですな
色々長く書いたけど、自分でコードは一行も書いてないという奇跡
便利な世の中になったものだ