Generating Blender Geometry Nodes and 3D Models from Natural Language: Usability of My Custom Blender Add-on (Part 6)
As the final test for my custom Blender add-on, I evaluated the process of generating Geometry Nodes and 3D models based on prompts provided by ChatGPT. The results were successful in terms of practicality for 8 out of the 9 tasks. The significance of this add-on is shifting: it is evolving from a mere "Python generation system for creating finished 3D models via natural language" into a tool that facilitates a workflow of "creating a prototype from natural language, followed by iterative rounds of modification and refinement until the final product is achieved."
自作Blenderアドオン開発テストの最終番として、ChatGPTからいただいたお題でgeometry nodes生成→3Dモデル生成をテストしました。9問中8問で実用性合格です。このアドオンの意義は単なる「自然言語による3D完成品作りのためのPython生成システム」から、「自然言語による祖型作成→修正改変→修正改変→修正改変→完成品プロセス」のためのツールに変化しています。
この記事は2026.07.12記事「感動 自然言語での「風で揺れる草原」生成 自作Blenderアドオンの使い勝手 その5」の続きです。
1 事例1 Scatter
事例1は2026.07.12記事「感動 自然言語での「風で揺れる草原」生成 自作Blenderアドオンの使い勝手 その5」で説明した内容です。
2 事例2 道路生成
●プロンプト:Bezier Curveを追加してください。Geometry Nodesで道路を生成してください。道路幅は4m。カーブに沿って道路が作られるようにしてください。カーブを編集すると道路形状も更新されるようにしてください。
●ChatGPTの作業方針:Blender unit = 1m として、編集可能な Bezier Curve を追加し、そのカーブに Geometry Nodes モディファイアを設定します。Geometry Nodes 内で幅4mのプロファイル線を Curve to Mesh でカーブに沿わせ、カーブ編集時に道路メッシュが自動更新される構成です。
2.jpg(Blender画面)
3 事例3 フェンス生成
●Bezier Curveを追加してください。Geometry Nodesで木製フェンスを作ってください。柱は2m間隔。柱の間に横板を3枚配置してください。カーブを編集するとフェンスも変化してください。
●ChatGPTの作業方針:新規作業として、Bezier Curveオブジェクトを作成し、そのカーブ入力を使うGeometry Nodesモディファイアを追加します。柱はカーブに沿って約2m間隔で生成し、横板は3段の連続した木製板としてカーブに追従します。カーブの制御点を編集すると、Geometry Nodesによりフェンス形状も更新されます。
3.jpg(Blender画面)
4 事例4 ランダム岩場
●プロンプト:Plane上に大小様々な岩をランダム配置してください。Geometry Nodesだけで生成してください。岩はIcosphereを変形して作成してください。岩同士は重ならないようにしてください。
●ChatGPT作業方針:新規スクリプトとして作成しました。PlaneにGeometry Nodesモディファイアを追加し、Plane面上にPoisson Disk分布で点を生成して、Icosphere由来の岩メッシュをインスタンス化・ランダム拡縮・回転・ノイズ変形します。岩の最大半径より十分大きい最小点間距離を設定して、岩同士が重ならない安全な配置にしています。
●エラーが出て送信:Python: Traceback (most recent call last): File "G:\パソコンとソフト\ChatGPT\20260625Blenderアドオン改良\UI版バージョン3開発\k9rtest14.blend\gpt_generated.py", line 234, in <module> File "G:\パソコンとソフト\ChatGPT\20260625Blenderアドオン改良\UI版バージョン3開発\k9rtest14.blend\gpt_generated.py", line 38, in set_socket_default File "G:\パソコンとソフト\ChatGPT\20260625Blenderアドオン改良\UI版バージョン3開発\k9rtest14.blend\gpt_generated.py", line 28, in get_socketTypeError: 'int' object is not iterable
●ChatGPTの作業方針:前回エラーは、ソケット取得関数が整数指定を想定しておらず、`int`を反復処理しようとして発生していました。今回はソケット名・複数名・インデックス指定のすべてに対応する安全な関数に修正し、Geometry Nodes全体を再構築する完全スクリプトとして出力します。Plane上にPoisson Diskで点を配置し、Icosphereをノイズ変形した岩をランダムスケール・ランダム回転でインスタンス化します。
●特記事項:Random Rock Scale X、Y、ZがCombine Non Uniform ScaleのXYZにつながれていなかったので、手作業でラインをつなぎ完成品となる。
4.jpg(Blender画面)
5 事例5 成長する木
●プロンプト:Geometry Nodesで樹木を作成してください。幹から枝が分岐し、枝からさらに枝が分岐するようにしてください。乱数で自然な形状にしてください。
●ChatGPTの作業方針:ランダムな再帰分岐で「幹→枝→小枝」を作る曲線スケルトンを生成し、それをGeometry Nodesの「Curve to Mesh」で太さ付きの木として表示するスクリプトです。枝先には簡易的な葉メッシュも追加します。毎回少し違う自然な形になります。
5.jpg(Blender画面)
6 事例6 縄文土器片ランダム配置
●プロンプト:Plane上に縄文土器片を500個ランダム配置してください。Geometry Nodesで作成してください。大きさはランダム。回転もランダム。重なりは少なくしてください。密集する場所と疎らな場所を自然に作ってください。
●ChatGPTの作業方針:Plane上に500個の縄文土器片を配置します。配置点・サイズ・回転・種類番号はPythonで安全に生成し、Geometry Nodesでは点群オブジェクト上に土器片プロトタイプのコレクションをインスタンス化します。重なりを減らすため簡易Poisson風の距離チェックを行い、クラスター中心を混ぜて密集・疎らの自然な分布を作ります。
●エラー送信:縄文土器片が一カ所に塔のように積み上がっています。縄文土器片をPlaneの上に平面的に配置して、密集とまばらを作ってください。
●ChatGPTの作業方針:前回の「一カ所に塔のように積み上がる」原因を避けるため、500個分の配置点をXY平面上の点メッシュとして明示的に作り、各点にスケール・Z回転・プロトタイプ番号属性を持たせました。Geometry Nodesではその点に対して土器片プロトタイプのコレクションを「Separate Children / Pick Instance」で平面的にインスタンス化します。密集と疎らはクラスタ分布+距離チェックで生成し、重なりを抑えています。
●特記事項:点が小範囲で立体的に分布するものになり、結局望む3Dモデルは出来なかった。別に2回トライしたが、いずれも使える結果にならなかった。「密集する場所と疎らな場所を自然に作ってください。」という言葉の意味をChatGPTが誤解している可能性を感じる。
6.jpg(Blender画面)
7 事例7 貝層
●プロンプト:Geometry Nodesで貝層を作成してください。Plane上に二枚貝をランダム配置してください。一定方向にやや配向してください。層厚30cm程度。部分的に密度を変えてください。
ChatGPTの作業方針:Blender 4.4.3でそのまま実行できる新規スクリプトです。Plane上に、30cm程度の層厚を持つ貝層ボリュームを作り、二枚貝形状をランダム配置します。配向は一定方向へ弱く揃え、密度は高密度・低密度パッチで部分的に変化させています。対象PlaneにはGeometry Nodesコントローラ用モディファイアも付与します。
7.jpg(Blender画面)
8 事例8 石器散布
●プロンプト:Plane上に石器を100個散布してください。谷状に密集するようにしてください。Geometry Nodesで作成してください。
●ChatGPTの作業方針:Geometry NodesモディファイアをPlaneに作成し、別途用意した100頂点のポイントメッシュを参照して石器コレクションをインスタンス散布します。ポイントは蛇行する谷筋に沿って生成しているため、Plane上で谷状に密集します。石器は複数の低ポリゴン石器メッシュを作成し、Geometry Nodes側でランダムに選択・回転・スケールします。
8.jpg(Blender画面)
9 事例9 樹木林
●プロンプト:Plane上に樹木を配置してください。林縁では密度を低くしてください。中央部は密度を高くしてください。
●ChatGPTの作業方針:XY平面上の「Plane」を対象にし、存在しない場合は新規作成します。中央ほど採用確率を高く、外周ほど低くするリジェクションサンプリングで樹木を配置し、林縁の密度を低くしています。既存オブジェクトは削除せず、前回生成した同名コレクションのみ作り直します。
●特記事項:プロンプトにgeometry nodesをふくんでいないので、geometry nodesが使われないで、3Dモデルが生成した。
9.jpg(Blender画面)
10 メモ
10-1 結果
プロンプトからそのままgeometry nodes→3Dモデルができたもの。6件(2、3、5、7、8、9)
軽微な手作業追加でgeometry nodes→3Dモデルができたもの。1件(1)
エラーがでたが、エラー克服してgeometry nodes→3Dモデルができたもの。1件(4)
3Dモデルが出来なかったもの。1件(6)
10-2 評価
出来上がったものが望み通りとはかぎらないが、予想以上の好成績といえる。BlenderChatGPTUI版のgeometry nodes生成能力は素晴らしいもので、十分に実用的であるといえる。この能力をいかに引き出すプロンプトを用意するかというユーザーサイドの能力向上が求められる。またgeometry nodesを思い通りに改変して行く上で、ユーザーにgeometry nodes組み立て技術の基礎が求められる。
3Dモデルが出来なかったものは「いい線まで」行っていて、プロンプトを適切に改変するなど、じっくりユーザーが取組めば完成できる可能性を感じる。今後プロンプトを「祖型生成+対話的改良」のプロセスに区切って、試したい。
10-3 感想
このアドオンの意義は単なる「自然言語による3D完成品作りのためのPython生成システム」から、「自然言語による祖型作成→修正改変→修正改変→修正改変→完成品プロセス」のためのツールに変化している。
ChatGPT(web版)と私とのBlenderアドオン開発に関する考え方の調子が合ってきている。








0 件のコメント:
コメントを投稿