はじめに
GLTFやGLBを作る際、データ容量やリアルさとの戦いで日が暮れる日々かと思います。
本稿ではマテリアル設定に焦点を当てて、より良いデータの作成方法をご紹介いたします。
使えそうな裏技が見つかったら更新していく予定です。
前提
- Blender 3.6以上(下位バージョンでは検証していないだけです。)
- 基本的なマテリアル設定ができる
レンダラをEeveeに設定しておいてください。
他の3Dソフトをご使用の方にも役立つ内容かと思います。
アンビエントオクルージョン(AO)テクスチャの割り当て方法
プリンシプルBSDFではAOテクスチャの割り当て先が無いため、glTF Material Output
という特殊なノードを使います。
よくチュートリアル等で既存のGLTFからコピーして、という方法が紹介されていますが、実はただのグループノードであり一から作ることが可能です。
AOテクスチャは本来グレースケールですが、Blenderマニュアルにある通り
(R)AO (G)ラフネス(粗さ) (B)メタリックを合体させたRGBテクスチャを使うことも可能です。
説明
適当なノードでグループを作り、グループ入力
とグループ出力
のパラメータをすべて削除
グループ入力
に以下を設定
Occlusion
(Float)
Thickness
(Float)
Specular
(Float)
Specular Color
(カラー)デフォルト白(#FFFFFF)
Tabキーで戻り、参照しているノードツリーの名前をNodeGroup
からglTF Material Output
に改名
画像テクスチャ
(カラー)→
(カラー)カラー分離
(赤)→
(Occlusion)glTF Material Output
で繋ぐ
テクスチャ画像をタイル状に並べる方法
生地や柄模様など、同じ模様が並んでいる場合に
全体的な1枚のテクスチャ画像にせず、部分的な小さな画像を並べて作る方法です。
縦横等サイズである必要はなく、縦だけ短くして並べるということも可能です。
説明
UVマップ
(UV)→
(ベクトル)マッピング
(ベクトル)→
(ベクトル)画像テクスチャ
で繋ぐ
マッピングのスケールX
、Y
の値を変更
※位置や回転の変更も保持されます。
テクスチャに単色を上乗せしたベースカラー(アルベド)の設定方法
インテリアなどで、ベースの模様は同じであるもののパーツによって色味を変えたい時、1枚のテクスチャ画像を使いまわすことで色ごとに作らず済む方法です。
※テクスチャ画像にテクスチャ画像を上乗せすることはできません。単色のみ可能です。
※あくまでも単色が上乗せされるものであり、1枚のテクスチャ画像の中で複数個所の色を個々に変えることはできません。
説明
画像テクスチャ
(カラー)→
(A)ミックス
(結果)→
(ベースカラー)プリンシプルBSDF
で繋ぐ
ミックスのFloatをカラー
、ミックスを乗算
、係数を1
、B
の色を上乗せしたい色に変更
※ミックスはエクスポート時にColor Factorに名前が変わりますが同じものです。
所感
記載の内容はAR等、WebXR環境 / 古いThree.jsが使われている / glTF 2.0 Extensionが組み込まれていないといった場合に反映されない可能性が無くもないので事前にテストをおすすめします。
GLTFはバンプマップが使えなかったり足りない要素もありますが、それでも汎用3Dデータとは思えないくらい多くの要素を保持できるので凄いですよね。