Houdini 練習 ロゴ02
Houdini 練習第2段。
今回はこちらを参考に。
まずは全体図。キレイに1本のライン。文字をつくって Extrude して、VDB にしてまたポリゴンに戻して、ポイントをランダムにするというのが左の流れ。
右側ではまず start / end をグループで分けて、Find Shortest Pathでつなぐのがポイント。
予め sort でポイントをランダムにしているので、start グループには 1-20 を指定すると適当な感じで20ポイントが選ばれる。
ここではコアの部分となるところを簡単な Cube を使った簡単なサンプルを作ってみました。Box があって、Sort でランダムにポイントを変えて、start / end にて2つのグループを作り、Find Shortest Pathでつないぐ。
その上でCarve で削るとこのような感じになる。
手動ではなくタイムラインで動かすように。
chf(“completeFrame”)は完成させたいフレームで、ここでは60。0.88はどこまで線を引くかで、ここでは1までにせず接続を途中で途切れるようにしました。
ただ、ここで$F(フレーム) を使うとSolverを使っても以前のアトリビュートが取れませんでした。(なぜ??) ホントは Solver 使って少し前回との差分から width などを調整したかったけどこの辺はもうちょっと勉強が必要…
Point Wranglerはこんな感じ。
float maxDistance = chf("maxDistance"); float widthCoefficient = chf("widthCoefficient"); float widthRandomness = chf("widthRandomness"); int neighbours[] = neighbours(0, @ptnum); int neighbourCount = len(neighbours); // 1 or 2 しかない float totalPer = 0; @Cd = chramp("color", 0); for (int i = 0; i < neighbourCount; ++i) { float distance = distance(@P, point(0, "P", neighbours[i])); float per = fit(distance, 0, maxDistance, 0, 1); totalPer += per; } @width = totalPer * widthCoefficient; @width *= fit01(random(@ptnum), 1 - widthRandomness, 1 + widthRandomness); @Cd = chramp("color", totalPer); float colorGap = 0.25; @Cd.r *= fit01(random(@ptnum + 1), 1 - colorGap, 1 + colorGap); @Cd.g *= fit01(random(@ptnum + 2), 1 - colorGap, 1 + colorGap); @Cd.b *= fit01(random(@ptnum + 3), 1 - colorGap, 1 + colorGap);
分岐点が neighbours でいくつか取れるかと思っていたけどここは1 or 2しか取れなかった。ちょっと雑なコードだけど、線の太さと色味を作っただけって感じ。(汗
あとはレンダリングするとノイズが多かったので、Mantra の Rendering < Sampling の値をいじって調整。
コメントを残す