MODOのトランスフォームのZeroはリセットでオリジナルに戻しやすくなるため、ある程度ボーン構成が固まったら使う事が多いが、手戻りした場合に割と致命傷になる機能であることが発覚した。
そもそも、このZeroとは何をしているのかという話。あと、ロールも作業中によく狂いやすいので後半に記載。
Zeroトラップ
これ、オリジナルの値を正規化(?)みたいにいい感じに修正してくれているわけではなく、チャンネルにオフセット値として、内部隠蔽するだけである(プロパティではなくチャンネルタブからみると、変更するオペレーション値が見える)。 FBXにエキスポートすると、補正した値が反映されたTransformで表示されるため、Unityに持っていって、ぎょっとするのはこのため。
なので、プロパティだけ見ると、普通の値だが、実はオリジナルがとんでもない値で、それを強引に補正している、、みたいなデータが割とよく出来上がってしまう。Scale変更したボーンとかでこれをやると顕著で、Physboneとかのセットアップで、なんか変だな?と気づいた時には後の祭り。ちなみに、変な補正のかかったボーンだと、VRMにした時に大体事故る。VRC向けは、編集しずらい問題はあるが、そこそこなんとかなったりもする。
結論としては、あんましZeroを使わないほうが良さそうという話。
あと、ボーン調整の時になるべくスケールは使うな。移動で位置調整しろ。
追記:ボーンのスケールを直す方法
既存のリグでそんなボーンが生まれていた場合、治せるのか?という話。
前述の通り、プロパティで値をいじっても修正できない。ではどうするかというと、セットアップタブのIKモードの各種操作ツールで、ボーンを操作する。 そして、この時、子ボーンの位置を保持するオプションを有効にしておく。
これで、ボーンの配置を維持しながら変なスケールだけを修正することができる。 ちなみに、ボーンを可視化するGizmo(?)がおかしなスケールになるので気になるレベルなら適当に直しましょう。
ロールの修正方法
普通にトランスフォームで触ってもダメ。
ロールの確認
結論:VisibilityでShowCenterを有効にする(Pivotではない!)
その昔、Pivot表示で確認してて、なんか反映されないし、変更してもリセットされる!?とおもったら、そもそもPivotではなかったオチでした。
ロール調整
結論:ボーンのロールは、セットアップタブのInverse Kinematicsメニュー内のRotateで行う
その昔、プロパティからいじって、なんかちがう。。ってなってた(90度回転とかしたくても、変な回転になってできない)が、IKツールの回転や移動ツールを使わないとダメ。 同じ理屈で、Transform全般の調整も、IKツール上から行った方が良さそう。