Blenderで1からVRMを出力してみます。
インストール方法は https://github.com/iCyP/VRM_IMPORTER_for_Blender2_8 から Clone or Download からZIP Download でzipをDL、そのzipをそのままaddon installし、TESTINGタブから有効にしてください。
改変チュートリアル動画はこちら(合わせて見ると分かりやすいです、特にマテリアルについてはこちらでは詳しく説明しません。
https://nico.ms/sm36033523
ではまず。
#1 アーマチュアを作る
VRMはボーンの階層(要はunity humanoid)・姿勢(T-pose)が決まっています。自分で作れる方は自分で作ってください。
自動生成
面倒だよ、という方はアドオンインストールでAdd->Armatureで追加されるVRM humanoid を追加してください。
これ↓
一発でhumanoidアーマチュア(humanoid等のVRM属性設定済み)ができます。パラメータは、身長、等身、手の大きさ、股上の高さなどです。そこからそれっぽく作成されるようになっています。
Bone tall :ボーンの一番上の先の高さ
Head ratio : 等身
nail bone:VRMで指先の当たり判定が欲しい場合は付けた方が良いです。
などなど、雰囲気でいろいろ弄ってみてください。
##手動生成
アーマチュアはT-poseでunity humanoid ヒエラルキーにしてください。そのへんの面倒はまだ見ることができません。(そも仕様がブラックボックスだったり個人的にpendingかなという所だったりがあるので…)
- 制限として、1本の木のようになるような構造にしてください。親のないボーンは1本のみ(root)許されます。
その後、アーマチュアを選択した状態で、VRM HELPER タブから Add VRM attribute を押してください。とりあえず簡単なVRM拡張設定をアーマチュアに付与しテキストエディタに設定ファイルのひな型(揺れものなど)を書き込みます。
その後、アーマチュアを選択したままの状態でいくと、SSの右端のVRM HELPERタブにVRM require(option) bones,という欄があります。
そこの requireの方のAdd ~~ boneをクリックします。すると、ボーンを設定できるようになるので、そこでhumanoid属性を紐づけしてください(
- 名前の属性にあたるボーンを指定してください
- 出力時にボーン名が変わっていたりするとエラーになります
- requireは抜けが許されません(0.0仕様で) optionは抜けが許されます
#メッシュについて
- モディファイアはすべて適応しておいてください。シェイプキー持ちは拙作 https://github.com/iCyP/Add_Modifier_Applied_Object_forBlender2_8 でメッシュを選択してオブジェクトモードで右クリック->Add Modifier applied ~~ をすればバウンティングボックス横にメッシュが作られるので便利かもしれません(ウェイト転送がいまいちかも…
- すべて三角形に分割してください。面倒な人はctrl+Tを押せば自動で割れます。
- UV展開しておいてください。また、出力時には1つだけにしておいてください。複数ある場合すべて出力されるはずですが、VRMはTEXCOORD_0(1番目のUV)の一つしか使いません。容量の無駄遣いになります。
- ボーンウェイトは4つまでです。
- マテリアルの設定については https://nico.ms/sm36033523?from=74 を見てください。制限が厳しいです。
#ライセンス設定について:
アーマチュアのオブジェクトの方のカスタムプロパティに全部あります。書きましょう。
#firstperson, springbone などについて
テキストエディタにjson形式で書かれています。(Add VRM attributeしていれば最低限のひな型がすでにあります)頑張ってください。(uniVRMにもっていった方が楽です)
springboneのcolliderについて
importしたことがある人はお気づきかと思いますが、ボーンの直属の子emptyがそのボーンのcolliderになっています、名前はどうでもいいです。
設定は同じことをすればよいです。(ボーンの子emptyをつくって移動させてempty_display_sizeを調節する
スケール(Sキー)で大きさを調節せず、empty_display_sizeで調節してください。後者をコライダーのサイズに使います。
#出力
アーマチュアとメッシュをすべて選択してexport->vrm
Translationをonにしていて、OSのロケールが日本なら、エラーメッセージは日本語です。読んで意味がわからなければ作者(私)に言ってください。何とかなるかもしれないし何とかならないかもしれません。ツイッターが有効ですが、githubのissueが最適です(pythonのdictの説明などはご勘弁願います)
雑文ご拝読ありがとうございました。