Houdini入門中のメモ
この本を買ってみた
Algorithmic Design Workbook with Houdini アルゴリズミックデザインワークブック(電子書籍版)
決められた平面にランダムにプロットするにはgridとscatterを組み合わせる
任意の場所にオブジェクト(Sphere)を置く場合はSphereとAddをCopy to Pointsに入力する。
AddのNumber of Pointsにx, y, z座標を入力すると、その座標がSphereに適用される
CONTROLLERと名付けたNullに作ったパラメータと連動させることでCONTROLLERから位置を移動させることができる
Rayでオブジェクトと各地点の法線を得るには
Method : Minimum Distanceに変更
Transform Pointsのチェックを外す
Point Intersection Normalのチェックを入れる
Attribute Wrangleノードを使う。
まずはSphereの位置情報を取得する。
point関数を使うらしい
vector target = point(1, "P", 0);
1つ目の引数は何番目の入力かを示す。0から始まるので1
は2番目の入力
2つ目の引数は読み込むアトリビュート、今回は位置情報なので@P
を使う
3つ目の引数は?
取得したSphereの位置情報をそのままBoxの法線情報に入れてみる
vector target = point(1, "P", 0);
@N = target;
Sphereの位置を変えるとBoxの傾きが変わる
Boxの位置は@Pで取得できる?ので先程取得したSphereのベクトルからBoxのベクトルを引くと、BoxからSphereに向かう方向のベクトルが計算できる。
疑問:@Pでボックスの位置が取得できるのはBoxが第一引数だから?
vector target = point(1, "P", 0);
vector dir = target - @P;
@N = dir;
あとはy方向を0にしてノーマライズすれば(法線情報なので?)解答になる。
vector target = point(1, "P", 0);
vector dir = target - @P;
dir.x = 0;
dir = normalize(dir);
@N = dir;
x方向を0にするとこんな感じ。
「02. オブジェクトをコンター割りする」をやってみる。
これも答えを見ないとさっぱり分からんので、答えのブロックを見ながら1つずつ理解していくスタイルで進める。
TorusにBoundを接続してみた。
トーラスの周りを囲むようにバウンディングボックスが出る。