概要と目的

今回は、GeoMaskノードの使い方を手短に紹介します。GeoMaskノードを使うことで、ジオメトリを変更するあらゆる処理に、ソフトセレクション(頂点ごとのウェイト制御)を適用できるようになります。
では、このGeoMaskノードはどのように機能するのでしょうか。GeoMaskノードは任意のジオメトリに接続でき、ソフトセレクションによって、そのジオメトリを変形可能にするノードです。マスクは最大4種類(A・B・C・D)まで使用でき、それぞれ編集対象のマスクをUI上で選択できます。また、マスク表示用のアイコンをクリックすると、ビューポート上でマスクを可視化できます。さらに、そのアイコンをもう一度クリックして、A・B・C・Dのうち、どのマスクを表示するかを切り替えることも可能です。

マスクの合成モード

GeoMaskノードでは、マスク値に対する合成モードを選択できます。新しい値で既存のマスクを置き換える(上書きする)こともできますし、既存のマスク値とブレンドすることも可能です。また、マスク値を合成する演算モードとして、次のような種類があります:
  • Set(置き換え): 既存のマスク値を無視して、新しい値で上書きする。
  • Blend(ブレンド): 新しい値と既存のマスク値を混合して、中間的な値を適用する。
  • Add(加算): 既存のマスク値に、新しい値を加算する。
  • Sub(減算): 既存のマスク値から、新しい値を減算する。
  • Multiply(乗算): 既存のマスク値に、新しい値を乗算する。
  • Max: 既存値と新しい値のうち、大きい方の値を使用する。
  • Min: 既存値と新しい値のうち、小さい方の値を使用する。

マスクの生成方法

では、マスク値はどのように生成・変更できるのでしょうか。GeoMaskノードには、いくつかのマスク生成方法が用意されています。主な方法を順に紹介します。

定数(Direct Value)
定数(Direct Value)方式では、全ての頂点に同じマスク値を設定します。このモードでは、頂点単位で一律のウェイトが適用されます。ただし、カーブ(曲線)を設定することで、頂点ごとのウェイト分布に変化をつけることが可能です。例えば、「Direct Amount(直接値の強さ)」というパラメータを調整すると、そのカーブに基づいてマスク値の分布を変えることができます。
IDベース
IDベース方式では、各頂点のインデックス番号(ID)に基づいて、マスク値を生成します。頂点の番号順によって、規則的に変化するマスクを作ることができます。
ノイズベース
ノイズベース方式では、ノイズ関数によって、各頂点にランダム、または連続的なパターンのマスク値を与えます。デフォルトでは、完全にランダムなホワイトノイズが使用され、各頂点に異なる値が割り当てられます。シード(Seed)値を変えることで、乱数パターンを変更でき、フェーズ(Phase)パラメータを動かすと、ノイズを時間的に滑らかに変化させて、アニメーションさせることも可能です。フェーズが0%と100%のときに同じパターンとなるため、ノイズをループさせることができます。
また、空間的につながりのある連続ノイズであるコヒーレントノイズを使うこともできます。コヒーレントノイズでも、フェーズを調整すれば滑らかにアニメーションが可能です。スケールを変えて、ノイズの細かさ(周波数)を調整したり、ラフネス(粗さ)やオクターブ数を設定して、ノイズの特性を変えることもできます。さらに、ノイズの位置(※3Dノイズです)や回転も変更可能です。出力されたマスク値は、リマップ用のカーブで再加工でき、コントラストを強めて、ウェイトの強弱をはっきりさせることもできます。また、マスク値の出力範囲(Mask Range)自体も、直接調整可能です。
UVベース
UVベース方式では、オブジェクトのテクスチャ座標(UV)に基づいて、マスク値を生成します。使用するUVセット(例: UV0, UV1, UV2…)を選択でき、そのUV座標の値によって、マスク値が決定されます。主なオプションは次の通りです。
  • UVセット選択: マスク計算に使うテクスチャ座標セット(UV0、UV1、UV2、UV3など)を指定します。
  • ポイントUVの使用: 頂点のUVではなく、ポイントのUV(各頂点に対応するポイントのUV値)を使用することも可能です。
  • U/V成分の指定: UV座標のU成分のみ、またはV成分のみを、マスク計算に使用することもできます。
  • 範囲外の挙動: UV値が0~1の範囲外にある場合の挙動を指定できます(繰り返し/ミラー/クランプ など)。
  • フェーズ: マスクパターンを平行移動させるオフセット値です。値を変化させることで、マスクパターンをアニメーションさせることができます。
  • リピート: マスクパターンの繰り返し回数を指定します(パターンをタイル状に繰り返す)。
こうした設定を組み合わせることで、短時間で非常に面白い形状変化を作り出せます。例えば、UVベースのマスクをオブジェクト全体のスケーリングに適用するだけで、独特な変形結果が得られます。また、マスクに使用するカーブ(ウェイト分布)を調整すれば、結果をより滑らかにすることも可能です。設定次第で、このUVマスクから、多種多様で興味深い形状を簡単に生み出すことができます。
位置(Position)ベース
位置(Position)ベース方式では、各頂点の空間上の位置に基づいて、マスク値を付与します。特定の軸方向に沿って、グラデーション状のマスクを作成でき(初期状態ではZ軸=青軸が基準)、頂点の位置によって、ウェイトが変化します。位置ベースモードの主なオプションは次の通りです:
  • 軸方向と範囲: マスクの重み付けを適用する方向軸を指定します(デフォルトはZ軸)。その軸に沿ってウェイトが変化する範囲(レンジ)の長さも設定できます(初期値は100ユニット)。範囲を小さくすると、グラデーションの幅が狭まり、より急な勾配になります。
  • 中心位置: グラデーションの中心となる位置を指定できます。デフォルトでは、グラデーションの半分が原点より上側、もう半分が下側にかかるような設定です。中心位置を0にすると、グラデーションが全て0より上側だけ、または全て0より下側だけに現れるように調整できます。
  • オリエンテーション(方向): マスクを適用する軸方向を変更可能です。例えばX軸やY軸に変更すれば、その軸方向に沿ったグラデーションで頂点を選択できます。
  • 繰り返し: マスクパターンを指定回数だけ繰り返す設定です。ウェイトが軸に沿って周期的に変化するようなパターンの場合、繰り返しを有効にすると、そのパターンを連続タイル状に配置できます(設定内容によって有効性は異なります)。
範囲外の挙動
範囲外の挙動: 指定範囲を超えた位置でのマスク値の扱いを設定します。選択肢は以下の通りです:
  • Repeat(リピート): グラデーションパターンをそのまま繰り返し続ける。
  • Mirror(ミラー): グラデーションパターンを反転しながら繰り返す(ランプが折り返し対称に連続する)。
  • Clamp(クランプ): 範囲外ではマスク値を最小値/最大値で固定する(はみ出し部分を頭打ちにする)。
以上、Z軸方向を例に、位置ベースモードのオプションを説明しましたが、軸を変更すれば、他の方向でも同様の制御が可能です。
角度(Angle)ベース
角度(Angle)ベース方式では、指定した中心点の周囲の角度位置によって、マスク値を設定します。例えば、Z軸を軸とした回転角度に基づいて、頂点のマスク値を決めることができます。ある点を中心に、各頂点がどの方向(角度)に位置するかによって、ウェイトが割り当てられるイメージです。このモードでも、繰り返しやリマップカーブなど、他のモードと同様のオプションが利用できます。
距離(Distance)ベース
距離(Distance)ベース方式では、指定した一点(ギズモ)の位置からの距離によって、マスク値を設定します。ギズモに近い位置にある頂点ほど、ランプ(グラデーション)の片側の値(例えば高い値)が適用され、遠い位置ほど、ランプの反対側の値(低い値)が適用されます。マスクの影響が及ぶ距離範囲を自由に調整でき、必要に応じて、マスク勾配を反転(近いほど低い値、遠いほど高い値にする等)させることも可能です。
法線(Normal)ベース
法線(Normal)ベース方式では、ポリゴンやポイントの法線の向きに基づいて、マスク値を設定します。例えば、ある基準方向(デフォルトではZ軸)と各頂点法線との角度(ドット積の値)によって、ウェイトを決定することが可能です。Z軸方向を正面に向いている面ほど、ウェイトが高く(明るく選択され)、反対方向を向いている面ほど、ウェイトが低く(暗く選択)なります。もちろん、基準とする方向は任意の軸に設定可能です。

法線ベースを使えば、例えば、上向きの面だけを選択するといったマスクも簡単に作れます。また、「Look-at」(注視角)モードを利用すれば、任意の一点(ギズモ)に向いている方向かどうかで、選択を行うこともできます。ギズモの方向を向いている面には、高いマスク値が割り当てられ、それ以外の面は低い値になります。さらに必要に応じて、選択を反転することも可能です。たとえば、Look-atモードで、ギズモを向いている部分ではなく、背を向けている部分を強調する、といった使い方もできます。

法線モードでは、マスク計算に使用する法線の種類も選択できます。頂点法線に基づくか、各頂点そのものの方向(ポイントの向き)を使用するかを切り替えることが可能です。ポリゴンが無い点群オブジェクトの場合は、ポイントの向きを使用できますし、オブジェクトにピボット(基準軸)が設定されている場合は、そのピボットの向きを基準にすることもできます。

マスクの利用例と応用

マスク値の活用例
ここまで作成・設定してきたマスク値は、他のジオメトリ変形ノードで活用できます。例えば、オブジェクトを移動させる GeoTransformノード で、マスクAを適用してみましょう。通常であれば、全ての頂点が一律に移動しますが、マスクを適用すると、マスク値に応じて頂点の移動量が変化します。マスク値が高い(明るい)頂点ほど大きく移動し、値が低い(暗い)頂点ほど、わずかしか動きません。マスク値が0の頂点は、まったく移動しなくなります。

このように、マスクは移動だけでなく、スケーリングや回転など、あらゆる変形に適用できます。非常に便利な機能で、例えば、メッシュに色を付ける GeoColorノード など、変形以外の用途にもマスクを利用できます。

さらに、GeoMaskで設定したマスクは、他の様々なノードに対しても同様に機能します。例えば、GeoDisplaceノード でオブジェクトの形状を変位させる場合にも、マスクを適用可能です。GeoDisplaceでは、入力テクスチャが無くても変位量の範囲を直接指定できますが、そこにマスクを組み合わせることで、一様変形とは異なる、より複雑で興味深い形状を生み出すことができます。

操作上のポイントと設定例

マスクのリマップと組み合わせ活用
GeoMaskでは、作成したマスク値を後段のノードで再リマップすることも可能です。つまり、一つのマスクを用意しておけば、各ノードで、そのマスク値に対して別々の補正カーブ(リマッピング)を適用して利用できるということです。

また、オプションが非常に豊富なので、複数のマスクを組み合わせることもできます。極端な例では、GeoMaskノード自体に別のマスクを適用して制御することさえ可能です。UI上で、どのマスクを利用するか選択できるので、例えば、マスクBの値に基づいてマスクAを生成するといった、入れ子状のマスク設定も行えます。

総括と拡張性

以上、GeoMaskノードで実現できる機能の全体像を紹介しました。応用の幅は非常に広く、将来的にはさらなる発展も期待できるでしょう。しかし、現時点でもジオメトリに対して非常に高度なコントロールが可能です。ぜひ、この機能を楽しんで活用してみてください。