Geodesic(測地線距離)モディファイヤを用いたウェイトの設定方法
https://www.youtube.com/watch?v=yH0JvRtQzmI
Modoバージョン15.2では、曲面上にある2点を最短で結んだ曲線を表す測地線の距離によってウェイトマップを構成することができるGeodesic Distance Modifierが追加されました。今回は、このGeodesic Distance Modifierを使った設定方法を見ていきます。
サンプルシーンには、ドーナッツ型のシンプルなプリミティブが用意されています。このプリミティブに対し、Geodesicモディファイヤを追加します。オペレーションリストのオペレータ追加 > 頂点マップ > Geodesic Weightを追加します。このGeodesic Weightをスケマティックビューへと追加し、入力部分を見てみると、入力配列という配列の形でデータを受け取るようになっています。配列の形で受け取れるのは、様々なポイントの位置や法線だったりします。今回の場合、測地線のモディファイヤということなので、配列で渡したポイントと、メッシュ上とを結ぶ最短ラインに対して、ウェイトが設定されると考えられます。
では配列に関するモディファイヤの種類を見てみましょう。スケマティックビューの追加 > Arrayのカテゴリの中には、配列に関する様々なモディファイヤが用意されています。Curves to Arrayはカーブ上のサンプルポイントの位置を配列に、Locators to Arrayはロケータの位置を配列に、またMesh Data Arrayはメッシュ情報を配列に格納してくれるモディファイヤです。今回はLocators to Arrayを使ってみましょう。こちらはロケータの位置を取得するものなので、シーンにロケータを一個追加し、ロケータをLocators to Arrayに接続したら、その出力をGeodesic Weightの入力配列へと接続してみます。そうするとこのロケータの位置によって、ウェイトが変化していくのが確認できます。
ウェイトの変化具合をよりカスタマイズしたい場合には、追加 > Mesh Operations > 頂点マップ > Remap Weightを使うと良いでしょう。このモディファイヤは接続されているウェイトの値を、編集するためのモディファイヤです。この二つのノードはウェイトマップの名称で接続する必要がありますが、ノードにはマップ名称の項目が用意されていませんので、自分で追加する必要があります。その場合には、プロパティからノードに追加したいプロパティのラベルをクリックし、ノード上へとドラッグすると良いでしょう。もしくはノードを選択し、右クリックからチャンネルの追加をクリックすると、ノードに追加されていないプロパティがリストされていますので、そこからマップ名称を追加しても構いません。双方のノードに対してマップ名称のプロパティを追加したら、それらを接続します。そうするとRemap Weightのリマップ値のグラディエントで、より表現したいウェイトを設定できるようになります。
このLocators to Arrayに接続するロケータは一つだけに限られてはいません。ですので、さらに複数のロケータを追加し、そちらもLocators to Arrayへと接続することが可能です。ロケータはシーン内のアイテムですので、自由にアニメーションさせることができますし、他のアイテムと連動させることも可能です。
このようにしてウェイトを設定できるようになりますが、さらにGeodesic Modifierを利用したパーティクルによるウェイト設定を見ていきましょう。
まずは細かくセグメントが切られた板ポリゴンを作ります。あとでセグメント数が変えられるようにプロシージャルモデリングで作っておくと便利です。オペレータ追加 > ポリゴン > Set Polygon Typeから面をサブディビジョンへと変更しておきます。この板ポリゴンにパーティクルで模様を作りたいので、簡単にパーティクルを用意します。
セットアップツールバー > パーティクル > ラディアルエミッターを追加します。高い位置からパーティクルが放出され落下するように、Particle Simulationで重力使用のオプションをオンにし、Radial Emitterの初期速度の値は0にしておきましょう。シミュレーション結果をキャッシュしたら、このパーティクルでGeodesicウェイトを作ります。
板ポリゴンのメッシュに対して、オペレータ追加 > 頂点マップ > Geodesic Weightを追加し、スケマティックビューへとノードを追加します。パーティクルのデータを持ってきたいので、スケマティックビューの追加 > Array > Particles to Arrayを追加します。アイテムノードからParticle Simulationをスケマティックビューへと追加したら、Particle SimulationをParticles to Arrayのパーティクルソースへと接続し、その配列をGeodesic Weightの入力配列へと接続します。アニメーションを再生してみると、パーティクルの動きに合わせて、模様がアニメーションしているのが確認できます。
あとは追加 > Mesh Operations > 頂点マップ > Remap Weightを追加して、ウェイトをより際立たせるように強調します。もしセグメントの数が十分ではなく、ウェイトがかくついているようであれば、同じく頂点マップカテゴリにあるSmooth WeightをRemap Weightで調整する前にかけることで、よりウェイトを滑らかに設定することができます。
このようにしてウェイトが作成できたら、これをもとにジオメトリの変形やマテリアルの設定が行えます。例えば、メッシュに対してオペレータ追加 > ポリゴン > Polygon Bevelを追加し、グループ化オプションをオフの状態で、シフトの値を調整し、押し出してみます。デフォルトではすべてのポリゴンが押し出されますので、Polygon Bevelを展開し、Selection > Selectionを追加からSelect By Falloffを追加し、さらにそれも展開してフォールオフ > フォールオフを追加からWeight Map Falloffを追加して、ウェイトマップにGeodesicのウェイトマップを設定すると、Geodesicウェイトに合わせてベベルが適用場所をアニメーションさせることができます。
さらにマテリアルも同時に調整しましょう。シェーダツリーへと移り、Base Materialをピンク色に設定した後、レイヤー追加 > 処理 > Constantを追加します。このテクスチャは一つの値もしくは単色を設定するだけのテクスチャですので、これを赤に設定しておきます。この状態でGeodesicウェイトをマスクとして利用したいので、レイヤー追加 > 処理 > Vertex Map Textureを追加し、これをConstantテクスチャの上へとドラッグアンドドロップすることで、エフェクトをレイヤーマスクへと変更します。こうするとConstantとBase MaterialがGeodesicウェイトによって切り替えられるようになります。この色のかかり具合などについては、Vertex Map Textureのゲインの値などで、調整が可能です。
このようにGeodesic Modifierはウェイトマップとして情報を持たせることで、ジオメトリに対しても、またマテリアルに対しても、その情報を生かした表現が可能になります。