【geometry node】ジオメトリノードで正確な時計を作る【サンプルファイル配布中】
- 投稿日/更新日
たとえばBlenderで部屋を作って壁時計なんかを飾ったとき、針の角度は正確に表示したくなりますよね(よね?)。ってことで、ジオメトリノードで時計を正確に動かしてみましょう。サンプルファイルは一番下にあります。
用意するオブジェクト

今回用意するオブジェクトは時計本体・長針・短針の3つ。原点を時計本体は中心に、針は底辺の中央に設定しておきます。
ジオメトリノード
時計本体にジオメトリノードを作成します。ノードは下記のとおり。

グループ入力を追加する
まずはノードグループのグループ入力に項目を追加します。グループ入力ノードを選択してサイドパネルのグループソケット>+ボタンで追加できます。

時間を管理するソケットは「hour」という名前にしました。0時から11時までを指定するので、タイプは整数で、最少は0、最大は11です。

分を管理するソケットは「minute」という名前にしました。0分から59分までを指定するので、タイプは整数で、最少は0、最大は59です。

ソケットを追加すると、モディファイアーのプロパティに表示されます。これでいちいちジオメトリノードの画面を開いて数値を変えなくてもよくなります。
分のノード

長針の角度は、1分ごとに6度(360度÷60分)進みます。なのでminuteで設定した値に「6」を掛け算(乗算)すればいいことになります。例えば37分なら6(度)×37(分)で222(度)が算出されます。ジオメトリノードでは角度ではなくラジアンで扱うことが多いので、これをラジアン変換します。軸角度の回転化は特定の軸だけ回転を制御できるノードで、座標軸を0・1・0と指定することでY軸だけに回転の数値が影響するようにできます。これをポイントにインスタンス作成に繋ぐことで、オブジェクト情報で設定した長針(オブジェクト名はminute hand)が回転します。
時のノード

短針の角度は、1時間ごとに30度(360度÷12時)進みます。なのでhourで設定した値に「30」を掛け算(乗算)すればいいことになります。ここまでは分と同じ考え方です。
0分であればこれでOKですが、分が進むと短針もじわじわと進んでいきますね。そこで、minuteで設定した値を短針にもプラスしていきます。1分進むごとに、1時間の範囲内である30度÷60分=0.5度が加算されていくので、minuteで設定した値に「0.5」を掛け算(乗算)します。
あとはこれらを加算ノードで足し算すれば、短針の角度が算出されます。
完成

あとは任意の数値を設定してあげるだけで、時計の針が正確なところを指すようになります。かなり簡単なノードですが、グループ入力の仕方や角度の制御など、ほかにも応用ができるものだとおもいます。
ファイルのダウンロード
フェンスのBlenderファイルはこちらからダウンロードできます。念のためにセキュリティスキャン等してくださいね。なお何かあっても責任は一切持ちません
備忘録として残しておきます。
