Tips

Tips

modoのAxis Sliceでスライスしたエッジを選択する方法

modoのプロシージャルモデリングで、編集したコンポーネントの選択方法を見かけたの書いておきます。

サンプルファイル

プロシージャルな等高線の作り方」でAxis Sliceでスライスしたエッジを選択する方法がないと書きましたが、Assign Selection Setで現在の全てのエッジで選択セットを作成し、Edges to Curves の Select By Selection Set で[反転]をONにすると、新規に生成されたエッジのみ選択できるようです。これは編集後のコンポーネントを直接選択するオプションが無い場合に、他の機能でも使える考え方かも知れません。

Assign Selection Setは発想しだいで便利に使えるんだね。勉強になった!

Tips

modoのリプリケータのランダムタイム変動

modoのリプリケータにある「ランダムタイム変動」について書いてみたいと思います。


リプリケータはアイテムを手軽に複製する機能ですが、アイテムにアニメーションが設定されている場合はアニメーションした状態で複製します。単純にアニメーションを複製すると、すべてのアイテムの動きがそろってしまいます。リプリケータの「ランダムタイム変動」を使用すると、アニメーションにランダムな時間の変化を設定することができます。

アイテムのトランスフォームにアニメーションを設定してる場合は、こんな感じにランダムにずれてアニメーションが再生されます。

 

デフォーマで変形したアイテムはビューポートで「ランダムタイム変動」を確認することができないので注意が必要です。下の画像はスケルトンで円柱を変形した例です。

レンダリングした場合は、正しく「ランダムタイム変動」が効いているのが確認できます。ビューポートで確認できないのがちょっと不便ですね。

アニメーションを特定のフレーム以降から再生したい場合は、「タイムオフセット」を使ってアニメーションの開始フレームを調整するといいです。

「量子化カウント」はアニメーションのパターン数を指定する機能です。例えば3を設定するとランダムなアニメーションのパターンが3種類になります。確認してませんが「量子化カウント」の値が小さい方が、メモリの使用量が少なくなったりするのかな?と思います。

リプリケータを使用してアニメーションしてるモデルを複製する場合は、「ランダムタイム変動」を使用すると手軽にランダム感が設定できて便利ですね。

ちなみにmodo11からリプリケータのパフォーマンスが大幅に向上しましたが、modo11.2~12.2でデフォーマを使用したメッシュに「ランダムタイム変動」を使用すると、ビューポートのアニメーション再生パフォーマンスが悪くなる問題が発生しているようです。レンダリング時のみ「ランダムタイム変動」に値を設定するといいかもしれません。

Tips

modoをカスタマイズした設定の保存方法

modoのバージョン間で、カスタマイズした設定を引き継ぐ方法について書いてみたいと思います。

modo901以前は一年に1度メジャーアップデートが行われていましたが、modo10以降は10.0、10.1、10.2のように1年間に3回アップデートされるポイントリリース方式になりました。これらのマイナーバージョンはそれぞれ初期設定が異なるため、ショートカットや初期設定をカスタマイズしているとマイナーバージョンごとに設定が初期化されてしまい不便です。

modoではユーザーがカスタマイズした設定は個別の.CFGファイルに書き出して管理します。設定をファイルを書き出すのはMaxやLightWaveなど他の3Dソフトと同じですが、modoは特定のフォルダにファイルを入れておくと全てのmodoバージョンから設定を参照してくれるので便利です。

設定ファイルの保存方法

modoのカスタマイズした設定ファイルの保存方法は、ファイルメニューの「ファイル / 設定の書き出し」を使用します。

画像では「一部出力」に「 (全て) 」を使用していますが、「初期設定」や「キーマッピング」など、カテゴリ別に保存することもできます。保存したファイルはmodoの「Configs」フォルダに入れます。

C:\Users\ (ユーザー名) \AppData\Roaming\Luxology\Configs

modoは起動時に自身のバージョンのコンフィグファイル「MODOxxx.CFG」を読み込みます。次に「Configs」フォルダ内のCFGを読み込み、重複している設定については後から読み込んだCFGの設定を使用している気がします。

.CFGファイルはテキストエディタで編集することができます。設定を変更するごとに別々の設定ファイルとして書き出し、必要な部分をコピペしてファイルを維持するといいと思います。

 

modoの初期設定ファイル

modoの初期設定は以下の「Luxology」フォルダにバージョンごと保存されています。

C:\Users\ (ユーザー名) \AppData\Roaming\Luxology

modoの初期設定ファイルを削除すると、インストール直後の状態になります(インストールしてるKitsは除く)。カスタマイズした設定ファイルを「Configs」フォルダに入れたら、modoの初期設定ファイルを一時的に移動してカスタマイズした設定ファイルが正しく読み込めてるかテストしておくと安心です。

 

参考

音声付きで丁寧に解説されています。

Tips

modoのウェイトマップフォールオフ

modo 12.0で追加されたウェイトマップフォールオフについて書いてみたいと思います。
modoのデフォーマはインフルエンスによってどこを変形するか指定します。しかしジェネラルインフルエンスを使用していない Soft Lag や Wrap Influence のようなデフォーマはウェイトマップを使用して変形を制御することができませんでした。

ウェイトマップフォールオフを使用すると、これまでウェイトップに対応していなかったデフォーマでもウェイトマップを使用して変形を制御できるようになります。Soft Lagと組み合わせるとメッシュの一部だけ揺らすことができるようになるので、キャラクターの一部を揺らす擬似的なマッスルなんかに使えるんじゃないかと思います。

 

Soft Lagはウェイトマップの解釈が少し独特なようです。ウェイト値0の頂点は変形しませんが、ウェイト値が0以上の頂点はソフトラグの「強さ」が変わって見えます。単純にマスクしてくれた方が使いやすいんですけどね。

 

需要があるかわかりませんが、モーフもウェイトマップを使用して変形する範囲をマスクすることができます。

Locatorの位置Xが正数/負数かを条件式の「A は B より小さい」を使用してリグっぽくしてます。
ウェイトマップを切り替えはString Switchノードを使用します。String Switchは「入力」チャンネルにリンクされた順番で文字列を出力するので、ユーザーチャンネルに文字列チャンネルを追加してウェイトマップ名を設定し、String Switchの「入力」チャンネルにリンクしています。

これまではウェイトマップを使用できない一部デフォーマの使い勝手に不満がありましたが、ウェイトマップフォールオフのおかげで不満が解消されそうです。

Tips

modoでプロシージャルな等高線の作り方

modoのプロシージャルモデリング機能を使用した、オブジェクトの等高線のような表現方法について書いてみたいと思います。

プロシージャルモデリングとモデリング機能のように呼ばれていますが、modoのプロシージャルモデリングは自由度が高いので、アニメーション作成でも便利に使うことができます。例えば入力データに依存しないアセンブリやエフェクトを作成することができます。このサンプルファイルでは、好きなメッシュをMerge Meshにリンクすると等高線のようなカーブを生成します。

サンプルファイル(12.2以降)

 

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

処理は簡単です。プロシージャルモデリングのAxis Drillでスライスしてエッジを作成、Edges to Curves でエッジからカーブを作成しています。レンダリングは「カーブをレンダリング」機能を使用してます。

本当は等間隔でエッジを作るにはAxis DrillよりAxis Sliceを使うのがスマートです。Curve Slice、Slice Effector、Pen Slice、Curve Sliceというスライス関連のノードがありますが、Axis Sliceには「エッジ選択セット」を作成する機能がないため、スライスしたエッジを選択する手段がありませんでした。しかたがないのでArrayで平面を複製してスライス専用のメッシュとして使用しました。(2018/12/11追記、Assign Selection Setで追加したエッジのみ選択する方法を見つけました

Merge Meshes でメッシュの入力を分けてるのは好みの問題です。アニメーションしているメッシュにノードをまとめることもできますが、メッシュオペレータは処理が重いので、分けたほうが表示をオンとオフで切り替えるのが簡単です。処理をライブラリ化して使い回したい場合にも便利だと思います。

テクスチャでも似た感じのことができると思いますが、メッシュをスケールしたときに、均一な太さの線にならないんじゃないかな?という気がします。

 

メッシュ入れ替えた例。いちど処理を作ってしまえば再利用できるのがいいですね。

ダイレクトモデリング機能でも同じようにエッジからカーブを作ることができますが、プロシージャルモデリング機能では自動的に等間隔のカーブを作ることができます。しかもアニメーションしているメッシュを使用できるというのが、プロシージャルモデリングの魅力ですね。

 

参考

Tips

modoのデフォーマリスト

modoのデフォーマリストについて書いてみたいと思います。デフォーマリストを使用するわかりやすい例はキャラクターのスケルトン変形やモーフィングですが、幾何学的なメッシュ変形のアニメーションを作ることもできます。

サンプルファイル

 

デフォーマリストとは

modoには非破壊的にメッシュ変形する「デフォーマ」機能が搭載されています。デフォーマはいつでも変形を調整できるので、アニメーションのような用途に向いています。1つのメッシュに複数のデフォーマを適用した場合に、デフォーマの計算順を指定するのがデフォーマリストです。

望んだ変形結果を得るにはデフォーマの計算順は重要です。デフォーマリストはリストの下から順に計算されます。例えば Linear Falloffで波のように変形してからベンドするのと、ベンドしてから波のように変形する場合では変形結果が変わります。

 

正規化フォルダ

デフォーマリストで重要な機能がNormalizing Folderです。デフォーマリストはデフォーマを順番に計算しますが、複数のデフォーマを順番にでなく一度に加えたいときがあります。例えばキャラクターのように複数のスケルトンでメッシュを変形する場合です。

modoのバインドを使用したスケルトン変形は「トランスフォームエフェクタ」による変形と同じで、アイテムのトランスフォームを使用してメッシュを変形します。このとき変形の影響範囲が重なると、2重トランスフォームが発生します。この問題を解決するのがNormalizing Folderです。

下の画像では真ん中のボックスにウェイトマップ値を100%ずつ重複するように設定しています。スケルトンを回転や移動したとき2倍変形しているのが確認できます。General InfluenceをNormalizing Folderに入れることで正規化されて、意図した変形になります。

Normalizing Folderには変形の正規化の他に、メッシュ変形の補完法を「クォータニオン」にしたり、影響するウェイトマップの上限を設定する「最大ソース」を設定することができます。ちなみに、Normalizing Folderはベンドなど他のデフォーマでも正規化が動作します。

modoでつまずきやすいのがスケルトン変形とモーフィングの計算順です。バインドで生成されたNormalizing Folderと、Morph Influenceの順番が適切でないと望んだ結果になりません。

FBX形式でバインドされたキャラクターモデルをmodoに読み込んだ場合も変形結果がおかしくなりがちです。変形結果がおかしいなと思ったら、デフォーマリストやNormalizing Folderを確認して見るといいと思います。
ちなみにデフォーマリスト右の#をクリックすると、ウェイトマップが設定された頂点を選択することができます。

デフォーマの変形順は、modo 10.1以降のプロシージャルモデリング用の「メッシュオペレータ」からも編集することができます。

 

デフォーマの計算順はmodoに限らず3dsMaxの「モディファイヤスタック」Mayaの「入力の操作リスト」など、3Dソフトでは一般的に搭載されている機能です。下の画像のような円柱のトランスフォームとデフォーマの計算順を利用したアニメーションは3DCGの古典的な手法です。

 

デフォーマの計算順を変えるとモーショングラフィックなんかで見かける幾何学的な変形が得られて面白いんじゃないかと思います。以前公開した「アニメ風の眼球制御」なんかもトランスフォームとデフォーマを利用したものでした。

Tips

modoのカーブプローブでアニメーション制御

前回のフォールオフプローブの続きで、カーブプローブを使用したアニメーション制御について書いてみたいと思います。

カーブプローブはカーブとアイテムの「距離」や「パーセンテージ」を抽出して、他のチャンネルで使用することができるようにするノードです。このカーブプローブとリプリケータを使用すると、カーブの特定の位置にあるアイテムを制御することができます。

例えばモーショングラフィックでよく見かける、オブジェクトがシーケンシャルに組み上がるようなアニメーションを作ることができるようになります。

サンプルファイル

 

カーブプローブを使用したアニメーション制御

簡単にテストしたところ、カーブプローブとリプリケータを使用して制御できるのは表示の「可視」、「ローカル」「ワールド位置」「ワールド回転」「ワールドスケール」のような、リプリケータの機能が使用しているチャンネルのみのようです。

 

可視の制御

見てわかりやすい、アイテムの「可視」の制御例です。

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

サンプルファイルがあるので、ザックリした解説です。

  1. カーブを作成してCurve Probeノードにリンクします。
  2. 別のメッシュにプロシージャルモデリングのCurve Rebuildノードを追加して、カーブをリンクします。
  3. Curve Rebuildしたメッシュは Replicator の「パーティクルソース」にリンクします。
  4. Replicatorの「原型となるアイテム」にはメッシュのない空のアイテムを指定して「子のアイテムを含む」をONに設定するのがポイントです。空のアイテムにペアレントしたアイテムがReplicatorによって複製されます。
  5. LocatorはユーザーチャンネルにControllerというパーセンテージ型のチャンネルを追加し、アニメーションのタイミング制御用のチャンネルとして利用します。
  6. 減算ノードを作成して Controllerの値から、Curve Probeの「パーセンテージ」を引きます。
  7. 減算ノードの出力をRelationshipノードを使用して値をリマップします。
  8. Relationshipノードの出力をアイテムの「表示属性」チャンネルにリンクします。

「表示属性」はプロパティでは「可視」と表示されます。modoはチャンネルタイプがリストの場合、0からの数字でリストの項目を制御できます。Relationshipを使用したリマップの値が2と1のリニアカーブなのは、「可視」が「いいえ」の2、「はい」の1に切り替えてるからです。


modoのカーブ関連の機能はあまり使いやすいとは言えませんでしたが、徐々に強化されて12.1のCurve Rebuild はだいぶ使いやすい状態になってる気がします。

 

位置の制御

基本的には「可視」と同じです。Relationshipノードの出力をアイテムの「ローカル」チャンネルにリンクすることで位置を制御しています。Relationshipと「ローカル」の間にMatrix Composeノードを使用しているのは、「ローカル」がマトリクスチャンネルだからです。位置のマトリクスを出力したいので、Matrix Composeのマトリクスタイプを「位置」にします。

 

回転の制御

回転のマトリクスを出力したいので、Matrix From Eulerを使用します。

 

スケールの制御

スケールのマトリクスを出力したいので、Matrix Composeのマトリクスタイプを「スケール」にします。

今回参考にしたmodo 801のCurve Probeの紹介ムービーでは「ワールドスケール」を使用していますが、「ローカル」がお勧めです。「ローカル」を使用すると Replicator の「ばらつき」にあるランダム系パラメータを使用してランダムさを加えることができるからです。「ワールドスケール」を使用するとマトリクスの計算順の関係で、Replicator のランダム系のパラメータを上書きしてしまいます。

 

 

ランスフォームを制御

Matrix Compose ノードを使用して位置、回転、スケールを「ローカル」にリンクする方法です。

Matrix Composeはチャンネルをリンクする順で計算するので、スケール、回転、位置の順番でリンクします。リンクする順番が違うとアイテムの位置が変わります。この計算順は座標変換の数学的な問題らしい。

 

カーブプローブを使用したアニメーション制御

上で紹介した方法でも十分アニメーションを制御できると思いますが、普通にアイテムにキーを設定して動かしたものを制御する方法について紹介したいと思います。方法は単純でTime Offset:Matrix ノードを使用します。

まずは普通にアイテムのトランスフォームにキーを設定してアニメーションを作成します。

あとは、アニメーションを設定した各アイテムの「ローカル」チャンネルをTime Offset:Matrixで循環させ、Curve Probeの「パーセンテージ」をTime Offseの「タイム」に入力すると、個々のアニメーションをオフセットできるようになります。

Time Offseは数が多くなるとアニメーションの再生に負荷がかかるようです。ハンバーガーを構成する6アイテムくらいなら問題ありませんが、ハンバーガー、ポテト、ドリンクの計23個のアイテムにTime Offseを設定したら、そこそこ重くなりました。12.1で追加された Driven Action を使って制御できたら便利だなと思ってテストしましたが、Driven Action では上手く行かなかったです。

ちなみにTime Offseはリンクしたらたまたま動いた感じで、正直なところCurve Probeの「パーセンテージ」が出力してる値がよくわからないです。出力先が「タイム」チャンネルの時だけアニメーションに関する何かが出力されてる気がします。上のスケマティックではCurve Probeの「パーセンテージ」を適当な値で割ってアニメーションの再生タイミングを遅くしようとしてますが、なぜかカーブの始点から終点に向けて徐々にアニメーションの再生間隔が遅くなっていきます。

 

簡単にアニメーションを設定するとこんな感じです。それっぽいんじゃないかと思います。

 

カーブプローブとリプリケータを使用すると、modoでもモーショングラフィック的なアニメーションを手続き的に作ることができたのは驚きですね。ノードを理解できれば、もっといろんな表現ができそうです。

 

参考

modo 801リリース時に公開された草のツルの成長アニメーションと、成長に合わせて葉が生えるチュートリアル動画です。木とかも作れそう。

Tips

modoのフォールオフ プローブでパーティクルを制御

フォールオフプローブでパーティクルを制御する方法について書いてみます。
modoにはカーブプローブやフォールオフプローブという、カーブや3D空間の位置を利用してリギングするための便利ノードが搭載されています。特にフォールオフプローブは位置を利用して大量のパーティクルをシーケンシャルに制御できるので、モーショングラフィックなんかで便利に使えます。

フォールオフプローブを使用すると、以下の画像のようにフォールオフの影響範囲内のパーティクルを制御することができるようになります。

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

Particle Operator に「位置」を追加して、Falloff Probe の「位置」にリンクします。Falloff Probe の「出力」をParticle Operatorの「速度」や「サイズ」にリンクすると、フォールオフ内のパーティクルを制御することができるようになります。
Radial Falloff 内のパーティクルは Channel Waveformを使用して「速度 Y」を制御して上下移動させています。また Linear Falloff と Relationshipを使用して、下から上にかけてパーティクルのサイズが小さくなるように設定しています。

パーティクルは Particle Generator を使用して等間隔にパーティクルを発生させてます。Source Emitterの「パルス」を設定することで、 Particle Generator の1頂点から1パーティクルだけ発生するように設定してます。
プリミティブのCubeをそのまま使用しているので、シーンのサイズが100mほどあります。Channel Waveformの「振幅」の値が大きいのはこのためです。

 

フォールオフは3D空間でアバウトに影響範囲を指定できるのが便利なため、バージョンアップのたびにフォールオフチャンネルが追加されたノードが増えています。代表的なところだとメッシュの変形、デフォーマのインフルエンス、チャンネルモディファイヤ、フォース、パーティクル モディファイヤ、テクスチャ、プロシージャルモデリングなど、多くのノードでフォールオフを使用することができるようになってます。

 

パーティクルの上下移動程度であればフォースにフォールオフを設定しても同じようなことができるのですが、少し複雑な制御にフォールオフを使用したい場合に、どんな感じでノードを組めばいいのか忘れがちだったのでフォールオフプローブの使い方の記事を書いてみました。

ちなみに、当初は Channel Waveform の「オフセット」をアニメーションさせる予定でしたが、「オフセット」はフォールオフの外側にも影響がでてしまいました。CSV Point Cacheでパーティクルのキャッシュを作成して、カメラをパーティクルコンストレイントで動いていないパーティクルにくっつければフォールオフ内だけ動いて見えるようにレンダリングすることもできます。

 

質感の設定はGradientを使用しています。入力パラメータで「ロケータまでの距離Y方向の距離(オブジェクト空間)」を使用して上下方向の色と、「ロケータまでの距離」を使用してRadial Falloffの距離で「ルミナンス色」と「ルミナンス量」を制御してます。

単純なシーンですが、modoのレンダリング力のおかげでそれっぽく見えるんじゃないかと思います。

 

Tips

AEでアニメ風の波打ちぎわの作り方

水着回に欠かせないアニメ風の「波打ちぎわ」の作り方について書いてみたいと思います。

海の記号としてよく見る気がしますが、それほど重要な要素でないためかアップのカット以外では止め絵が多いように思います。最近だと「ISLAND」の波がいい感じでしたね。
CGはじめたての頃は動く波打ちぎわを作りたかったけど難しかった気がするので、こんな感じで作るとこんな絵になるよ。という感じの参考になればいいなと思います。

波打ちぎわの作る工程は大まかに3工程です。

  1. 波打ちぎわの素材を作る(白波の素材、波で砂浜がぬれる素材、波のマスク素材)
  2. 波のように動かす
  3.  波を配置する

それでは行程ごとに解説してみたいと思います。

 

波打ちぎわの素材を作る

波打ちぎわの要素、素材を作ります。
波打ちぎわを絵として思い浮かべたとき、構成する要素として欲しいのは以下の4種類くらいでしょうか。欲しい表現によってもっと多くなると思います。

  • 白波
  • 波で砂浜がぬれる
  • 波のマスク素材
  • 背景 (砂浜。海)

それでは要素をAfterEffectsで作っていきます。

 

白波1

よせては返す白波を作ります。

適当に平面を作成して水平にパーティクルを発生させます。パーティクルは「Particular」を使用しています。EmitterのTypeは横長のBoxで、Size Over Life と Opacity Over Life で時間経過と共にパーティクルを小さくして消しています。波全体の消え方を制御するためにパーティクルの数と、サイズにキーを設定してます。
パーティクルはGravityで下に落ちる単純な設定ですが、PhysicsのTurbulence FieldのOffsetにキーを設定して波っぽい揺らぎを加えてます。

後の工程で波の移動アニメーションを6秒にしたので、2秒15フレを中心にキーを設定しています。ちなみに緑色の部分は透明で、コンポジッションの背景色です。

念のためParticularの変更したパラメータも乗せておきます。パーティクルがそれっぽく見えるかはレイヤーの移動距離など相対的ものなので、シーンの作りに応じて調整する必要があります。
AfterEffectsはレイヤー選択して U キー2回押すと、デフォルト値から変更されたパラメータだけ表示できて便利です。

 

ちなみにエミッターの位置をアニメーションする方法も試したましたが、白波の密度が薄くなってしまうのと、引き波の動きがレイヤーを移動した方が好みの感じに仕上げることができました。

 

白波2

手描きの波にあるような記号的な白波も作ります。

平面に「タービュレントノイズ」を適用して、フラクタルの種類を「にじみ」にして微調整します。「展開」にキーを設定してノイズをアニメーションさせます。次に「レベル」を適用してコントラストを上げて線のように設定します。ヒストグラムにキーを設定して線の幅をアニメーションさせています。
色の白い部分以外は透明にしたいので、ノイズレイヤーの下に白平面を作成して「ルミナンスキー マッド」に設定します。最後にマスクを使用して上から下にかけて透明になるようにしました。

 

白波3

白波1と白波2を使用して波が動くアニメーションを作成します。

白波の素材の上に「調整レイヤー」を追加し「メッシュワープ」でアニメーションします。メッシュを波っぽくギザギザにしてしますが、アニメーションの途中で直線的になりすぎない方がいい感じに仕上がると思います。
白波2にはマスクを追加して、波模様があらわれるタイミングを調節しています。

 

波で砂浜がぬれる

砂浜がぬれたとき用の素材を作ります。

黒い平面を作成して 白波3で作った「メッシュワープ」のアニメーション設定済みの「調整レイヤー」をコピーします。
砂浜のぬれた感じをだすために「ブラー (滑らか) 」で少しぼかします。
レイヤーは「不透明度」をアニメーションさせて徐々に透明にします。砂がぬれた後に、水が浸透してちょっと乾いて見せるためです。

 

波のマスク素材

波に水の色をつけるためのマスク素材を作ります。

黒い平面を作成して 白波3で作った「メッシュワープ」のアニメーション設定済みの「調整レイヤー」をコピーします。
水の深さをだすために「ブラー (滑らか) 」で大きめにぼかします。ブラーを大きめに設定したぶん、レイヤーの位置を下にずらします。

 

波を動かす

波打ちぎわの素材をアニメーションさせます。

波のアニメーション

寄せ波と引き波のアニメーションを設定します。

白波3のコンポジッションの「位置」を上下に移動するようにキーを設定します。波の振幅は全体で6秒。0~2.15秒で波がピークに達し、残り3.15秒で波がゆっくり引いていくアニメーションにしました。キーはイージーイーズを使ってイーズイン/イーズアウトするようにしています。
波をリピートさせたいので、アニメーションを設定したレイヤーを複製して、波が連続して見えるようにレイヤーの再生タイミングをオフセットします。

今回は波の素材が1種類のため昔のゲーム(ICOとかの時代)のように波がクロスフェードするような設定にしていますが、実際に波を観察すると「寄せ波」と「引き波」がぶつかって寄せ波の距離が「長い」と「短い」を繰り返したりします。もう少しリアルな波を作りたい場合は、寄せ波と引き波がぶつかる素材を入れるといいと思います。

この画像ではコンポジッションの高さが素材と同じ高さですが、もっと高く設定すればよかった。高さが足りなかったせいで最終的な絵の波の発生位置が近すぎてます。。。

 

砂浜がぬれるアニメーション

波で砂浜がぬれる素材をアニメーションします。

波のアニメーションから位置のキーをコピーします。 波のアニメーションと違い、波のピーク位置で停止させます。

 

波のマスクアニメーション

波のマスク素材をアニメーションします。

波のアニメーションから位置のキーをコピーします。
引き波のときに水位が一定の位置から下がって欲しくないので、黒いレイヤーを追加して波形にマスクを作成しています。

 

波を配置する

アニメーションさせた素材を背景に配置します。

アニメーションさせたコンポジッションを3Dレイヤーにして海岸線に見えるように配置しました。作った素材はそのまま順番に重ねています。白波の素材を複製して、白波の影を落としてみました。背景描くの面倒だったので、砂浜と海はグラデーションした平面です。

 

作りは簡単ですが、アニメ風の波打ちぎわに見えるんじゃないかと思います。

上の画像は波に水透明度や深さを意識した感じにしてますが、完全に水色にするとよりセルっぽい感じになります。

Tips

modoでマッスルボーンの作り方

チャンネル リレーションシップを使用したリグの応用として、マッスルボーンの作りかたについて書いてみたいと思います。

 

マッスルボーンとは

ボーン(スケルトン)を使用して筋肉の伸縮を表現するリグのことです。デフォーマやシミュレーションで筋肉を揺らしたりする表現が高コストだった時代に、簡易的に筋肉表現をおこなうために利用されていました。今でもリグのデモリールを見ると、肩の変形制御用に伸縮するスケルトンを見かけることがあります。

 

マッスルボーンの作り方

スケルトンを使用する普通のマッスルボーンはチャンネルリレーションシップで簡単に作れるので、今回はこれまで紹介したセットアップの基本機能を組み合わせながら、フォールオフを使用した編集が手軽にできるマッスルボーンを作ってみました。

セットアップモードに入るとフォールオフが表示され、セットアップモード内のフォールオフの位置のメッシュを伸縮します。ウェイトマップを使用せずに変形してるところ面白いんじゃないかと思います。

サンプルファイル

スケマティックはこんな感じで単純です。スケマティックの左から右に解説してみます。

  1. 上腕と手のスケルトンの「ワールド位置」をMeasure Distanceノードに繋いで、アイテム間の距離を求めます。
  2. Measure Distanceの「距離出力」をRelationship ノードに接続してアイテムを制御します。
  3.  Relationshipの「出力」をRadial Falloffの「位置Z」と「スケールY/Z」に接続して、距離に応じてスケールするように設定します。位置はトランスフォームゼロで追加されるトランスフォームアイテムに接続しているので、セットアップモードではマスタートランスフォームで位置の編集ができます。
    フォールオフはデフォーマやダイナミクスのフォースを制御するアイテムのような印象がありますが、単体でデフォーマとして使用することができます。「セットアップ使用」というセットアップモードでアイテム位置を使用して変形する機能があり、この機能を使用することでセットアップモードのフォールオフ位置に変形を加えることができます。
    「セットアップ使用」を使うので、Radial Falloffはスケルトンの親子関係と関係ない構造になっています。スケルトン変形とフォールオフの変形は「デフォーマリスト」の順番で計算されます。このサンプルではフォールオフの変形後にスケルトンの変形を加えています。セットアップモードでの表示の切り替えは、Radial Falloffの「可視」チャンネルにセットアップ静止値を設定することで切り替えています。

Measure Distanceノードの変わりに Measure Angleノードを使用して前腕の角度を使う方法もありますが、人間の腕や脚のように3関節であれば距離を使用することもできますよ。という感じのサンプルにしてみました。
単純に伸縮する筋肉表現したい場合は「スケルトン角度でモーフを制御する方法」のようにモーフを使用して表現することもできます。どの方法を使用するかは好みの問題ですね。

 

LightWaveのボーンには手軽に力こぶを発生させる「筋肉の発生」という専用機能が搭載されていました。ソフトを覚えはじめの頃に1度だけさわっただけですが、変形形状を指定するような設定があれば便利な機能になったのかもなと思います。

Tips

modoのファー使用時のレンダリング設定

ファーを使用するときのレンダリング設定について書いてみたいと思います。
ファーマテリアルを使用するとノイズやチラツキが発生しやすくなります。メッシュが密集するのが原因ですが、以下の設定を変えることで改善します。

  • 「間接サンプル」「放射照度」「反射サンプル」などサンプル値を高くする
  • アンチエイリアシングを高くする

 

サンプル数

タイムラプスで使用した草を使って、どのサンプルがどの要素に影響しているか調べました。まずはmodoのデフォルト設定、「間接照明」の「跳ね返り」は 2 です。

デフォルト

アンチエイリアシング : 8サンプル/ピクセル
シェーディング率 : 0.5
間接サンプル : 64
放射照度 : 256


300%にズームした画像です。ファーの表面でノイズが多いのが確認できます。

 

シェーディング率

念のため「シェーディング率」を0に設定してレンダリングしてみた。

アンチエイリアシング : 8サンプル/ピクセル
シェーディング率 : 0.0
間接サンプル : 64
放射照度 : 256

シェーディング率の記事で書いた通り、「シェーディング率」を低く設定してもノイズへの影響は少ないです。

 

放射照度

GIノイズに影響する「放射照度」の値を上げてみます。

アンチエイリアシング : 8サンプル/ピクセル
シェーディング率 : 0.5
間接サンプル : 64
放射照度 : 512

 

「放射照度」は白い平面のノイズには影響がありましたが、ファーの表面のノイズに影響がないことがわかります。

 

 

間接サンプル

「間接サンプル」の値を上げてみます。

アンチエイリアシング : 8サンプル/ピクセル
シェーディング率 : 0.5
間接サンプル : 256
放射照度 : 256

ファーの表面のノイズが改善されました。ファーのノイズの原因は「放射照度」よりも「間接照明」の「間接サンプル」がより影響することがわかりました。

 

 

 アンチエイリアシング

ファーの形状は「円柱」と「ストリップ」が選択できます。草の場合は厚みのない「ストリップ」を使うんじゃないかと思います。

ですが「ストリップ」を使用するとカメラとポリゴンが垂直になるファーが、破線のようにとぎれてレンダリングされることがあります。板ポリゴンをカメラに垂直の位置でレンダリングすると、厚みがないのでレンダリングされないのと同じような問題です。ファーの場合は多少曲がった形状になることが多いので、アンチエイリアシングのサンプル数を上げることで改善します。

アンチエイリアシング : 8サンプル/ピクセル

 

アンチエイリアシング : 16サンプル/ピクセル

 

アンチエイリアシング : 32サンプル/ピクセル

アンチエイリアシングはファーが細い場合にも効果的です。厚みのないファーが V-Ray Fur で廃止されてるらしいのは、やはり途切れてレンダリングされてしまうからなのかな?

フレームパス

ファーを最も綺麗にレンダリングする最終手段として「フレームパス」があります。「フレームパス」は同じフレームを複数回レンダリングして合成することで、ファー、モーションブラー、被写界深度を柔らかくレンダリングする機能です。とても効果が高いですが、レンダリング時間が長くなります。

フレームパス : 2

ファーのランダムシードを変えてレンダリングして合成するような動作なので、ファーの量が多くなってる。

 

フレームパス : 4

 

ファーのレンダリングに何が影響しているのかがわかれば、効率的に設定を詰めることがでるようになると思います。
次回はファーのレンダリング設定をふまえてヘアーマテリアルをレンダリングしようと思いましたが、ガイドをダイナミックカーブで動かそうとすると、modo 10以降は計算が変な気がしますね。

Tips

modoのアンチエイリアシングとシェーディング率

odoのシェーディング率について書いてみたいと思います。ぼけてないシャープな反射、影、テクスチャを綺麗にレンダリングするには「シェーディング率」を0.1に設定してレンダリングした方がいいという話です。

一般的にレンダリングの綺麗さは以下のパラメータで決まります。ここでいう綺麗さはピクセルの品質のことです。GIの計算とかシェーディングアルゴリズムよりもCGの基礎の話です。

  • アンチエイリアシング
  • シェーディング率
  • サンプル数

 

アンチエイリアシングとは

アンチエイリアシングはレンダリング画像のジャギを滑らかにする処理です。アンチエイリアシングを使用するとチラツキがなくなり自然なアニメーションを作成することができます。
単純なアンチエイリアシング処理だとゲームで使われていたポストプロセス処理があります。周辺のピクセルの平均色を使用する方法でFXAAやTXAAというやつです。アンチエイリアシングの詳細はこちらの記事がわかりやすいです。

 

しかし3DCGは無限にズーム可能なので、ポストプロセスのようにピクセル単位で色を決めると情報が欠落してしまい正確なピクセル色になりません。アンチエイリアシングがポストプロセス処理のゲームを遊んだとき、オブジェクトの境界でチラツキ(クローリー)が発生するのを見かけたことがあると思います。

以下の画像はNvidia コントロールパネルを使用してmodoのビューポートにFXAAを適用したものです。

 

オブジェクトの境界を300%に拡大した画像です。FXAAはポストエフェクトなので静止してる場合はアンチエイリアシングが掛かって綺麗に見えますが、ビューが動くと階段状のチラツキ(クローリー)が発生しているのが確認できます。

 

ゲームは応答速度が重要なのでジャギやチラツキは許容されますが、映像目的のプリレンダリングではチラツキやノイズは好まれません。このため昔から3Dソフトのアンチエイリアシング処理は、1ピクセルを分割しサブピクセルをサンプリングしてピクセルの色を決定します。

例えば1ピクセルを4分割する場合、アンチエイリアシングがない状態で4倍の解像度でレンダリングするのと同じくらいの計算コストが掛かります。アンチエイリアシングのサンプル数を高くすることで、正確なピクセル色を得ることができますがレンダリング時間が長くなってしまいます。

 

全てのピクセルを分割するとレンダリング時間が長くなるので、レンダリング時間を短くする工夫として、3Dソフトのレンダラーはオブジェクトの境界を集中的にアンチエイリアシング処理するのが一般的です。

 

たとえば3dsMaxのスキャンラインレンダラーでレンダリングした画像です。Maxのスキャンラインレンダラーは2000年頃からほとんど変わってなくて、デフォルトでは鏡面部分のシェーディングでサブピクセルがほとんど考慮されない設定になってます。

 

同じ問題はmodoでも発生します。下の画像はmodoのデフォルト設定でレンダリングした画像です。球体の輪郭に比べて、シェーディング部分がジャギってるのがわかると思います。

 

ここまで前置きです。シェーディング部分のジャギを軽減するために使用するのが「シェーディング率」です。

 

シェーディング率

「シェーディング率」はシェーディング部分のサンプリングを増やすことでジャギを軽減します。反射、影、テクスチャのジャギが発生したら、シェーディング率を0.1や0のように小さな値を設定することで改善することができます。

シェーディング率はアンチエイリアシングと関係していて、シェーディング率 0.5は1ピクセルあたり4サンプル、0.25は16サンプリング、0.1は1ピクセルあたり100サンプリングのようにサンプルが増えるらしい。

 

下の画像は「シェーディング率」 の比較画像です。シェーディング部分のジャギが改善しているのを確認することができます。

 

リファインメントしきい値 と リファインメントシェーディング率

「シェーディング率」の下には「リファインメントシェーディング率」「リファインメントしきい値」というパラメータがあります。これはレンダリングを最適化するためのパラメータです。「リファインメントしきい値」で設定されたしきい値内のピクセルのみ「リファインメントシェーディング率」で設定された値でサンプリングします。

modoは「シェーディング率」と「リファインメントシェーディング率」で値が低い方の設定を採用するようです。デフォルトでは「シェーディング率」が0.5、「リファインメントシェーディング率」が1.0に設定されているため、「リファインメントシェーディング率」が使用されることはないようです。通常は「シェーディング率」だけ設定しておけば問題ないと思います。

「リファインメントしきい値」の動作が気になたのでアニメーションしてみました。
色の差が大きいピクセルから徐々に滑らかになるのが確認できます。有効に動作しそうなのは50%以下で、0%になると全てのピクセルがサンプリングされるためテクスチャがぼけたように見えます。

左はテクスチャのみ、右はテクスチャとバンプです。バンプを使用するとシェーディングでチラツキが発生しやすくなります。

 

UV確認用のテクスチャ、テクスチャの模様が滑らかに変化するのが確認できます。AEにいれてコマ送りでみると変化がよくわかると思います。

 

反射サンプル と シェーディング率

「ブラー反射」を使用した場合にノイズが軽減するかテストしてみました。シェーディング率を下げるとノイズが少しぼけますが、ノイズそのものへの影響が少ないことが確認できます。反射やGIのノイズを軽減したい場合は、サンプル数を増やした方がよいです。

反射サンプル:64、シェーディング率:0.5

 

反射サンプル:64、シェーディング率:0.1

 

反射サンプル:1024、シェーディング率:0.5

 

反射サンプル:1024、シェーディング率:0.1

 

「シェーディング率」はRender設定の他に、Shaderにもパラメータが存在します。

Renderのシェーディング率はシーン内の全てのマテリアルに影響しますが、Shaderは特定のマテリアルだけシェーディング率を上げることができます。
modoはRender設定とShaderのうち値が低い方のシェーディング率を採用するようです。またShaderはサンプリングのグループを結合する役目があるようです(後述)。アニメーションなどでレンダリング時間を最適化したい場合は、Shader単位で設定が変えられるのが便利ですね。

 

Shaded AA Samples Output

modoのレンダー出力には、アンチエイリアシングとシェーディング率のサンプリングを確認するための出力「Shaded AA Samples Output」があります。Shaded AA Samples Outputはピクセルのサンプリングの割合を視覚化した物で、1回のサンプリングで終了しているピクセルは青、設定の上限までサンプリングされたピクセルが赤で表示されます。適切なサンプリングが行われてるか確認するのに役立ちます。シェーディング率を0.1にすると全てのピクセルが赤になります。

以下の画像はシェーディング率0.5で、アンチエイリアシングの設定を上げた場合のShaded AA Samples Outputです。アンチエイリアシングを上げると青になるのはピクセルあたりのサンプリング数が増えるため、サンプリングの上限に達する前に計算が打ち切られてるってことかな?このことからアンチエイリアシングを上げた場合はシェーディング率を0.1で固定するよりは、シェーディング率を0.25とか適度に設定した方が効率的にレンダリングできるのかもしれない。

アンチエイリアシング : 8サンプル/ピクセル

アンチエイリアシング : 16サンプル/ピクセル

アンチエイリアシング : 32サンプル/ピクセル

アンチエイリアシング : 64サンプル/ピクセル

色がブロックのようにまとまってるのは、シェーディング部分の効率化による物です。サーフェース上のサンプリングが近い場合、グループとして結合することでシェディングの計算を効率化しているとのことです。

このサンプリングのグループ化は、Shaderのシェーディング率の値によって許容量が決定されるらしい。シェーディング率が1.0の場合、ピクセル内のすべてのサンプルが1つのグループとしてシェーディングけされる可能性がある。

 

 

modoのデフォルトのレンダリング設定は、速さを優先しているように思います。最終レンダリング時には「シェーディング率」は0.1のように低い値に設定するのがお勧めです。「シェーディング率」を下げてモアレやチラツキが酷いときに、はじめてアンチエイリアシングのサンプル数を上げるのがよいのではないでしょうか。

MentalRayやArnoldのようなプロダクション向けのレンダラーは、デフォルトでシェーディング部分をある程度サンプリングする設定になってます。そのため、はじめてレンダリングしたときはレンダリングの遅さが気になったりします。

ちなみにMaxでは「スーパーサンプリング」を使用するすことでシェーディング部分のジャギを消すことができます。

 

参考

https://community.foundry.com/discuss/post/339862
https://community.foundry.com/discuss/post/808199

Tips

modoのファーマテリアルとガイド

modoのファーガイドについて書いてみます。セグメント数の少ないガイドを使用する場合は「ポリライン」より「カーブ」を使用した方がいいんじゃないかという話しです。

 

ファーマテリアルとガイド

modoにはファーやヘアーを表現するためのFur Materialがあります。Fur Materialで髪の毛や長い草のような形状を指定する場合や、アニメーションしたい場合は「ガイド」を使用します。
ガイドとして使用できるのは「カーブ」と「ポリライン」の2種類です。現在はヘアーツールの「ガイドを生成」で生成されるのは「ポリライン」ですが、701以前のバージョンでは「カーブ」が生成されていました。ガイドを多く生成した場合に「カーブ」より「ポリライン」の方がパフォーマンスがよいとのことで仕様が変更されました。

 

ですがタイムラプス表現で使用したように「ダイナミックカーブ」で草を揺らす場合は、ガイドの「セグメント数」が多いと物理計算の負荷が上がります。アニメーションを前提とした場合も「セグメント数」が少ない方が制御しやすいと思います。
そこで少ないセグメント数のガイドを使用したとき、「カーブ」と「ポリライン」でどんな違いが出るかテストしてみました。

 

ガイドと最大セグメントの数

下の画像では緑の線が「ガイド」です。左から順に「セグメント数が20のポリライン」「セグメント数が5のポリライン」「セグメント数が5のカーブ」です。赤の線はファーのプレビューです。パースの関係でガイドの形状が違うように見えますが、全部同じ形状です。

 

ファーをガイドの形状にそわせるには「最大セグメント数」が関わってきます。「最大セグメント数」はファーの長さの分割数で、値が大きいほどなめらかに曲がったファーになります。

 

最大セグメント数:5

 

最大セグメント数:10

 

最大セグメント数:50

 

最大セグメント数:100

 

最大セグメント数:1000

 

レンダリング結果を見ると一目瞭然ですね。ガイドのセグメント数が5のように少ない場合は、ポリラインよりカーブを使用した方がなめらかに曲がります。ポリラインをガイドに使用する場合は、なめらかに曲がる程度のセグメント数が必要です。ファーのガイドをアニメーションさせたい場合は、カーブを使ったほうが良好な結果が得られそうです。またカーブを使用した方がガイドの先端までファーが伸びているのが確認できます。

「最大セグメント数」は値が小さすぎるとカクカクした形状になりガイドから離れてしまいます。値が1000のように大きい場合はガイドに近い曲がり方になりますが、ポリラインを使用した方はセグメント数が20程度だと、ガイドのカクカクした感じがレンダリングにあらわれてしまいます。

「最大セグメント数」の値が大きければよいかというとそうでもなく、「成長ジッター」に値が入っている場合はシェーディングがデコボコすることがります。以下の画像は「最大セグメント数」1000で「成長ジッター」25%(デフォルト)のレンダリング画像です。成長ジッターの影響でセグメントの長さが重なってるのか?バンプを設定したようになりました。髪のように綺麗なスペッキュラが欲しい場合には、このあたりの設定に注意が必要だと思います。

ファーの長さにもよりますが「最大セグメント数」は10~50くらいが実用的かもしれません。ちなみにカーブの作り方は、ポリラインでガイドを生成してから、エッジモードでポリラインを選択して「エッジからカーブ」を実行しました。

 

ガイドオプション

Fur Material でガイドを使用する場合はガイドオプションで「ガイド」の適用方法を指定します。ガイドをアニメーションしたときに、GLでの動きとレンダリングが違うのが気になったので検証してみました。

 

クランプ

クランプは「クランプ量」が設定されてるときファーがガイドに集まるようになります。

クランプはGLとレンダリング結果が変わります。画像の左がポリライン、右がカーブです。ガイドのセグメント数は3ポイントです。ポリラインはカーブに比べてファーの長さが短くなるようです。先端の集まり方も極端ですね。

 

方向

GLとレンダリング結果が一致してます。

 

方向 + 長さ

GLとレンダリング結果が一致してます。

 

シェイプ

GLとレンダリング結果が変わります。赤のガイドは意図した通りにアニメーションしていますが、緑のファーがカクカクしてます。マニュアルによると「シェイプ」は近くの3本のガイドを補間する処理で、ロングヘアーには向いていないとのことです。GLではガイドの補間が処理されないため、ファーの位置が飛んで見えるのかもしれません。

 

範囲

GLとレンダリング結果が変わります。下の画像ではファーが表示されてませんが、「範囲」はポリゴン数が少ないとファーが表示されないようです。ポリゴンを細分化すると表示されるようになります。
またGLとレンダリングでファーの長さが違います。マニュアルにはヘアーの長さはガイドの長さで決まる。ロングヘアーに向いてると書いてます。ガイドが密集してる場所はガイドの長さに近づき、ガイドの外側はファーが短くなる処理されるようです。その範囲の処理がGLに反映されないので、GLとレンダリングが違って見えます。また左のポリラインを使用したレンダリングは、ファーの長さがガイドより短いようです。ポリラインに「範囲」を使用すると、先端が考慮されないのかもしれません。

 

ファーのGL表示は極端な動きに見えることがわかりました。しかしレンダリングでは極端な動きが発生しないことが確認できました。プレビューなのでレンダリングと異なるのは理解していましたが、思ったより違う印象ですね。

ちなみに、ガイドのアニメーションはLinear FalloffのテクスチャロケータにRippleを設定しています。

 

 

次回はファーマテリアルを使用した時のレンダリング設定について書いてみたいと思います。

Tips

modoのセットアップ/静止値の使い方

リギングでの「セットアップ/静止値」の使い方について書いてみます。
modoのセットアップモードには、セットアップモード専用の値として「セットアップ/静止値」があります。スケルトンに位置コンストレインなどを提供してリグを構築する場合は、セットアップモードでチャンネルを右クリックして「セットアップ/静止値に適用」することで、セットアップモード内に値を設定することができます。

■ サンプルファイル

 

セットアップモードの記事で書いた通り、バインドしたスケルトンのトランスフォームには自動的に「セットアップ/静止値」が設定されます。

もし手動でリグを構築しているときに、シーンの編集がセットアップモードに影響をあたえてしまう場合は、「セットアップ/静止値」を明示的に適用してあげるといいと思います。

 

キャラクターリグ用のプラグイン、CharacterBoxではセットアップモードONとOFFでトランスフォームの値が変わります。このためトランスフォームチャンネルに直接チャンネルをリンクするとセットアップモード内の値を上書きしてします。

こういうリグには条件式の「A は B と等しい」を使用するとよいです。「値 A」のチャンネルに「セットアップ/静止値」として1を設定し、セットアップモード OFFのとき 0 に設定します。
以下の画像は足の角度でスカートを自動的にアニメーションさせるためのリグをテストしたものです。

■ サンプルファイル

 
尾リグはプライマリ トランスフォームの値を使用して遅延したアニメーションを実行します。プライマリ トランスフォームのチャンネルを直接書き換えるとセットアップモードの値に影響をあたえてしまうので、条件式を使用してセットアップモードを判断してます。
条件式の「A は B と等しい」を使用することで、セットアップモード ONのときは「出力 True 値」としてスケルトンの「セットアップ/静止値」が出力され、セットアップモード OFFのときは「出力 False 値」として Relationship の値を出力するようにしてます。

 

再利用可能なリグを作る場合はシーンでの編集がセットアップモードの位置に影響をあたえないように、トランスフォームに「セットアップ/静止値」を設定しておくといいような気がします。

Tips

modoで重心制御リグ

modoで重心を制御するリグの作り方について書いてみたいと思います。両足の位置から、自動的に腰の位置を移動してくれるリグです。

■ サンプルファイル

 

スケマティックはこんな感じで、処理自体は単純です。

両脚のIKゴールの「ワールド位置」を Matrix Blend にリンクします。Matrix Blend はその名の通りマトリクスをブレンドするノードです。「ブレンド」を50%にするとIKゴールの中間の位置を出力することができます。

Matrix Blend の「マトリクス出力」を Matrix Vector にリンクして、マトリクスを「移動」の XYZ軸に分解します。分解した「出力 X」と「出力 Z」はそのまま腰のスケルトンの「位置X」「位置Z」にリンクします。これでIKゴールを移動したときに、腰の位置は2つのIKゴールの中間に位置するようになります。

腰のプライマリのトランスフォーム「位置X」「位置 Z」に直接リンクすると、移動ツールで自由に腰の位置を調整できなくなりアニメーションの作成で不便です。そこで腰のスケルトンにトランスフォームアイテムを追加して、追加したトランスフォームを制御用に使用します。 画像だと「CenterControlTransform」が追加したトランスフォームアイテムです。

腰のY軸を制御するために Measure Distance を使用します。 Measure Distance はその名の通り距離測定ノードで、IKゴール間の距離を出力できます。IKゴール間の距離が離れた場合に腰の位置を下げたいので Measure Distance ノードを使用しました。
Measure Distance の「距離出力」と Matrix Vector の 「出力 Y」を Relationship を使用して値を調整します。2つの Relationship を足した値を腰の「位置 Y」にリンクします。

2点間であれば Matrix Blend は便利ですね。値を足したり割ったりしなくてよいのでスケマティックが単純です。

 

このリグで雑に歩行サイクルをつけてみました。IKゴールに1サイクルのキーを設定して、カーブの繰り返しで前進しています。画像のように腰の位置をつねに中間にすると機械的で不自然な動きになります。Matrix Blend のブレンド チャンネルを使用して腰の位置を細かに制御を加えてみると面白いかもしれません。あとは骨盤の回転やタイミングのズレを再現とかでしょうか。

最終的には手動で調節するとして、アニメーションの補助として組み込んでみると面白いかも知れません。

 

この重心制御は Project:Messiah のサンプルファイルに入っていたT-Rexが元ネタです。リギングという言葉が一般化する少し前の時代、自動制御されたキャラクターセットアップに衝撃を受けました。現在ではFullBodyIKのように自動制御で動くとポーズ設定しづらいのであまり好まれないのかも知れませんが、リグの研究としては面白いジャンルだと思います。

T-Rexでは腰の位置の制御の他に、ゴールの高さで足が自動で回転するエクスプレッションが書かれてました。懐かしい。