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 の値をいじって調整。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です