20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ジオメトリノードでキャタピラ(履帯)を作る

Last updated at Posted at 2023-12-14

Blenderでキャタピラを作る方法を検索すると
配列複製で形状を並べて カーブで曲げる といった方法がよく出てきます
一見うまくいっているように見える簡単な方法ですが
履帯一個一個のパーツを見ると台形状に変形したり 曲がってほしくない部分で曲がってしまいます
image.png
大きく映すことがなければ問題ないでしょうが
ジオメトリノードを利用した変更しないキャタピラの作り方を書いておきたいと思います
Blender3.3環境での画面ですが 以降のバージョンでも大きな変更はないかと思います

キャタピラの構造

本来のキャタピラの構造は
地面に接地する「履版」と 履版同士をつなぐリンクやピンでできています
image.png

3Dでキャタピラを作るためには
軌道にあたるカーブと 個々の履板のオブジェクトが最低限必要です
コマのオブジェクは ピンが刺さる部分の片方に原点があるようにオブジェクトを作成してください
また、ピンが刺さる部分同士の幅は自分で覚えておいてください
image.png

パーツの配列

カーブにジオメトリノードを作成して 履板のオブジェクトをカーブに沿う形で配置していきます
この辺りは以前に書いた「カーブに沿わせたオブジェクト配置について考える」とも共通しています
https://qiita.com/yukimituki11/items/94cc61828eb1d6080db7

ジオメトリードでオブジェクトを配置する基本は 配置座標を決める情報「ポイント」を作成して
ポイントに指定したオブジェクトを配置する「ポイントにインスタンス作成」を利用します

軌道のカーブ上に配置するには「カーブのポイント化」の利用します
長さを指定することでポイントが均等に配置されます
長さは ピンが刺さる部分同士の間隔にします

image.png

パーツの回転

配列をしたままだと 元のオブジェクトと平行に並べたようになるので 回転させます
カーブのポイント化では元のカーブを元に回転を取得できますが
サンプリングをした位置での接線になるので 大きく曲がる部分では曲がり方にズレが出てしまいます
image.png
そのため 回転を自分で計算する必要があります

回転の計算は
隣のポイントの座標を取得して 位置ベクトルの差分をとることで計算します
image.png
オイラーをベクトルに整列で 方向ベクトルを回転の値に変更できます

この時に裏表が逆転して配置された場合には計算で変更もできますが
軌道用のカーブの向き自体を反転してしまった方が楽かと思います
image.png

さて、キャプチャでは一見これでうまくいっているように見えますが
ループの最後のポイントでは 存在しないポイントのインデックスを指定しているので回転が計算されていません。

ポイントがいくつあるか「属性統計」を利用して取得して
最後のポイントの差分計算に最初のポイント(インデックス0)を利用するようにノードを追加します
image.png
これで基本形は完成です

追記:Blender 3.6以降では属性統計のインデックスが
インデックスサンプルとして個別のノードになったようです
image.png

キャタピラの移動(オフセット)

静止画用途ならこれでいいのですが このままでは走行する動画を作ることができません
カーブ上の位置のオフセットをする方法を考えます

「カーブのポイント化」のノードは位置のオフセットを設定する機能がないので
このノードを別の計算で置き換えます
image.png
カーブのスプライン上の座標は 始点を0 終点を1.0とした係数で表すこともできます
「カーブサンプル」で一旦カーブの制御点の数を作成したいポイントの数に増やしておいて
「カーブリサンプル」でオフセットした座標の値を取得するという形をとりました

さきほどの回転の計算も調整して加えるとこんな感じになりました
image.png
ポイントの個数を途中で計算しているため それを利用することで少しだけ計算が変わっています
(個数は1始まり ポイントのインデックスは0始まりなのに注意が必要です)

ノードグループ

グループ入力の項目を設定して ジオメトリノードとしての仕上げになります
23121401.gif

宣伝

今回の技術は 来春公開の映画でも使用しています
他にも多くの場所でBlenderを利用していますので 今後の情報をご期待ください

20
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?