Houdini 18 SOP No.9 “Distance From Target SOP”


~“Distance From Target SOP” Distance編-3~

前回に引き続きHoudini18.0にて新規に追加されたSOPノードの解説を行います。
前回の記事をご覧になられていない方はこちらからご覧ください。

※本記事ではHoudini 18.0.391を使用しています。

 

今回はDistance From Target SOPについて解説していきます。

Distance From Target SOP

このノードは、Houdini 18.0にアップデートされた際に新しく追加されたノードとなります。
このノードの機能は、各ポイントからノード内で設定したターゲットとの最短距離を求めます。ターゲットとはこのノード内のパラメータによって指定される任意の場所にある“もの”(デフォルトでは「Point」)となります。
このノードで設定できるターゲットは「Point」、「Line」、「Plane」の3種類です。
 Pointは、ターゲットの点までの各ポイントからの最短距離の測定
 Lineは、ターゲットの無限に続く線までの各ポイントからの最短距離の測定
 Planeは、ターゲットの無限に続く平面までの各ポイントからの最短距離の計測を行います。

 

では、具体的な使い方を説明していきます。

こちらの機能は、前回までに説明してきた「Distance Along Geometr SOP」「Distance From Geometry SOP」とほとんど同じになります。
異なる部分は距離を計測する対象が、グループやジオメトリでなくターゲットと呼ばれるポイント・ライン・平面となっている点です。

 

ではまず初めにパラメータを確認します。

パラメータは以下のようになります。

基本的なパラメータは、今まで説明してきた「Distance Along Geometr SOP」、「Distance From Geometry SOP」と同じになります。違うポイントは上の画像の赤く囲われているパラメータになります。

ここではまず先ほど説明したターゲットの設定が行えます。

では各パラメータについて簡単に説明していきます。
 Target:距離を測る対象となるターゲットの選択
 Origin:ターゲットの位置の指定
 Direction:ターゲットの回転(法線)の指定
       (ターゲットが「Point」の場合は変更しても変化はありません)
 Distance Metric:ターゲットの距離の測定方法
         (ターゲットが「Plane」の場合のみ有効になります)
となります。

 

では詳しく説明していきます。

今回も前回同様下のようなグリッドを用いて説明していきます。

このグリッドは
 Size:10×10
 Rows:30
 Collums:30
となっています。

このグリッドの左上の端に各ターゲットを配置し、そこからの距離計測していきます。

 

まずは初めにターゲットが「Point」の場合についてです。

こちらが「Point」の際の測定方法ににあります。

このように各ポイントからターゲットに設定したポイントまでの最短距離を測定します。

※分かりやすいようにターゲットを青色にて表示していますが、実際にはこのように表示さ れず、白色のポイントのみが表示されます。

その際のGeometry Spreadsheetは下のようになります。

このような結果を得ることができます。

このGeometry Spreadsheetの“dist”のアトリビュートが、各ポイントからターゲットまでの距離になります。

 

次に「Line」の際の測定方法になります。

このように各ポイントからターゲットとなっているラインまでの最短距離を計測します。
このラインは最初めにも書きましたが、無限に続くラインになるため、視覚的にラインが途切れていたとしても、そのラインの延長線上までの最短距離を計測します。

その際のGeometry Spreadsheetは下のようになります。

このような結果を得ることができます。

また、ターゲットとなるラインが下の画像のような場合には、その下のGeometry Spreadsheetのような結果を得る事ができます。

このような結果を得ることができます。

この結果で得られた“dist”の数値を小さい順にならべたものが下のGeometry Spreadsheetになります。

これを見て分かるように、“dist”の数値にマイナスの値はありません。
「Target」が「Line」だった場合にはラインの位置に関係なく“dist”の値は距離の絶対値で返されます。

 

次に「Plane」の際の測定方法になります。

このように、各ポイントからターゲットとなる面までの最短距離を測定します。
この面はラインと同様に、無限に続く面になるため、視覚的に面が途切れていたとしても、その面をもとに延長された面上までの最短距離を計測します。

その際のGeometry Spreadsheetは下のようになります。

このような結果を得ることができます。

※今回は平面のGridを用いているので結果としてはLineでの距離を測っている場合と同様の 結果になっています。

また、ターゲットとなる面が下の画像のような場合には、その下のGeometry Spreadsheetような結果を得る事ができます。

このような結果を得ることができます。

ここから分かるように“dist”の値に対してマイナスの値が入っています。面までの距離の測定の場合は面の法線方向によって正負の値を持った結果を返すようになっています。
しかし、面までの距離の絶対値を返すように設定することも可能です。

その設定方法を説明します。

変更方法は簡単で「Distance Metric」を変更するだけになります。

下の画像のように「Distance Metric」のプルダウンには2種類の設定があります。

デフォルトでは下の「Signed Distance」になっており、符号付きの距離を返します。その上の「Absolute Distance」に変更することによって距離の絶対値を返すようになります。

「Distance Metric」を「Absolute Distance」に変更した時のGeometry Spreadsheetは下のようになります。

このように“dist”の値が全て整数になったのが分かります。

このように使用する状況によって返す結果を変えることができます。

以上がDistance From Target SOPの説明となります。

 

これまで説明してきた3つの距離を測ることのできるノードである「Distance Along Geometry SOP」、「Distance From Geometry SOP」、「Distance From Target SOP」は、基本的な使い方は同じですが、距離を測る対象・測り方に違いがあります。そのため、状況にあったノードを用いて距離を測ることで、それを用いたマスクの作成などに役立ちます。また、破壊のシミュレーションなどを行う場合、マスクを作ることによってMaterial Fractureなどでマスクが作成された場所を重点的に破壊するといったような事にも応用することができます。

 

こちらの記事のhipファイルが以下のURLからダウンロードできますので興味のある方はご確認ください。
https://www.dropbox.com/sh/i840qq3w8twdr6x/AADA-bW8OtOUbaTOdSqA69Zla?dl=0