Capです。Amebient Advent Calender21日目、テクスチャ制作まわりの話です。
全体
Amebientのモデルは計22枚のテクスチャで構成されています。
MetallicSmoothness
用のテクスチャも含んでるので、マテリアルで見ると金属4種、コンクリート4種、その他4種の計12マテリアル。テクスチャ無しの配線用マテリアルも入れると13です。
そのうち8種のマテリアルは、いわゆるTiling Texture
が割り当てられています。Tiling Texture
を作りたいときは、SubstancePainter
君にuv座標x,y=0,0から1,1までの範囲のUVマップを持つ板ポリを読み込んでエクスポートしてます。自分の範囲においては全てのテクスチャはSubstancePainter
で作りました。
基本的には各マテリアルを良い感じに使いまわす運用をしています。テクスチャ作りにあまりコストをかけたくなかったというのがありました。小物とか数が多くなりそうだったので。あと、ビルに関してもデカいのと後から形状を調整したりすることが目に見えていたので、「全体的にTiling Texture
かつある程度質感を共有させる」感じになったわけです。
調整にわりと時間かけた気がします。まあ共有前提なのでそもそもの質感が微妙だと全部微妙になっちゃいますからね...。程よく主張を抑えつつ深みのある質感...みたいなのを目指してたと思います。Amebientに限らず、ディティールが強ければ良いというわけではないのかな1、と考えています。良いテクスチャは、しっかりと質感がありつつ程よく風景に溶け込む感じがあるなと思っていて。2
ビル
コンクリートの
_wet
は実際はつかわなかった。3
ビルは全てコンクリートです。無地、床用タイル、壁用タイル、天井用タイルの4種。無地から派生して線の有無でバリエーションを出した感じだったと思います。
制作当初はなかなか納得いかなくて、資料の為に少女終末旅行
のアニメをめっちゃ観た気がします。そしたらあれは全体的に背景が暗めだった(あとちょっと青みが入ってた)ので、色味をかなり寄せてみたりもしたんですが、Amebientに使うには暗すぎたので結果として色味はかなり明るくしました。
これの柱が無地で、床と壁がそれぞれ別のタイルになってます。床は正方形で、壁は長方形。
天井部分がまた別のタイルで、これは少しずらした感じにしてますね。
Tiling Texture
運用にすると良いことのひとつは『UV展開が(比較的)楽』です。
ビルのUVはこんなことになっています。
まず、Tiling Texture
前提かつモデルが四角いのでUV展開はモデルを全選択してCube Projectionをガッとやるだけで基本良かったりします。タイルの目とかがあるので実際はちょっと調整してたかもしれない。少なくともUVが重なりまくってることとかは気にしなくていいのでかなり楽です。モデルのUVに対してテクスチャを合わせるのではなくて、テクスチャに対してUVを合わせる、という感じですね。
ちなみにこちらはUnityのLightMap
用のUV2です。こっちのほうがシームをていねいに切ったり気を使ってるかもしれない...どうして開いたかというと、ライトを綺麗に焼きたかったのと解像度が必要ない面のUVを小さく取って解像度を有効活用したかったからです。ギチギチに詰めるのはUVPackMasterを使いました。言うてUVが基本四角いので通常のパッキングでもかなり詰めてくれるとは思います。
Substance Painter
ではこんな感じでテクスチャ調整してました。
レイヤ構成はこんな感じです。これだけ貼ってもという感じなんですが、やってることとしてはベースカラーにサブスタのProcedural Texture
を乗算でかけてるだけです。roughness
もProcedural Texture
を薄めに乗せています。基本的な質感はProcedural Texture
でだいたい何とかなる気がしています。便利です。
その他のコンクリートもほぼ同じで、あとはタイルの線の有無だけですね。
と、思ったんですが見返したらけっこう色々やってました。
ベースと汚しは上とだいたい同じでそれっぽいテクスチャを重ねてるだけです。
タイルの線の描画をちょっと弄ってました。
タイル描画
でやっていることは、Procedural Texture
のタイル模様を乗せて、blur
でぼかしをかけて、histogram_scan
でぼやけた線を絞って、warp
で線を歪めて(これちょっと気に入ってます)、sharpen
でくっきりさせる、という感じです。
で、錨のマークが付いてるのはAnchor Point
という機能です。置いた地点の描画を上位のレイヤーから参照することが出来ます。
どうやって使ってるかというと、まず上のフチ強調
レイヤーではちょっとだけタイルの線のフチを白くハイライトしています(ほぼ分からない)。タイルのフチを塗りたいので、タイルの線を取ってきてフィルターをかけることで実現したい気持ちになります(手描きはしたくありません)。同じパラメータの同じテクスチャを使ったり、レイヤーそのものをコピーしてきても良いですが、それだとタイルのサイズとか太さとかを変えた時にハイライトもいちいち調整しないといけません。そこでAnchor Point
を利用すると、タイルの描画そのものを取れるわけです。フチ強調
ではタイル描画
のAnchorを参照してぼかしをかけ、overlay
で重ねています。
説明だと分かりにくい気がしますが、実際使うと便利で色々応用が利く機能です。
他のタイルも同じ方法で描いています。模様はタイルの線を描いているProcedural Texture
のパラメータを変えているだけです。
金属
金属4種の内ひとつは機械類用のもので、その他の一般的な金属は3種のマテリアルを使い分けています。
Amebientの食器類並べたらきれいだった #Amebient pic.twitter.com/sTzlXiOEn6
— Cap.🌓 (@CaptainAyakashi) December 20, 2020
これはBlender。
楽器類は全部金属なので質感はだいたい同じですね。ほぼReflectionに頼っています。まあ金属なので。AmebientのReflectionがめっちゃ綺麗なので、そもそもテクスチャが無くてもわりと良いまであります。
綺麗。
金属テクスチャもコンクリートと同じように、ひとつのプロジェクト内で複数のバリエーションをつくっています(管理が楽なので)。
金属はだいたいこうやってます。
まあコンクリートと一緒で、Procedural Texture
の中から良い感じ
のを探して合成しています。
機械用のテクスチャは、良い感じのマテリアルをそのままパラメータを調整して使用しています。
その他
え~~~~と、ソファとテレビは既に持っていたものを使っていて、鐘はAOを焼いただけで、鉄骨は...ぐっとやりました。
やっていることは大体変わりません。金属の質感をかけつつ、AOを乗算でかけたり、エッジにちょっとハイライトを入れたりしています。
まとめ
制作コストは抑えつつテクスチャ自体は良い感じの質感をねらい、Substance PainterはTiling Texture
生成器になってもらいました、という感じでした。ちゃんと綺麗な景色としてまとまって良かったです。
以上になります。個人の記事としてはこの記事でおしまいです(三人で話した振り返りの記事があるのでもう一投稿ありますが)。ありがとうございました。
-
NormalMapが必要かどうかとか。 ↩
-
具体的に言うとRootGentleさんの作る質感が好きです。 ↩
-
メインフロアの雨が当たってるような場所に、水たまりのようになってる場所がまばらに欲しいという話があったんですが、パッと良い感じに出来なかったのと"無くても良いは良い"感じだったので一旦後にまわしてそのまま時間におされてしまった記憶があります。 ↩