つらかった。
今回はいろんな単語やら略語出てきて知らん人には難しいかも。
元はHITOGATAをいじるつもりはなかった。
同じ用途の3teneっていうアプリのほうを前にいじってて、対応フォーマットのVRMを作ってそれで満足。
というかモーションがつけられなかった。
まぁ普通はトラッキングでやるんだろうけど、俺は手付けキーアニメをそういうのに入れたかった。
ところがだよ、対応してるモーションのファイル形式がBVHとういちょっと特殊な形式で、
これは基本モーショントラッキング録画したデータらしいけど、
まぁ色々調べたらBlenderからキーアニメをそれで出力できるらしいと。
だが当時はBlender使ってなかったからね。
そんで昨日ふとじゃあBVHのファイル作って3teneに入れて自由に動かせたらまた世界が広がるのではと思いチャレンジしてたんですよ。
これがクソ難航。
まず試しにフリーのBVHを3teneに入れたら正しく再生されない。
Blenderからの出力も無理。
ついでにフリーのBVHをBlenderに入れてからBVHでエクスポートしても無理。
じゃあなんかコンバーターみたいなの噛ませればいいかと思ってLiveANIMATIONっていうソフト探してきた。
これはBVHやFBX形式でのモーションもBVHにエクスポートできるものらしい。
やりましたよ。
こっちでもまともに再生できんのですよ。
まずBlenderのFBXではモーションおかしくなる。
フリーのBVHを試しにいれたら綺麗に再生されるんでもしや何か突破口がと思ってエクスポートして3teneに入れても変に再生。
あっちからこっち、こっちからあっち、設定かえーの品を変えーのしてどうにかこうにかできんもんかと、
PMDも読めるらしいから一度PMDにBlenderで変換してからとかさ。
デフォでは読み書きできないがアドオン入れるとPMDに対応できるBlender.
もう夜中ずっと試行錯誤してね、
結論。
無理、ないし実用レベルじゃないということ。
おそらく3teneのBVHの読み方がおかしいし、Blenderの出力もたぶんおかしい。
これはもう3teneとBVHに執着しないで他探したほういいなと気づいたわけ。
もっと早く気付けって感じだが。
そしてHITOGATAっていうソフト見つけてきたんです。
これは基本ソフト内でモデル作って動かす感じだが、他のVRM形式やなんとFBX形式そのままインポートできるという神仕様。
こいつに決めたぜ。
計画立てましたよ。
まずHITOGATAでエクスポートしたモデルのボーンを流用してキャラに合わせれば省力でいけるのではとか。
いちおーメインは自作モーション入れることだからそこから確かめることに。
VMDっていうミクミク界隈で使われてるモーション形式が読めるらしい。
なんとVMDはさっき入れてたBlenderのアドオンから出力できるのだ。
やったね、VMDでモーションは入れられるゾ!
あっさりいった。
これは楽勝ムードか。
HITOGATAのエクスポートはこれまたミクミクダンス界隈で使われてるPMXとFBXで出力可能で、FBXファイルをインポートする際は、
基本となるテンプレートのボーンと自作FBXのボーンを一致させていく作業があるもんで、
最終的にはVRM形式でインポートして骨の一致は自動にしてもらおうと思ったわけ。
基本VRMはUNITYのヒューマノイド準拠の構造だからね。
生成されたキャラの骨抜き出して、モデルはテスト用なんで2秒で箱人間作ってBlenderでペアレントしてUNITYに送り込みUniVRMでVRMに変換しましたよ。
入れました。
エラー出て読めない。
3teneではそのVRMは読めるがHITOGATAでは読めないでエラー。
どうしたものかと。
またしても手を変え品を変えいろいろ試行錯誤すること数時間。
無理。
しゃーないので過去に3tene用に作ったVRMキャラを試しに読み込んでみたらいけた。
こりゃUNITYのコンバートかHITOGATAが悪いなと思って、過去のUNITYのバージョンでコンバートしてみたり古いバージョンのHITOGATAに入れてみたりしてもダメ。読めない。
クソ!
もしやBlenderで作ったからダメなのかと思ってMODOのほうでも箱人間作って試すも同じエラー。
クソ!
一応出力してみたVRMをまた3teneで入れたら読める。
うーん、こりゃHITOGATA側の問題くせぇ。
過去作ったものと今作ったもの比べて何が違ってそれが原因で読めないのだと思っていろいろ探ったよ。
ブレンドシェイプ入れてないからかとかマテリアル設定省いてたからかとか。
流用ボーンがだめなのかとか。
最初は省力でやろうとしてたのが今やボーンを一から構成してはコンバートの連続、
しんどい。
が、ダメ、何をやってもダメ。
VroidStudioでエクスポートしたのどうだろうとか確かめてみる、読めた。
過去のVRMはいけて、今のVRM形式はダメ。
FBXなら読める。
こりゃ確実に何か設定ミスだろうとまた試行錯誤。
挙げ句にHITOGATAでエクスポートした骨付きモデルをいじらずVRM形式にしてもダメ。
ふざけてんのか。
3teneでは読めるけど、じゃあもしかしたら他のビューワーではどうだろうとWEBでVRM見れるので確かめてみましたよ。
新しく作ったVRM、エラーで読めない。
古いのだったりVroidStudioでのやつは読めた。
やはり作ったVRMの設定に共通の失敗があるようだ。
3teneのほうはエラーがあっても寛容に読み込んでくれるからたどり着くまで時間が掛かった。
ふとWEBビューワー見るとエラーメッセージが確認できた。
HITOGATAのエラーメッセーはわけわからんやつだったしググっても出てこなかったし。
エレメントがどうたらとかマテリアルがどうたらって書かれていた。
テストだし色々省略してスピード重視で作ってたから、
今度はマテリアル設定をしっかりやって、もしやUV展開もちゃんとやらないとダメかと思い展開し、律儀にテクスチャ貼ってVRMにしましたよ。
始めは軽い動作テストのつもりがなんでこんな丁寧にやらないとなんねーのだと。
そしたら読めるんですよ。
そしたら読めるんですよ。
じゃあこりゃマテリアル設定、UV、テクスチャのどれかだなと原因は。
過去なんかいかマテリアル設定はベースカラーいじってやったから、後者のどちらか。
まずテクスチャ外してVRMにしてみましたよ。
読めませーん。
原因確定、テクスチャを使ってないとHITOGATA、ないしVRMビューワーは機能しないのだ。
たしかに過去の作ったVRMはどれもテクスチャちゃんと設定してたし。
そうなってくると今度はテクスチャ一部使って、他はマテリアルのカラーそのままだったらどうなるかと確かめることになる。
半分テクスチャ、半分そのままのマテリアルシェーダーでやる。
読める。
おそらくVRMは最低一枚テクスチャをどこかに使ってないとうまく動作しないところが多いのだと結論。
3teneのほうが特殊でテクスチャなしでも普通にいけたのがこじらせた原因だよ…
そっちでエラーだしてヒントになるようなエラーメッセージ出てりゃなぁ。
ということでUNITYヒューマノイドボーン準拠のVRMを無事作ることができた。
一部完。
そして自作モーション入れてVRMで動かして気づくのだ。
ヒューマノイドボーンにはすべての親となるボーンがないということに。
そしてFBXインポートと違ってボーンの割当もできないということ。
そう、その場で動くことはできても歩きまわったり前や後ろにジャンプどころか高さも変わらないということに。
こんなん違うんだよ!
おりゃあMODOやBlenderのDCCで作ったモーションそのまま再現してぇんだよ!
ということでせっかく苦労して動かしたVRM形式はボツ。
まぁテクスチャ必須という知識は得たからよしとしよう。
もうね、ヘド吐きそうになりながら次はFBX形式でのインポート作業ですよ。
だが希望の光は見えている地点には来ている!
FBX方式でインポートするとヒューマノイド準拠のときにはない全ての親のボーンとマスターボーンが設定できるのだ。
はい、対応してるボーン一覧見て、それと対応するように一からスケルトン組み直してまた2秒で作った箱人間にペアレントしましたよ。
エラーなく読み込み、対応するボーンを設定して、はい箱人間登場。
モーション…微動だにしません!
またもトラブル、ほんと何事もうまく行かない。
その箱人間で作ったモーションデータは他のモデルで動かせる。
と、なると対応する骨の設定が悪いということだよ。
また試行錯誤してトライアンドエラー。
もしやボーンについてる名前か?と思ってHIOTGATAでエクスポートした骨を観察すると日本語でボーンの名前ついてた。
対応する部分に同じ名前つけて…
こいつ動くぞっ!
おかしいなぁ、でも名前は別に一致しなくて関連付けたらいけるはずなのになぁ。
でもまぁそこが原因だったということで。
おそらくデフォのボーン構成と同じような感じだと名前は同じじゃなくても関連付けるだけいけるくさいけど。
ちょっとカスタマイズしてるとダメぽい。
はい全て解決。
全ての親ボーンやマスターボーンで自由に動き回れる。
とりあえず動くようになったFBX箱人間をBlenderでギャンギャン動かしてモーションデータにしていろいろ見てみました。
もろちんBlender側ではIK組んでてアニメさせるから最後に全フレームベイク必須だけどね。
動作確認するとBlender側とHITOGATA側で少し動きが違う。
早さも違った。
早さはBlender側の出力を60FPSにしたらほぼ一致。
だが動きが違うというか、動きの大きさが違うんだなぁ。
Blenderでは1m動いてもHITOGATAでは半分ぐらいしか動いてない。
ふとBlenderのFBXエクスポートの設定でモーションの拡大収縮があることを思い出しいじることに。
動きを2.5倍に拡大するとほぼ一致することがわかった。
長かった。
これにてDCCで設定したモデルとモーションをHITOGATAで再現することに成功!
もうちかれたよ…
まぁあとはモーフと、ツイッター見てるとテクスチャ抜けるっていうの見たからまだ研究は続く…
ほんとこんなかんじの連続だょ…
しんどいょ…