これは Maya Advent Calendar 2020 の23日目の記事です。
明日は ti_ni_ta さんです。
今回は少し前に modelPanel の上部にあるボタンの1つをスクリプトから切り替えたいと思った時に、
1つ調べたら他のボタンもまとめて方法が分かったので備忘録的に書いておきます。
(処理している mel が分かれば、mel バージョンはそこに全部書いてあるレベルの記事です)
昨日に続き Maya Advent Calendar 2020 の20日目の記事です。
明日は tanakou829 さんです。
今回はタイトルにあるように Maya から Unity へUVアニメーションをエクスポートするための記事です。
実は2016年にも一度「【Maya/Unity】MayaからUnityにUVアニメやカラーアニメを持っていくスクリプト」という記事を書いていました。
ただ今見返すと力技過ぎてスマートではないので、改めて書いてみようと思いました。
これがきっかけの1つ目です。
2つ目としてはセガさんの2年前に「MayaからUnityへのUVアニメーションエクスポート
」という記事がありました。
こちらは C++ を使われているのでハードル高そうに感じる方もいらっしゃるだろうと思うので、
Python を使ったサンプルを作ってみようかなと。
※セガさんの記事では FBX SDK を使われていますが、こちらの記事では使っていません。
Python版の FBX SDK もあるようなので、そちらを使えば MSceneMessage.addCheckFileCallback() から
渡される MFileObject から書き出し後のFBXのパスを取得する事で FBX 自体を直接編集できると思います。
しかし、FBX SDK を触ったことがなく今回時間がなかったため、(余裕ができたら試します)
書き出し後に追加したアトリビュートを削除したり、新しいアニメーションノードを作らず
place2dTexture に接続されているものを流用してシーンをなるべく汚さないオプションを付けています。
解説しているファイルはこちらのリポジトリにあります。
試される場合は kkUvAnimationExport.py を Maya の Plugin のパスが
通っている所(よく分からない場合は C:\Program Files\Autodesk\Mayaバージョン\bin\plug-ins )に、
UvAnimPostprocess.cs を Unity のプロジェクトのどこかに Editor フォルダを作ってその中に、
それぞれコピーして下さい。
※使用にされた際に不具合が出ても責任は取れませんので自己責任でお試し下さい。
2023/12/14 訂正を追記
addCheckCallback と addCheckFileCallback の部分で、API2.0 の方だとエラーが出て処理されないと書いていましたが、自分がドキュメントをきちんと読めておらず、コールバックで実行する関数内で return True or False が書かれていれば問題なく処理が行われました。
addCheck ~ と関数名にもある通り、読み込みや書き出し前のチェックで使うためのコールバックで、そこで実行される関数内で任意のチェック処理を入れ、そこで問題があった場合に return False をすることで処理しようとしていた読み込みや書き出しを中断する事ができるようにする仕組みでした。
この記事は Maya Advent Calendar 2020 の19日目の記事です。
明日も自分の記事で「【Maya/Python】MayaからUVアニメーションをUnityへエクスポートする」です。
今回は OpenMaya API 2.0 の MSceneMessage クラスにある様々なコールバックのタイミングについてまとめていきます。
maya.cmds にある scriptJob と似たようなものですね。
ちなみに今年の2月にも MSceneMessage を使った「【Maya/Python】インポート時に追加されたノードを選択状態にする」という記事も書いていますのでご興味あればご覧下さい。
MSceneMessage についての公式のリファレンスページはこちらです。
検証に使っているのはMaya2019です。