前回に引き続き下記の講義の内容を進めていきます。
Math ノードを用いてアナログ時計を作る
時計の針を適当に作って、それを x 軸で回転させることで時計の針の進行を表現します。では、どの程度回転させればよいでしょう?
回転量について、$2\pi$ で 1 回転になります。60 秒で 1 回転するのであれば、1 秒あたりの回転量は $\frac{2\pi}{60}\simeq 0.10471976...$。これを秒数にかけるとよさそうです。
ただ、厳密にこれに従う必要はありません。そもそも 1 秒は何フレームか?によって数値は変わると思うので。
今回は秒数を Value で起き、その数値に上記の数値をかける(実際には割り算をしてます)処理をしました。
秒数の直後に floor をかけることで、秒針独特の滑らかではない、1 秒ごとにカチカチ動く秒針が表現できます。
秒針の角度は小数であるため、Value の直後でないと面倒になると思います。
また、ジオメトリノード上でマテリアルの設定も可能です。
これで、左上の「Value」を動かすことで、時計の針を操作することが出来るようになりました。
これは、時計の針に対して個別でアニメーション設定を行うところをジオメトリノードにて「時刻」という単一の値でアニメーション設定できるようになったことを意味します。
波に伴って色々やる
今度はその 2 の内容に近いのですが、より複雑な表現もやっていきます。
ノードとしてはこんな感じ。
Main Sphere の Mesh to Points にて、デフォルトでは頂点が選択されているのですが、面に変えておく必要がある点に注意してください。
これにマテリアルを適宜貼っていきます(上のジオメトリノードのものと若干違うかもですが)
マテリアル設定の際には、逐次レンダリングしながら細かい値を調整すると思います。下記の設定を予めやっておきましょう。
- Render Engine を Cycles にする(EEVEE がデフォルト。出来るなら GPU にやらせましょう)
- World → Surface の Strength を 0.1 位に弱める。自分はついでに HDR 画像を混ぜ込んでます。
床は青色にするだけです。
柱は金属っぽい表現にして若干の反射を持たせつつ、ピンクベースでランダムに色を変えていきます。
柱の上の大きな球は赤と青を混ぜつつ、表面を白黒のノイズで覆っています。思ったより暗かったので、もう少し白に寄せてもいいのかもしれない。
球周辺の小さい球はごめんなさい動画中でも無かったのでそれっぽく頑張ったのですが、上手く出来ていません(スクショ撮り忘れちゃった...)
白ベースで透過度上げて、反射も入れつつ、屈折率は水の値を参照したと思います。ただ、動画中のもののように綺麗な泡のような表現には程遠い...これは Geometry Nodes というより Material の練習が別途必要ですね。
で出来たのがこちらです。
うーんマテリアルが下手ですね。とはいえ、ジオメトリノードのモデリングとしては十分な気がします。
まとめ
ジオメトリノードではアニメーションを取り扱うことも可能。特定の値 1 つをアニメーションに伴い変えることで、複数・大量のオブジェクトの挙動に影響を与えることが可能です。
次回も続きを書いていくのですが、ここで唐突に「ノードグラフをスクリーンショットで共有するの、画質的に大変じゃない?」と思ったので、その話を別の記事で書く予定です。








