最終更新: rt_3dcg_tips 2022年06月29日(水) 12:16:34履歴
Substance Painterの基本的な作業手順と注意事項をまとめてみました
SubstancePainterではモデルを作成することができません。
テクスチャを描くために、MayaやBlenderなどDCCツールにてモデルを作成し、FBXを出力する必要があります。
またFBXは、
ローモデルとハイモデルの2つが必要になります。
ハイモデルは無くてもテクスチャを描くことはできますが、SubstancePainterの便利機能を使うならあった方がよいです。
また、ローモデルを作成する上で注意しなくてはいけないことがいくつかあります。
テクスチャを描くために、MayaやBlenderなどDCCツールにてモデルを作成し、FBXを出力する必要があります。
またFBXは、
ローモデルとハイモデルの2つが必要になります。
ハイモデルは無くてもテクスチャを描くことはできますが、SubstancePainterの便利機能を使うならあった方がよいです。
また、ローモデルを作成する上で注意しなくてはいけないことがいくつかあります。
- UVを取っておく
- 0〜1に収める(UDIMを使わない場合)
- 三角化する
- 気にしなくていいかもですが、三角分割の方向が最終モデルと違うと法線に齟齬が出ます
- ハードエッジ、ソフトエッジを設定
- 三角化と同じ理由です
- 左右対称にする
- ※左右非対称モデルの中心がズレるを参照
- メッシュを分ける
- 各メッシュはハイポリと対の名前にし、接尾辞に_lowなどと付けるのがオススメ
- 例:ローモデル body_low,head_low ハイモデル body_high,head_high
- マテリアルを適切に分けておく
- マテリアル単位でテクスチャを描くため分け方や名前をフィックスした方が楽です
- 口の中など隠れる部分は口を開ける等見えるように
- 同一マテリアルでは部分的にメッシュを隠してペイントするということができないため
- もしくはマテリアルを分ける
- ※メッシュ、ポリゴンが邪魔でペイントできない参照
SubstancePainterを起動します。
ちなみにこれらの設定は
テクスチャ解像度についても劣化することなく大きくしたり小さくしたりできます。
File->Newで新しいプロジェクトの設定を行います。
Template | 使用するエンジンに応じたテンプレートを使用します。無い場合は選ばなくても大丈夫です |
Mesh | ローモデルのfbxを指定します |
Create a texture set per UDIM tile | UDIMを使用する場合はチェック |
Import Cameras | カメラをインポートします |
Normal map format | ノーマルマップタイプを選択 |
Compute tangent space per fragment | タンジェントとバイノーマルをピクセルシェーダーで計算します。エンジンに合わせてチェック |
Document resolution | テクスチャ解像度 |
Import mesh normal maps and baked maps for all materials | 他のツールでベイクしたテクスチャはここに追加します |
ちなみにこれらの設定は
Edit->Project Configurationで後から変更可能です。
テクスチャ解像度についても劣化することなく大きくしたり小さくしたりできます。
以下の仕様は2017までの不具合だったようです。2019では長方形テクスチャも問題なく扱えます。
長方形のテクスチャ(1024*512等)を扱う場合は注意が必要です。
プロジェクトの初期設定で長方形にしてしまうと、ブラシの比率がおかしくなります。
真円のブラシが縦長の楕円になってしまったり……。
こうなると非常に面倒で扱いづらいので、最初は正方形の解像度に設定し、
テクスチャ出力前にTextureSet SettingsのSizeを長方形に変更してからテクスチャ出力することをオススメします。
解像度が変更されるので見た目に若干差異は出ますが……。
TextureSet SettingsのMesh maps
Bake Mesh Maspボタンを押し、ベイクの設定を開きます。
主な設定・注意点は下記のとおりです。
Bake Mesh Maspボタンを押し、ベイクの設定を開きます。
主な設定・注意点は下記のとおりです。
Common parameters | |
---|---|
High Definition Meshes | ハイモデルを指定します |
Average Normals | ハードエッジにノーマルマップをベイクするを参照 |
Match | 複数メッシュある場合は「By Mesh Name」を指定。同名のメッシュ毎にベイクします |
High poly mesh suffix | ハイポリメッシュにつけた接尾辞 |
Low poly mesh suffix | ローポリメッシュにつけた接尾辞 |
Ambient occulusion | |
Ignore Backface | OFFにするとぶっさし部分の内側にもオクルージョンが入ります |
SelfOcclusion | 同名メッシュ毎にベイクしても、全てのメッシュからオクルージョンを計算するようにできます |
細かいことを書くとキリが無いので……
fill layer(塗りつぶしレイヤー)にマスクでペイントするのがオススメです。
フォトショでも同様ですが通常のレイヤーにペイントすると引き継ぎもできず再現性の無いデータが出来上がるので趣味でもないならやめたほうがよいです。というかやめてください(泣)
なるべく3Dビューでペイントするという点も重要です。
そうすることで仮にモデルのUV変更があった場合にも非破壊でペイント情報を引き継いでくれます(逆に形状が変わるのは鬼門)。
2Dビュー(UV)に描くとUV変更した際にペイント情報が欠損してしまいます。
その部分に関してUVを変えないつもりであれば2Dビューに描くのは悪い選択肢ではありません。
また、スマートマテリアルを使用すれば楽にリアルな質感を設定できます(修正も楽です)
色調補正レイヤーを作りたい場合は【SubstancePainterで色調補正レイヤー】を参照
パーティクルは使わなくていいと思います。重いですし。
fill layer(塗りつぶしレイヤー)にマスクでペイントするのがオススメです。
フォトショでも同様ですが通常のレイヤーにペイントすると引き継ぎもできず再現性の無いデータが出来上がるので趣味でもないならやめたほうがよいです。というかやめてください(泣)
なるべく3Dビューでペイントするという点も重要です。
そうすることで仮にモデルのUV変更があった場合にも非破壊でペイント情報を引き継いでくれます(逆に形状が変わるのは鬼門)。
2Dビュー(UV)に描くとUV変更した際にペイント情報が欠損してしまいます。
その部分に関してUVを変えないつもりであれば2Dビューに描くのは悪い選択肢ではありません。
また、スマートマテリアルを使用すれば楽にリアルな質感を設定できます(修正も楽です)
色調補正レイヤーを作りたい場合は【SubstancePainterで色調補正レイヤー】を参照
パーティクルは使わなくていいと思います。重いですし。
ペイントしている最中、UVが変更されたり形状に修正が入るなどしてメッシュを差し替える必要が出てくるかと思います。
そういう時は
Preserve Strokes positions on meshをチェック
これにより3Dペイントのストロークが保持されます。
ストロークの保持は大きくモデルに変更があるとエラーになります。
その場合はストロークの保持はチェックを外して読み込むことで回避できます。
UVベースで投影されるのでこちらはこちらでUVの変更に対応できないというデメリットがあります。
UVベースではなくバウンディングボックスの更新でした。詳しくはこちら【Preserve strokes とは】を参照してください。
そういう時は
Edit->Project configurationで新たなローモデルを選択します。
Preserve Strokes positions on meshをチェック
これにより3Dペイントのストロークが保持されます。
ストロークの保持は大きくモデルに変更があるとエラーになります。
その場合はストロークの保持はチェックを外して読み込むことで回避できます。
UVベースではなくバウンディングボックスの更新でした。詳しくはこちら【Preserve strokes とは】を参照してください。
マテリアル名を変更するとペイントやレイヤーの記録であるテクスチャセットのリンクが外れてしまいます。
そういう時は下記の方法で解決します。
2.については下記の手順で行います。
ローモデルのマテリアル名を変更して読み込むとレイヤーがまっさらになってしまいます。
が、TextureSet Listを見ると古いマテリアルがグレーアウトしてるだけで残っていることがわかります。
これを新しいマテリアルにアサインしてあげればOKです。
まず、
TextureSet Listの Settings->Reassign Texture Setsを開きます。
左のDisabled Texture Setsに古いマテリアルが入っています。
これを右のProject Texture Setsにある新しいマテリアルにドラッグします。
左のDisabled Texture Setsの方に移動した新しいマテリアルの×ボタンをクリック。
Applyボタンを押して実行します。
するとTexture Set Listに古いマテリアル名のテクスチャセットが残りますのでこれをダブルクリックして新しいマテリアル名にリネームします。
これで新しいマテリアル名に入れ替えることができました。
そういう時は下記の方法で解決します。
- 予めテクスチャセット名を新しいマテリアル名に変更してからモデルを差し替えする
- モデルを差し替えた後、テクスチャセットをアサインし直す
2.については下記の手順で行います。
ローモデルのマテリアル名を変更して読み込むとレイヤーがまっさらになってしまいます。
が、TextureSet Listを見ると古いマテリアルがグレーアウトしてるだけで残っていることがわかります。
これを新しいマテリアルにアサインしてあげればOKです。
まず、
TextureSet Listの Settings->Reassign Texture Setsを開きます。
左のDisabled Texture Setsに古いマテリアルが入っています。
これを右のProject Texture Setsにある新しいマテリアルにドラッグします。
左のDisabled Texture Setsの方に移動した新しいマテリアルの×ボタンをクリック。
Applyボタンを押して実行します。
するとTexture Set Listに古いマテリアル名のテクスチャセットが残りますのでこれをダブルクリックして新しいマテリアル名にリネームします。
これで新しいマテリアル名に入れ替えることができました。
タグ
コメントをかく