🌟

【Blender】ゲームVFXメッシュ球ジェネレータの作り方 ジオメトリノード編

2023/09/01に公開

◯概要

【もここのBlender VFXメッシュ自由研究】
この前はポリゴンモデリングでVFX向けの球メッシュを作りましたが、一応ジオメトリノードでの球ジェネレータの作り方も書き残しておこうと思います。
(数週間前に作って放置していたら、既にだいぶ忘れかけていたので…(^ ^;;))

◯環境

Blender 3.4.1(メッシュ制作)

◯今回球メッシュを作る作戦

・UV球を追加(ジオメトリノード)

+UV設定
+頂点カラー、アルファ設定
+入力値をパラメータ化
+ノーマル設定
など

◯球メッシュジェネレータの作り方(ジオメトリノード)

今回作るノードの全体像はこんな感じです。

▼1.適当なメッシュを作る

ジオメトリノードを適用するためのメッシュを追加します。

・「Geometry Nodes」ワークスペースでPlaneなど適当なメッシュを追加します。(このメッシュ自体は使わないので正直なんでもOK)

▼2.わかりやすくリネーム

わかりやすく名前をつけておきましょう。
今回はわかりやすく「SM_SphereBlenderGN_000」とリネームしておきました。

▼3.新規GeometryNodeを作成(以降ジオメトリノードの作業です)

・「New」ボタンをクリックして新規ジオメトリノードを追加
どのメッシュで使われているかわかりやすいように「SM_SphereBlenderGN_000」とリネームしておきました。

・もとから入っている「Group Input」(Planeのメッシュが入っている)は使わないので削除でOKです。(何もなくなって正常ですw)

▼4.ノードでUV球を作成する

・「Shift + A」でノード検索 → 「UVSphere」でUVスフィアを錬成できます。

▼5.マテリアル適用

以前の記事で作成した汎用マテリアルを適用していきます。
まだ作ってない場合は↓を作っておきましょう。
https://zenn.dev/animamococo5656/articles/63190887887aa7

・「Set Material」のノードを繋いで、作っておいた「MT_VFXMeshUVMap_Checker」を適用しておきます。
このマテリアルの「UVMap」と「color」アトリビュートにジオメトリノードから値を送ります。

▼6.UV設定(Blender確認用にキープ)

・「Store Named Attribute」「Combine XYZ」「Multiply Add」「Separate XYZ」「Named Attribute」ノードを追加して、↓のように繋ぎます。

するとこんな感じでテンプレマテリアルの模様が表示されましたね!

▼7.頂点カラー、アルファ設定

「Store Named Attribute」「ColorRamp」ノードを追加して、色を設定しておきます。
「Store Named Attribute」はColor、Pointにして、「color」の名前でキープしましょう。

球の極にフェードがかかりました。
基本はこれで完成です!

ーーー
あとは、追加でいくつか設定しておくと良さそうかな~と思ったのでついでに機能追加しておきました。

▼8.(機能追加)サイズ変更

「Scale Elements」「Vector」ノードを追加して、↓のように繋ぎます。

ポリゴンモデリングと同様にノードでも全体のスケール調整ができます。
ジオメトリノードの場合はこっちのほうが便利です!

▼9.(機能追加)不要なアトリビュート削除

スプレッドシートを見ると色んな名前の値(アトリビュート)が入っています。

が、実際最終的に不要な値もいくつかあるのでそれは削除しておきます。
今回の場合、最初にUVSphereノードで自動生成された「uv_map」のアトリビュートは、「UVMap」として格納したので、「uv_map」は削除してもOKです。
・「Remove Named Attribute」ノードを追加して、「uv_map」と入力するとこのアトリビュートが削除されます。

▼10.ジオメトリノードのパラメータ化

ジオメトリノードを使いまわそうとしたときに、UV球の割数やスケール値など調整できたほうが便利なので、パラメータ化しておきます。

ーーー
<入力の削除>
・まず、「N」キーでサイドメニューバーを開きます。
「Input」という項目が、入力パラメータです。

・最初からある「Geometry」は、はじめに仮でおいたPlaneメッシュのことなので削除してしまってOKです。右の「-」ボタンから削除できます。

<パラメータの追加>
・「+」ボタンでパラメータを追加できます。

・今回は球の分割数(SegmentsとRings)用に、
以下のようなパラメータを追加します。
 →「Integer:整数」
 →名前
 →デフォルトと最大最小値を設定
・モディファイアプロパティでInputsの値を設定できます

・Group InputでInputsのパラメータを使用できます。
「Segments」と「Rings」に繋げばOKです!

・パラメータの値を変えるとUV球の分割数が変わります。

ーー
・同じように他のパラメータも設定しました。

ーーー
これでひとまずジオメトリノードでの編集は終了です。

◯FBX書き出し準備

書き出し設定をしていきます。

↓参考
https://zenn.dev/animamococo5656/articles/e2c4d32d6f7dfd
 ・1.編集メッシュを複製
 ・2.ジオメトリノード適用
 ・2.5.ノーマルの設定
 ・3.トランスフォームのフリーズ
 ・「▼4.UVアトリビュート適用」
をすべて行いましょう。

これで球の完成です!

◯まとめ

以前作ったデータを見ながら改めて今回作り直してみましたが、前はだいぶ理解が始めた頃はだいぶ理解が怪しかったな~と思いました。

▼手順的には以下です。
・UV球を追加(ジオメトリノード)
・UVを設定
・入力値をパラメータ化

+UV設定
+頂点カラー、アルファ設定
+ノーマル設定
など

ーーーーー
少し触らないとまた同じ状態になりそうなので、
数カ月後の自分がこれ見ながら思い出せるように残しておければなと…。そんな感じでした~^ ^

次回は、球、ドーム、リングジェネレータのジオメトリノード編でもメモしておこうかと思います。
(地味にHoudiniと同じことができないか色々模索した内容です。テクニックメモとしては試してみて良かったですが、色々情報見つけるのにまぁ時間がかかっt。。。)

Discussion