今日のアセット
$27 => $18.90 30%OFF
モバイルの低スペック環境で、大量のキャラクターや草など、アニメ化されたモデルを変換して100倍軽くすることができるスクリプトです。
2017年2月21日追記 買ってみてエディタの仕組みを理解しました。追記してありますので読んでみて下さい。
100倍早くするには圧縮精度を一番低くして超荒い状態になりますが、10倍は早くなると想定される凄いスクリプトです。
アニメ化された群衆や植物の表現に最適です。ボタンをクリックするだけで、画面内で動くモノを100倍に!
比較検証
画面左が通常のMecanimシステムで、画面右がMesh Animator。60FPS出てる!
スペック的に配置できるキャラの限界
モバイルのようなスペックの低い環境では10〜20程度が精々ですが、それを超える事のできる最適化スクリプト。
Mesh Animatorなら通常の表示より10倍くらい軽くなるパフォーマンスが得られるそうです。
一般的なモバイルデバイスでは、Mecanimやレガシーアニメーションシステムは、検出可能なフレームレートロスが発生するまでに、10-20程度の完全にスキンされアニメ化されたキャラクターを画面上で動かすことが可能です。
Mesh Animatorなら、完全にアニメ化された100種類以上の独自のメッシュを同時に画面上に表示することができ、デスクトッププラットフォームでは数千もの表示が可能です。
CPUオーバーヘッドを最小限に。
実際にWebGLデモで確認してみたら、圧倒的に軽くなる事が判明!
モバイルプラットフォームで群衆を扱うときには絶大な効果が得られるので、ヌルヌル動くゲームを目指すなら本当に要チェックなアセットです。
スタジアムの客席に大量のガイコツ達がアニメーション。数え切れない体数なのにスムーズに動く!
セットアップ方法
気になるセットアップ方法の動画はこちらです。
時間の無い方のために、動画の内容をまとめました。
Mesh Animator - Voxelized Character - YouTube(3:16)
1.Projectビューのキャラクターのメッシュを選択した状態で、右クリック
2.Create->Mash Animator... を選択
3.エディタ画面が開き、Asset to Bakeに選択したキャラが表示されていることと、
Bake Animatonに変換するアニメーションが含まれている事をチェックします。
4.色々パラメータがありますが、圧縮精度を一番荒くしてテストしてみます。
※Compression Accuracy (圧縮精度)を0.1に設定
※Bake FPS(レートが高いほど滑らかになるが負荷が大きい)
5.コンバートは一番したのボタン
「Generate Snapshots for 5 animations」で実行。
コンバートが完了すると、Prefabとアニメーションデータが生成される。
6.歩行などループするアニメーションは設定しなくてはならないので、選択して
Wrap ModeをLoopにチェンジ
7.コンバートして出来たPrefabをシーンにドロップします。
実行すると、まるでモザイクが掛かったような荒さの目立つ状態ですが、極限まで軽くなったキャラがアニメーションしました!
遙か遠方で米粒程度のキャラとして使うならこのレベルで十分ですね。
8.次に圧縮精度を0.001を設定して同様の手順で実行すると・・・
近くで見てもとても綺麗なキャラとアニメーションが仕上がりました。
こんなに綺麗なのに通常のMecanimAnimationより圧倒的に軽くなります。
9.Animatorは、キャラのPrefabのMeshAnimatorコンポーネントに登録されています。
デフォルトで再生したいアニメのセットなどここで行います。
10.アニメーションの制御方法は、ドキュメントにわかりやすく書いてありました。
http://jacobschieck.com/projects/meshanimator/documentation/documentation.html
meshAnimator.Play(anim); // 通常再生
meshAnimator.Crossfade(anim); // クロスフェード
仕組み
アセット説明にチラッと書いてあった「ボクセル化」
圧縮精度の低いコンバートの結果がボクセルっぽいので、その通りなのかなと思います。
•アニメーションの付いたボクセルキャラクターをボタンのクリック一つで作成。
購入して確認してみた。
上「Player_AnimatedMesh」がMesh Animator適応後。
下「Player_SkinnedMesh」が通常のキャラクター
エディタで最適化をかけた場合は、メッシュを一体化して、かつローポリにしてくれるとのこと。
アニメーションは、ボーンアニメではなく、頂点アニメになります。
頂点アニメの場合は、フレーム毎で座標を保持するので秒数が長ければ長いほどメモリに負担がかかります。
群衆じゃなく1体で効果があるかどうか
サンプルにあるPlayer(ローポリ化がさほど無い)で試してみた感じでは、微妙にMesh Animatorの方が軽くなりますが、本当に誤差程度でした。
なので、沢山のキャラで持つなら断然Mesh Animatorのがパフォーマンスが良い。
変換前「Player_SkinnedMesh」
Mesh Animator「Player_AnimatedMesh」
メモリへの影響
全てが良いと言うわけではなく、欠点もあるそうです。あります。
最善なのはローポリモデルでアニメーションの秒数が短い事。
アニメーションは頂点アニメになるので、ローポリじゃないとメモリを多く取ることと、長いアニメはさらにメモリを多く使ってしまうのでMesh Animatorの利用は不向きになります。
メッシュアニメーター、頂点の数に応じて、アニメーションのフレーム数で、伝統的なSkinnedMeshRendererとアニメーターよりも多くのメモリを取るために起こっています。どこに保存すると、CPUにあります。2の間の良好なバランスを見つけることが重要です。文字は5kの頂点と20のアニメーションそれぞれ数秒の長さを持っている場合、それはメッシュアニメーターを使用することは現実的ではありません。
詳しくはドキュメントにて
サンプル動画
スタジアムで大勢のガイコツ達がアニメーション
Mesh Animator Version 1.5 - YouTube(0:50)
変換前とのパフォーマンス検証
Mesh Animator Unity Crowd Comparison - YouTube(0:10)
WebGLデモの内容を動画で紹介
Mesh Animator Mobile Crossfade Performance - YouTube(0:40)
Unity 5.0.0 以降のバージョンが必要Mesh Animatorは、キャラクター、アニメートアセットやその他の種類のスキンメッシュを変換したり、完全にアニメ化する為のツールセットです。一般的なモバイルデバイスでは、Mecanimやレガシーアニメーションシステムは、検出可能なフレームレートロスが発生するまでに、10-20程度の完全にスキンされアニメ化されたキャラクターを画面上で動かすことが可能です。Mesh Animatorなら、完全にアニメ化された100種類以上の独自のメッシュを同時に画面上に表示することができ、デスクトッププラットフォームでは数千もの表示が可能です。
アニメ化された群衆や植物の表現に最適です。ボタンをクリックするだけで、画面内で動くモノを100倍に!
•コンバーターを使用して素早く簡単にアセットを変換。
•Mecanimを使用して制御可能。既存のコードやコントローラーを書き直す必要も無く、スクリプトを添付するだけです。
•カスタムのアニメーションイベントをサポート。
•パフォーマンスを念頭に構築され、CPUオーバーヘッドを最小限に。
•アニメーションの付いたボクセルキャラクターをボタンのクリック一つで作成。
•完全なソースコードが付属。
性能比較ビルド
ドキュメンテーション
ディスカッションスレッド
モバイル比較ビデオ
18.90ドルの計算結果 (1ドル 113.1180 円)
18.90ドル は、 2,138円
定価27ドルなら、3,054円