lunarborの備忘録

CGソフトの使い方を記録しておけば自分とどこかの誰かに役立つだろう

3D-COATでペイントしたテクスチャをLightwaveで読み込んでレンダリングしたいという話

使用ソフト

  • Lightwave2020
  • 3D-COAT2022

3D-COATで行ったPBRペイントをLightwaveで再現するために必要なテクスチャの種類と書き出し。Lightwaveでの読み込みとノードでの繋ぎ方の記事です。

※一部設定方法の誤りに気づいたので修正いたしました。(2022_10_07)

■PBRマテリアルを使ってペイントをする

3D-COATのPBRマテリアルを使ってオブジェクトにペイントします。

この見た目をLightwaveで再現できるように設定を模索します。

 

■環境設定で法線マップ関係の項目を設定をしておく(修正2022_10_07)

"編集"メニュー"環境設定""入力/出力"タブにある法線マップに関係する項目を設定してプリセットを作っておきます。Lightwaveに読み込むに当たって特に重要な項目は"法線マップのエクスポート"です。ここを"3D-MAX,LW"にします。(青枠)

※修正(2022_10_07)"法線マップのエクスポート""Maya"を選んでください。詳しくはこちらの記事を御覧ください。

lunarbor.hatenablog.com

他の項目は変更しても違いを見つけられなかったため、デフォルトのままにしてあります。

(2022_10_07)

(2022_10_07)

"法線マップのエクスポート"を変更すると法線マップの緑チャンネルが反転するため描画結果が明確に変わります。詳しくは3D-COATのフォーラムに言及がある部分を拾って来ましたので下部のリンクを参照してください。

 

>>なぜそんなに多くのノーマルマップオプション?

3dcoat.com

>>3D Coat から Maya への法線マップのエクスポート

「編集」-「設定」に移動し、「法線マップのエクスポート」を見つけます。デフォルトの標準は「Maya、Blenderで、「3DS-Max、LW」を選択できます。

これら 2 つの法線マップ標準の違いは、緑のチャネルが反転していることです。

3dcoat.com

>>ModoのappLink

Modo はデフォルトで DirectX ではなく OpenGL の方法で法線マップを解釈し、これら 2 つは逆に緑のチャンネルを解釈することを読んでください (UV 空間の y 軸が反転しているため)。
したがって、Modo で緑のチャンネルを反転することも 1 つのオプションです - ヒントをありがとう!
もう 1 つのオプションは、3D-Coat 内からエクスポートするときに緑のチャネルを反転することです。これは、環境設定の「法線マップのエクスポート」を「Maya、Blender」に設定することで実行できます。

なので、「Maya、Blender」は「OpenGL」方式の法線マップ
、「3DS-Max、LW」は「DirectX」方式の法線マップに相当するようです。

3dcoat.com

 

Lightwave用のエクスポートプリセットを作る

※ここの設定は英語UIで行った方がわかりやすいので画像は英語にしてあります。*1

プリセットの設定方法

ペイントルームの"ファイル"メニュー、"モデルのエクスポート(obj,lwo)"からテクスチャをエクスポートします。プリセットの中に"Lightwave"は無いため自分で作る必要があります。とりあえず汎用性がある"Pbr(metalness)"を選び、横の"New Preset"を押して"lightwave(PBR)"等の任意の名前をつけて"OK"押します。これで新しいプリセットが追加されます。このプリセットを編集して好みのものを作っていきます。

まずは"Nomal map preset"で前章で作った"法線マップのソフトウェアプリセット"と同じものをを選んでおきましょう。

 

プリセットの編集項目の設定方法について簡単に説明しておきます。

プリセットを選択します。

新しくプリセットを作りたい時は"New Preset"を押して任意の名前をつけて"OK"を押します。

設定項目を変更して"Update/Save"を押せばプリセットの内容が更新されます。

プリセットの名前を編集したい時は"Rename"を押して任意の名前を入力して"OK"を押します。そのままだと表示が切り替わらないので、一旦、他のプリセットを選んで読み込んだ後に、もう一度目的のプリセットを選んで読み込みます。

"編集"メニュー"環境設定""入力/出力"タブにある"法線マップのソフトウェアプリセット"で設定しているものと同じものを選びます。

テクスチャを追加したい時は"Add texture"を押すと最下部に新規項目が追加されます(青枠)

出力画像にアルファを付けるかを選びます。他のプリセットを見てみるとアルファが必要なのは"Color"のテクスチャのみのようです。

出力するテクスチャの種類を選びます。以下の画像にあるもので全種類です。

出力される画像の名前に任意の文字列を付加できます。Lightwave"principled BSDF"ノードに対応した名称を付けると分かり易いでしょう。すぐ上の黄色い文字列がファイル名です。

出力する画像のファイル形式が選べます。

"X"を押すとそのテクスチャを削除できます。

必要な項目を抜き出す

"Texture list"で選べる項目には名前や意味がLightwaveと共通するものが複数あります。とりあえずLightwave"principled BSDF"ノードに対応しそうな項目を全て抜き出してみます。

そこから複数のサンプルを作ってテストを繰り返した結果、下のような結論になりました。

赤枠は"必須"。緑枠は"必要に応じて使用"。白枠は"おそらく不要"。です。

赤枠

"Color(albedo)" "Roughness" "Specular Intensity" "Metallness" "Tangent space normalmap" "Displcement" この6つを書き出しておけば概ね良い結果が得られると思います。

○緑枠

"Specular Tint" "Glossiness"は金属やプラスチックなど光沢のある質感でより違いが確認できると思います。逆に木材や布、岩のような艶のない質感では効果が薄いので不要かもしれません。"Ambient Occlusion"は直接つなぐ項目がありません。AO自体はLightwaveでも"Occlusion"ノードを使って生成できるため、このテクスチャを使う事は必須ではありませんが利点はあります。それについては別記事で解説する予定です。

○白枠

"Emissive Power(mono)" "Emissive(with color)"は電球のようにオブジェクトが自ら発光するような表現。"Index Of Refraction"はガラスのような透明な素材に光が透過する時の屈折率に基づいた表現。いずれも3D-COATのペイントでは表現できないであろうパラメーターなため不要と判断しました。ただ、現状で自分が知らないだけかもしれません。もしそのような表現が可能な時は使用してみてください。

 

Lightwave"principled BSDF"ノード各項目の詳細については以下の公式マニュアルを参照してください。

https://docs.lightwave3d.com/lw2020/reference/surfacing/node-editor/materials/principled-bsdf

docs.lightwave3d.com

 

Lightwaveでノードを組む

テクスチャ画像の下準備

先に"画像編集"パネルを開いて3D-COATからエクスポートしたテクスチャを全て読み込んでおきます。

"名称"項目で"color"テクスチャを除く全てを選択して"RGBカラースペース""Linear"に変更します。"color"テクスチャは"sRGB"等そのシーンで表示やレンダリングに使用するカラースペースを選択します。(※ここの設定は"D"キーを押して表示される"プリファレンス""CS(カラースペース)"タブの設定と連動しています。)

特に"Normal Map"テクスチャは"RGBカラースペース"を必ず"Linear"にしてください。

そうしないとテクスチャがシームを境に綺麗につながらなくなります。

この現象については以下の3D-COATのフォーラムのスレッドでも言及があります。

>>醜い UV シームを示す Lightwave の法線マップ

問題は、3D Coat が法線マップを保存するときに法線マップのカラー スペースがリニアに設定されていないことです。ライトウェーブにはそれが必要です。

3dcoat.com

ノードを組む

Lightwaveでノードのつなぎ方はこの様になりました。

テクスチャを読み込んでいるノードで"Normal map"ノード以外は全部"Image"ノードです。ノードのタイトルはわかりやすいように自分で変えています。

"Normal Map""Bump""サーフェイスノード(sphere)"に繋いでありますが"マテリアルノード(principled BSDF)"に繋いでもかまいません。

"cleacoat"テクスチャは"Clearcoat""Clearcoat Gloss"の両方に繋ぎます。

"AO"テクスチャは直接つなぐ項目が無いため"color"テクスチャに乗算で重ねるように繋いであります。("Color""Image"ノードのオプションを開いて"ブレンドモード""乗算"に変更。)

"bump"テクスチャは"バンプの振り幅"の値がデフォルトの"100"だと強すぎるので"1"に変更してあります。この設定だけはモデルによって調整が必要です。

他のテクスチャはデフォルトの設定のまま繋いだだけです。

レンダリング結果

以下がこのノードによってレンダリングした結果です。3D-COATのレンダリング画像も並べておきます。(球体の部分はLightwaveのLayoutで角度を変えています)。

ライティングの違いによる差異はありますが、概ね酷似した結果が得られていると思います。

"環境ライト""ライトの明るさ" 80%

"平行ライト""ライトの明るさ" 3.14lx(デフォルト値)

■サンプルギャラリー

今回、1つのオブジェクトを3つの部位に分けてそれぞれ別のPBRマテリアルでペイントしたものを、7つ作ってテストを行いました。どれも概ね酷似した結果が得られたと思います。

"Bump"テクスチャの"バンプの振り幅"の値以外は全て同じ設定です。

※大きく拡大して細部を見たい場合は画像をダウンロードしてください。

■予告

次回「3D-COATから書き出したAOテクスチャはLightwaveでどう使えばいいのか考える話」に続きます。

lunarbor.hatenablog.com

■参考

www.youtube.com

www.youtube.com

■注釈

*1:UIの言語は"ヘルプ"メニューの"言語"の項目からいつでも変更可能です。ショートカットキーに"F5""F6"などファンクションキーに割り当てておくと便利です。