Aizu-Progressive xr Lab blog

会津大学のVR部であるA-PxLの部員が持ち回りで投稿していくブログです。部員がそれぞれVRに関する出来事やVRにちなんだことについて学んだことを書いていきます。

連絡はサークルTwitterのDMへお願いします。
「面白法人カヤックVR分室」としても活動しています。詳細はこちら

Substance Painterを使ったテクスチャリング

こんにちは、学部2年の丹野です。今回私はSubstance Painterというテクスチャリングソフトについて紹介していきたいと思います。

Substance Painterの特徴

・PBR対応のテクスチャが描ける

・3Dペイントができる

・プロシージャルにテクスチャが描ける

PBR対応のテクスチャが描ける

PBRとは物理ベースレンダリングの略です。物体の質感を表すためにオブジェクトに必ず適応する必要のある質感設定をマテリアルと呼び、PBR対応のマテリアルには以下4つの項目が存在します。4つの項目で現実世界のほとんどのものの質感を設定できます。

・ディフース(物体そのものが持つ色)

・ラフネス(ザラザラしている度合い、周囲の反射を濁す度合い)

・メタル(周囲を反射する金属っぽさの度合い)

・ノーマル(表面の凹凸)

Substance Painterにはこの他にもemissionやopacityなどの項目もあり、これらを同時に1チャンネルで塗ることができます。

3Dペイントができる

通常、テクスチャは展開したモデルのUVマップをもとに描いていくと思いますがSubstance Painterは直接モデルにペイントすることができます。(UVをもとに描くということもできます)

f:id:aizu-vr:20180704231943p:plain

今まではUVをもとに描いたテクスチャを一旦モデルに貼り付けて見た目を確認して修正という少しめんどくさい工程でしたが直接モデルに描けるので非常に効率がいいです。

プロシージャルにテクスチャが描ける

プロシージャルとは数値的にという意味です。Substance Painterではベイクして生成された各種マップをもとにジェネレータという機能を用いてテクスチャを書くことができます。

まず、ベイクとは重なり合ったローポリメッシュとハイポリメッシュの外側から多数のレイを発射し、レイが通過したハイポリゴンメッシュの法線情報や遮蔽情報などを、色情報として同じレイが命中したローポリメッシュのUV上の1ピクセルに焼き付けることを言います。

Substance PainterではベイクによってNormal map、World space normal map、Id map、Ambient occlusion map、Curvature map、Position map、Thickness mapを生成することができます。

Normal map

Normal mapとはポリゴン表面の法線を変異させるマップです。服のシワなど普通にモデリングした場合ポリゴン数が増えてしまう部分に用います。カラーマップに直接陰影やハイライトを書き込んだ場合、カメラの角度やライトの位置によって矛盾が生じます。しかし、Normal mapはライトやカメラの位置によって自動的に見た目を変えてくれるため質感がよりリアルになります。注意点としてはポリゴンの法線情報を変異させているだけであって直接メッシュの形状が変化しているわけではないということです。

f:id:aizu-vr:20180704232015p:plain

f:id:aizu-vr:20180704232027p:plain

World space normal map

World space normal mapは本来的にはNormal mapの1種です。Substance PainterにおけるWorld space normal mapは空間座標におけるポリゴンフェースの向いている方向をカラー情報としてベイクします。面の向いている方向をしていできるためほこりや雪などの表現に使えます。

Id map

Id mapは様々だ質感が混在するメッシュで、質感ごとにレイヤーマスクを作りやすくするために使います。Photoshopや他のDCCツールだどで頂点カラーを設定しておくとベイク時に生成できます。

Ambient occlusion map

Ambient occlusion mapは光源からの光によって地面にできるような直接的な影とは違いメッシュの凹んだところ、入り組んだところなど、直接光h当たっていないので明るく無い、でも真っ暗ではない微妙な部分、影をベイクします。普通はカラーテクスチャに乗算して使います。注意としてはポーズや形状が変わった時に影がないはずのところに影が出続けるなどの矛盾がでてしまうことがあるということです。この場合は手作業での修正が必要となります。

Curvature map

Curvature mapはメッシュのエッジの立った角部分をマップとしてベイクします。

つまりは角の部分と平らなところの差をグレースケールで表現してくれます。角が立っているほど白いです。このマップとジェネレータを使うと武器など、角だけ金属が剥げたような表現をすることができます。

Position map

Position mapはメッシュの座標をカラーマップとしてベイクします。また、X,Y,Zのどれか任意の方向だけを指定してベイクすることもでき、この場合はグレースケールマップとなります。現実で、下の方だけ汚れているなどの表現をする時に使えます。

Thickness map

Thickness mapはメッシュの厚みを表すグレースケールのマップです。

各種マップの説明は終わりました! ここからは実際にこれらのマップとジェネレータを使って作品をつくっていこうと思います。

f:id:aizu-vr:20180704231927p:plain

f:id:aizu-vr:20180704231922p:plain

今回はこのモデルを使っていこうと思います。上がハイポリで下がローポリです。

f:id:aizu-vr:20180704232009p:plain

これがなにも貼っていないモデルです。

f:id:aizu-vr:20180704232030p:plain

これがAmbient occlusion mapを貼ったモデルです。

f:id:aizu-vr:20180704232020p:plain

これがNormal mapを貼ったモデルです。

f:id:aizu-vr:20180704231932p:plain

これがNormal mapとAmbient occlusion mapを貼ったモデルです。だいぶ見た目が変わりましたね。ですがポリゴン数は変わっていません次にペイントして行きたいと思います。

f:id:aizu-vr:20180704231937p:plain

操作説明は割愛させていただきますが下地として金属っぽい質感をつけました。

f:id:aizu-vr:20180704231949p:plainf:id:aizu-vr:20180705131658p:plain

次に赤い色をぬり、そこにジェネレータを適応しました。ジェネレータにより赤色がはげて下に塗っていた金属の質感が露出しています。画像にもあるようにWorld space normal mapとPosition mapとThickness mapとCurvature mapとAmbient occlusion mapを使っています。

f:id:aizu-vr:20180704231955p:plain

完成です。 まだまだ雑ですが明らかに手作業で描くよりも効率的ですし説得力があるテクスチャを描くことができます。価格は2万円ほどです。あと商用利用はできませんが学生は無料で使えるので興味のある方は調べてみてください。

参考にしたサイト、書籍

kazukisakamoto.hateblo.jp

Substance Painter 入門 著者 まーてい

会津大学VR部の部員が持ち回りで投稿していくブログです。特にテーマに縛りを設けずに書いていきます!