【Blender】なぐり加工のフローリングをGeometry Nodesで作りたい

Pocket
LinkedIn にシェア
LINEで送る

Blende 2.92のすてきな新機能Geometry Nodes。まだ初歩的な使い方しかわかっていませんが覚えるほど自由なことができるようでワクワクする機能です。
基本的な使い方として最も紹介されているのがランダム配置でしょうか。みなさんもそうかも知れませんが、今まではパーティクルで代用していましたがGeometry Nodesの登場で完璧に狙った通りに制御できるようになりました。

建築ビジュアライゼーションでなんかできないかな・・・というブレインストーミングをしていたわけではないのですが、最近フローリングの加工(メッシュとしても、マテリアルとしても。)にちょっとハマっていたんですけど、どうしても納得行くように上手く作れないフローリングがあったんです。
それがなぐり加工の床で、ランダム配置とか、ランダムな彫り方とか、どうやっても上手くいかない。上手くいかないというよりは、気に入らない成果物ばかりで、もうアドオンを自作しないと叶わないわ! と投げかけていました。

そこでGeometry Nodesでトライしてみようかなと。やる気を取り戻しました。

動画版

やってみよう

今回は六角形に掘られたなぐり加工にしたいと思います。(いろいろ試したけれどもこれが一番難易度低かったので。)
床の代わりとなるCubeと、六角形のPillar、Geometry Nodesを適用するPlaneの3つがあればOKです。

Pillarの加工

六角形のPillarを少し加工して、Booleanの削る側として使います。
なぐり加工って現物はなかなか見られないので、微妙な記憶と感触と、ググった画像が頼りです。私自身もどこでかは覚えていませんが「数回は見たことがあって、数回は実際に歩いた」って程度です。

掘られた部分は全体的に曲線を描いており、掘ったところ同士の境目は画像だとチクチクしそうですが、実際は滑らかで、むしろ心地よかったりする記憶。
ということでCtrl+Bでベベル(面取り)を試みる。細分化は多めに施して、できるだけ滑らかにしておきました。
 

Pillarはこれだけです。

PlaneにGeometry Nodesを追加

PlaneにModifierから[Geometry Nodes]を追加。
ウインドウレイアウトもGeometry Nodes用のやつに変えると便利かと。
まずは[Point Instance]ノードを接続し、[Instance]でPillarを選択すると、Planeの四隅に六角形Pillarが出てきます。

これは[Point Instance]が頂点の位置に[Instance]を置くという意味だからですね。
ということで頂点を増やしてみます。PlaneをModifierから[SubDivision(細分化)]を追加してみましょう。すると六角形もいっぱい出てきた。SubDivは六角形が重なる程度まで行います。

でもこの並び方では六角形が単に並んでいるだけで、ハニカムみたいな並び方をしてくれない。
それだったらPlaneを変形してしまえばいいでしょう。平行四辺形にしてみます。
微調整はした結果、六角形がキレイにハニカム状に並んでくれました。

Planeの加工はここまで。

Geometry Nodesでのノード設定

さて六角形がきれいに並んだわけですが、最初に言いまくってたランダムさがまるっきりありません。ということでランダムにしてみます。
[Attribute Randomize]ノードを使います。今回はscaleとrotationの2パラメータをランダム化します。このノードを2つ置いて、
・[Attribute]の場所にそれぞれ「scale」と「rotation」と、キー入力します。
・[Float]を[Vector]に変更して、
  scale:X、Yは同じ値にするが、minとmaxで0.2くらい差をつける。
  rotation:minは-0.01、maxは0.01。ちなみに単位は[radian]らしいです。3.14で最大180度回転したので。
rotation値は大きいと六角形がきれいに出ずただのガチャガチャな面になる上、Booleanの結果が著しく汚くなるためです。

これで”いい感じ”にランダムな六角形Pillarになってきました。
 

ブーリアン

2.92のGeometry Nodesビューでブーリアンノードを使っても機能しない。使い方が違うのか? そもそも仕様でブーリアンはできないのか? と困っていましたが、Twitterで風見ひよこ様から最高の情報が! 詰んでたのですごく救われました。ありがとうございます。

実は後から調べたら似たような情報は英語ではあって「2.93の初版じゃなくて、最新だと動く」みたいな内容でしたが、自意味がわからなくて。だってリリースされている最新版は2.93.0だったので「最新とか古いとかって何? 2.93.0より古い2.93って無いでしょ?」と思ってしまったんです。実際は何回かビルド&リリースされていたようで、2021年5月末くらいのリリース分だと直っているようです。

と話しはそれましたが、2.93最新版ではちゃんと動きます。ただし結構重いです。メモリもすごく喰います。
例えばRockジェネレータでMeshを置いて100個くらいArrayして、RocksをCubeとBooleanするだけでRAMを32GB使い果たします。

Cubeと加工した六角形とで[Boolean]すると、30秒くらい待たされた結果、なぐり加工の物体が現れます!

ただし上だと汚いですし、実物と見比べてみても六角形の向きの不揃いが過ぎます。ということで[Attribute Randomize]ノードの[Attribute]=rotationの値を小さくして、回転ランダム具合を減らして、ばらつきが少ないようにします。

仕上げ

さて、納得のいくランダムさが得られましたが、単純にPlaneをModifierでXY方向にArrayするとちょっと困ったことが起こります。連続性がないんですね。ここからは手作業をしました。

まずPlaneをコピーしました。オリジナルの結果を残しておくためです。
そしてModifierを全部Applyします。これで一旦メッシュ化させます。させなくても構いませんが、あまりにも処理の時間が長くてやっていられません。
Cubeの底の頂点4つを削除して平面化します。これで「なぐり加工の面」って感じになった。
 

そしたらどこかの四隅の頂点を、原点とします。

さらにModifierで[Mirror]を追加して、[X]と[Y]をONにします。すると面が4枚に増殖し、よくも悪くもつなぎ目が自然になります。テクスチャのシームレス化でもたまにやる方法のひとつですね。

とは言ってもこれじゃあダメですから、自然なつながりになるようにBooleanでカットします。
Mirrorなので、X軸、Y軸側の2辺だけBooleanすればOKです。六角形だからカットする基準は見つけやすいと思います。
 

これで4面が自然になりました。あとはこれをArrayで無限に追加してもシームレスになるようにします。
実際にModifierで[Array]を2つ追加して、それぞれX=1とY=1のパラメータにします。すると一面になぐり加工のフローリングが現れます。
でも、さっきと同じでつなぎ目が不自然ですね。Mirrorのときと同じくBooleanでカットします。
対象の辺は、さっきとは逆で、X軸、Y軸とは接していない2辺です。

最終仕上げはこうなりました。

確認のためにModifierで[Array]を2つ追加して、XとY方向に並べてみます。つなぎ目がわからなくなればOKです。

完成

こんなかんじになりました。なかなか悪くないと思います。
あとでこの図形からDisplacementMapやHeightMap、NormalMapを作成すればより楽しめそうです

なぐり加工っていろんなタイプがあるので、全種類制覇したいと思います。ぐぐっている感じだと、10~12種類くらいみたいです。
今度、図書館にも行って調べてみようと思います。

参考サイト

Geometry nodes – Convert scattered geometries to mesh – blenderartists.org
【Blender】Geometry Node Editorでブーリアン演算
How can I get a new random seed for every object using the same geometry nodes? – Stack Exchange

記事の情報はお役に立ちましたか?

ご支援も承っています。
ご注意:返金のご対応はいたしかねます。あくまでも投げ銭としての位置付けであり、優待・特典等はございません。ご了承下さい。

18725:【Blender】なぐり加工のフローリングをGeometry Nodesで作りたい

v3

管理人が読んだおすすめの建築本

    

コメントを残す