やっぱ自前アバターほしいよね… かわいいモデル作ってVirtualCastしたいよね。ということでやったやつ
箱じゃねえか!最低限だけどかわいい
登場するやつ
メイン
- Blender
- すごいモデリングツール。メッシュ、ボーン、スキニングをここで行う。今回使ったのはv2.79b
- VRM
- VirtualCast
- ドワンゴ/インフィニットループ社のVRライブ・コミュニケーションサービス(公式ママ)。安直にいうとvTuber的なことができるやつ。オンラインで6人まで同一ルームに入ってボイチャ付きでワイワイできる。これが無料で遊べるとか、神。ここのアバターがVRM形式。これで自作VRMを使うのがゴール
- ニコニ立体
その他
- FBX
- (起源はさておき)Autodesk社のプロプライエタリな(ここでは主に3Dを扱う)モデルフォーマット。事実上の業界標準フォーマットなので、今回はblenderからUnityへモデルを取り込む時に中継している
- Unity
- Unity社のゲームエンジン…、ながら今回はUniVRMをいじくるためのエディットツールとして登場する。v2018.1.1f1
- UniVRM
Blender作業
Blenderでモデリングをして、ボーンを仕込み、スキニングをする。BlenderからUnityのHumanoid互換でfbxをエクスポートする を参考に作業した。
注意としてはVirtualCast側で必須なボーンがあり、ない場合はモデルが追従しなかったり描画されない(UnityのImport - Humanoid設定はパスするが、VirtualCastで動かないケースもあった)。
いくつか試したり聞いた結果、少なくとも以下の構成で動作を確認した
- hip
- spine
- neck
- head
- shoulder
- upper_arm
- lower_arm
- hand
- upper_leg
- lower_leg
- foot
左右あるものは、末尾にドットLだのドットRだのつけている。それぞれ同名の頂点グループも合わせて必要。
終わったらexport - .fbx でfbx形式で出力する。
Unity(UniVRM)作業
VRMファイルを作ってみたい - dwango on GitHubに従ってやる
UniVRMをUnityで取り込んで、上で作ったfbxファイルを取り込む。とインスペクタにImport settingが出るので Rig - Animation TypeをHumanoidにする(手順どおり)
configureを押して、ボーンの設定の確認。漏れていたら、ヒエラルキーウインドウからボーンをドラッグして入れる。問題なさそうであればDone
(Unity上ではそれぞれのボーンがTransformとして扱える様子?)
自分のケースではボーン名間違えた時にここでエラーを出して、Humanoidを適用できないことがあった。エラーを見て、ボーンを再確認してblender側で直してfbxを読み直す
手順に従い、ヒエラルキーにモデルをドロップして出現させ、サイズを調整する。サイズ調整するときは横に1x1x1のCube(1m四方相当)を出して置くと良い。VRM - export humanoidでノーマライズした vrmを一旦出力。vrmを読み直して、ライセンス設定をして再度vrmを出力
VirtualCast動作テスト
ニコニ立体に行き、vrmファイルをアップロードする。上がったときのid(tdXXXX)をメモる
ちなみに現物は「VRMテスト(hacorobo)」 なんかつま先がねじれとる…
バーチャルキャスト[Virtual Cast]をダウンロードして、exeと同一ディレクトリにconfig.jsonを作る。詳しくは
なりたいあなたになれる!バーチャルキャストで VRM モデルのインポートが可能に! | 株式会社インフィニットループ技術ブログを参照して、jsonにさっきのidをprefix(td)抜き(数字のみ)で書く。
VirtualCastを起動する。とりあえず動作確認するだけなら、起動直後のタブでニコニコ動画ログインをした後、「自分で配信しない」タブからスタジオに入ればいい(凸先idは空でよい)。あとはViveをかぶって、VirtualCast内メニューからモデルを選択すれば良い。
ボーンが足りないとここで首なしT姿勢のモデルを横から眺める羽目になる(おそらくボーンが適正でない)が、うまくいけばこのように動けるはず
TODO
- 表情とか視線のあれ
- テクスチャとかマテリアルが一切ないのを何とかする
ここすき
- VirtualCastはモデルのサイズに合わせて動くので、小さいキャラだと低い視点になって楽しい
- 手が短いとものを掴むのに苦労する(左手タッチパッド移動が実装されたので多少なんとかはなる。高いものは取れない)
追記
- つま先ねじれ問題はボーンの方向の問題でした。ボーン名L,Rに対して、つま先を前後逆に付けると、適正ポーズになったときにねじれる様子