CG 日記

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+合体ボタンを押す。レイヤーで合成方法を後から変更することができる。

描画モードを「消去」に設定すると似たような効果を得られるが、「消去」を使用するとEPSやPDF出力時にライスタライズされるので使わない方がよい。

 

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

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

 

レイヤー クリッピング

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

  • レイヤークリッピング : レイヤー名前にドラッグアンドドロップ。ペイントソフトでいうところの「下のレイヤーでクリップ」のような動作
  • ベクトルマスク:レイヤーのサムネイルにドラッグアンドドロップ。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つのフォルダ内の複数シーケンスに限ればファイル読み込みダイアログで「複数シーケンス」オプションを使用することもできます。

Tips

modoの出力パターン

modoでレンダリングした画像のファイル名を決定する出力パターンについて書いてみます。出力パターンを使用するとレンダー出力ごとにフォルダを分けることができて便利ます。

 

出力パターンとは

出力パターンとはレンダリングした画像を保存するときの連番ファイル名を指定する機能です。レンダーパス名やレンダー出力名を追加して、ファイル保存を便利に設定するための機能です。

デフォルトでは以下のように「レンダーパス名」「レンダー出力名」「ステレオスコピックの左右」「フレーム番号の桁数」が設定されています。「レンダーパス名」「ステレオスコピック」などレンダリングで使用してない場合は無視されます。

[<pass>][<output>][<LR>]<FFFF>

 

出力パターンが使用されるケース

出力パターンは「アニメーションをレンダー」を実行したときに使用されます。

modoはレンダー出力を使用してDepth、Specular、Diffuse、Cryptomatteなど様々なレンダリング要素を出力することができます。レンダー出力のプロパティではレンダー出力ごと個別にファイルパスやファイル名を設定することができますが、毎回個別にパスを設定するのは面倒です。

 

レンダー出力のファイルパスが設定されていない状態で「アニメーションをレンダー」を実行すると、保存先に指定したパスに「出力パターン」を使用して画像を保存してくれます。

 

ファイル出力時にフォルダをわける

レンダー出力が1つのフォルダに全て入ってると、不便に感じることがあるかも知れません。そんな時は「出力パターン」にスラッシュを追加すると、レンダー出力ごとにフォルダをわけて連番を保存することができます。

[<output>/][<output>_]<FFFF>

 

「アニメーションをレンダー」を実行すると「ファイル保存名+レンダー出力名」でフォルダが作成されます。

 

残念ながら保存した画像ファイルに Cut_001 のような任意の文字列を追加する方法がわかりませんでした。

出力パターンはMayaのFile Name Prefixと同じような機能ですが、Mayaに比べると使用できるトークンが少ないのが残念ですね。Mayaの場合はカメラ名やシーンファイル名などを使用することができます。
ファイル出力の自由度を上げたい場合は、Render Output Managerなどスクリプトで対応する必要がありそうです。

 

余談ですがmodo 15.0から出力パターンがドット区切りに変更になったようです。

.[<pass>.][<output>.][<LR>.]<FFFF>

modo 14.2以前の状態に戻したい場合は、初期設定の「デフォルト出力パターン」で変更することができます。

[<pass>][<output>][<LR>]<FFFF>

Tips

modoでパーティクルクラウドをフリーズする方法

modoでパーティクルクラウドと、サーフェイスパーティクルジェネレータをフリーズする方法について書いてみます。

パーティクルクラウドやサーフェイスパーティクルジェネレータは、いわゆる後から再編集可能なプロシージャルオブジェクトです。プロシージャルオブジェクトをモデリングツールで編集可能にするにはフリーズする必要があります。

 

Particle Cloudをフリーズ

Particle Cloudをフリーズする場合は、particle.freezeCloud コマンドを実行します。

particle.freezeCloud

 

Surface Particle Generatorをフリーズ

Surface Particle Generatorをフリーズする場合は、アイテムメニュー /リプリケータで「パーティクルジェネレータ」を実行します。

 

ちなみに同じメニューにある「サーフェイス ジェネレータ」はシェーダーツリーを使ったパーティクルジェネレータをフリーズするコマンドです。

 

サーフェイスパーティクルジェネレータはメニューからアクセスできますが、パーティクルクラウドのフリーズはメニューにないのでメモとして書いておこうと思いました。

Tips

modoの頂点カラーでリプリケータを制御

Foundryのフォーラムでウェイトマップを使用してリプリケータを制御できないのか?というスレッドを見かけたのでまねてみました。

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

 

現在modoではParticle Sieve Modifierだけウェイトマップを読み取ることができますが、残念ながらParticle Sieve Modifierはリプリケータを消すことしかできません。また、Weight Map Falloffパーティクル モディファイヤで動作しないようです。


そこでウェイトマップの代わりに、頂点カラーとParticle Expression Modifierを使用する方法が提案されていました。

Particle Expression Modifierを使うと、CR、CG、CBという変数を使用してRGBマップから値を読み取ることができます。頂点カラーツールを使用してリプリケータのトランスフォームを編集することができます。

サンプルファイル

 

スケマティックではRGBそれぞれParticle Expression Modifierをわけてますが、エクスプレッションはサンプルが少ないので、どう式を書けばいいのかよくわからないです。
単純な計算A+B程度なら問題ないですが、1つのノード内でCR、CG、CB全部の計算結果を出力できるのか?とか、記述をミスった場合に何が問題なのかフィードバックがないので使うのが難しいです。

とりあえず、Particle Expression Modifierノードを使うと他のパーティクル モディファイヤでアクセスできないチャンネルを読み取ることができるようです。

 

関連

今回はParticle Expression Modifierの使い方みたいな記事でしたが、単純にリプリケータを個別に編集したい場合はパーティクルペイントツールパーティクルマップを使用すると頂点単位でリプリケータを編集することができて便利です。

modo 14.2からプロシージャルウェイトマップが強化されたので、今後ウェイトマップとパーティクルモディファイヤが連携できると、アニメーション用途で面白い使い方ができそうですね。

Tips

Bifrost 2.0でシミュレーション キャッシュを保存する方法

Bifrostのシミュレーション キャッシュの保存方法に関するメモです。シミュレーションを試そうと思った時に、キャッシュの保存方法がわからなかったので調べました。

BifrostはMayaや3ds Maxに標準搭載されているに流体シミュレーションソフトです。元々Naiadという流体シミュレーションソフトで、2012年にAutodeskが買収した後、Bifrostに名称を変えてMayaやMaxに機能追加されました。
Bifrostは2.0からビジュアルプログラミング環境として大きな変更が加わり、以前のバージョンからキャッシュの保存方法が変わってます。

 

file_cache

シミュレーション キャッシュを保存する場合はfile_cacheノードを使用します。

本来はwrite_OpenVDB_volumeのようにwrite系のノードを使用する物らしいですが、サンプルを見るとfile_cacheが使用されていました。
file_cacheノードは現在のところ実験的な機能で、将来的に変更される可能性があるとのことです。

 

Mode

キャッシュの書き込み、読み込みを設定します。Write Modeでキャッシュを作成した後、Read Modeに切り替えるとタイムラインのスクラブが可能になります。

 

Filename

キャッシュファイルの保存先を設定します。キャッシュファイルはアニメーションを再生すると自動的に保存されます。

  • ファイル名には#を入れます。#入れないとフレームごとに連番保存できません。
  • キャッシュの保存形式は拡張子(.bob、.vdb、.abc)で指定します。

 

Propertys

保存するシミュレーションデータプロパティの指定です。Propertysに保存したいプロパティ名をスペース区切りで記述します。*の場合すべてのプロパティを保存します。

使用可能なプロパティ名はノードのライン上で右クリックしてWatch Pointを追加すると確認できます。

 

Bifrostのシミュレーション結果をvdbで保存してaiVolumeに読み込むと、プロパティが読み込まれるのが確認できました。

 

modoのVDBVoxelでも同じプロパティが読み込まれるのが確認できます。

 

参考

Bifrost 2.0チュートリアル
https://area.autodesk.com/tutorials/?tag=bifrost

https://area.autodesk.jp/product/maya/bifrost2/

Tips

modoでおきあがりこぼし

mdooのダイナミクスでおきあがりこぼしの作り方について書いてみます。ダイナミクスの特長を使った小ネタです。

サンプルファイル

mdooのリジッドボディ ダイナミクス(Bullet Dynamics)は、アイテムのセンターを中心に回転します。この特長を利用してセンターをアイテム底に配置すると、アイテムをおきあがりこぼしのように倒れにくくすることができます。

倒れないドミノも作れます。


特に使い道のあるTipsではありませんが、もしかするとモーショングラフィックで役立つかもしれません。

 

参考

Tips

modoでプロシージャルなドミノ倒し

modoでプロシージャルなドミノ倒しの作り方について書いてみます。

 

ダイナミクスのチュートリアルでよく見かけるドミノ倒しですが、1個ずつドミノを並べるのは面倒です。カーブを使用してドミノを配置すると、カーブを編集するだけで手軽に並べ替えができるようになって便利です。

サンプルファイル

 

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

大まかな流れとしてカーブからパーティクルを発生させます。ドミノにはコリジョンを設定したいので、Dynamic Replicatorを使用してドミノ通しが衝突するように設定しています。

このとき問題になるのが、ドミノをカーブに沿って配置する方法です。modoにはCurve Particle Generatorというカーブに沿ってアイテムを配置する便利なノードがあります。

残念なことにCurve Particle Generatorを元にパーティクルを発生させても、回転した状態でパーティクルを発生させることができません。下の画像のような方法ではカーブに沿わせることができない。

この問題を回避するためにCurves to ArrayとArray Element By Indexを使用します。
ドミノのスケマティックではParticle Generatorを使用してX方向にパーティクルを生成します。Curves to Arrayでカーブの頂点数を設定して、Array Element By Indexを使って頂点の「位置」と「回転」をParticle Operatorに出力します。

「回転」はそのままParticle Operatorに繋ぐことができますが、「位置」はMatrix Vectorを使ってマトリクスからベクターチャンネルに変換してからParticle Operatorに接続します。

こうすることでカーブに沿ったパーティクルを発生させることができるようになり、手続き的にドミノを配置することができます。

 

Replicatorをフリーズしてダイナミクス適用する方法もありますが、今回はパーティクルを使用する方法を紹介してみました。ちょっと複雑ですが、パーティクルに回転を渡したい場合、Arrayを使うといいようです。
modoには様々なノードがありますが、似た役割のノードでも読み取れる情報に差があるため無駄に複雑に感じることがあります。似た機能のノードは全て同じ情報にアクセスできるように機能を統一して欲しいですね。

 

参考

今回のカーブに沿って回転したパーティクルの発生方法は、Warrenさんが公開していたファイルを参考にしています。
https://community.foundry.com/discuss/post/1214020

Tips

modoのパーティクルオペレータ タイプ

modoのパーティクルオペレータ タイプについて書いてみます。

パーティクルを制御するパーティクルオペレータには「タイプ」というチャンネルがあります。タイプには「適用」「統合」「新規」「トリガー」の4種類があり、タイプによってパーティクルオペレータの適用方法が変わります。

 

まずは比較のためにパーティクルオペレータを使用していない状態のパーティクルシミュレーションです。平面の頂点からパーティクルが発生し続けます。変化がわかりやすいようにパーティクルは発生位置にとどまるようにしました。

 

 

適用

「適用」は毎フレーム値を設定します。

このスケマティックでは「位置 Y」に 2m、「回転 Z」に45°の値を設定してます。

 

 

統合

「統合」は毎フレーム値を加算します。

このスケマティックでは「位置 Y」に 2m、「回転 Z」に45°の値を設定してます。毎フレーム値が加算されるため、パーティクルはY軸方向に移動します。
回転が加算されないのはよくわからないです。「サイズ」「速度」は加算されるので行列チャンネルは非対応なのかな?

 

新規

「 新規」はパーティクル発生時に1度だけ値を設定します。

このスケマティックでは「位置 Y」に 2m、「回転 Z」にTimeノードを使用して毎フレーム異なる値を設定してます。

 

トリガー

「トリガー」はトリガーチャンネルがTrueになったフレームで値を設定します。

このスケマティックでは「位置 Y」に 2m、「回転 Z」にに45°の値を設定してます。
トリガーチャンネルにキーフレームを設定したチャンネルを接続して、1秒間隔でTrueを設定してます。

 

 

オペレーターの接続順

Particle SimulationのOperatorは接続された順番で計算します。

例えば画像のようにSource Emitter、Particle Operatorの順番で接続した場合、Source Emitterが先に計算されるため、平面の頂点位置にパーティクルが発生し、次のフレームでParticle Operatorの「位置」と「回転」が計算されるため一瞬だけ平面上にパーティクルが発生してるのがわかります。

Particle Operatorの順番は重要で「新規」を使用する場合は、エミッターよりも先にParticle Operatorを接続していないとパーティクル特性が動かないように見えます。

 

パーティクルオペレータ タイプの「新規」を使用すると、螺旋のように少しずつ角度の違うパーティクルを発生させることができて便利です。

サンプルファイル