バージョン:Maya 2023.1
<目的>
Maya上で作成したモデル&ジョイントと、アニメーション(Unityにモデルをインポート後に数点作成した後、モデルと共にFBXでエクスポートしたものです)がついたデータの全体のScale値を10倍にした後、その値でScaleをフリーズしたいのですが、以下の<試したこと>であるとエラーが起こりフリーズが出来ないため、解決策を探しております。
<試した事>
・既にbind済みのため、joint(Joint8という名称で編集中)を10倍にしてjointをフリーズしようとする
→アニメーションがついてる&bind済みのため?
// Error: file: C:/Program Files/Autodesk/Maya2023/scripts/startup/channelBoxCommand.mel line 390: Freeze Transform or Reset Transform was not applied because node joint8 is a joint and has skin attached.
といったエラーが出てしまいます。
・Unbind Skin を行い、親ジョイントとモデルを別々にフリーズを試みる
→アニメーションがついてるからか、やはりエラーが出ます…。
Mayaでアニメーション無しのデータ(モデルとジョイント)をScale10倍→フリーズした後、Unityで再インポート…であると、アニメーションがScale1倍の時のものなので全部作り直しになるのでは…というのは出来れば避けたいと思っています。
<代案で考えた事>
①一旦モデルとジョイントのみを10倍スケールでフリーズ
②Unity上からアニメーションのみ出力し、何らかの方法でScaleを10倍にして①に適用する…?
①~②のような解決手順等もありましたら知りたく存じます…。
<※Unity上でのScale値変更についての状況>
Unity上でもScale Factor等でFBXファイルのインポート時のScale変更が可能でしたが、モデルのみが大きくなるためジョイントは1倍のまま、なのでbindされたモデルはサイズだけ大きくなりつつグシャッと潰れてしまいます。。
また、ゲームでの実装を考えている関係であまりこちらで値の変更をすると動作関連で遅れが出るとのことで避ける方が良さそうなので、その方法は避ける形を取ったため、MayaでScale値を何とか出来ないか…という経緯でこちらで質問させていただきました。
以上となります。自身で調べても解決策が見つからず長期間悩んでおります…お力添え頂けますと幸いです。何卒よろしくお願いいたします。
@EMurinus さん
お疲れ様です。
アニメーションですけどルート以外に移動値はついていますでしょうか?
①ルート以外のトランスフォームXYZを削除
②キャラセット作成、アニメーションエクスポート>アニメーション削除
③1倍のキャラクターのジョイントに親ノードを作成して10倍にする。
④キャラクターをコピーしてウェイト削除フリーズ>親ノード削除>スキンウェイト(ウェイトはコピーする)
⑤アニメーションインポート>ルート移動アニメーションに全て10倍をかける>終了。
Suto
Freelance
Twitter(X)
@EMurinus さん、こんにちは。コミュニティのご利用ありがとうございます。
その後、状況はいかがでしょうか?
Suto_Tama さんが返信してくださった方法を試すことはできましたでしょうか。
お手すきの際に現在のご状況をお知らせいただけると幸いです。
返信で問題が解決、または解決に至らなくとも参考になった場合は、その返信の右下に表示されている「解決策として承認」ボタンを押してください。
同じ問題を抱えた方の参考になりますので、ご協力のほどよろしくお願いいたします。
引き続き問題を抱えていましたら、返信でお知らせください。
お世話になっております。対応が遅れてしまい申し訳ございません。
現在仕事の方で急な作業・外出用が入り、確認が遅れております…。
頂いた解決方法で可能そうであると思うのですが、もし不明点、解決が難しい所等があれば引き続きこちらに投稿をさせていただきたいと思います。(目安としまして、今週中には作業に戻りますので検証し、改めて投稿をいたします…!)
恐れ入りますが引き続きよろしくお願いいたします。
遅くなって大変恐縮ですが、本日確認させていただきました!
結果的には④の手順まで行い、スケール値を10倍の大きさでフリーズするところまでは出来たのですが、
・Jointがポーズを取った状態
・一方でモデルはTポーズのようなデフォルトの状態(人型ではないため、実際は別のデフォルトのポーズなのですが)
となりました…
その後恐らく①のトランスフォーム削除が出来ていなかったのか、、恐らく①~⑤の工程がうまく出来ていない可能性がありました…。
不慣れであるため、調べながら行ってみたのですが、可能であれば、工程について今一度確認したく思います…!
①
→こちら、Attribute Editor上で行うのでしょうか…。もしくはHypergraph等で行えるのでしょうか…?
②
・アニメーションエクスポート→こちら、形式は何が良いか…とかありますでしょうか。
・アニメーション削除→Hypergraphで平行四辺形になっているものを選択→「Input and Outout Connection」にして、アニメーションの箇所を削除 で大丈夫でしょうか?
③
→「Create」→「Empty group」で親ノードを作成し、10倍にする
④
・キャラクターをコピー →こちら、キャラクターセットではなくオブジェクトの方を複製でも大丈夫でしょうか…?
・ウェイト削除が分からず…「Skin」メニューのいずれかでしょうか…(フリーズする際はBindしたままであるとやはりフリーズ出来なかったため、この時に Unbide skin を行いました。)
⑤
アニメーションインポート→「File」→「Import」からでしょうか…そこからどのように挿入が可能なのでしょうか…?
結局の所、詰まり部分が多く申し訳ございません。
その他、お伝えした方がいい情報ありましたら提供したく存じます…!
恐れ入りますが、Suto様がもし再度のご対応難しい場合は、再びどなたかフォロー頂けますと幸いです…。何卒よろしくお願いいたします!
@EMurinus さん
お疲れ様です。
ご質問に対して返信いたします。
①→こちら、Attribute Editor上で行うのでしょうか…。もしくはHypergraph等で行えるのでしょうか…?
A.グラフエディタでフィルターをかければ移動のみ表示されます。
1.キーフレームが設定されたオブジェクトを選択します。
2.グラフ エディタ(Graph Editor)メニュー バーで、表示 > アトリビュートの選択(Show > Select Attributes)を
選択します。
3.表示されるアトリビュートの選択(Select Attributes)ウィンドウで、チェックボックスを使用して
アトリビュートのカーブをグラフ エディタ(Graph Editor)に表示するかどうかを設定します。
たとえば、オブジェクトの移動X、Y、Z カーブのみを表示するには、これらのチェックボックスのみをオンにします。
②・アニメーションエクスポート→こちら、形式は何が良いか…とかありますでしょうか。
A.出力するジョイントをキャラセットにしてクリップで出力したらどうでしょうか?
④・キャラクターをコピー →こちら、キャラクターセットではなくオブジェクトの方を複製でも大丈夫でしょうか…?
A.言葉足らずですいませせん。
①キャラクターセットではなくオブジェクト自体を10倍にします。
ウェイトがついている場合はジョイントをグループ化して10倍にすればメッシュもついてくるかと思います。
②元のウェイトをエクスポートします。Deform>Export Weights
③そしてウェイトとアニメーションを消してグループをフリーズします。
④スキンウェイトしなおしてウェイトをインポートします。Deform>import Weights
⑤キャラセットからクリップアニメーションをインポートします。
Traxエディタ>修正>キーのアクティブ化でアニメーションカーブに戻せます。
以上です。よろしくお願いいたします。
Suto
Freelance
Twitter(X)