0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ジオメトリノードでマイクラ風のキューブ充填表現をしてみる

Posted at

自分は普段はこういった映像表現は作っていないのですが
他ソフトの作例動画を見かけて少し試してみたくなったのでBlenderのGeometryNodesでの作例を作ってみました
24121601.gif

歩いている人型のモデルを囲う立体グリッド上にキューブを発生させて
距離に合わせてキューブを縮小することでこの見た目になります

グリッドデータの作成

キューブを発生させる範囲にグリッド状のメッシュを作成します
image.png
これは他の解説等でも出てくるので特に解説することはないのですが
縦横高さの範囲とグリッド幅を指定するように調整してあります
このグリッドの頂点座標を利用したいので 最後に並べたものを実体メッシュに変換する
「インスタンス実体化」を忘れずに。

ターゲットメッシュを充填する

実はこういったメッシュで 表面だけ充填したい場合にはジオメトリ近接が使えます
image.png
ターゲットジオメトリの要素(この場合は面)からの距離を取得できるので決まった距離より遠いものを削除すれば済みます

ただし 厚みのある形状になると 壁面から離れた部分は充填されないことになります 
image.png
(キャプチャでは蓋部分を削除した状態ですが 閉じていても同じことです)

ここでは中身を充填したい場合の計算を考えます
image.png
ジオメトリ近接ではターゲット上の近接位置を取得でき
グリッドの頂点位置との差をとると近接点との方向ベクトルを得られます
これと 近接点の法線と内積をとると 値の正負で面の表方向か裏方向かを取得できます

今回は内部を一律に距離0扱いにしたいので
スイッチノードで 表方向は得られた値のまま 裏方向は0としました
負の値になるようにしてもいいかもしれません

この計算では閉じてない形状では不正な値になる可能性があるのは注意してください

データの調整

後はそれぞれの目的に合わせた処理になりますが今回の設定を書いておきます
image.png
個々のインスタンス(キューブ)で色替えするために
名前付き属性にポイント毎にランダムな色を格納しています
シェーダーでは属性で同じ名前を指定することで値を取得できます

ジオメトリ削除で一定距離より離れた数値になっているポイントを削除しています

範囲マッピングで 距離0で最大サイズ 指定した距離を離れるとポイントの半径が0になるようにしています

ノードの全体

今回のノードの全体はこうなります
image.png
何かの参考になれば幸いです

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?