美味しい焼き鳥屋さん

初心者による技術系のメモ

【Blender3.0】Free GN Presets V1.0.11 を自分なりに解釈 + 他のPresetの紹介

Blender Advent カレンダー2021

Qiitaで開催されているAdventカレンダーです。
Blenderアドベントカレンダー18日目の記事になります。
前日はSaitoTsutomuさんの「Blenderでメッシュをきれいにするには」でした。
PolyQuiltアドオン試したことが無かったのでこの機会に試してみようかな…
(ずっとスカルプトのスムーズかCtrl+Vから頂点編集→頂点をスムーズにするで頑張っていました…)
qiita.com


例年「Adventカレンダーに参加しようかな~、でもネタないしなぁ~」
と思っていたところBlender3.0のバージョンアップやGeometryNodeの本格搭載ということで参加させていただきました。
qiita.com

Free GN Presets V1.0.11 - Blender Geometry Nodes 3.0 Field

何ができるの?

GeometryNodeを使う上で便利な(プリセット)ノードグループセットです。
例えばCinema4DのMographのようなアニメーションやオブジェクト複製などGeometryNodeで組むにしても少し面倒なものをプリセット化したものになります。

ダウンロード先

bradley-animations.gumroad.com
Gumroadにて配布
料金:無料 
youtu.be


インストール方法(Tips)

導入方法

ノードグループが搭載されたBlendファイルをリンクします。
Blenderのバージョン更新、バグFixに伴い、ノードグループの構成に変更が生じた場合、リンク元のBlendファイル(動画ではMasterFileと呼称されている)を修正するだけで対応ができます。
※アペンドをしてしまうとバグFixなどに対応するのが面倒になります。

blendファイルの名称について

MasterFileについてはダウンロードしたままの名称ではなく
例えば"Preset_Master.blend"のような名称にすることが推奨されています。
(GeometryNode自体の仕様変更が考えられ、ノードグループの頻繁な更新が想像されるようです)

NodePresetアドオンの無効化を推奨

f:id:t0rry:20211208223707j:plain
docs.blender.org
このアドオンは実質アペンドしているのと変わらないようです。
今回紹介するような更新頻度の高いノードグループに対しては有効な手段ではないそうです。

注意点

ノードグループの名称は変更しないこと
名称を変更してしまうとリンク先との接続が切れてしまい、MasterFileを更新すると認識されず自動更新されません。
また、ノードグループが新たに追加された場合は再度リンクをし直す必要があります。

各ノードの説明(超要約かつ一部抜粋)

Demoファイルの内容を解読してみます。
追加されるノードグループの数が尋常ではないため、相当大雑把な解説になります。
(追加されるノードについてのドキュメントが一切ないため、挙動や内部の構造を読み解きながらの説明になります)

Falloffシリーズ(ZX01_Falloff)

Cinema4DのMographっぽいやつ
G_Fade_Falloff
f:id:t0rry:20211212102117p:plain
f:id:t0rry:20211212102128p:plain
Custom Indexを用いて変化を与えます

G_Spline_Falloff

f:id:t0rry:20211208232450j:plain
f:id:t0rry:20211208231939j:plain
入力されたCurveに合わせて変化を加えます

G_Directional_Falloff

f:id:t0rry:20211208232541j:plain
f:id:t0rry:20211208232148j:plain
一方向(方向性)の変化を与えます
変化用のコントローラー(オブジェクト)が必要

G_Radial_Falloff

f:id:t0rry:20211208233257j:plain
f:id:t0rry:20211208233309j:plain
放射状に変化を与えます

G_Proximity_Falloff

f:id:t0rry:20211208233509j:plain
f:id:t0rry:20211208233552j:plain
近接しているものに変化を与えます
よくある動き

G_Delay_Falloff

f:id:t0rry:20211208233816j:plain
Timeソケットに1Fフレームあたりの変化量(G_Time_Infoなど)を入力し、
Custom IndexにIndexを入力することで時間に応じてIndex順に変化を与えることができます
(ZX05_Delay_Animationを参考)

Noiseシリーズ(ZX02_Noise)

G_Vector_Noise

f:id:t0rry:20211212135350p:plain
ノイズテクスチャのVectorが出力されます
Custom Vectorにベクトル情報を入力するかObjectに制御用のオブジェクトを
指定することで入力された情報を適用したNoiseTextureが生成され、NoiseTextureのVectorが出力されます

G_Noise_3D

f:id:t0rry:20211212140256p:plain
標準搭載のNoise Textureを拡張したものです
コントロール用のオブジェクトを設定できるほか
Scaleの値を大きくすることでDisplacementさせるときに
めっちゃ大きく変化します

f:id:t0rry:20211212140938p:plain
Scale:2
f:id:t0rry:20211212141000p:plain
Scale:5
G_Vector_Wiggle

f:id:t0rry:20211212141526p:plain
ランダムにノイズが生成されます
Evolitionの値を変更させることで波のような変化があるノイズ生成ができる
f:id:t0rry:20211212143021g:plain

G_Randomness

f:id:t0rry:20211212143809p:plain
標準搭載のWhite_Noise_Textureを拡張したような内容です
(ノードグループ内にWhite_Noise_Textureは含まれていない)

Mix_Vector

G_Mix_XYZ_Vector

VectorA、VectorBに入力したベクトル情報をFacで調整できます
(感覚としてはShaderNodeのAddShaderではなくMixShaderのようなものです)

その他

G_Grid_of_Correct_Indices

f:id:t0rry:20211212102454p:plain
グリッド状にポイントを配置します

G_Translate_Position

f:id:t0rry:20211212102724p:plain
位置・スケール情報を一斉に定義できます

G_Normal_Displacement

f:id:t0rry:20211212144116p:plain
入力されたGeometryをDisplacementさせます
Displacementにノイズを入力することが多いです

G_Attribute_Mesh

f:id:t0rry:20211212160925p:plain
Geometryの情報から各要素を出力します

G_Time_Info

f:id:t0rry:20211212163914p:plain
1フレームあたりの変化量を出力します

G_Index_Reverse

f:id:t0rry:20211212165510p:plain
Indexを反転させます
基本は"+1"アウトプットを使うようです
(要素の先頭が一番最後に計算されてしまうため)

G_Random_Transform

f:id:t0rry:20211212171239p:plain
入力したインスタンスをランダムに複製配置します
複製数・回転・サイズ・サイズのランダムが一つのノードで設定できます

G_Sin_Function

f:id:t0rry:20211212161432p:plain
Sin、Cosを生成します
例:位置ベクトルにノイズを加えたもの
f:id:t0rry:20211212163626g:plain

G_Points_Distribute

f:id:t0rry:20211212173305p:plain
入力したGeometryの面にPointsを配置します
標準の"Distribute Ponits o Faces"の拡張版

G_Fill_Volume

f:id:t0rry:20211212174520p:plain
入力したGeometryの内部(Volume)にGeometryを配置します
※Pointsを活用することでGeometryの内部にPointsを配置することもできます
f:id:t0rry:20211212175138g:plain

G_Follow_Splines

f:id:t0rry:20211212181757p:plain
入力したカーブに沿わせてオブジェクトを配置します
f:id:t0rry:20211212182214g:plain

G_Curve_Deform

f:id:t0rry:20211212183959p:plain
入力したカーブに合わせてオブジェクトが配置され、デフォームされます
f:id:t0rry:20211212184333g:plain

G_Bevel_Curve

f:id:t0rry:20211212182814p:plain
入力したカーブにベベル(厚み)をつけてGeometryを返します

G_Curve_Deform

f:id:t0rry:20211212183959p:plain
入力したカーブに合わせてオブジェクトが配置され、デフォームされます

G_Hexagon_Distribution

六角形を生成します

他にもたくさんのノードグループがあります。

G_Negati

f:id:t0rry:20211212184934p:plain

G_Attribute_to_Instances

f:id:t0rry:20211212180832p:plain

G_Attribute_Mesh

f:id:t0rry:20211212185059p:plain

G_Attribute_Spline

f:id:t0rry:20211212185135p:plain

G_Implicit_Attribute

f:id:t0rry:20211212185231p:plain

実際に触ってみた感想

様々な動作(アニメーション)を作る作業工程が簡略化されるのでとても魅力的なノードグループです。
ただし、個人が制作しているノードグループということもあり、更新頻度が凄まじい今のBlenderにどこまで適用していけるのかが気になるところです。

他のGeometryNode Preset

Erindale Toolkit - Advanced Geometry Nodes Groups (UPDATED FOR FIELDS)

erindale.gumroad.com
youtu.be
Blender2.93 LTSのスプラッシュスクリーンの制作者が作成したノードグループです。
Art Gallery — Blender Cloud
先に紹介したFree GN Presetsに比べて認知度があるようです。
コチラについても期待です。

おわりに

Blenderの新しい機能、GeometryNode。
実装されて時間が経っていないことから各々の使いやすい形でノードグループが配布されていますが、仕様が各自バラバラで勉強するにしても非常に難しい環境になっていると感じました。
また、標準機能ですら仕様が揺らぐことがあるのでしばらくは様子見でいいと思います。
上達を急ぐのであればノードグループをそのまま扱うのではなく、「なぜその処理が行われているのか」を理解することが今後のためのクオリティアップへの近道ですね。

といったところで、この記事は終わりにしようと思います。
コロナ禍でBlenderを始めた人が増えたこともありBlneder盛り上がってますね
一日でも早くコロナが終息し、また楽しい勉強会などができる日が来るといいな~と思いながら筆をおかせていただきます。