No More Retake

3DCG屋さん向けTips&Referenceサイト

メニュー

Houdini:nearpoint(VEX)

前回に続き、Houdini VEX勉強回。
今回は「近接ポイントの情報を取得する」VEX系の関数についてです。
近接ポイントとはこの場合、単純に距離の近いポイントのことを指します。

近接ポイントを取得するVEX関数は幾つかあります。
ここではnearpoint()とnearpoints()を取り上げようとおもいます。
表記の違いは名前に”s”があるかないか。まぎらわしい。

nearpoint()

一番近いポイント番号を取得する。
”一番近い”だから、取得するポイントは1コ。
最大どこまでの距離を探すか指定する。ポイントが見つからなければ-1。

int nearpoint(検出先の入力, 検索位置, 検索距離)

「作例」
一番近いポイント取得して色と高さをかえてみた。

ネットワークはこうじゃ!

VEXコードはこうじゃ!

vector pos = point(1, "P", 0);
i@npt = nearpoint(0, pos, chf("dist"));

if(@ptnum == @npt){
   @Cd = {0, 0, 1};
   @P += {0, 0.25, 0};
}

次じゃ!

 

nearpoints()

近接ポイントを探して、見つかったポイントを配列で返す。
先述のnearpoint()の配列版。
1番近いポイントに限らず、2番目3番目・・・と見つかった分だけ配列に格納する。
最大で何個のポイントを探すが指定する。

int nearpoints(検出先の入力, 検索位置, 検索距離, 見つけるポイントの最大個数)

「作例」
パーティクルの各点つないでみた。
(同様結果はConnect Adjacent Pieces(SOP)でもできる)

ネットワークはこうじゃ!

VEXコードはこうじゃ!

vector pos = point(0, "P", @ptnum);
i[]@npts = nearpoints(0, pos, chf("dist"), chi("maxpt"));

foreach(int pt; @npts){
    if(pt>@ptnum && pt!=@ptnum){
        int prim = addprim(geoself(), "polyline");
        addvertex(geoself(), prim, @ptnum);
        addvertex(geoself(), prim, pt);
    }
}

以上じゃ!
間違ってたら教えてほしいのじゃ!
鵜呑みにすると危ないじゃ!

これサンプルファイルじゃ!

VEX勉強シリーズはもう少し続くじゃ!


[参考] マニュアル
nearpoint()
http://www.sidefx.com/docs/houdini/vex/functions/nearpoint

nearpoints()
http://www.sidefx.com/docs/houdini/vex/functions/nearpoints

 

関連記事

  1. 2017.08.09

    Houdini:COINS

コメントをお待ちしております

このサイトについて

3DCG Tipsサイト。Houdiniの記事が多めです。

RSS

follow us in feedly

アンケート

ほしい?(複数可)

View Results

Loading ... Loading ...

言語切り替え

  • English (United States)
  • 日本語

Archives

  • 2017 (23)
  • 2016 (36)
  • 2015 (64)
  • 2014 (54)
  • 2013 (60)
  • 2012 (54)

スポンサードリンク