✋
Blenderで作ったVRC向けアバターのアニメーションをCascadeurで作る時のスケールの問題
結論(手順)
- 対象のアバターデータの一番最新の.blendファイルのコピーを作り、Cascadeur専用のプロジェクトとする。
- .blendを開き、右下の「Scene/Units/Units Scale」を
0.01にする。
- aを押してScene上のオブジェクトを全選択したら、Sキー&100を入力してオブジェクトのスケールを100にする。
- Ctrl+Aから「適用/スケール」を選択し適用する
- FBXのエクスポートウィンドウに移り、一応Transformの項目を画像と同じにする(後述)
- CascにFBXをインポートし、すべてのオブジェクトのスケールが(1,1,1)になっていること・Hipsを選択して、LocalPositionがcm単位として妥当かを確認する
考察
まず、Cascadeurは単位をcmで統一して処理しています。
座標が(1,1,1)の場合、それは(1cm,1cm,1cm)を表しています。
一方でBlenderは単位をmで統一して処理しています。
座標が(1,1,1)の場合、それは(1m,1m,1m)を表しています。
この場合Blender内部で格納される頂点のデータはfloatですが、値は単純に(1.0~,1.0~,1.0~)となります。
が、UnitScaleを弄ることで格納されるfloatのデータをm基準ではなくcm基準に変更できるらしく、実際にcm基準の値になっていることをGeometryNodesのタブから簡単に確認できます。

Unityはなんかいい感じにScaleUnit云々を処理してくれて(ConvertUnits)いい感じにやってくれますが、Cascadeurはそうではないみたいです。
と言うかそもそもFBX自体にUnitScaleFactorというものがあるらしく、各3Dソフトで軸やスケールの取り扱いがそれぞれ過ぎて ✋️手✋️ が出そうです。ここから先はちゃんとSDKとかで見ないとわからなさそうなので今はいいかな...泣くね...;;
追記
Cascadeurのドキュメントに書いてありましたが、探すまで気が付かなかったので記事をそのまま写した感じになります。ドキュメントを読もう...見つかりませんこんなもの...🥲
260209-160146
Discussion