LoginSignup
7
1

More than 3 years have passed since last update.

作業シーンのFPSについて

Last updated at Posted at 2019-12-22

投稿日の前日に熱海旅行をしていたら記事の存在が頭から消え去りました。すいません。
気を取り直してmayaの描画fps周りを書いていこうと思います。

温泉は最高でした。

検証環境

  • Windows 10
  • Xeon E5-2683 v3 @2.00GHz
  • Maya2017 Update5
  • Maya2019 Update2

現状のパフォーマンスを測る

今回は公式で配布されている、モーションキャプチャデータを使用します。
http://www.autodesk.com/maya-creativemarket-samples アクセスするとダウンロードがはじまるのでテキストとして載せておきます。
約3200ポリゴンのモデルにHIKが仕込まれており、歩きのモーションキャプチャデータがベイクされています。
image.png

現状のパフォーマンスを測るのにEvaluation Toolkitを使用します。09) Validationのパフォーマンステストを走らせます。
01.png

実行するとスクリプトエディタにこのような結果が返ってきます。

Playback Speeds
    DG  = 145.631 fps
    EMS = 180.723 fps
    EMP = 200 fps

DGはその名の通りDGでの評価時のfpsです。
一つ飛ばしてEMPはParallel評価時のfpsです。
真ん中のEMSはParalell評価を並列せず、単体で処理した場合のfpsです。
体感でDGとEMSではEMSのほうが低くでることのほうが多いです。

EMPの値が振り切ってしまっているので、もう少し重いシーンを作ります。
複製して20万ポリぐらいに増やしたモデルを先ほどのモデルをwrapしてみました。
image.png

Playback Speeds
===============
    DG  = 6.63423 fps
    EMS = 6.0048 fps
    EMP = 6.07042 fps

だいぶ重くなりましたね。
DGとEMPでの差がないどころか下がっています。

DGでの向上

Profilerで覗いてみると、wrap部分にかなり処理がかかっています。
image.png

wrapは便利ですが、処理に時間がかかっているのでskinBindに置き換えてみると、このような結果が返ってきました。

Playback Speeds
===============
    DG  = 39.7878 fps
    EMS = 21.7707 fps
    EMP = 26.362 fps

wrapを取り除いたことで、全体的にfpsが向上しましたが、DGのほうが良い結果になりました。
あれ?Parallelって早くなるんじゃないの??

考えてみると、いくら重いメッシュを用意しても最終的に出力されるメッシュが一つのみであれば並列処理の恩恵が少ないです。(むしろDGのほうが良い?)
このような単純なシーンではDGでのパフォーマンス向上に努めたほうがシーンのfpsを向上させることができそうです。

Parallelの恩恵を受けるには

試しに20万ポリのモデルを5体別々にwrapしたシーンを測定しました。

Playback Speeds
===============
    DG  = 1.37665 fps
    EMS = 1.22931 fps
    EMP = 3.21337 fps

最終的に出力されるメッシュが増えたことで並列化の恩恵をうけることが出来ました。
最終出力されるメッシュが多い場合はParallel化を検討したほうがよいかもしれません。

Cached Playbackを使う

maya2019より、Cached Playbackという新機能が追加されています。詳細はこちらに
キャッシュされた再生(Cached Playback)のプリファレンス

先ほどの5体wrapしたシーンでビューポートキャッシュの検証をしてみます。
特にキャッシュを取らない状態だとこのような結果になりました。
maya2017と同じシーンで検証していますが、EMPで少しだけ向上していますね。
まあ誤差ということにしておきましょう。

Playback Speeds
===============
    DG  = 1.38479 fps
    EMS = 1.18671 fps
    EMP = 3.90829 fps

左下のこのボタンをアクティブにすることでキャッシングが始まります。
image.png

カレントタイムから前後にキャッシングが始まりました。

image.png

キャッシング中にメモリ不足に陥ったときはプリファレンスからRAM上限を上げてください。
デフォルトは50%に設定されています。
image.png

キャッシングした状態でValidationのCachingで計測します。
image.png
キャッシング後は動かした部分のみの計算になるのでアニメーション作業なども
かなりの効果が得られそうです。

まとめ

最終出力が単一の場合はDGでの向上を。
複雑で重いシーンほどParallelの恩恵が大きい。
Cached Playbackは数fpsのシーンでもほぼリアルタイムのfpsまでもっていける。

細かいテクニックというより検証&簡単な考察となってしまいましたが、
何か参考になればと思います!

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1