22
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Houdini ApprenticeAdvent Calendar 2020

Day 3

君はお隣さん?一番近い点?それとも座標?

Posted at

Houdini Apperentice Advent Calenderの三日目の記事になります。
10日の時点で三日目の枠が埋まっていなかったので急遽書くことにしました。

今回は近傍系のVEX関数についてです

SideFXの公式のヘルプによると近傍系のVEX関数は全部でこれだけあります。
image.png
それぞれ引数や返り値が座標であったりPoint番号であったり、使用条件が接続、非接続など異なっていたりします。
動作は関数名から推して知るべしではあるのですが急いでいたりド忘れしたり英語の細かいニュアンスが分からなかったり
そんな人の為に挙動をまとめている一覧があっても良いのかなということで書いていきます。

nearpoint系

nearpointnearpoints の2つでこれらは単純に距離で判定し接続されていなくても動作します。

VEX関数名 挙動
nearpoint 指定された座標から一番近い点の番号を返す
nearpoints 指定された座標から一番近い点から順に指定された半径と個数の範囲内で番号の配列を返す
nearpointのイメージ
image.png
nearpointsのイメージ
image.png

image.png

neighbour系

neighbourneibours、**neighbourcount**の3つです。
接続された隣接点を探して返します。メッシュやポリラインで動作しますが離散的な点群では動作しません。
隣接していないと-1を返します。

VEX関数名 挙動
neighbour 指定された頂点番号から n+1番目に近い点の頂点番号を返す
neighbours 指定された頂点番号の全てのお隣さんの頂点番号の配列を返す
neighbourcount 指定された頂点番号のお隣さんの数を返す
neighbourのイメージ
neighbour.gif
neighboursのイメージ
image.png
neighbourcountのイメージ
image.png

minpos

**minpos**は座標とメッシュを指定すると座標とメッシュ上の一番近い座標を返します。
引数で範囲、prim groupなどを追加指定する事も出来ます。
image.png

xyzdist

distの名の通り xyzdist は距離を返します。
minposと使い方は似ているのですが追加の&prim&uvなどの引数を指定するとメッシュ上のプリミティブ番号や
パラメトリックUV(通常のUV値とは異なりジオメトリが持っている一意なUV)の値も参照渡しの様な形で取得出来ます。
**primuv**関数にパラメトリックUVを渡すことでアトリビュートを取得する事が出来ます。
他の関数とは違い多機能な関数です。
image.png

polyneighbours

polyneighbours は指定したプリミティブのエッジが隣り合うプリミティブの配列を返します。
polyneighboursのイメージ
image.png

surfacedist

surfacedist はポイントからのエッジやサーフェスに沿った距離を返すH17で追加された関数です。
同時H17にsurfacedist関数が内部で使用されていた**FallOff**というSOPも作られたのですがH18になって廃止され今では
**Distance Along Geometryという名前に変わっています。
挙動としては
Edge TransportFind Shortest Path**といったノードに近いです。
エッジ距離をポイントアトリビュートに保存した例
image.png
サーフェース距離をポイントアトリビュートに保存した例
image.png

ptlined

ptlined は指定された2点を結ぶ線と3つ目の引数に指定された座標との最短距離を返します。
ptlined(P0,P1,Q)の挙動は図にするとこんな感じです。
image.png

まとめ

私もいくつか知らないものがあったので学習も兼ねて見ていきました。
(※ポイントクラウド系とtet_adjacentは時間の都合上割愛させて頂きます。)
思いついたアルゴリズムやアイデアを実現する為の強力で高速なVEX関数群が用意されているのもHoudiniの強みですね。
それらを活かして快適に作業を進めていきましょう。

配布物

単なる関数の紹介なので必要かどうか分かりませんが今回お話した内容のhipはここにあります。

22
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?