Blenderのジオメトリノードを使ってチョコレートを作ってみよう!という記事です。
ジオメトリノードはノードを使ってメッシュを変形させることができ、しかも何回でもやり直しができるし、微調整もできます。モデリング嫌いな人とか、面倒くさがりな人、作ったものはなるべく再利用したい、みたいな方にもオススメな機能です。便利なのはもちろん、とても面白いのでぜひやってほしくて初心者のための入門記事を書いてみました。
チョコレートはブロックのパーツを作って並べていくという、ジオメトリノードの練習に持ってこいなモチーフなのと、みんな大好きだと思って選択してみました。中級者の方でも、最後の方にチョコレートジェネレータ作成法なども書いてありますのでチャレンジしてみるといつでもどこでもチョコレートが作れるようになります。
スイーツ作成のときにもチョコレート一個作れるようになるといろんなスイーツに使えるんじゃないでしょうか。チョコモナカジャンボなどを作る際にも便利ですからね。
この記事は、Blenderのジオメトリノードを使ってチョコレートを作る方法について書いた初心者向けの記事です。
難易度
※初心者向けではありますが、ある程度Blenderでものを移動させたり、マテリアルをつけたりしたことがある方向けです。
チョコレートを作る手順
- ジオメトリノード準備
- ブロック一つを作る
- ブロックを並べる
- チョコの土台を作る
- マテリアルをつける
なるべく初心者さんでもできるように操作なども書いていこうと思いますのでやってみてください。
ジオメトリノードでやる作業

パーツを作って頂点、辺、面とかに配置する作業は、インスタンスを置くという言い方をするんですが、ジオメトリノードでよくやる典型的な作業です。
インスタンスとは、元のメッシュデータを実際に複製するのではなく、参照コピーのようなかたちで表示だけを行う仕組みです。そのため、大量に配置しても処理が軽いのが特徴です。
①ジオメトリノード準備
①大体ジオメトリノード始める人ってPlaneを出して始めることが多いです。(が、最初に置いてあるCubeでもなんでもいいです。)
②別のセクションでジオメトリノードエディタを選択して、ジオメトリーノードの編集画面を出します
③ジオメトリノードエディタに移動したら、Planeを選択して、Newを押してノードを出します。

すると、エディタの中に右の図のようなGroup InputとGroup Outputというノードが出ているはずです。(見えないって方はマウスの真ん中のコロコロを転がしたら拡大縮小できるので、探してみてください)

Group Inputノードは今出てるPlaneのジオメトリ(形状のデータのこと)を表していて、Group Outputノードは最終出力です。
つまり、今はPlaneをGroup Inputから出して、そのPlaneをただ出力して表示しているだけです。この緑の線の間にいろいろなノードを出して変形などをしていきます。
この一連の作業が、ジオメトリノードを作るときの準備です。今回最初に出したジオメトリはPlaneでしたが、Cubeから始めたり、自分が作ったオブジェクトから始めてそこにいろいろ変形や編集していくということもあります。
※ジオメトリノードはサブディビジョンサーフェスなどと同じようにモディファイアという扱いです。
②ブロック一つを作る
ノードの出し方
ブロック1つを作っていきますが、まずノードを出してみましょう。
①ジオメトリノードエディタ上でShift + Aを押してAddメニューをだします。Search欄をクリックします。
②検索ウィンドウが出るのでGridと入力して、一番上の方にでてきた検索結果のGridをクリックします。

ノードを消したいときはXで選択したノードを消せます
Gridノードが出てきますので、マウスで移動させて、Group OutputノードのGeometryと書いてある入力ソケットにつなげます。
つなげ方は、Meshと書いてある緑の丸いソケットを引っ張ると緑の線が出てきますので、それを相手のソケットにつなげるだけです。
外すときはCtrl + 右クリックでナイフが出てくるので線をカットするか、つなげたときのようにソケットからひもを外しても外せます。
Gridノードをつなげても、Planeが出るだけなので変化しないですが、扱いやすいのでこちらを使います。元のGroup Inputから出てるPlaneのデータは今回は使いません。放置します。
ここからいろんなノードをつなげて変形させたりしたいと思います。


さっそくノードをつないでみましょう。以下のようにノードを出して組んでみてください。(ノードの終わりはGroup Outputノードです。)

- Gridノードでサイズを調整します。SizeX 0.07m / SizeY 0.1m / VerticesX 2 / VerticesY 2
- Extrude Meshで点・辺・面を押し出すことができます。今回はFacesに設定して面を押し出します。Offset Scaleに0.02と入れて少しだけ押し出します。(※Individualはチェックはそれぞれの面をバラバラに押し出すか、つないだまま押し出すか、という違いで、今回は関係ありません)
- Scale Elementsは辺や面を拡縮できます。②で出したExtrude MeshのTopの出力をSelectionのソケットにつなぐことで、全体ではなく、押し出した末端の面だけを拡縮できます。Scaleの値に0.6を入れて縮小します。
- Extrude MeshでさらにTopの面を押し出します。今度は下側に押し出したいのでOffset Scaleに-0.002と入力します。これも以前のTop出力をSelectionに接続するのを忘れないでください。
- Scale Elementsを再び出して、またTopをSelectionにつなぎ、一番末端の面だけを0.8倍スケールします。
押し出しと拡縮(スケール)を繰り返しているだけですね。できましたでしょうか?これでチョコレートの1ブロックができました。
ノードをフレームでまとめよう
フレームでノードをまとめるとわかりやすくなり、作業が進めやすくなります。ごちゃごちゃしてわかんなくなった、と言う方はまとめてみましょう。

まとめたいノードを選択(左クリックしながらドラッグすると白い枠が出てくるので、それでまとめて選択できます。)して、Ctrl + Jでフレームにまとめることができます。
さらに、このフレームを見やすくするため、右のNodeタブを開いて編集できます。(フレームを選択しておいてください)
Label(フレームの名前や説明)、Color(フレームの色:チェックを入れること)、Label Size(ラベルのフォントサイズ)を変更するとわかりやすくなります。
フレームにノードを追加したいとき…フレームの内側にノードを移動させます
フレームからノードを外したいとき…外したいノードを選択してAlt + P
③ブロックを並べる
今度は、このブロックをグリッドの頂点に配置していきます。

チョコの1ブロックを作ったフレームは一旦置いておいて、新しくGridノードを出してGroup Outputノードにつなぎます。


ワイヤーフレームプレビューにしながら、どの位置に頂点ができているかを確認します。
グリッドの長さや高さを計算する
チョコのブロックが3列(横に3個)、4行(縦に4個)になるようにつくってみます。

グリッドの頂点にちょうどチョコの1ブロックの真ん中が来るように配置します。すると、頂点から頂点の距離は、チョコ1ブロック分の横の長さと同じになります。だから、横に3個チョコブロックを並べたいなら、グリッドの横の長さは、3-1=2で、2個分のチョコの横の長さになります。Size Xは0.07×2=0.14になります。
縦の長さ(高さ)も同様に、4個チョコブロックを並べたいなら、3個分のチョコの高さが必要です。Size Yは0.1×3=0.3になります。
チョコを配置する
Instance on Pointsノードを出して、GridからのMeshをPointsに、チョコブロックの最後のGeometry出力をInstanceにつなぎます。
これは、チョコブロックをインスタンスにして、グリッドの頂点に配置するということです。

だんだんチョコの形みたいになってきました。
ただ、裏側を見ると、押し出しただけなので、凹んでしまっているんですね。なのでチョコの土台部分を作って合体させる必要があります。

慣れてきたら
数値をノードに直接入力すると、やっぱりチョコレートを縦に5個並べたい、チョコブロックの幅を変えたい、などと変更したくなったら、いちいちそれぞれのノードの数値を変えなければいけなくて大変です。
以下のようにMathノードやValueノードを使って計算させるようにすると、一か所の数値を変更するだけで済みます。

Integerは整数、Valueには少数を入れることができます。後から変えるかもしれない数値はここに入れておくと便利です。
Subtractは引き算、Multiplyは掛け算です。(この二つはまずMathノードを出して、計算方法を選択することになります。最初はAdd(足し算)になっています)
右図のように後からチョコブロックを簡単に増やしたり減らしたりできます。

④チョコの土台を作る
チョコの土台を作るために、Cubeのノードを出します。サイズを見ながら作りたいのでGroup Outputにつないでください。サイズをチョコ全体のサイズに調整します。Xは0.07×3=0.21、Yは0.1×4=0.4、Zは高さですが、0.02くらいにしておきます。
平べったい板ができたので、今まで作ってきたチョコブロックと合体させます。Join Geometryノードでつなぐと同じジオメトリとして作業できるようになります。

チョコの板の位置を調整する
チョコブロックの面が、薄い板に少し埋まりすぎているのでSet Positionノードをつないで高さを調整します。

Zに0.005といれて少しだけ上方向に移動させます。ほんの少しチョコブロックに隙間ができるくらいがいいんじゃないかと思います。
これでチョコレートの形は完成しました!
⑤マテリアルをつける
ジオメトリノードで作った形にマテリアルを付けるには、Set Materialノードで作成したマテリアルを設定する必要があります。

なので、まずマテリアルプロパティでチョコのマテリアルを作成し、適当に色など茶色に設定します。
それから、ジオメトリエディタで、join Geometryノードの後に、Set Materialノードを追加して、作ったマテリアルを選択します。
もっとリアルにしたいとき

もっとリアルなチョコレートがいいというときは、マテリアルシェーダーで、Noise TextureとBumpノードをつなげて、少し表面の凹凸をつけてみてください。
完成!!
ライトなどをいい感じに当ててレンダリングすると、結構おいしそうなチョコレートができます。
ジオメトリーノードが使えるようになると、わざわざ一つ一つのブロックを作ったり、並べなくても簡単に形を作ることができます。
慣れるまで少し勉強が必要ですが、とても楽しいし、失敗してもノードをつけたり外したりするだけで修正できるのでやり直しが何度でもできます。

ジオメトリノードを最大限に活かす
チョコレートジェネレーター作成へ
Group Inputは今回使わず放置していましたが、ここにノードをつなげることで、モディファイアプロパティの画面から数値を操作することができます。
例えば、今回チョコブロックを縦、横に何個並べるか、幅と高さなどの値をMathノードで計算してCubeやGridなどに入力するようにすれば、この値を変えるだけで、いろんなサイズのチョコレートを簡単に何個も作ることができます。

やってみたいという方は、以下にノードをわかりやすいように組んだ画像を載せておくのでチャレンジしてみてください。

Group Inputのラベルをわかりやすいように変えたい場合は、右側のGropuタグ内にソケットの名前を変えるところがありますので変更してみてください。
他にも値のタイプ(型)を変えたり、デフォルトの値を設定できたりもします。

ジオメトリーノードは最初はただ見よう見まねでノードをつないで作ってみてください。そして慣れてきたら、どうしてこのノードをつなぐのか、どうしてこういう計算をするのかを少しずつ考えるようにしていくと、グンと上達します。