Animation

Tips

modoのキャラクターアニメーションのパフォーマンス

modoのキャラクターアニメーションのパフォーマンスについて書いてみます。

 

はじめに

modoはキャラクターアニメーションのパフォーマンスが遅いという問題があります。この問題を改善するためmodoは段階的にパフォーマンス改善しています。

modo 15.1になってMaya、3dsMax、LightWaveなど、他の3Dソフトで見かけるアニメーションパフォーマンスを改善する機能が一通り搭載されたように思います。

ハイポリのサブディビジョンメッシュを滑らかにアニメーションできるような改善には至っていませんが、現時点でアニメーションを作成する場合に、どのような所に注意した方がよいのかまとめてみたいと思います。

 

アニメーション再生が遅い原因は?

modoのアニメーション再生が遅い原因でよく言われるのが「デフォーマの計算が遅い」です。
リグ単体では早いのに、スケルトンにバインドした場合や、デフォーマを追加した場合にパフォーマンスが遅くなるので「デフォーマの計算が遅い」と言われていました。

しかし、開発者の方の発言によるとmodoのデフォーマはマルチスレッドで計算しており、実際の原因はグラフィックボードに送信するためのデータ生成(メッシュの細分割、三角形のインデックスの生成、法線計算、位置の計算)がボトルネックになってるとのことです。
この計算はデフォーマを使用していると毎フレーム発生するので、デフォーマ計算が遅いと思われていました。

modo 13.1ではボトルネックを解消するためサーフェス計算が新しく書き直されましたが、サブディビジョンサーフェースやカーブなど、一部のポリゴンタイプはまだ作業中です。(この書き換えによってデフォーマキャッシュが使用できなくなったのが残念です)

 

GPUを強化すれば早くなる?

グラフィックボードに送信するためのデータ生成がボトルネックということは、強力なグラフィックボード(GPU)にすればアニメーションのパフォーマンスがよくなるのでしょうか?

残念ながら劇的に速くなくことはありません。昔からmodoのビューポートパフォーマンスは、GPUよりCPUの速度の方が重要だと言われています。Windows10のタスクマネージャーを使用するとGPUの使用率を見ることができますが、modoはGPU使用率が低いことがわかります。

 

もちろんGPUレンダラーのmPathや、NVIDIA OptiXデノイザなどGPUを使用する機能を使う場合はGPUの性能が重要になりますが、modoのアニメーション再生やビューポートパフォーマンスには大きな影響はありません。

ゲームエンジン的なアプローチのアドバンストビューポートを使用するとGPU使用率が上がりますが、デフォルト表示に比べてアドバンストは描画速度が遅いのでアニメーション作成に使用するのはお勧めしません。

 

恐らくボトルネックになるサーフェス計算がCPUでおこなわれているため、modoではGPUよりもCPUのクロック数が高い方がパフォーマンスへの影響が大きいのかなと思います。以上のことから、modoでアニメーションを速くするには以下の2つが重要になります。

  • クロック数の高いCPUを使用する。またはCPU使用率(計算量)を下げる
  • GPUに転送するデータ生成量を減らす

modoに限らず3DCG全般で同じ事が言えますね。

 

キャラクターアニメーションのパフォーマンスをよくする方法

前置きが長くなりましたが、modoでキャラクターアニメーションの再生パフォーマンスを速くした場合は以下の点に注意するといいです。

  • サブディビジョンはOFFの状態でアニメーションを作成すると軽い
  • サブディビジョンを使用する場合はSub-D、またはOpenSubdivを使用する
  • 速いリグを使用する
  • 複数のキャラクターが登場するシーンは、シーンを分けて作る
  • メッシュに依存したリグは避ける
  • 「メッシュスムージング」「シェーダーツリーを使用」をOFFにする
  • ディスプレースメントやバンプを使用する場合は、レイヤーの「GL 表示」をOFFにする
  • プロキシメッシュや代理メッシュを使用する

 

以降ではキャラクターアニメーションのパフォーマンステストについて書いてみます。

 

アニメーションのパフォーマンステスト

キャラクターアニメーションを速くする方法をまとめるにあたり、「ポリゴン数」「リグの速度」「ビューポートの表示」の設定を切り替えて、アニメーション再生のパフォーマンスをテストしました。

自分のPC環境でファイルをダウンロードして検証できるように、modoで代表的なリグであるCharacterBoxとACSのサンプルシーンを使用しました。

テスト環境

modo 15.1v1

 

フレームレート

アニメーション再生のパフォーマンスはGLメーターで表示されるフレームレートを参考にします。

 

リアルタイムで再生 OFF

「リアルタイムで再生」はOFFにします。

「リアルタイムで再生」はシーンのフレームレートを維持するように再生するオプションで、ONの場合はアニメーションの再生速度が低下した場合にフレームをスキップすることで、シーンのフレームレートを維持しようとします。

OFFにするとシーンのフレームレートに関係なく、再生可能な最高のパフォーマンスでアニメーション再生します。アニメーションの再生速度が低下した場合でも毎フレーム描画するので、パフォーマンスを調べる場合は「リアルタイムで再生」をOFFにする必要があります。

 

一口にキャラクターアニメーションと言っても「ポリゴン数」「リグの速度」「ビューポートの表示」など様々な要素で構成されています。
個々の要素ごとに分解して何がどのくらいアニメーションに影響を与えているかテストしたので、キャラクターアニメーションの参考にしてください。

 

デフォルト状態のパフォーマンス

まずはmodoデフォルト状態のパフォーマンスです。

モデルのポリゴン数を近くするため「Human.lxo」はサブディビジョンレベルを3から2に変更、「Bolo_Walk.lxo」は1から2に変更しました。
ポリゴン数は「Human.lxo」が59,296トライアングル、「Bolo_Walk.lxo」が33,600トラインアングルです。

 

画面キャプチャーしてるので、少しフレームレートが遅くなってます。また、記載してるフレームレートはおよその値です。

85FPS。

34FPS。

 

 

ポリゴン数

ポリゴン数の違いによるパフォーマンスをテストしました。

ポリゴン数が多ければ当然遅くなるのは予想できますが、サブディビジョンサーフェースを使用した場合と使用しない場合、サブディビジョンの種類でどのような変化があるかテストしました。

アニメーション用途ではSub-D、OpenSubdivが適していそうです。

Sub-D、PSub、OpenSubdiv

ゲームのようなリアルタイム向けモデル以外は、サブディビジョンサーフェースを使用する場合が多いのではないでしょうか。
modoには3種類のサブディビジョンが搭載されていますが、各サブディビジョンでのアニメーション速度をテストしました。

  • Sub-D : modoオリジナルのサブディビジョン Tab
  • Catmull-Clark(通称PSub) :ピクサーからライセンスしているサブディビジョン Sift + Tab
  • OpenSubdiv : Catmull-Clarkのオープンソース版。GPU計算に対応ししている

サブディビジョンサーフェースはポリゴンを細分割して、曲線的なモデルを作成する機能です。Sub-DとCatmull-Clarkでは分割アルゴリズムが異なるので、サブディビジョンレベルによってポリゴンの増加量が違います。

 

Sub-D

サブディビジョンレベル 0 (ケージ ON)

79FPS。レベル 0よりレベル1の方がフレームレート出るので、レベル 0は最適化されていない等の問題がありそうです。

 

33FPS。レベル 0からレベル5までフレームレートに大きく変化がないので、このような単純なモデルの場合サブディビジョンよりACSのリグ計算がフレームレートのボトルネックになっていると思われます。

 

サブディビジョンレベル 1

98FPS。

33FPS。

サブディビジョンレベル 2

88FPS。

32FPS。

 

サブディビジョンレベル 3

74FPS。

31FPS。

 

サブディビジョンレベル 4

59FPS。

29FPS。

 

サブディビジョンレベル 5

49FPS。

28FPS。

 

Catmull-Clark

サブディビジョンレベル 0 (ケージ ON)

69FPS。

33FPS。

 

サブディビジョンレベル 1

74FPS。

32FPS。

 

サブディビジョンレベル 2

39FPS。

25FPS。

 

サブディビジョンレベル 3

18FPS。

18FPS。

 

サブディビジョンレベル 4

7.4FPS。

9.7FPS。

 

サブディビジョンレベル 5

2.3FPS。

3.7FPS。

 

OpenSubdiv 3.0

演算には「マルチスレッド」を使用しています。「CPU」より「マルチスレッド」の方がわずかにパフォーマンスがよかったのですが、1CPUしか使用しないようです。

本来はGPUが最もパフォーマンスがいいはずなのですが、PC環境のせいでGPUを設定するとmodoがクラッシュするため、GPUを使用してテストできませんでした。

 

サブディビジョンレベル 0 (ケージ ON)

80FPS。

35FPS。

 

サブディビジョンレベル 1

104FPS。

36FPS。

 

サブディビジョンレベル 2

83FPS。

34FPS。

 

サブディビジョンレベル 3

46FPS。

29FPS。

 

サブディビジョンレベル 4

17FPS。

18FPS。

 

サブディビジョンレベル 5

4.8FPS。

7FPS。

 

サブディビジョン OFF

サブディビジョン OFFの状態で、Catmull-Clarkを使用して細分割したモデルをアニメーションしました。

 

サブディビジョンレベル 0 相当

110FPS。

34FPS。

 

サブディビジョンレベル 1 相当

69FPS。

32FPS。

 

サブディビジョンレベル 2  相当

26FPS。

19FPS。

 

サブディビジョンレベル 3 相当

7.3FPS。

7.3FPS。

 

サブディビジョンレベル 4 相当

1.7FPS。

1.9FPS。

 

サブディビジョンレベル 5は重すぎるので省略です。フレームレートのテストを表にすると以下のようになります。

 

ポリゴン数増加のテスト結果

サブディビジョンレベルによるポリゴン分割数

サブディビジョンをONにすると、元のポリゴン数がサブディビジョンレベルに応じて細分割されます。サブディビジョンレベルを3以上にした場合、Sub-DよりCatmull-Clarkのほうがポリゴン数が多くなる。

Sub-D
Catmull-Clark
サブディビジョンレベル 1
4 倍
4 倍
サブディビジョンレベル 2
16 倍
16 倍
サブディビジョンレベル 3
36 倍
64倍
サブディビジョンレベル 4
64 倍
246倍
サブディビジョンレベル 5
100 倍
1024倍

 

Human.lxoのフレームレート

サブディビなし
Sub-D
Catmull-Clark
OpenSubdiv
サブディビジョンレベル 0
110 FPS
79 FPS
69 FPS
80 FPS
サブディビジョンレベル 1
69 FPS
98 FPS
74 FPS
104 FPS
サブディビジョンレベル 2
26 FPS
88 FPS
39 FPS
83 FPS
サブディビジョンレベル 3
7.3 FPS
74 FPS
18 FPS
46 FPS
サブディビジョンレベル 4
1.7 FPS
59 FPS
7.4 FPS
17 FPS
サブディビジョンレベル 5
49 FPS
2.3 FPS
4.8 FPS

Bolo_Walk.lxoのフレームレート

サブディビなし
Sub-D
Catmull-Clark
OpenSubdiv
サブディビジョンレベル 0
34 FPS
33 FPS
33 FPS
35 FPS
サブディビジョンレベル 1
32 FPS
33 FPS
32 FPS
36 FPS
サブディビジョンレベル 2
19 FPS
32 FPS
25 FPS
34 FPS
サブディビジョンレベル 3
7.3 FPS
31 FPS
18 FPS
29 FPS
サブディビジョンレベル 4
1.9 FPS
29 FPS
9.7 FPS
18 FPS
サブディビジョンレベル 5
28 FPS
3.7 FPS
7 FPS

 

サブディビジョンレベルを上げれば当然パフォーマンスが低下する結果になりましたが、いくつか興味深いことがわかりました。

 

OpenSubdivとSub-Dのパフォーマンスがよい

今回テストしたモデルではOpenSubdivとSub-Dのパフォーマンスがよいようです。

modoにはOpenSubdivがオープンソースとして公開される前に、ピクサーから直接ライセンスしたCatmull-Clarkを独自に実装していました。このCatmull-ClarkはOpenSubdivよりトポロジー編集が速い物だとのことですが、やはりアニメーションの再生では、OpenSubdivの方が高速なようです。

Sub-Dも決して遅くないので、アニメーションではOpenSubdivかSub-Dを使用するのがよさそうです。ただしOpenSubdivは少し動作が不安定でクラッシュしやすいように感じました。

 

サブディビジョンレベル 0より、レベル1の方がフレームレートが高い

modo 15.1でサブディビジョンレベルを0に設定すると「ケージ」が有効になる機能が追加されましたが、サブディビジョンレベル 0より、レベル1の方がフレームレートが高いです。

バグなのか最適化が進んでないためか原因はわかりませんが、パフォーマンスを重視する場合はレベル 0を使用せずに、TabでサブディビジョンをOFFにした方がよいです。

 

サブディビジョンはフリーズしない方がよい

modoはTabで非破壊的にサブディビジョンを適用することができますが、サブディビジョンをフリーズするよりも、Tabで非破壊サブディビジョンを使用した状態の方がパフォーマンスがよいようです。

modo 13.1でサーフェス計算コードの書き直しがおこなわれ、場合によっては3倍高速化しているとのことです。サブディビジョンよりもサブディビジョンをフリーズした方がパフォーマンスがよくなる場合があるかと思いましたが、非破壊サブディビジョンを使用した方がいいようです。

 

サブディビジョンレベルを上げてもそれほど遅くならない

サブディビジョンレベルを上げるとポリゴン数は指数関数的に増えますが、FPSは思ったより落ちないようです。

 

リグの速度

キャラクターアニメーションでは、使用するリグの計算速度も重要です。

アニメーション作成では何度も再生しながらタイミングを調整します。どんなに便利な自動制御が組み込まれたとしても、リアルタイムで再生できないリグには価値がありません。静止画の場合でも動作が速いほうがトライアンドエラーがしやすくなるので、リグの速度は重要です。

ここではCharacterBoxとACSを使用してリグの速度を測る方法を紹介したいと思います。リグの速度は全てのアイテムを非表示にするとわかります。

 

リグなしの速度

まずはリグをベイクした状態の速度を見てみます。CharacterBoxもACSもリグをmodo標準のスケルトンにベイクすることができます。
ここではフレームレートの変化がわかりやすいように、サブディビジョンレベル2でフリーズしたメッシュを使用しました。

Human.lxo

  • メッシュとスケルトン表示 25FPS
  • スケルトンだけ表示 420FPS
  • 全て非表示 590FPS

 

Bolo_Walk.lxo

  • メッシュとリグ表示 28FPS
  • スケルトンだけ表示 250FPS
  • 全て非表示 490FPS

 

2つのシーンでフレームレートに差が出てるのは、データの違いによる物です。
Human.lxoはポリゴン数が多いのでメッシュを表示してると遅い。Bolo_Walk.lxoは指にスケルトンが仕込まれてるので、スケルトン表示のとき遅い。ということだと思います。

 

リグの速度

リグが動いてる状態でメッシュやリグ、コントローラーを全て非表示にするとリグの速度がわかります。

  • メッシュとリグ表示 23FPS
  • リグだけ表示 160FPS
  • 全て非表示 200FPS

 

Human.lxo に指を追加

  • メッシュとリグ表示 22FPS
  • リグだけ表示 86FPS
  • 全て非表示 114FPS

  • メッシュとリグ表示 19FPS
  • リグだけ表示 44FPS
  • 全て非表示 49FPS

 

CharacterBoxは指を追加すると114FPS。ACSはおよそ49FPSがリグ速度の上限だとわかります。
リグ機能が異なるのでリグその物の速度を比べることは難しいですが、CharacterBoxやACS3は必用に応じてリグを追加できるので、リグのパフォーマンスを制御しやすいかもしれません。

 

デフォーマの計算速度

メッシュを非表示にしただけだと恐らくデフォーマの計算が走った状態ですが、メッシュを非表示にした場合と大きな違いはありませんでした。もしかしたらメッシュを非表示にするとデフォーマ計算を省くなど、最適化されてるのかもしれません。

  • デフォーマON 20FPS
  • デフォーマOFF 150FPS
  • リグだけ表示 160FPS(デフォーマONでメッシュ非表示にした場合とほぼ同じ)
  • 全て非表示 200FPS

 

またメッシュを参照するコンストレイントを使用していると、メッシュを非表示にしてもパフォーマンスが変わらない場合があります。

例えば下の画像はLocatorをポリゴンコンストレイントと、位置コンストレイントを使用したものです。ポリゴンコンストレイントを使用していると、メッシュを非表示にしてもフレームレートが遅いままです。Locatorを非表示にするとフレームレートが上がります。

リグとメッシュに依存関係がある場合は、フレームレートがメッシュの表示速度の影響を受けるようです。

 

ちなみに、CharacterBoxに自動制御を組み込んでカスタムした自作リグの場合、補助スケルトンを表示した状態だと14.5FPSでした。

このリグはアニメーション用途ではなくて、どこまで自動制御組み込めるのか色々テストしていた物なのです。IK計算後の角度を使用してスケルトンを自動制御してるのですが、IKのようにワールド座標で計算された角度に連動してスケルトンを制御しようとすると、徐々にパフォーマンスが低下するようです。1関節につき5~6アイテム動いてるので、数が多いというのもあります。

 

 

 

複数リグの速度

シーンに複数のリグがある場合の速度をテストしました。

modoはデフォーマなどマルチスレッドに対応してる機能がありますが、チャンネルモディファイヤは並列処理に対応していません。シーンに複数のリグがある場合、どのようになるのかテストしました。

やはりリグの並列処理に対応していないため、数に応じて速度が低下しました。

 

Human.lxoは指を追加して実際に使用するリグ構造に近い状態にしました。

リグ1体
  • メッシュとリグ表示 59FPS
  • リグだけ表示 86FPS
  • 全て非表示 114FPS

  • メッシュとリグ表示 35FPS
  • リグだけ表示 45FPS
  • 全て非表示 49FPS

 

リグ2体
  • メッシュとリグ表示 31FPS
  • リグだけ表示 46FPS
  • 全て非表示 65FPS

  • メッシュとリグ表示 17FPS
  • リグだけ表示 22FPS
  • 全て非表示 24FPS

 

リグ3体
  • メッシュとリグ表示 20FPS
  • リグだけ表示 31FPS
  • 全て非表示 43FPS

  • メッシュとリグ表示 11FPS
  • リグだけ表示 14FPS
  • 全て非表示 15FPS

 

リグ4体
  • メッシュとリグ表示 15FPS
  • リグだけ表示 23FPS
  • 全て非表示 32FPS

  • メッシュとリグ表示 8FPS
  • リグだけ表示 10FPS
  • 全て非表示 11FPS

 

リグ5体
  • メッシュとリグ表示 12FPS
  • リグだけ表示 18FPS
  • 全て非表示 26FPS

  • メッシュとリグ表示 6.8FPS
  • リグだけ表示 9FPS
  • 全て非表示 9.6FPS

 

複数リグのテスト結果

Human.lxoのフレームレート

メッシュとリグ
リグ
全非表示
リグ1体
59 FPS
86 FPS
114 FPS
リグ2体
31 FPS
46 FPS
65 FPS
リグ3体
20 FPS
31 FPS
43 FPS
リグ4体
15 FPS
23 FPS
32 FPS
リグ5体
12 FPS
18 FPS
26 FPS

 

Bolo_Walk.lxoのフレームレート

メッシュとリグ
リグ
全非表示
リグ1体
35 FPS
45 FPS
49 FPS
リグ2体
17 FPS
22 FPS
24 FPS
リグ3体
11 FPS
14 FPS
15 FPS
リグ4体
8 FPS
10 FPS
11 FPS
リグ5体
6.8 FPS
9 FPS
9.6 FPS

 

チャンネルモディファイヤは並列処理に対応していないので、リグの数に応じてフレームレートが下がることがわかりました。

CharacterBoxはリグのみ表示した場合と、全て非表示にした場合のフレームレートに差があります。CharacterBoxはスケルトンにプロシージャルメッシュを使用してるせいなのか、リグのみ表示してる場合に描画コストが発生してるようです。
逆にACSはフレームレートに差がないため、ロケータのカスタムシェイプ表示はそれほど描画速度に影響がないことがわかります。

CharacterBoxはシーンに3体リグを配置しても30FPSを維持できそうですが、ACSはシーンに2体配置するとリアルタイムでのアニメーション再生が難しくなりそうです。ACS3ならもっと軽くなってるかも知れません。リグは好みによる部分が大きいので、自作リグなどを含めて速度は気にしたいところです。

 

リグをベイクした状態だと5体でも30FPS出ます。modoでも工夫次第ではアイドルアニメのダンスシーンを処理できるかもしれませんが、普通に別々のシーンでアニメーションを作成した後に、シーンを合成するのがスマートだと思います。

 

ビューポートの設定

ビューポートのスタイルやオプションを変更してアニメーションの再生パフォーマンスをテストしました。フレームレートが高い方がパフォーマンスの変化がわかりやすいのでHuman.lxoを使用しています。

パフォーマンス

ビューポートプロパティの表示属性タブには「パフォーマンス」というパフォーマンスに影響する表示をOFFにするオプションがまとまってます。

データによりますが、これらのオプションをOFFにするとビューポートのパフォーマンスをよくすることができます。

 

ファー

ファー マテリアルのガイドをOFFにすることができます。

  • ファー ON 21FPS
  • ファー OFF 86FPS

 

ディスプレースメント

ディスプレースメントマップをOFFにすることができます。複数のテクスチャを一時的にOFFにしたい場合に有効なオプションです。

  • レイヤー OFF 86FPS
  • ディスプレースメント ON 16FPS
  • ディスプレースメント OFF 43FPS

 

実はこの「ディスプレースメント」や、初期設定の「GLでのディスプレースメント有効」をOFFにしてもあまり速くなりません。ビューポートでディスプレースメントを表示しなくていい場合は。テクスチャーレイヤーの「GL 表示」をOFFにする方がパフォーマンスが上がります。

 

メッシュスムージング

ポリゴンのスムージング計算を無効にしてフラットシェーディングにします。ポリゴン数の多いモデルで効果があります。

サブディビジョンを適用したメッシュには効果がありません。modoのサブディビジョンは細分割時に自動的にスムージングを適用するので、サブディビジョンを使用した段階でスムージング計算が走ります。

画像はサブディビジョンレベル 3でフリーズしたモデルです。

  • メッシュスムージング ON 5.9FPS
  • メッシュスムージング OFF 7FPS

 

 

以前、自作のモデルでメッシュスムージングのオプションが凄く効果的だった記憶があるのですが、どんな条件だったか出てこないので、思い出したら追記します。

 

シェーダーツリーを使用

シェーダーツリーの計算を省略します。テクスチャの多い複雑なモデルで効果があります。

マテリアル数が少なく、テクスチャが使用されてないモデルでは効果が薄いです。

  • シェーダーツリーを使用 ON 85FPS
  • シェーダーツリーを使用 OFF 86FPS

 

modoのシェーダーツリーはとても便利です。複数のマテリアルに同じテクスチャを一度に適用できたりマテリアルのオーバーライドが簡単で、階層構造で管理するマテリアルシステムの完成形というくらい素晴らしい機能なのですが、modoのパフォーマンスが悪い原因として上げられることが多いです。

今回調べてみたら大きな速度低下はありませんでしたが、いくつか気になる点をまとめてみました。

 

テクスチャを使うと速度が低下する

あたり前ですがテクスチャを使うと少しフレームレートが低下します。ディスプレースメントを使用すると特に速度が低下しますが、バンプもそれなりに速度低下します。

ディスプレースメントとバンプ以外は、どのレイヤーエフェクトを使用しても低下率はだいたい同じです。「ディゾルブ」のようにビューポートで効果が確認できないものや、「ポーリュームサンプル密度」のようにレンダリングでも効果のないエフェクトでも、一律フレームレートが低下します。

テクスチャを一度でもビューポートに表示するとそれ以降は若干パフォーマンスが低下し、シーンを読み直すと改善します。

ディスプレースメントとバンプを表示すると、それ以降ディスプレースメントやバンプ以外のテクスチャに切り替えてもフレームレートが落ちたままになります。

  • レイヤーなし 85FPS
  • 一度テクスチャを表示した後レイヤーをOFF 67 FPS
  • ディフューズ 65FPS
  • スペキュラ色 65FPS
  • バンプ  40FPS
  • ディゾルブ 41FPS  (バンプを表示しない場合は65FPS)
  • ボリュームサンプル密度 41FPS (バンプを表示しない場合は65FPS)

 

テクスチャ解像度を変更しても速度は一定

初期設定にはビューポートの「テクスチャ解像度」の設定があります。テクスチャ解像度を変更しても速度は低下しませんでした。テクスチャを多く使用してるシーンでは違いが出るかもしれません。

  • テクスチャ解像度 64 66FPS
  • テクスチャ解像度 2048 66FPS
  • テクスチャ解像度 4096 66FPS

 

複数のテクスチャを使用しても速度は一定

複数のテクスチャを適用しても速度は低下しませんでした。

 

テクスチャを選択すると速度が低下する

シェーダーツリーでテクスチャを選択するとわずかに速度が低下します。ドラッグアンドドロップのような操作は更に速度低下します。ディゾルブなど一部のエフェクトは選択したテクスチャをビューポートに表示するので何か処理が走ってるのかも。

特に必要のない場合は、シェーダーツリーでは選択を解除した方が少しパフォーマンスがよくなるかもしれません。

  • 非選択 85FPS
  • 選択 77FPS

 

今回テストした範囲では大きなパフォーマンス低下は確認できませんでした。テクスチャ表示やディスプレイスやバンプの速度が妥当なのかわかりませんが、表示する要素が増えると相応に処理が発生するのは理解できます。

シェーダーツリーは機能の特性上、少しの変更でもツリー全体を更新する必用があるらしく、特にマテリアルの数が多い場合にパフォーマンスを低下させることが多い言われています。
Vrayのようにビューポートを更新しないマテリアルはパフォーマンスがいいようなので、アニメーションで使用する場合は「GL 表示」をOFFにして必用なレイヤーだけビューポートに表示する使い方が適してそうです。

 

表示スタイル

ビューポートの表示スタイルを変更して、速度に変化があるかテストしました。表示スタイルの違いがパフォーマンスに影響することはないようです。

 

アドバンスト表示は遅いですが、他の表示スタイルの速度は大きく変わりませんでした。メッシュがビュー全体を覆うようにズームした場合は、ワイヤーフレームの表示がわずかに速いようです。

 

ワイヤーフレームオーバーレイ

modoはメッシュにワイヤーフレームがうっすらと表示されています。他にもビューポートで表示する様々な表示を切り替えたらパフォーマンスに影響するかテストしました。

昔使ってたソフトではワイヤーフレーム表示を使うと遅くなることがあったのですが、modoでは特に問題になることはないようです。

サブディビジョン2でフリーズしたメッシュ。

 

アニメーションを速くする工夫

ここまではmodoの機能を使用したパフォーマンス改善をテストしました。テスト結果からよりアニメーションを速くするための工夫を紹介します。

プロキシメッシュ

メッシュを関節ごとに個別のアイテムに分割して、スケルトンにダイナミックペアレントする方法です。

サブディビジョンレベル 4でフリーズしたメッシュ(948,736ポリゴン)だとフレームレートが1.6FPSしかでません。同じポリゴン数でも関節ごと個別のアイテムに分割して、スケルトンにペアレントすることで高速にアニメーション再生することができます。

  • メッシュ 1.6FPS
  • リグのみ 120FPS
  • プロキシメッシュ  100FPS

 

プロキシメッシュを使用する方法はPCスペックの低かった時代からある定番ですが効果が高いです。この方法の弱点は以下の通り。

  • メッシュを用意するのが若干めんどくさい
  • めり込みなど細かな変形の確認がめんどくさい
  • モーフを使用したアニメーションの確認に弱い

逆にキャラクターアニメーションではなく、メカニカルな物ならパフォーマンスを気にすることなくアニメーション生成できそうです。

プロキシメッシュを簡単に作成する機能があれば便利なんですけどね。ACS3にはプロキシメッシュを作る機能が搭載されてるようです。

 

保留される評価の代理メッシュ

modo 15.1で追加された保留される評価の「代理メッシュ」機能を使用する方法です。この機能はメッシュを複製してサブディビジョンをOFFにするだけで、簡単に代理メッシュを設定できるのでお勧めです。

画像では速度差がわかるようにサブディビジョンレベル1でフリーズしたメッシュにサブディビジョンを適用したモデルを使用しました。
そのままアニメーションすると32FPSくらいですが、アイテムを複製してサブディビジョンをOFFにしたアイテムを「代理メッシュ」に指定すると65FPSくらいの速度になります。

 

代理メッシュがわかりやすいように色を変えてみました。タイムラインスクラブやアイテム編集中だけ軽いメッシュに置き換わります。切り替わるタイミングで若干ラグが発生しますすが、ユニークな機能で再生パフォーマンスを改善する効果が高いと思います。
逆に編集中の操作を軽くしたい場合は、15.1で追加されたメッシュオペレーターの「評価の保留」の効果が高いです。

 

デフォーマを適用したメッシュを使用するとパフォーマンスが落ちてしまうという根本的な問題は解決することはできませんが、サブディビジョンを使用しない描画の速い代理メッシュを使用することで快適にアニメーションを作成することができるようになます。

プロキシメッシュ並みの早さすることはできませんが、モーフやデフォーマの影響も確認する事ができるので便利です。

 

複数アイテムにわける

Human.lxoは1オブジェクト1メッシュのモデルです。メッシュを複数のアイテムに分けてパフォーマンスを確認しました。

サブディビジョンレベル3でフリーズしたメッシュで、マッスルやモーフデフォーマを削除した状態のモデルです。

デフォルトは10FPS。

 

メッシュを頭、胸、腕、腰、脚の5アイテムに分割した場合。正規化フォルダは1つで、12.3FPS。

 

メッシュを5アイテムに分割し、更に正規化フォルダをアイテムごとに5つに分けた場合、11.9FPS。

 

1アイテムに全てのメッシュをまとめるより、適度にアイテムを分けた方がわずかにパフォーマンスがいいようです。デフォーマが並列処理されるぶんだけ、速度が上がるのかもしれません。

アイテムごとに正規化フォルダをわけてインフルエンスを入れた場合は、わずかにパフォーマンスが落ちました。正規化処理が複数発生するからでしょうか。

アイテムを分けた方がパフォーマンスがいいのはmodoに限らず、どの3Dソフトで同じですね。

 

ソース制限

正規化フォルダには1頂点に影響するウェイト数を制限するソース制限機能があります。この機能を使用した場合のパフォーマンスをテストしました。

ソース制限OFF、11.4FPS。

 

ソース制限3、10.3FPS。

 

ソース制限1、10.2FPS。

 

ソース制限はゲームエンジンの仕様に合わせるための機能なので、計算が速くなるイメージでしたが、実際にはわずかにパフォーマンスが下がるようです。

画像では複数の正規化フォルダを使用してテストしていますが、1メッシュ1正規化フォルダの場合でもわずかに遅くなります。しきい値を大きく設定しても速度に大きな変化がないので、ソース制限の計算コストぶんだけパフォーマンスに影響があるのかもしれません。

 

まとめ

modoでキャラクターアニメーションを作る場合は、プロキシメッシュか代理メッシュを使うのが最も効果があることがわかりました。

今回いろいろテストしたことで、これまで漠然と使ってたオプションが、どのようにパフォーマンスに影響しているのかわかりました。
modoのアニメーション機能はわりと使いやすくて高機能です。デフォーマを使用したメッシュのアニメーションパフォーマンスが低い問題は、ぜひ対処して欲しいですね。そういった意味では「代理メッシュ」はmodoの問題点をフォローするいい機能追加だったように思います。

本当は自作のモデルで代理メッシュをテストしたかったのですが、15.1でリレーションシップにバグが発生していてファイルを開くことができないので試せませんでした。バグが修正されたらテストしてみたいと思います。

もっと複雑なモデルだとパフォーマンスを下げる要因がより複雑になると思います。もしパフォーマンスの問題に遭遇したら、この記事で書いたことが何らかのヒントになったなら嬉しいです。

Tips

modoのアイテム配置に便利なツール紹介

modoのアイテム配置に便利なツールの紹介です。

3Dソフトを使用していると、シーンにアイテムを配置するという作業が多いです。そこでmodoの便利なアイテムの操作方法として、アクションセンター、スナップ、トランスフォーム配列ツールを紹介したいと思います。

アクションセンターを使用したアイテム操作

アクションセンターはツールの基点を指定する機能です。アクションセンターはmodoの強力なモデリング機能の1つとして紹介したことがありますが、アイテムを配置する場合にも便利に使用することができます。

移動ツール

アクションセンター「ローカル」を使用すると、アイテムのローカルの角度ごとに移動することができます。
これは他の3Dソフトでもよく見る定番の動作です。

 

回転ツール

アクションセンター「自動」を使用すると、選択中のアイテムをまとめて回転することができます。
ツールプロパティの「位置のみ」をONにすると、アイテムの角度を維持した状態で位置座標を回転することができます。

 

スケールツール

アクションセンター「自動」を使用すると、選択中のアイテム+アイテムの座標をスケールすることができます。
ツールプロパティの「位置のみ」をONにすると、アイテムのスケールを維持した状態で位置座標をスケールすることができます。

 

スナップを使用したアイテム操作

モデリングで便利なスナップ機能はアイテム配置にも使えます。グリッド、頂点、エッジ中心、ポリゴン中心、バウンディングボックス、など様々な条件でスナップすることができます。

 

トランスフォームツールを使用したアイテム操作

モデルツールタブの「複製」にはアイテム配置に使えるトランスフォームツールがあります。トランスフォームツールを使用するとアイテムの配置で便利に使えます。

カーブトランスフォーム

アイテムをカーブ上に配置することができます。

 

トランスフォームスキャッタ

アイテムをランダムに移動、回転、スケールすることができます。ジッターツールも同じようなことができます。

 

トランスフォーム配列

アイテムを等間隔に配置することができます。

 

トランスフォームラディアル配列

アイテムを放射状に配置することができます。らせん状にオフセットすることもできます。

 

 

modoは他にも「ソフト移動」「シアー」「ツイスト」「ベンド」など変形ツールを使用してアイテムの位置を編集することができます。

 

今回紹介したトランスフォームツールや変形ツールを使用したアイテム操作は、静止画用途だけでなくアニメーション作成にも使用することができるので知ってると便利だと思います。

参考資料

アニメーションスタジオ作画テンプレート

アニメーションスタジオで使用されるデジタル作画用のテンプレートが配布されています。ファイルには注意事項が記載されたPDFが含まれてるのですが、命名規則とかデータ管理が思いの外アナログ準拠な印象ですね。ソフト的にしようがないんでしょうけど。

https://tips.clip-studio.com/ja-jp/articles/4537

 

日本アニメーション 作画用テンプレート

  • サイズ:1500×844
  • 解像度:150
  • フレームレート:24

 

東映アニメーション

  • サイズ:1600×900
  • 解像度:144
  • フレームレート:24

 

スタジオ雲雀

  • サイズ:2056×1157
  • 解像度:200
  • フレームレート:24

 

キネマシトラス

  • サイズ:1500×844
  • 解像度:150
  • フレームレート:24

OLM

  • サイズ:1600×900
  • 解像度:150
  • フレームレート:24

参考資料

フレーム補間ソフト「Rife-APP」

ディープラーニングを使用したフレーム補間ソフト「Rife-APP」がリリースされました。価格は$ 24.90 以上。

https://grisk.itch.io/rife-app

概要

Dain-Appの後継であるRife-Appは、新しいアルゴリズムを使用してい ます。

Rife-APPはDain-Appの25 倍の速度で動作し、Vram の使用量も少なくて済みます。Nvidiaカードはアプリケーションの速度を向上させることができますが、Dain-Appとは異なりCPU上で実行することもできます(低速)。

Rife-Appは入力されたmp4/gif/webm/etcのフレームを補間して、入力されたFPSの2倍/4倍/8倍にします。

 

Tips

modoのGLキャプチャ コマンド

modoのGLキャプチャ コマンドについて書いてみます。

3Dビューポートを記録するGLプレビューは、アニメーション作成には欠かせない機能です。重いシーンではアニメーションをリアルタイムに再生することができないため、GLプレビューを使用して動きやタイミングを確認します。
modoにはビューポートを記録する「GLプレビュー」と「プレイブラスト」機能が搭載されてます。

 

GLプレビュー

アクティブな3Dビューポートを記録する機能です。記録サイズはビューポートの表示領域をそのまま記録します。「GLプレビュー」は動画形式でビューポートを記録し、記録した動画を自動的に再生します。プレビューはTempフォルダに保存されます。

C:\Users\ ユーザー名) \AppData\Local\Temp

「GL録画」「GL画像シーケンス」はディレクトリを指定してファイルを保存する機能です。

 

プレイブラスト

カメラを指定してビューポートを記録する機能です。記録サイズはRenderアイテムのフレームサイズが使用されます。
プレイブラストは記録専用の3Dビューポートを生成するため、ビューポートの「シェーディングスタイル」や「グリッドを表示」を設定するオプションが用意されてます。

これらのGL記録機能は gl.capture コマンドを使用してます。

追記

下で紹介するgl.capture コマンドのオプションですが、modo 15.1でプレイブラストにオプヨンが追加されて簡単に利用できるようになりました。

 

gl.capture コマンド

gl.capture コマンドには12個の引数があるので紹介してみます。「GLプレビュー」や「プレイブラスト」では使用することのできないオプションが用意されてるので、必要に応じて使用すると便利です。

 

record

「GL録画」と同じです。

gl.capture record:true

 

seq

「GL画像シーケンス」と同じです。

gl.capture seq:true

 

filename

ファイルパスと保存するファイル名の指定です。指定がない場合はファイル保存ダイアログが開きます。

gl.capture filename:"C:\Temp\GLPreview.mov"

 

frameS / frameE

記録の開始と終了フレームです。

gl.capture frameS:10 frameE:25

 

autoplay

動画記録の自動再生です。指定がない場合はautoplay:trueとして動作します。

gl.capture autoplay:false

 

preview

「GLプレビュー」と同じです。

gl.capture preview:true

 

scale

記録サイズを25%か50%に縮小して保存します。指定がない場合はscale:fullとして動作します。

gl.capture scale:quart
gl.capture scale:half

 

savealpha

背景をアルファチャンネルとして保存します。指定がない場合はsavealpha:falseとして動作します。

gl.capture seq:true savealpha:true

 

cleanGL

ビューポートコントロールと情報表示(アイコンや情報など)」を表示します。指定がない場合は cleanGL:trueとして動作します。

gl.capture cleanGL:false

 

useMonitor

GL記録のプログレスバーを表示する。指定がない場合は useMonitor:trueとして動作します。

gl.capture useMonitor:false

 

counter

フレームカウントを表示する。指定がない場合は counter:trueとして動作します。

gl.capture counter:false

 

使用例

複数の引数を使用する時の例です。「シーケンス保存+フレーム範囲指定+スケール50%+アルファ保存」

gl.capture seq:true filename:"C:\Temp\GLPreview.tga" frameS:10 frameE:25 scale:half savealpha:true

 

コマンドの引数は並び順で処理されるので、以下のように引数の値だけ省力して記述することもできます。

gl.capture true true "C:\Temp\GLPreview.tga" 10 25 false false half true

 

私の場合AfterEffectsを使用してフレーム単位で確認することが多いのでシーケンスを使用してます。
gl.captureのバグなのかわかりませんが、0フレームの画像として「ビューポートコントロール」が表示された状態のカレントフレームを出力します。繰り返しタイミングを見るとき邪魔なので、手動で削除するためにシーケンスを使ってるという事情もあります。

 

指定したサイズで3Dビューポートを開く

おまけとして、プレイブラストのように指定したサイズでビューポートを開くコマンドを紹介します。

プレイブラストでプレビューを作成する時にアドバンスドビューポートで記録したい時があります。プレイブラストには「ソース設定をコピー」するオプションがあるのですが対応状況が半端なため、見た目が変わってしまうことがあります(14.1で修正されたようです)。
そんなときは記録したいサイズのビューポートを作成して、手動で表示オプションを調整するといいです。

cmds.batch {Temp} {layout.create Camera width:1280 height:720 persistent:false style:palette layout:"BlankCamera Palette"} {view3d.shadingStyle gnzgl} {view3d.presetload AVPGoodQ}{view3d.sameAsActive true}

 

GLの記録とは異なりますが、プレビュービューポートにもアニメーションをレンダリングする機能があります。
プログレッシブレンダラーであるため1フレームのレンダリング時間を指定できるので、画像は粗くてもGLより最終レンダリングに近い画像でアニメーションを確認できて便利でした。

残念なことに11.1でUI変更されたタイミングで「最大時間」が動かなくなってしまい、短時間でレンダリングができなくなってしまいました。便利な機能だったので修正して欲しいです。

 

参考

https://community.foundry.com/discuss/topic/81912

 

参考資料

Brawl Stars

手描きのロボット物のアニメーション。塗りの雰囲気がいい。

参考資料

ソメイティ競技アニメーション

東京2020パラリンピックマスコット ソメイティ競技アニメーション。こういう記念映像は4Kで作ればいいのにね。せっかくかわいいのにぼけててもったいない。

Tips

modoでモーショントレイル表現

modoでモーショントレイル、アイテムが移動したときの軌跡の作り方について書いてみたいと思います。モーショングラフィックでよく見かける表現です。

■サンプルファイル

 

スケマティックはこんな感じです。modo 13で追加されParticle ArrayとCreate Polygonsを使用します。

Arrayとは

Arrayはポイント、カーブ、アイテムの位置、文字列など様々な値から、頂点番号のような配列データを生成するノードです。Create Polygonsは配列データ使用してポリゴン、ライン、カーブを生成するノードです。
ArrayとCreate Polygonsを使用すると、modo 12以前ではできなかったアニメーション可能で自由度の高いポリゴン生成ができるようになります。

 

今回のモーショントレイルのような表現では、Meshの頂点をParticles to Arrayの「複数フレームモード」を使用してアニメーション全体の配列データを生成しています。
カーブの長さをアニメーションさせるためFilter ArrayとInt Range From Patternを使用して、カーブの始点と終点の位置をアニメーションしてます。最後にCreate Polygonsでカーブを生成します。

Curves to Arrayを使用すると、Create Polygonsで生成したカーブ間にポリゴンを貼ることができます。NURBSサーフェースのような制御ができて面白いですね。

静止したカーブをレンダリングする場合は、アイテムのプロパティで「カーブをレンダリング」をONにします。

アニメーションをレンダリングするとこんな感じになります。カーブごとに色を変えるのは、Variation Textureを使用しています。

 

ホーミングレーザーっぽい表現にも使えそう。

 

サンプルファイルではカーブ生成用に専用のメッシュを使用していまが、本当はSurface Particle Generatorを使用してランダムな位置からカーブを生成しようと思ってました。ですがSurface Particle Generatorを使用すると動作が遅くなるのでやめました。

ほかにもCreate Polygonsが原因なかわかりませんが、2つほど問題に遭遇しました。

  • モーションブラーを使用するとレンダリング時にカーブが消える。
  • GLよりカーブが短くレンダリングされる。

Arrayの使い方に失敗してるのかも知れませんが、安定した動作でより高度な表現をしたい場合には「TracerX」を使用するのがよさそうです。

 

参考

Arrayのステキな使い方が紹介されてるスレッドで、とても参考になります。https://community.foundry.com/discuss/topic/146466/arrays-in-the-mix

参考資料

Cascadeur: Making a somersault from scratch

物理ベースのキャラクターアニメーションソフト「Cascadeur」の新しいチュートリアルが公開されています。
軽く使ったところ初見で簡単に使える感じのソフトではありませんでしたが、チュートリアルを見るとインハウスソフトらしい最適化されたソフトなのがわかります。もう少し物理ベースの凄さが見てわかると興味わくんですけどね。

Tips

modoのUI機能紹介

前回のモデリング機能の紹介に続き、modoを使ってて便利に感じるUI機能やUI操作について紹介してみたいと思います。modoには様々なビューポートがありますが、同じ感覚で操作ができるように動作が統一されていたり、ショートカット使用した便利機能が搭載されています。

3Dソフトは機能が増えるにつれて操作や使用方法が複雑化してしまうことが多いですが、modoは操作に一貫性がありユーザーが効率的に編集出来るようデザインされているところが使いやすくて気に入っています。

ビューポート

modoのUIは全てビューポートで構成されています。ビューポートは自由にドッキングしたりフローティング表示することができます。modoは3Dソフトの中でもカスタマイズの自由度が高いソフトだと思います。

ビューポートの分割とフローティング表示

modoのビューポートには「サム」 と 「ウィジェット」というUI要素があります。ビューポートの左上の丸いアイコンが「サム」です。ビューの分割や表示スタイルを設定します。サムにマウスオーバーするとビューポートにオレンジ色の枠が表示されます。右上の三角アイコンが「ウィジェット」です。ビューポートに表示する内容を設定します。

ユーザーは「サム」 と 「ウィジェット」を使用して自由にレイアウトをカスタマイズすることができます。

  • Ctrl + 左マウスボタン ドラッグ = ドラッグした方向 (縦/横) にビューポートを分割
  • サムを左マウスボタン ドラッグ = フローティングウィンドウ
  • タブをダブルクリック = レイアウトの復帰

3Dビューポート

3Dビューポートはモデルを表示する最も使用頻度の高いビューポートです。ショートカットを覚えておくと便利です。

ビュータイプ

ビュータイプの切り替えのショートカットです。テンキーの 0 はビューポートを最大化するショートカットです。3Dビューポート以外のビューポートも最大化することができます。

  • 0 = ビューポートを最大化 / 最小化
  • 1 = 上面 / 底面ビュー
  • 2 = 正面 / 背面ビュー
  • 3 = 右面 / 左面ビュー
  • . = パース / カメラビュー

 

表示スタイル

ビューポートの表示スタイルの切り替えショートカットです。

  • Ctrl + 0 = デフォルト
  • 4 = シェード
  • 5 = テクスチャ
  • 6 = 反射
  • 7 = ワイヤーフレーム
  • 8 = ソリッド
  • 9 = 頂点マップ

 

ワイヤーフレームオーバーレイ

コンポーネントモードのときメッシュにオーバーレイされるワイヤーフレーム色を変更するショートカットです。

  • / = ワイヤーフレームなし
  • Shift + / = 同一オーバーレイ
  • Ctrl + / = 色付きオーバーレイ

コンポーネントモードとは別に、アイテムモードのワイヤーフレーム表示を設定することができます。[アイテムモードでワイヤーフレーム表示]をOFFにしておくとビューポートの描画が少し早くなるのでお勧めです。

 

アイテムリスト

アイテムリストはアイテムを選択したり親子関係を設定するビューポートです。アイテムをドラッグ アンド ドロップで親子関係を設定することが出来ます。他にもアイテムの表示にかかわる便利な機能を備えています。

  • F = アイテムの検出

 

  • Shift + 三角マーククリック = 階層を全て開く、全て閉じる

 

PhotoShopのように目玉アイコンドラッグで、複数アイテムの表示を切り替える機能が便利です。

  • 目玉アイコン ドラッグ = 表示 / 非表示
  • Alt + 目玉アイコン クリック =ソロ表示

 

ショートカットでアイテムの複製やグループ化することもできます。

  • Ctrl + D = 選択レイヤーを複製 (アイテム モードのみ)
  • Shift + D =選択レイヤーのインスタンスを作成 (アイテム モードのみ)
  • Ctrl + G = グループ化

 

アニメーションが設定されてるアイテムを親子関係に設定する場合は、Ctrl + ドラッグ アンド ドロップを使用します。

 

アイテム プロパティ

アイテム プロパティにはアイテムやマテリアルを設定するための様々なUIが表示されます。プロパティのUIには効率的に値を編集するための便利な操作や機能がたくさんあります。

 

複数アイテムを同時編集

複数のアイテムを選択してから編集すると、選択中のアイテム全てのプロパティを同時に編集することができます。同時編集はマテリアルでも重宝します。

 

タブの複数選択

Ctrl+クリックでタブを複数選択して表示できます(13.1以降)。タブをまたいたパラメータの編集に便利です。

 

階層の開閉

プロパティでチャンネルが階層にわかれて表示されることがあります。チャンネル数が多く表示が見づらい場合は、特定の階層のみ開いた状態にすることができます。

  • Ctrl + 三角マーク クリック = クリックした階層のみ開く / 全ての階層を開く

 

ミニスライダー

モディファイヤキーを使用してスライダーの変化量を調整することができます。

  • Ctrl + 左マウスボタン ドラッグ = 10 分の 1 ずつ増える
  • Shift +左マウスボタン ドラッグ = 10 倍ずつ増える

 

数値入力フィールド

チャンネルが 3 つで 1 セットになっている数値は、数値入力フィールド右のアイコンを使用して、いちどに変更することができます。

  • O = 独立モード
  • = = イコールモード
  • + = 相対モード
  • ∝ = 比例モード

 

ショートカットを使用することもできます。

  • Ctrl + Alt + Enter = コピーモード (イコールモード)
  • Alt + Enter = 相対モード (相対モード)
  • Ctrl + Enter = 比例モード (比例モード)

 

四則演算

数値入力フィールドは四則演算(+-*/)を使用して計算することができて便利です。

 

色の色相/彩度/明度編集

色は数値をドラッグしてRGB値を編集することもできますが、ショートカットを使用すると「色相」「彩度」「明度」を編集することができます。

  • Ctrl + 左マウスボタン ドラッグ = 色相
  • Alt + 左マウスボタン ドラッグ = 彩度
  • Shift + 左マウスボタン ドラッグ = 明度

 

チャンネルのロック

プロパティのチャンネルは誤って編集しないようロックすることができます。キャラクターリグを作成する場合に便利です。

 

スケマティックにチャンネルを追加

プロパティからドラッグ アンド ドロップすると、スケマティックにチャンネルを追加できます。

 

チャンネルをユーザーチャンネルにまとめる

チャンネルを3Dビューポート内のアイテム、またはアイテムリスト内のアイテムにドラッグ アンド ドロップすると、ユーザーチャンネルにまとめることができます。

 

チャンネルホール

チャンネルホールは3D ビューポートにチャンネルを表示して編集する機能です。
プロパティには多くのチャンネルが存在しているため、タブ切り替えやマウスの移動が煩雑になりがちです。チャンネルホール は一時的に編集したいチャンネルをまとめることができるので、編集に集中したいときに便利です。

  • C +チャンネル選択 = チャンネルホール

アイテム追加ウィンドウ

素早くアイテムを追加することができます。

  • Shift+N = アイテム追加

スケマティック

スケマティックを使用したノードの基本的な操作方法を紹介したいと思います。modoのスケマティックは他のソフトと比較しても使いやすいです。

 

ノードの追加と除去、ビュー表示

スケマティックはドラッグ アンド ドロップでノードを追加することができます。スケマティックのビュー操作は3Dビューポートと共通です。アイテムリストと同様のショートカットでアイテムを複製することもできます。ここでは使用頻度の高いショートカットを紹介します。

  • ドラッグ アンド ドロップ = ノード追加
  • BackSpace = 選択中のノードを除去
  • Shift + Backspace = すべてのノードを除去
  • 右マウスボタン ドラッグ = 矩形選択
  • A = 全体表示
  • Shift + A = 選択ノードを表示

 

リンクとリンクの削除

スケマティックではチャンネルが他のチャンネルとリンクされてる場合、入出力アイコンが黄色で表示されます。アイコンをダブルクリックすることでリンク先のノードをスケマティックに追加することができます。複数のノードの同じチャンネルを選択すると、まとめてリンクすることができます。

  • 入出力アイコン 左マウスボタン ダブルクリック = 入出力先のノードをスケマティックに追加
  • リンクを選択 + Delete = リンクの削除
  • Shift + 左マウスボタン ドラッグ = 複数のチャンネルを接続

 

リンクにモディファイヤ追加

リンクを選択してからチャンネルモディファイヤを追加すると、リンク間にモディファイヤを挿入できます。

 

チャンネルの分離

右クリックメニューから[チャンネルの分離]を行うと、チャンネルを別のノードのように分離して表示できます。リンクの流れを見やすくするときに便利です。分離されたチャンネルがあるノードは、ノードの下に・・・アイコンが表示されます。

 

リンクをアクティブ

リンクの処理を一時的に非アクティブにすることができます。

  • H = リンクを非アクティブ
  • U = リンクをアクティブ

 

ノードの整列

スケマティックを見やすくするために、ノードを整列することができます。

  • = 左に整列
  • = 右に整列
  • = 上に整列
  • = 下に整列
  • Shift + Ctrl + = 等間隔に広げる / 狭める
  • Shift + Ctrl + = 等間隔に広げる / 狭める
  • Ctrl + Alt + = 上のノード基準で広げる / 狭める
  • Ctrl + Alt + = 下のノード基準で広げる / 狭める

 

バックドロップノード

ノードをまとめてスケマティックの処理を見やすくすることができます。

  • B = バックグラウンド追加
  • Shift + 左マウスボタン ドラッグ = バックドロップに追加/除去

 

コメントノード

スケマティックにコメントを追加できます。

  • Alt + N = コメントノード追加

タイムラインとグラフ編集

modoのアニメーション機能の話はあまり見かけないかも知れませんが、必要な機能がシンプルに搭載されていて使い勝手がよいです。UI関連から少し外れますが、オニオンスキンやキーセットなどアニメーションの便利機能も紹介したいと思います。

アニメーション再生

タイムラインで使用するアニメーション再生の基本的なショートカットです。キーフレーム移動系のショートカットは覚えておくと便利です。

  • / = 再生、停止
  • Shift + = 1 フレーム戻る
  • Shift + = 1 フレーム進む
  • Shift + = 最初のフレームへ移動
  • Shift + = 最後のフレームへ移動
  • Ctrl + = 前のキーフレームへ移動
  • Ctrl + = 次のキーフレームへ移動
  • Ctrl + = 最初のキーフレームへ移動
  • Ctrl + = 最後のキーフレームへ移動

 

グラフ編集でもアニメーション再生のショートカットは共通です。

 

タイムマーカー

AfterEffectsのようにタイムライン上にマーカーを作成することができます。タイムマーカーは色や形状をカスタマイズできます。タイムマーカーはシーン全体や、アイテムごとに設定することができます。

  • 中マウスボタン クリック = マーカー追加
  • M = マーカー追加
  • Delete = マーカー削除

 

タイムラインのキー編集

タイムラインは縦に広げると「ドープシート」になります。タイムライン上でキーを移動したりスケールできます。MayaやMaxと同じような感じでキー編集できます。

  • 中マウスボタン クリック = キー追加
  • Ctrl + Alt + 左マウスボタン クリック = キー追加
  • S = キー追加 (トランスフォームツールアクティブのとき)
  • Delete = キー削除
  • 左マウスボタン キードラッグ = 移動
  • 右マウスボタン ドラッグ = 移動
  • Ctrl + 右マウスボタン ドラッグ = 左右方向のスケール

 

グラフ編集のキー編集

グラフ編集は詳細にアニメーションカーブを編集することができます。キー操作はタイムラインと同じです。

  • 中マウスボタン クリック = キー追加
  • Ctrl + Alt + 左マウスボタン クリック = キー追加
  • S = キー追加 (トランスフォームツールアクティブのとき)
  • Delete = キー削除
  • 右マウスボタン ドラッグ = 左右方向に移動
  • 中マウスボタン ドラッグ = 上下方向に移動
  • Ctrl + 右マウスボタン ドラッグ = 左右方向のスケール
  • Ctrl + 中マウスボタン ドラッグ = 上下方向のスケール

 

キーのコピーとペースト

キーのペーストは3種類あります。通常の「ペースト」は既存のカーブのキーを維持した状態でペーストします(ミックスした状態になる)。 「ペースト (挿入)」は既存のカーブのキーをシフトして、間にキーをペーストします。「ペースト (置換)」はペーストされる範囲にある既存キーを削除して、キーをペーストします。

  • Ctrl + C = コピー
  • Ctrl + V = ペースト
  • Ctrl + Shift + V = ペースト (挿入)
  • Ctrl + Alt + V = ペースト (置換)

 

キーのコピーペーストはプロパティ上からもできます。

 

ボックススケーリングツール

Ctrl + ドラッグで自由変形のようにカーブを編集できます。

 

キーリダクション

UIからアクセス出来ないキーフレームを削減するコマンドです。知ってると便利に使えることがあるかもしれません。

channel.keyReduce

 

オニオンスキン

modoには2Dアニメーション系のソフトで見かけるオニオンスキンが搭載されています。アクターとアクションを作る必要があるのが少し面倒ですね。

 

キーセット

任意のチャンネルにキーを作成する機能です。アニメーションを作成するとき、特定のスケルトンやコントローラーにだけキーを作成したい場合があります。キーセットを使用すると特定のチャンネルに、まとめてキーを作成することができて便利です。

今回は紹介していませんがオニオンスキンの他にも、スペーシングチャートタイムツールなど、手描きアニメーションを参考にした機能が搭載されています。modoは意外とアニメーション関連の機能が充実してると思います。

レンダープレビュー

modoにはリアルタイムにレンダリングするレンダープレビュー機能が搭載されています。今でこそArnoldやVrayにも同様のリアルタイムプレビューが搭載されていますが、高速なリアルタイムプレビューを標準搭載しているのはmodoの画期的な特長でした。

701以降のプレビューはプログレッシブレンダラーという、もう一つの内蔵レンダラーに成長しています。

 

レンダープレビューの基本動作

レンダープレビューはマウスの下にあるピクセルを優先的にレンダリングします。カメラの位置は変えずにプレビューを部分的に拡大することもできます。

  • マウスの下のピクセルが優先的に計算する
  • プレビューをクリックすると、シェーダーツリーでマテリアルを選択する
  • Shift + スクロール = プレビューの拡大

 

出力のプレビュー

レンダープレビューは様々なレンダリング要素を表示することができます。カレントレイヤーオーバーレイを使用すると、編集中のレイヤーのみプレビューできて便利です。

  • Output 表示
  • カレントレイヤーオーバーレイ

シェーダーツリーはmodoのユニークな特長の1つです。他の3Dソフトを使用しているとレイヤーベースの質感設定はわかり難いかもしれませんが、複数のマテリアルに跨がってグラディエント レイヤーを追加できて便利です。マテリアル単位でマスク素材を簡単に作成することができるのも特長です。

 

焦点距離の設定

カメラの「被写界深度」を使用している場合、マウスポインタの位置を使用して「焦点距離」を設定することができます。

  • Ctrl + F = マウスポインタの下にフォーカス

カメラをビューポートに同期

パースビューの位置でレンダリングしたい場合、カメラの「ビューに同期」を使用すると簡単にビューの位置にカメラを合わせることができます。

 

簡単にではありますが、modoのUIに関連した便利機能を紹介してみました。1つでも役立つことがあったら嬉しいです。

modoのUIはマウスオーバーでハイライトしたり、インタラクティブな操作やフィードバックなどユーザビリティーに力を入れてる所が好みです。ボタンの更新が行われないことがあるなど決して完璧ではありませんが、時代の変化によってUIの使いやすさは変化するものだと思うので、90112などバージョンを重ねるごとに細かにUIやレイアウトを改善し続けてるのは好感が持てます。

今回は紹介してませんが「プリセット ブラウザ」のように、アセットやデータや再利用しやすくする機能が標準搭載されてるのもmodoの特長だと思います。カードビューWebビューのように、カスタムしてアイテムピッカー作成に使える特殊なビューポートも搭載されています。一通りのUI機能は備えてるように思うので、今後はもっと使いやすくなるようUIが改善されるのに期待したいですね。

参考資料

animation reel

ゲームのアニメーションリールのようです。カッコイイ。

CG News

物理ベースのキャラクターアニメーションソフト「Cascadeur」

物理ベースのキャラクターアニメーションソフト「Cascadeur」のクローズドベータ版が発表されました。
https://cascadeur.com/en

CascadeurはEndorphinのような物理ベースのシステムと、ポーズ、タイミング、パスなどのキーフレーム機能を組み合わせたものっぽいです。物理ベースのアニメーションとMocapデータを組み合わせて、物理的に正しい動きを失うことなく変更することもできるらしい。

Cascadeurの歴史が10年に及ぶ社内ツールとして開発され、最近ではNekkiのShadow Fightシリーズの一部として使用されてるとのこと。

 主な機能

  • 物理ベースのキャラクターアニメーション
  • 短時間で高品質のアニメーション
  • モーションキャプチャに追加または置換
  • キャラクターアニメーションを扱うのに適した簡単なインターフェース
  • キャラクターのリグのクイックセットアップ
  • 初心者でも素晴らしい結果を達成するための素早い学習