お久しぶりです。
前回の記事からもう2年も経ちましたか…
仕事もプライベートもバタバタしてめちゃくちゃサボってますね(;・∀・)
今回は Unity2022.1 から追加された dynamic branch というものを検証してみました。
これを書いている時点では dynamic_branch で検索しても、まだ公式のマニュアルしかヒットしなかったので、
それをまとめていこうと思います。
昨日に続き 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 フォルダを作ってその中に、
それぞれコピーして下さい。
※使用にされた際に不具合が出ても責任は取れませんので自己責任でお試し下さい。
2020年一発目の記事です。
MayaのOpenMaya関連の続きも書きたいのですが、
ちょっと今回はUnityでのテクスチャーのメモリ使用量の話です。
Substanceから出力したPNGやTGAなどではなく、.sbsarファイルを出力。
それをUnityにImportして、その中のマテリアル・テクスチャーをPlaneに貼ったものを
Android用にビルドして計測してみました。
※間違っていることがあればブログのコメントやTwitterの方で教えて頂けると幸いです。
Unityでグラフィックのデバッグやプロファイルをしようとした時に、
Windows上で行う場合はUnityでサポートされている RenderDoc をインストールすると
Game と Scene ビューにボタンが追加され、気軽にチェックできるようになります。
https://docs.unity3d.com/ja/current/Manual/RenderDocIntegration.html
でも、Androidの実機上でのプロファイルを行ってみたい!
調べてみると最適化関連の記事などでよく耳にする Snapdragon Profiler が
どうやら自分の私物のAndroidのGPUに合っている。
じゃあ、これを使ってみよう!と思いインストールしてみました。
がしかし、なかなかスムーズにはいかず…。
色々検索しましたが、Unityでビルドしたアプリを Snapdragon Profiler で
プロファイルするまでの導入が書かれた日本語の記事もなさそうだったので
簡単に導入までをまとめてみました。
あけましておめで… あれ、もう4月の後半…(・_・;)
今回はあっさりめな記事、
のつもりが自分でどんどん広げてしまって記事を書くのも時間がかかりましたw
時間も掛けましたが結局下記に書いている注意点の部分は解決できていません…
Mayaから書き出した特定のテキスト形式のデータをUnityのEditor上で読み込んで使う際に
Maya & Pythonを用いてJSON形式で書き出して、Unity側でJsonUtility.FromJson関数など使って読み込むことは以前からやっていました。
しかし、ちょっと仕事で、ランタイムでもそういうデータを使う事になりそうになり、
「ということは、ScriptableObjectの方がいいかなぁ~
じゃあJSONを書き出してAssetImporterで内容読み取って生成する事になるかな?」
と思ったのですが、ScriptableObject(.asset)も中身はテキストにもでき、YAML形式で書き出されているので、
調べたらPyYAMLというPythonでYAMLを扱えるライブラリがあるじゃないですか!
これで勝つる!と思いきや…
仕事でUnityのシェーダーをちょくちょくいじってるのですが、
不透明用シェーダー・アルファブレンドシェーダー・加算用シェーダー・減算用シェーダー…という風に
これらを別シェーダーファイルで用意しちゃうと管理が厄介ですよね。
かといって、ブレンドの変更をする場合にただ単にSrcBlend と DstBlend を
One や SrcAlpha や OneMinusSrcAlpha などから選択できるようにしてもどの組み合わせにしたら加算になるんやっけ?
と使ってもらうデザイナーが混乱するかもしれません。
なのでStandardShaderについてるRenderingModeみたいにできたら分かりやすいなと思い、
CustomShaderGUIを調べて公式のビルトインシェーダーの中に入っているStandardShaderGUI.csを参考に
それを自分なりに噛み砕いてもう少しシンプルにしたものを作ってみました。
Unityで確認されたい場合は下の方にシェーダー2つとCustomShaderGUI用のC#スクリプトのコードを書いてますので
それをコピーしてもらうか、こちらからDLしてもらって、
・shaderファイルはShaderフォルダなど適当な場所
・csファイルはScriptsフォルダなどの中のEditorフォルダ
に置いてください。
今更ですが、あけましておめでとうございます。
2017年一発目の記事です。
やってみると分かりにくかったのでメモを兼ねて残しておきます。
今回はUnityにインポートしているFBXの内のアニメーションクリップの名前を変更する方法です。
単純に変更するのはすごく簡単なのですが、すでにAnimation Controllerのモーションに設定している場合
スクリプトから単純に変更かけると参照が外れてしまいます!!!
きっかけはTwitterでこの事で困っていると書かれている方がいて、自分でも試してみると上手くいきませんでした。
ちなみに手動でEditor上で名前を変更してApplyボタンを押す方法なら、参照が外れません。
なので、まずはこの差を探っていきました。
仕事でUnityでライトマップを焼くときのLightingウィンドウの設定のプリセットを保存できるエディター拡張を作って、
そのエディター拡張のウィンドウを開く時にLightingウィンドウが開かれてなかったら一緒に開こうと思ったのですが、
Lightingなどの既存のウィンドウは拡張ウィンドウのようにただGetWindow()だけでは開けませんでした。
そこで色々検索してなんとか開く方法を見つけました。
一通り自分で試してはいますが、不具合が出ても責任は取れませんので自己責任でお試し下さい。
あと、もしもっと良い方法あったら教えて下さい。m(_ _)m
UnityでUVアニメーションやカラーアニメーションをつける際にUnity上でカーブをいじるのは中々やりづらいです。
そこでMayaからUnityにアニメーションを持っていけるように考えました。(まぁMayaもSIに比べるとアニメーションカーブはいじりづらいんですけど…)
とはいえ、データのやりとりをするFBXに入れられるのはtranslateXYZ, rotateXYZ, scaleXYZなどで
UVアニメーションやカラーアニメーションはそのまま入れられません。
なので、UVアニメーションやカラーアニメーションをtranslateやscaleに入れて出力できるようにしました。
※rotateも試してみましたが、FBXに出力したオイラー角がUnity内ではクオータニオンに変換されます。そのクオータニオンをオイラー角に変換し直した数値を見ても、Maya上(UnityとX軸の向きが逆ということを考慮しても)と同じにならなかったりしてうまくできなかったので今回は使っていません
ちなみに自分が試したソフトのバージョンはMaya2016、Unity5.3.5p5です。
おそらく近いバージョンなら、他のバージョンでもスクリプトは動くと思います。