Amebientのモデリング(テクスチャ編)

Capです。Amebient Advent Calender21日目、テクスチャ制作まわりの話です。

## 全体

Amebientのモデルは計22枚のテクスチャで構成されています。
`MetallicSmoothness`用のテクスチャも含んでるので、マテリアルで見ると金属4種、コンクリート4種、その他4種の計12マテリアル。テクスチャ無しの配線用マテリアルも入れると13です。

![](https://i.gyazo.com/b255c4e0b7faff7f30bf8050f9d5c389.png)

![](https://i.gyazo.com/43743fa7a3741c9809dd679e71cb5efc.png)

![](https://i.gyazo.com/53be2adb80545fc12e7455ab3eb06e7a.png)


そのうち8種のマテリアルは、いわゆる`Tiling Texture`が割り当てられています。`Tiling Texture`を作りたいときは、`SubstancePainter`君に**uv座標x,y=0,0から1,1までの範囲のUVマップを持つ板ポリ**を読み込んでエクスポートしてます。自分の範囲においては全てのテクスチャは`SubstancePainter`で作りました。

基本的には各マテリアルを**良い感じに使いまわす**運用をしています。テクスチャ作りにあまりコストをかけたくなかったというのがありました。小物とか数が多くなりそうだったので。あと、ビルに関しても**デカい**のと後から形状を調整したりすることが目に見えていたので、「全体的に`Tiling Texture`かつある程度質感を共有させる」感じになったわけです。

調整にわりと時間かけた気がします。まあ共有前提なのでそもそもの質感が微妙だと全部微妙になっちゃいますからね...。程よく主張を抑えつつ深みのある質感...みたいなのを目指してたと思います。Amebientに限らず、**ディティールが強ければ良い**というわけではないのかな[^1]、と考えています。良いテクスチャは、しっかりと質感がありつつ程よく風景に溶け込む感じがあるなと思っていて。[^2]

[^1]: NormalMapが必要かどうかとか。

[^2]: 具体的に言うと[RootGentle](https://twitter.com/rootgentle/likes)さんの作る質感が好きです。

## ビル

![](https://i.gyazo.com/43743fa7a3741c9809dd679e71cb5efc.png)

> コンクリートの`_wet`は実際はつかわなかった。[^3]

[^3]: メインフロアの雨が当たってるような場所に、水たまりのようになってる場所がまばらに欲しいという話があったんですが、パッと良い感じに出来なかったのと"無くても良いは良い"感じだったので一旦後にまわしてそのまま時間におされてしまった記憶があります。

ビルは全てコンクリートです。無地、床用タイル、壁用タイル、天井用タイルの4種。無地から派生して線の有無でバリエーションを出した感じだったと思います。

制作当初はなかなか納得いかなくて、資料の為に`少女終末旅行`のアニメをめっちゃ観た気がします。そしたらあれは全体的に背景が暗めだった(あとちょっと青みが入ってた)ので、色味をかなり寄せてみたりもしたんですが、Amebientに使うには暗すぎたので結果として色味はかなり明るくしました。

![](https://i.gyazo.com/93c7b630d43445ec19d11d6f3afed507.png)

これの柱が無地で、床と壁がそれぞれ別のタイルになってます。床は正方形で、壁は長方形。

![](https://i.gyazo.com/e906bd976f935b4d398a3243350a3ba1.png)

天井部分がまた別のタイルで、これは少しずらした感じにしてますね。

`Tiling Texture`運用にすると良いことのひとつは『UV展開が(比較的)楽』です。

![](https://i.gyazo.com/c99aa88bfed190604b85d3cd98b43bb2.jpg)

ビルのUVは**こんなこと**になっています。
まず、`Tiling Texture`前提かつモデルが四角いのでUV展開はモデルを全選択して[Cube Projection](https://docs.blender.org/manual/en/2.80/modeling/meshes/editing/uv/unwrapping/mapping_types.html#cube-projection)をガッとやるだけで基本良かったりします。タイルの目とかがあるので実際はちょっと調整してたかもしれない。少なくともUVが重なりまくってることとかは気にしなくていいのでかなり楽です。モデルのUVに対してテクスチャを合わせるのではなくて、テクスチャに対してUVを合わせる、という感じですね。

![](https://i.gyazo.com/e9bb4633714daa3c5e11b48d18b0adf3.png)

ちなみにこちらはUnityの`LightMap`用のUV2です。こっちのほうがシームをていねいに切ったり気を使ってるかもしれない...どうして開いたかというと、ライトを綺麗に焼きたかったのと解像度が必要ない面のUVを小さく取って解像度を有効活用したかったからです。ｷﾞﾁｷﾞﾁに詰めるのは[UVPackMaster](https://gumroad.com/l/uvpackmaster2)を使いました。言うてUVが基本四角いので通常のパッキングでもかなり詰めてくれるとは思います。

![](https://i.gyazo.com/0ad0cc8efdb2c0aab1b2474edb1700e3.png)

`Substance Painter`ではこんな感じでテクスチャ調整してました。

![](https://i.gyazo.com/3075fb33fe6387a959e33a4b766e0c0c.png)

レイヤ構成はこんな感じです。これだけ貼ってもという感じなんですが、やってることとしてはベースカラーにサブスタの`Procedural Texture`を乗算でかけてるだけです。`roughness`も`Procedural Texture`を薄めに乗せています。基本的な質感は`Procedural Texture`でだいたい何とかなる気がしています。便利です。

その他のコンクリートもほぼ同じで、あとはタイルの線の有無だけですね。

![](https://i.gyazo.com/e777cab9b79320e439e3ed3ba9213e22.png)

と、思ったんですが見返したらけっこう色々やってました。
ベースと汚しは上とだいたい同じでそれっぽいテクスチャを重ねてるだけです。
タイルの線の描画をちょっと弄ってました。

![](https://i.gyazo.com/507ed1a6dc6f8a2ec32990194a177b12.png)

`タイル描画`でやっていることは、`Procedural Texture`のタイル模様を乗せて、`blur`でぼかしをかけて、`histogram_scan`でぼやけた線を絞って、`warp`で線を歪めて(これちょっと気に入ってます)、`sharpen`でくっきりさせる、という感じです。

で、錨:anchor:のマークが付いてるのは`Anchor Point`という機能です。置いた地点の描画を上位のレイヤーから参照することが出来ます。

どうやって使ってるかというと、まず上の`フチ強調`レイヤーではちょっとだけタイルの線のフチを白くハイライトしています(ほぼ分からない)。タイルのフチを塗りたいので、タイルの線を取ってきてフィルターをかけることで実現したい気持ちになります(手描きはしたくありません)。同じパラメータの同じテクスチャを使ったり、レイヤーそのものをコピーしてきても良いですが、それだとタイルのサイズとか太さとかを変えた時にハイライトもいちいち調整しないといけません。そこで`Anchor Point`を利用すると、タイルの描画そのものを取れるわけです。`フチ強調`では`タイル描画`のAnchorを参照してぼかしをかけ、`overlay`で重ねています。

![](https://i.gyazo.com/bf9296973badd2b0ed32eeda1fedb0c3.png)

説明だと分かりにくい気がしますが、実際使うと便利で色々応用が利く機能です。
他のタイルも同じ方法で描いています。模様はタイルの線を描いている`Procedural Texture`のパラメータを変えているだけです。

## 金属

![](https://i.gyazo.com/b255c4e0b7faff7f30bf8050f9d5c389.png)

金属4種の内ひとつは機械類用のもので、その他の一般的な金属は3種のマテリアルを使い分けています。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Amebientの食器類並べたらきれいだった <a href="https://twitter.com/hashtag/Amebient?src=hash&amp;ref_src=twsrc%5Etfw">#Amebient</a> <a href="https://t.co/sTzlXiOEn6">pic.twitter.com/sTzlXiOEn6</a></p>&mdash; Cap.🌓 (@CaptainAyakashi) <a href="https://twitter.com/CaptainAyakashi/status/1340492117001400326?ref_src=twsrc%5Etfw">December 20, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

> これはBlender。

楽器類は全部金属なので質感はだいたい同じですね。ほぼReflectionに頼っています。まあ金属なので。AmebientのReflectionがめっちゃ綺麗なので、**そもそもテクスチャが無くてもわりと良い**まであります。

![](https://i.gyazo.com/cb3dc1e90a46c627f2a13069cd52508b.png)

綺麗。

![](https://i.gyazo.com/7ec84651599d4234d64cacdddf3abcc8.jpg)

金属テクスチャもコンクリートと同じように、ひとつのプロジェクト内で複数のバリエーションをつくっています(管理が楽なので)。

![](https://i.gyazo.com/6f4c601aba28632c1b60fc91531fd422.png)

金属はだいたい**こう**やってます。
まあコンクリートと一緒で、`Procedural Texture`の中から`良い感じ`のを探して合成しています。

![](https://i.gyazo.com/2357ab097a42fddb316cd2ed17a2ecbc.jpg)

機械用のテクスチャは、**良い感じのマテリアル**をそのままパラメータを調整して使用しています。

## その他

![](https://i.gyazo.com/53be2adb80545fc12e7455ab3eb06e7a.png)

え～～～～と、ソファとテレビは既に持っていたものを使っていて、鐘はAOを焼いただけで、鉄骨は...**ぐっ**とやりました。

![](https://i.gyazo.com/7625f2908b97455f85d57594a368e4fc.png)

やっていることは大体変わりません。金属の質感をかけつつ、AOを乗算でかけたり、エッジにちょっとハイライトを入れたりしています。

## まとめ

制作コストは抑えつつテクスチャ自体は**良い感じの質感**をねらい、Substance Painterは`Tiling Texture`生成器になってもらいました、という感じでした。ちゃんと綺麗な景色としてまとまって良かったです。

以上になります。個人の記事としてはこの記事でおしまいです(三人で話した振り返りの記事があるのでもう一投稿ありますが)。ありがとうございました。