鈴カステラみたいなオブジェを作りたいなーと思っていた時に、少し高さがつぶれた球の作り方を模索しました。今日はその作り方をご紹介します。
Algorithmic Design with Houdiniの中のサンプルのプロセスで実現できるコードがありましたのでこちらを参考にコードを書いてみました。
著:堀川淳一郎
¥4,290 (2023/01/02 10:14時点 | Amazon調べ)
![](https://shumatsu.jp/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
ぷにっとした丸の作り方
まずイメージを共有するために、ビフォーアフターを見てみましょう。上の画像のような球を下の画像の良いな球にします。
![](https://shumatsu.jp/wp-content/uploads/2023/01/f4051e210231d14cd5a2a016144fcbee-1024x771.jpg)
![](https://shumatsu.jp/wp-content/uploads/2023/01/a7b7865206bca4704961ec0a2b8e45fe-1024x694.jpg)
イメージとしては全体的に少し膨張させて、Y軸方面を潰していく感じです。
Point Wrangle
各pointをいじっていくためにPoint Wrangleを使用します。早速Point Wrangleのコードを見ていきましょう。
// 全体的に少し拡大をする
float scale = 1.090;
// 0.5 ~ -0.5のy座標に対して、マイナス方向に0が入るようにfit関数で変数valを作る
float val = fit(@P.y, 0, 1.0, 0, 1.0);
// 変数valをもとに、scaleで使う変数angleを作る。ここを調整することでつぶれ具合を調整できる
float angle = fit(val, 0, 1.0, $PI * 0.45, $PI * 0.9);
// sin関数に角度を入れて、スケールの値を作ります
float yscale = sin(angle);
@P.y *= yscale;
@P.x *= scale;
@P.z *= scale;
Torusとマージして鈴カステラの完成!
Torusを周りにつけると鈴カステラのような形状になりました!
![](https://shumatsu.jp/wp-content/uploads/2023/01/5b1c4b36622a85d2b21282dd55b25c73-1024x606.jpg)
まとめ
Point Wrangle、結果を見ながらプログラミングできるので、微調整がしやすくて本当に重宝しています。参考になりますと幸いです!
![](https://shumatsu.jp/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
コメント