Open10

Houdini入門中のメモ

yuji_miyanoyuji_miyano

決められた平面にランダムにプロットするにはgridとscatterを組み合わせる

yuji_miyanoyuji_miyano

任意の場所にオブジェクト(Sphere)を置く場合はSphereとAddをCopy to Pointsに入力する。

AddのNumber of Pointsにx, y, z座標を入力すると、その座標がSphereに適用される

CONTROLLERと名付けたNullに作ったパラメータと連動させることでCONTROLLERから位置を移動させることができる

yuji_miyanoyuji_miyano

Rayでオブジェクトと各地点の法線を得るには
Method : Minimum Distanceに変更
Transform Pointsのチェックを外す
Point Intersection Normalのチェックを入れる


yuji_miyanoyuji_miyano

Attribute Wrangleノードを使う。

まずはSphereの位置情報を取得する。
point関数を使うらしい

vector target = point(1, "P", 0);

1つ目の引数は何番目の入力かを示す。0から始まるので1は2番目の入力
2つ目の引数は読み込むアトリビュート、今回は位置情報なので@Pを使う
3つ目の引数は?

yuji_miyanoyuji_miyano

取得したSphereの位置情報をそのままBoxの法線情報に入れてみる

vector target = point(1, "P", 0);
@N = target;

Sphereの位置を変えるとBoxの傾きが変わる

yuji_miyanoyuji_miyano

Boxの位置は@Pで取得できる?ので先程取得したSphereのベクトルからBoxのベクトルを引くと、BoxからSphereに向かう方向のベクトルが計算できる。

疑問:@Pでボックスの位置が取得できるのはBoxが第一引数だから?

vector target = point(1, "P", 0);
vector dir = target - @P; 
@N = dir;

yuji_miyanoyuji_miyano

あとはy方向を0にしてノーマライズすれば(法線情報なので?)解答になる。

vector target = point(1, "P", 0);
vector dir = target - @P; 
dir.x = 0;
dir = normalize(dir);
@N = dir;

x方向を0にするとこんな感じ。

yuji_miyanoyuji_miyano

「02. オブジェクトをコンター割りする」をやってみる。
これも答えを見ないとさっぱり分からんので、答えのブロックを見ながら1つずつ理解していくスタイルで進める。

yuji_miyanoyuji_miyano

TorusにBoundを接続してみた。

トーラスの周りを囲むようにバウンディングボックスが出る。