CG 日記

Tips

modoのFBXのメディア埋を込み

modoのFBXのメディア埋め込みについて書いてみます。

modo 15.1v2から「初期設定」のFBX入出力に「メディアを埋め込み」が追加されました。これはシェーダーツリーで使用しているテクスチャ画像をFBX内に保存するためのオプションです。

 

.lxo内に保存される画像パスに絶対パスや相対パスが混在してしまい、他の人にデータを渡したときにリンク切れが発生することがあります。「メディアを埋め込み」を使用するとFBXファイル内に画像を保存しているので、他の環境でファイルを開いても画像のリンク切れを気にしなくてよくなります。

「メディアを埋め込み」を使用する場合は、画像パスに日本語文字が含まれていると正しく出力できないので注意が必要です。

メディアの埋め込みした場合は、画像が含まれているためFBXファイルの容量が大きくなります。

メディアを含むFBXファイルを開くと、.lxoファイルと同じディレクトリに「FBXファイル名.fbm」フォルが作成されて画像が保存されます。

 

画像を編集する場合はメディアの埋め込みしない方がFBXファイルの容量が小さく取り回しが便利なのですが、とりあえずFBXファイル単体でデータを完結したい場合には便利なオプションです。

CG 日記

Windows 10で非アクティブのウィンドウ色を変更する方法

Windows 10で非アクティブのウィンドウ色を変更する方法について書いてみます。

 

概要

Windows 10 で配色にダークモードが追加されました。しかし、ウィンドウのアクセントカラーを設定していても、非アクティブのウィンドウ色は暗いグレー色固定です。ウィンドウが重なってると、どこがタイトルバーなのか判別しにくく誤操作が発生しやすくて困ります。

非アクティブのウィンドウに好きな色を設定することで、ウィンドウの視認性を向上させることができます。

 

非アクティブのウィンドウ色を変更する方法

非アクティブのウィンドウ色を変更するには、レジストリエディーターで値を追加する必要があります。

1.レジストリエディーターに以下のパスをペーストしてEnter、DWMキーに移動します。

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM

 

2.右クリックメニューから「DWORD (32ビット)値」を追加します。

 

3.追加した値を「AccentColorInactive」にリネームします。値をダブルクリックして、ダイアログの「値のデータ」に16進数で色を入力します。

PhotoShopなど一般的なグラフィックソフトでは16進数で色はRRGGBB順ですが、BBGGRRで入力する必要があるらしいです。最初に変更したい色を設定して、ずれた色相ぶん色相シフトした値を入力した方が編集しやすかったです。

 

設定が完了すると、ウィンドウの非アクティブ色が変わってることが確認できます。

Tips

After Effectsで複数のフッテージのフレームレートを一括で変更する方法

After Effectsで、複数のフッテージのフレームレートを一括で変更する方法について書いてみます。

 

フレームレート情報を格納した動画ファイルの読み込みで問題になることは少ないかもしれませんが、CGのように連番ファイルを読み込む場合、意図したフレームレートで読み込まれない場合が多々あります。

読み込んだ複数のフッテージのフレームレートを一括で変更する場合は、コピーしたいフレームレートのフッテージを選択して右クリックメニューから「変換を記憶」を実行し、ペーストしたい複数のフッテージを選択して右クリックメニューから「変換を適用」を実行します。

フッテージを変換 / 変換を適用

 

フレームレートの変更手順。

 

たまに忘れてしまうので、メモ的に記事を残しておきます。

Tips

After Effectsのタイムラインでレイヤーを詰めて並べる方法

After Effectsのタイムラインで、レイヤーの長さでレイヤーを詰めて並べる方法を紹介します。コンポジションをループさせたい場合にタイムリマップを使用するとレンダリング時間が長くなるため、複製したコンポジションを並べたい場合に便利です。

 

After Effectsのタイムラインで、隙間が出来ないように各レイヤーの長さごときっちり詰めた状態で並べたい場合があります。

上の画像を、下の画像のようにレイヤーを階段状に、きっちり詰めて並べたい。

 

詰めてレイヤーを配置したい場合は「シーケンスレイヤー」を使用します。

アニメーション / キーフレーム補助 / シーケンスレイヤー

 

 

シーケンスレイヤーダイアログで「オーバーラップ」をONにしトランジションを設定すると、時間を指定してレイヤーがフェードするように設定することもできます。

 

たまに機械的にレイヤー並べたい場合があるのですが、毎回忘れちゃうのでメモとして記事にしました。

レイヤー構成や使用してるエフェクトによりますが、タイムリマップを使用してループすると毎フレーム計算されますが、コンポジションを複数並べた場合は、コンポジション単位でキャッシュされるのでタイムリマップよりレンダリングが速くなる場合があります。

Tips

After Effects ベータ版のインストール方法

After Effects のBeta版のインストールする場合は、Creative Cloud アプリから「ベータ版アプリケーション」のカテゴリを選択してインストールします。

 

After Effectsのベータ版では、削除された「複数フレームレンダリング」に変わるマルチフレームレンダリングが搭載されており、レンダリングの高速化を試すことができます(対応エフェクト以外のエフェクトを使用すると速度が低下します)。AE 2021よりは複数のCPUを使用してレンダリングしてる気がします。

ベータ版を試そうかと思ったときに、インストール方法に迷ったのでメモしておきます。

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のメッシュオペレーターをアセンブリとして保存する方法について書いてみます。

modoはスケマティックで作成した処理をアセンブリとして保存して、他のシーンで簡単に使い回すことができる仕組みがあります。

プロシージャルモデリングに使用するメッシュオペレーターもアセンブリとして保存して使い回すことができます。しかし、メッシュオペレーターをアセンブリとして保存すると、メッシュオペレーターの順番が変わってしまう問題があります。

サンプルファイル

 

例えばメッシュをマージして、Polygon Bevel、Edge Bevel、Transform Deformerの順番でメッシュを編集するアセンブリを作ったとします。

 

上の画像のような状態で「アセンブリプリセットを保存」し、保存したアセンブリを読み込むと、メッシュオペレーターリストの順番が変わってしまいます。

また、「アセンブリプリセットを保存」する場合はメッシュの接続を切った状態で保存しないと、中身が空になることがあるので注意が必要です。

 

メッシュオペレーターの順番を維持した状態でアセンブリを保存するには、デフォームフォルダを作成して、アセンブリにデフォームフォルダを入れた状態でアセンブリ保存する必用があります。

 

デフォームフォルダを含んだアセンブリでは、メッシュオペレーターの順番が維持されているのが確認できます。

 

 

Modo15.1ではメッシュオペレータースタックノードが追加されたので、スタックノードを使用してメッシュオペレーターの順番を維持することができるようになりました。

あまりメッシュオペレーターのアセンブリを作ることがないのですが、先日この問題にははまりました。こういう初見殺しの問題は早く修正して欲しいですね。

 

参考

https://support.foundry.com/hc/en-us/articles/115001763550-Q100346-How-to-retain-the-order-of-a-procedural-layer-stack-when-creating-an-Assembly-preset-in-Modo-11

Tips

3dsMaxでFBXファイルに未使用マテリアルが保存される

3ds Maxから出力したFBXファイルに未使用のマテリアルが保存される問題について書いてみます。

 

 

3ds Maxでは1つのオブジェクトに複数のマテリアルを設定する場合、ポリゴンのIDとマテリアルの関連付けをマルチ/サブオブジェクト マテリアルが管理します。

マルチ/サブオブジェクト マテリアルはオブジェクトに使用していないマテリアルもリストに追加して管理することができます。

 

3ds MaxはFBX出力時にサブマテリアルリストに含まれるマテリアルを全て出力します。

ツール等を使用して未使用マテリアルを大量にリストに追加してる場合、FBXファイルの容量が無駄に大きくなったり、インポート先のソフトに未使用のマテリアルが大量に生成されます。

FBXを使用して他のソフトとデータをやり取りする場合は、不要な未使用のマテリアルは削除した望ましいです。

 

Mayaにインポートした場合の例

FBXインポート時のオプションで、ファイルに含まれるマテリアル数を確認することができます。

 

FBXを読み込むと未使用のマテリアルも読み込みます。

 

 

MayaやmodoのFBXエクスポートでは、オブジェクトで使用されていない未使用のマテリアルは出力しません。

3ds Maxはサブマテリアルリストを使用してマテリアルを管理する仕様の関係のせいで、未使用のマテリアルをFBXファイルに含めるみたいです。未使用マテリアルがふんだんに詰まったFBXを見かけたのでメモ用の記事でした。

Tips

FBXファイルのUp軸

FBXファイルの拡張オプション「軸変換」のUp軸について書いてみます。

3Dソフトは座標系の違いによってシーンの上方向をY軸(Y-Up)であらわすソフトと、Z軸(Z-Up)であらわす2種類のソフトが存在します。Y-Upの代表的な3DソフトはMaya、modo、LightWave、Cinema 4Dです。Z-Upの代表的な3Dソフトは3ds Maxです。

FBX形式を使用してデータをやり取りする場合、Y-Upのソフト間では軸が問題になることは少ないですが、Z-Upの3ds MaxからFBXを出力する場合は注意が必要です。

 

FBXの軸変換オプション

3ds MaxからFBXファイルを出力する場合、拡張オプションに「軸変換」というオプションがあり、Y-UpとZ-Upを指定することができます。

 

しかし、残念なことに「軸変換」はトランスフォームに-90°を入れて回転するだけで、インポート先のソフトにあわせて軸を変換(回転をフリーズ)しません。軸変換でY-UpやZ-Up変更しても、FBX出力したソフトのUp軸が維持されます。

例えば下の画像は3ds MaxからY-Upで出力したFBXをMayaに読み込んだ物です。見かけのUp方向はあってますがトランスフォームの回転に-90が入っており、オブジェクトの軸はZ-Upのままです。

 

Mayaでは「トランスフォームのフリーズ」を使用すると回転値をフリーズして、Y-Upにすることができます。

 

3ds MaxからY-UpでFBX出力する方法

FBXのインポート先でMayaのようにトランスフォームをフリーズできる場合は問題ありませんが、FBX出力時にトランスフォームを適切なUp軸にしたい場合があります。

3ds MaxからY-UpでFBX出力したい場合は「基点のみに影響」をONにして基点を回転します。

 

 

modoの軸変換

modoでは読み込んだFBXの軸変換に2つの方法が使用されています。

Y-UpのFBXファイルを読み込んだ場合、トランスフォームアイテムのPreRotationが追加されて-90°回転した状態になります。

 

Z-UpのFBXファイルを読み込んだ場合、FbxUpAxisConvertという名称のロケータが追加されて-90°回転した状態になります。

 

Y-UpのソフトからZ-Upで出力したFBXの場合、FbxUpAxisConvertとPreRotationが追加され両方の回転に値が入ります。

 

modoでトランスフォームの「フリーズ」を使用すると、回転を0にして軸をY-Upにすることができます。

Tips

modoのライト減衰の制御方法

modoのライトマテリアルを使用した減衰の制御方法について書いてみます。

modoのレンダラーはフィジカルベースです。フィジカルベースレンダラーのライトは、ライトの明るさによって照射範囲が自動的に減衰します。フィジカルライトはリアルなライティングになるのでメリットが多いのですが、爆発などエフェクトで使用したい場合に制御しづらい場合があります。

modoではライトマテリアルにマップを設定することで、昔のレンダラーのように指定した距離でライトを減衰させることができます。

 

下の画像はスポットライトを使用した通常のライト減衰です。

 

ライトのプロパティではフォールオフタイプを使用してライトの減衰の種類を指定することができますが、古いレンダラーのようにライトの照射範囲を1mに制限するような細かな制御ができません。

 

ライトの減衰を制御する場合はシェーダーツリーのライトマテリアルにGradientを追加し、レイヤーエフェクトを「ライトディフューズ量」に設定します。
Gradientの入力パラメータを「ライトまでの距離」に設定すると、Gradientのカーブを使用してライトの照射範囲を制御することができます。

 

Gradientのカーブをギザギザに繰り返すと波紋のようなライトになります。

 

Gradientのレイヤーエフェクトを「ライトの色」にすると、ライトからの距離で色を変化させることもできます。

 

modoのレンダラーはフィジカルベースでありながら、古いレンダラーのように柔軟な制御ができるところが便利ですね。

以前書いた爆発を作る方法では、爆発中心の明るさを制御するのに今回紹介した方法を使用しています。

 

参考

https://community.foundry.com/discuss/post/1220577

Tips

modoでウェイトマップをパーティクルサイズマップにリマップ

modo 15.0でRemap Weightのターゲットに「パーティクル サイズマップ」と「パーティクル ディゾルブマップ」が追加されました。パーティクル サイズマップを使ってReplicatorで複製したアイテムをアニメーションする方法について書いてみます。

 

 

パーティクル サイズブマップを使用したアニメーション

サンプルファイル

スケマティックはこんな感じです。

 

Set Weightを使ってウェイトマップを作成し、Grow Weightのステップを使用してウェイトマップをアニメーションしています。
modo 15.0で追加されたSmooth Weightでウェイトを滑らかにした後、Remap Weightでウェイトをパーティクルサイズマップに変換してます。

Spikeを使用しているのはポリゴンの中心にアイテムを配置するためです。Replicatorのソースモードには「ポリゴンを使用」という設定がありポリゴンの中心にアニテムを複製することができるのですが、残念ながらパーティクルサイズマップの読み取りに対応していません。

このためSpikeを使用してポリゴンの中心に頂点を作成して、Remap WeightにSelect by Previous Operationを使ってSpikeで作った頂点にだけパーティクルサイズを設定しています。ちょっと回りくどいですね。

 

 

Surface Particle Generatorにはウェイトマップをパーティクルサイズマップとして使用する機能があります。ランダムにアイテムを複製したい場合は、Surface Particle Generatorを使用した方がノードが単純です。

サンプルファイル

 

modo 14から15にかけて頂点マップ系のノードが増えて便利になってます。この調子でマップ制御系のノードを充実して欲しいですね。

Tips

Affinity Designer 移行メモ

デザイン作業するときIllustrator CS6からAffinity Designerに切り替え用と思ったので、移行するときに調べた機能をまとめました。

Illustratorは歴史があってそれなりに便利なのですが、動作が重いのとAdobe XDに比べると便利機能が足りなくなっていて、スライス書き出しできるAffinity Designerに切り替えようと思いました。

Mac環境だとSketchが鉄板のようですが、Windows環境だと選択肢が少ないのが残念ですね。

ツール

ツールに関するメモです。

ノードツール

なげげなわ選択

ポイントを選択する場合にAlt+ドラッグでなげなわ選択になる。

 

ハンドル制御
  • 直線をドラッグするとカーブになる
  • 鋭角なポイントをカーブにしたい場合は「スムーズに変換」ボタンを押す
  • ポイントAlt+ダブルクリックで「シャープに変換」
  • ベジェハンドルSift+ドラッグで45°スナップ

 

コーナーツール

非破壊的にRを追加したり面取りできる。コーナーの形状を指定可能。

ペンツール

カーブ終了はダブルクリック、またはESCキー。スマートモードを切り替えるとAfterEffectsのオートベジェのような動作に変更することができる。

 

ラバーバンド(輪ゴム)モードをONにすると、パスをプレビューすることができる。

 

ブラシツール

スタビライザを使用すると手ぶれ補正できる。

  • ロープモード : ZBrushのレイジーマウスのような手ぶれ補正。
  • ウィンドウモード : ロープに比べて弾性がある。角が丸まりやすい。

 

輪郭ツール

シェイプに厚みを設定できる。パスと塗りで効果が違う。

 

非破壊合体を使用するとメタボールのような表現が可能になる。

 

スライスツール

複数の解像度を一度に出力することができる。複数フォーマットも出力可能。アイコンファイル作成に便利。

 

 

編集

編集操作に関するメモです。

シンボル

XDのようにオブジェクトをインスタンス化できる。

 

アピアランス

境界線を追加、または複製して多重に線を描くことができる。描画モードを「消去」に設定すると透過すると線を透過できる。

 

レスポンシブレイアウト変更

スケールに応じてレスポンシブにオブジェクトのレイアウトを変更したい場合は「制約」パネルを使用する。

スケーリング矢印

矢印はオブジェクトのスケール方向の制限。

最小フィット/最大フィット

現在より大きくなる場合、または小さくなる場合にスケールする。

アンカーライン

アンカーラインはオブジェクトを寄せる方向の指定。

「制約」パネルは複数選択で編集すると、全てのオブジェクトの設定が置き換わってしまうので、部分的な設定は個別に指定する必要がある。

 

ブール演算と非破壊的合成

Illustratorのパスファインダーのようにパスを合体する場合は、オブジェクトを選択して合体ボタンを押す。

Adobe Xdのように非破壊で合体したい場合はAlt+合体ボタンを押す。レイヤーで合成方法を後から変更することができる。

 

プリミティブを編集可能なパスに変換

図形プリミティブを編集可能なパスにする場合は、コンテキストツールバーの「カーブに変換」を押す。

 

レイヤー クリッピング

レイヤーのドロップ位置でクリッピングの動作が変わる。

  • レイヤークリッピング : レイヤー名前にドラッグアンドドロップ。ペイントソフトでいうところの「下のレイヤーでクリップ」のような動作
  • ベクトルマスク:レイヤーのサムネイルにドラッグアンドドロップ。XDの「シェイプでマスク」の動作。

 

反復複製

複製の位置、回転、スケールを繰り返し複製する場合はAlt+ ラッグ 後に、Ctrl+Jを押す。リピートグリッドの代わりに使う感じ?

位置を移動して反復複製。

 

位置、回転、スケールを変更して反復複製。

 

色の一括変更

ファイル内の色をまとめて変更したい場合は、選択メニューの「塗り潰しカラー」「輪郭線カラー」を実行して色を変更する。
XDにはカラーアセットというファイル内の色をまとめて管理編集できる機能があるのですが、残念ながらAffinity Designerには色の管理機能がありません。選択して色変更という2ステップの工程が必要になります。

選択メニュー / 同一を選択 / 塗り潰しカラー 、輪郭線カラー

 

また、白色と黒色はカラーパレットのHSLを記憶しているため、RGB値が同じ白(255)や黒(0)でも選択対象にならない場合があるので注意が必要です。

 

パスのアウトライン

Illustratorの「パスのアウトライン」のように線をアウトライン化したい場合は、「輪郭線を展開」を実行する。

レイヤーメニュー / 輪郭線を展開

 

アウトラインをスケール

Illustratorの「線と効果も拡大・縮小」のように線をスケールしたい場合は、境界線パネルの「オブジェクトとともにスケーリング」をONにする。

 

重ね順ボタン

レイヤーの重ね順変更。コンテキストツールバーの重ね順ボタンを使用すると連続して変更しやすい。

 

等間隔に分布

Illustratorの等間隔に分布するには「自動等間隔配置」を使用する。

 

色のスポイト

カラーパネルでスポイトアイコンをドラッグ。

 

表示

表示に関するメモです。

キャンバス回転をリセット

Illustratorのズームの癖でAlt + マウスホイール操作してしまうと、キャンバスが回転してしまう。リセットする場合はCtrl+Alt +Shift+R 押す。

 

Alt+マウスホイールは環境設定の「Alt +スクロールホイールによるキャンバス回転を有効化」をOFFにすると無効にできる。

編集メニュー / 環境設定 / ツール / Alt +スクロールホイールによるキャンバス回転を有効化

 

環境設定

環境設定に関するメモです。

 

選択ツール

Illustrator同様に矩形選択で少しでも範囲に含まれるオブジェクトを選択したい場合は、「選択マーキーと交差するオブジェクトを選択する」をONにする。

編集メニュー / 環境設定 / ツール / 選択マーキーと交差するオブジェクトを選択する

 

ズームにマウスホイールを使用

キャンバスのズームをマウスホイールで行いたい場合は「ズームにマウスホイールを使用」をONにする。

編集メニュー / 環境設定 / ツール / ズームにマウスホイールを使用

 

グリッドの単位をピクセルに変更

グリッドの単位をピクセルに変更したい場合は、「ドキュメント設定...」でドキュメント単位を「ピクセル」に変更する。

 

使用した感想

バージョン 1.9.2の時点でいい部分と不満に感じる部分です。

ポジティブ

  • 価格が手頃
  • 以下の機能が便利
    • シンボル
    • 非破壊合体
    • 制約 (レスポンシブ)
    • スライスツール
    • コーナーツール
    • シェイプツール (プリミティブの図形)
    • ショートカット設定の制限が少ないのが便利

 

ネガティブ

  • ヘルプ、チュートリアル、UIラベルでそれぞれ機能名が異なる場合がある(許容範囲)
  • Adobe製品と変形操作のモディファイヤキーが微妙に異なる(少し混乱する)
  • ビューの拡大率によって線端の表示が変わることがある

 

デフォルトの状態だとオブジェクトが多くなると複製や移動時に引っかかるようになり、動作が遅く感じることがありました(GPUが古くOpenCLが使用できないのが原因かも知れない)。
具体的にはアプリケーション内のアイコンのような物を1ファイル内で30個作ると、アイテムの選択や複製時に一秒程度の処理待ちが発生します。レイヤーパネルのスクロールも遅くなりました。

環境設定にあるパフォーマンスのRetinaレンダリングを「低品質」にしたら改善することができました。

 

参考

チュートリアル
https://affinity.serif.com/ja-jp/tutorials/designer/desktop/

 

Tips

modoのスナッピング

modoのスナップ機能について書いてみます。

modoは強力なスナップ機能を搭載していて、グリッド、頂点、エッジ、ポリゴン、カーブなどのエレメントに対して、柔軟にスナッピングすることができます。
スナップは機械的なモデリングで頂点やポリゴンをぴったりくっつける場合に便利です。また、モデリングだけでなく、アイテムモードでアイテムを配置する場合にも便利に使えます。

スナップの使用方法

スナップ機能はツールバーの「スナッピング」をONにすると有効になります。

modoのトランスフォームツール(移動、回転、スケール)は、ツールをアクティブにし状態でビューポートをクリックすると、クリックした位置を基準に動作します(アクションセンターが設定されていない場合)。
「スナッピング」をONにするとメッシュのエレメント(頂点、エッジ、ポリゴン)にアクションセンターがスナップするようになり、スナップしやすい動作に切り替わります。

 

スナップする対象は「スナッピング」ポップアップで設定します。ポップアップはツールバーの「スナッピング」ボタンをAlt を押しながらクリック、またはツールプロパティの「スナッピング」ボタンで表示することができます。

 

スナップ対象はアイテムモード、コンポーネントモードで個別に設定することができます。グローバルを使用すると、アイテムモードとコンポーネントモードの両方のスナップ対象を設定することができます。

 

ツールがアクティブな状態でXキーを押したままにすると、キーを押してる間だけスナップを有効にすることができます。

 

スナップタイプ

スナップする対象は13種類あります。このうち3種類はペンツールでしか動作しません。

 

グリッド

ビューポートのグリッドにスナップします。「固定グリッドを使用」を使用すると任意のグリッドサイズを指定することができます。

 

頂点

メッシュやカーブの頂点にスナップします。「固定スナップ」を使用すると常にスナップした状態にすることができるので便利です。

 

エッジ

エッジやカーブにスナップします。

 

エッジの中心

エッジの中心や、カーブの中心にスナップします。

 

ポリゴン

ポリゴンやカーブにスナップします。

 

ポリゴンの中心

ポリゴンの中心にスナップします。カーブの場合はよくわからない位置にスナップします。

 

交差

ポリゴンが交差した所にスナップします。カーブの場合は頂点間を直線としてあつかうようです。

 

エッジを選択した場合は、選択したエッジの交点にスナップします。

 

ボックス

メッシュのバウンディングボックスにスナップします。バウンディングボックスの四隅と、辺の中心にスナップします。

 

ピボット

アイテムのピボットにスナップします。センターにはスナップしません。

 

ワールド軸

XYZ軸方向にスナップします。ペンツールとミラーツール専用です。

 

直線

2頂点間の直線上にスナップします。ペンジェネレータ系のツール専用です。

 

直角

辺に対して直角にスナップします。ペンジェネレータ系のツール専用です。

 

ガイド

ガイドラインにスナップします。メッシュコンストレイントにまとめられていますが、機能的にはスナップ用の機能です。ガイドにスナップさせるには「スナッピング」をONにする必要があります(スナップタイプの設定は不要です)。

 

ガイドは無限に続く直線です。あまり便利な使い道が思いつかないのと、modo 15.0では動作が不安定になっていてクラッシュしやすいので、あまりお勧めしません。

 

スナップツール

ツールバーの移動ツール、回転ツールボタンを長押しすると、あらかじめスナップがセットされた便利ツールを使用することができます。

 

特にドラッグ スナップ リジッドは便利なのでお勧めです。

 

頂点、エッジ、ポリゴンのスナップは使用頻度が高いので忘れることはないですが、交差、直線、直角は忘れがちなので動作をまとめてみました。

2軸だけスナップさせる「2Dスナップ」や、スナップ対象を距離で指定する「深度制限」など、スナップのオプション機能が充実してるのも便利ですね。

 

参考

 

Tips

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

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

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

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

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

移動ツール

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

 

回転ツール

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

 

スケールツール

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

 

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

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

 

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

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

カーブトランスフォーム

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

 

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

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

 

トランスフォーム配列

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

 

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

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

 

 

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

 

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

Tips

After Effectsでフォルダ内の複数のシーケンスを読み込む方法

After Effectsで複数のシーケンスを読み込む便利スクリプト「ST_Smart Import」を紹介します。

After Effectsで画像シーケンスを読み込む場合、ファイルメニューの「読み込み」、またはWindows エクスプローラからフォルダをドラッグすることが多いんじゃないかと思います。

 

フォルダをドラッグ アンド ドロップでシーケンス読み込み

画像シーケンスが入ってるフォルダを、プロジェクトにD&Dすると画像シーケンスを読み込むことができます。

 

しかし、フォルダ内に複数種類のシーケンスが含まれている場合は最初のシーケンスしか読み込むことができません。

 

ST_Smart Import

ST_Smart Importを使用すると指定したディレクトリ内のシーケンスを一度に読み込むことができます。

https://www.aenhancers.com/viewtopic.php?t=2479

 

ST_Smart ImportはAfter Effectsに標準で入ってるSmart Import.jsxを強化したスクリプトで、いくつか機能が強化されてます。

  • 読み込むシーケンスのフレームレート指定
  • 重複したシーケンスの読み込みをスキップ
  • フォルダ内の複数シーケンスの読み込みに対応

 

インストール方法

ダウンロードしたファイル「ST_Smart Import - v1.2.jsx」をAfter Effectsの「Scripts」フォルダにコピーするとします。

C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\Scripts

「スクリプトを実行」から毎回ファイルを指定する方法もありますが、「Scripts」フォルダにコピーするとスクリプトがメニューにリストされるようになります。

 

歯抜けシーケンスを読み込む

歯抜けシーケンス(見つからないフレーム)を詰めて読み込みたい場合は、読み込みの「アルファベット順にする」に該当するオプションをスクリプトの143行目に追加します。ただし、このオプションを使用すると、読み込んだシーケンス名にフォルダ名が使用されます。

importOptions.forceAlphabetical = true;

 

 

 

3Dソフトでは同じディレクトリに複数のシーケンスを保存する場合があります。ST_Smart Importを使用すると、複数のフォルダ、同じフォルダ内の複数のシーケンスを一度に読み込むことができるので便利です。

より高度な読み込みがしたい場合には、有料のスクリプトを使用するのがいいかも知れません。

https://aescripts.com/immigration/

 

ちなみに、1つのフォルダ内の複数シーケンスに限ればファイル読み込みダイアログで「複数シーケンス」オプションを使用することもできます。