Substance 3D Painterで使用可能なハイ/ローメッシュのマッチング(Match)のメッシュ名ごと(By Mesh Name)という機能を紹介します。
1 メッシュ名ごと(By Mesh Name)とは
Substance 3D Painterでベイクをする際に、メッシュ同士の距離が近いとノーマルマップなどが貫通してしまうことがありますが、ハイ/ローメッシュのマッチング(Match)のメッシュ名ごと(By Mesh Name)という機能を使用すると、ローポリゴンメッシュとハイポリゴンメッシュでメッシュの名前が同じもの同士だけでベイクを行い貫通を防ぐことができます。
画像1左側では矢印の部分で他のメッシュが貫通していますが、メッシュ名ごと(By Mesh Name)を使用すると画像1右側のように貫通を防ぐことができます。
2 メッシュ名ごと(By Mesh Name)の使用方法
ここでは説明用にBlenderのモンキー(Monkey)を使用します。
2.1 Blenderでローポリゴンメッシュの作成
Blenderで追加(Add)>メッシュ(Mesh)からモンキー(Monkey)を追加したら編集モード(Edit Mode)に切り替えて、リンク選択(Select Linked)などを使用して目の部分だけを選択します(画像2参照)。
選択した目の部分を分離(Separate)>選択(Selected)で別のオブジェクトとして独立させます(画像3参照)。
オブジェクトモード(Object Mode)に戻してアウトライナー(Outliner)を確認すると、頭のオブジェクトの名前が「Suzanne」で目のオブジェクトの名前が「Suzanne.001」となっているはずですが、これを「head_low」と「eye_low」に変更します。
さらに「low」と名前を付けたコレクション(Collection)を追加して「head_low」と「eye_low」をここに入れておきます(画像4参照)。
これでローポリゴンメッシュは完成したので、「head_low」と「eye_low」を選択した状態でOBJ形式やFBX形式でエクスポートします。
エクスポート時のファイル名は好みで付けて構いません。
ローポリゴンメッシュを作成する際のポイントはすべてのオブジェクトの名前の最後に「_low」を付けることです。「_low」の前の部分は好みで付けて構いません。
2.2 Blenderでハイポリゴンメッシュの作成
今回の例ではローポリゴンメッシュを複製してハイポリゴンメッシュとして使用します。
コレクション(Collection)の「low」にカーソルを合わせて右クリックするとコレクション(Collection)というメニューが表示されるので、コレクションを複製(Duplicate Collection)を選択してコレクション(Collection)ごとを複製します(画像5参照)。
名前をコレクション(Collection)の「low」を「high」に、オブジェクトの「head_low」と「eye_low」を「head_high」と「eye_high」に変更します(画像6参照)。
これでハイポリゴンメッシュは完成したので、「head_high」と「eye_high」を選択した状態でOBJ形式やFBX形式でエクスポートします。
こちらもエクスポート時のファイル名は好みで付けて構いません。
ハイポリゴンメッシュを作成する際のポイントは、ローポリゴンメッシュに合わせてハイポリゴンメッシュの名前をすべて「〇〇_high」で対応させることです。
ローポリゴンメッシュとハイポリゴンメッシュを名前で区別するために例えば「_L」と「_H」などではなく「_low」と「_high」を使用するのは、Substance 3D Painterで「_low」と「_high」を使用するようにデフォルトで設定されているためです。
2.3 Substance 3D Painterでベイク
Substance 3D Painterでローポリゴンメッシュとして使用するモンキー(Monkey)を読み込み、モード(Mode)の切り替えやCtrlキー+Shiftキー+Bキーなどを使用してメッシュマップをベイク(Bake Mesh Maps)の画面を表示します。
メッシュマップ設定(MESHMAP SETTINGS)のハイポリパラメーター(High poly parameters)の高精細メッシュ(High Definition Meshes)に(画像7参照)、ハイポリゴンメッシュとして使用するモンキー(Monkey)を設定します。
出力サイズ(Output Size)はここでは4096に設定して、その他の設定はそのままにしておきます。
2.3.1 常にオン(Always)でベイク
ハイ/ローメッシュのマッチング(Match)の常にオン(Always)とメッシュ名ごと(By Mesh Name)の違いが分かるように、初めはデフォルトの常にオン(Always)を選択して(画像8参照)ベイクします。
テクスチャをベイク(Bake selected textures)を押してベイクを行い、完了したらF3キーなどを使用して2Dのみ表示して、メッシュマップ(Mesh maps)のNormalに表示を切り替えます(画像9参照)。
ハイ/ローメッシュのマッチング(Match)の常にオン(Always)では、ローポリゴンメッシュとハイポリゴンメッシュの頭と目の部分を同時にベイクするため、目の部分を確認すると画像10のように、頭の部分が貫通してベイクされていることが確認できます。
2.3.2 メッシュ名ごと(By Mesh Name)でベイク
今度はハイ/ローメッシュのマッチング(Match)をメッシュ名ごと(By Mesh Name)に変更して(画像1参照)ベイクしてみます。
ハイ/ローメッシュのマッチング(Match)のメッシュ名ごと(By Mesh Name)では、ローポリゴンメッシュとハイポリゴンメッシュをメッシュ名で区別してベイクします。今回使用した例では、ローポリゴンメッシュとハイポリゴンメッシュの頭と目の部分を別々にベイクするため、画像12のように目の部分に貫通がなくなります。
2.4 AOマップの貫通について
メッシュマップ(Mesh maps)をAmbient occlusionに表示を切り替えます(画像13参照)。
目の部分を確認すると、画像14のように頭の部分で隠れているところが影になっていることが確認できます。
この影をなくしたい場合はメッシュマップベイカー(MESH MAP BAKERS)でAmbient occlusionを選択して(画像15参照)、
メッシュマップ設定(MESHMAP SETTINGS)の自己オクルージョン(Self Occlusion)を常にオン(Always)から同じメッシュ名のみ(Only Same Mesh Name)に変更します(画像16参照)。
再度ベイクすると、画像17のように影になっていた部分がなくなります。
CurvatureマップやThicknessマップなどの場合も同様に設定してください。
AOマップなどの貫通に関しては、常にオン(Always)と同じメッシュ名のみ(Only Same Mesh Name)のどちらを使用するのかは作品次第だと思うので、好みで選択してください。
3 補足
3.1 名前について
3.1.1 Blenderで付ける名前
Blenderではオブジェクトの名前の他にメッシュデータ(Mesh Data)またはメッシュ(Mesh)というものがありここにも名前がついています。
例えばこの記事で作成した「eye_low」と「head_low」をアウトライナー(Outliner)で確認すると、それぞれの下層に「Suzanne.001」と「Suzanne」というメッシュデータ(Mesh Data)についた名前があります(画像18参照)。
ハイ/ローメッシュのマッチング(Match)のメッシュ名ごと(By Mesh Name)を使用する際に名前の対応が必要なのはオブジェクト名だけで、メッシュデータ(Mesh Data)の名前は対応していなくても問題ないようです。
Blenderのオブジェクトはメッシュとイコールとは言えないのですが、メッシュ名ごと(By Mesh Name)の使用に関してはBlenderのオブジェクト名がSubstance 3D Painterのメッシュ名に対応しています。
3.1.2 Substance 3D Painterのサフィックス(Suffix)
Substance 3D Painterでメッシュの名前に付けるサフィックス(Suffix)(=接尾辞)はデフォルトで「_low」と「_high」になっていますが、ボックスに入力することで「_L」と「_H」などに変更することも可能です(画像19参照)。
サフィックス(Suffix)を変更した場合は、メッシュの名前も同じサフィックス(Suffix)にする必要があります。
例えばサフィックス(Suffix)を「_L」と「_H」に変更した場合は、メッシュ名も「head_L」と「head_H」とします。
3.1.3 大文字と小文字の区別
名前に付ける大文字と小文字は区別されます。
Blenderでオブジェクトに名前を付ける際に「head_low」と「Head_low」のようにするとエラーになるので注意してください。
以上、Substance 3D Painterの「メッシュ名で指定してベイクする方法」でした。
コメント