【Unity】島を作る #3
前回はこちら。
そろそろ木を生やしたい
島っぽく見せるために必要なモノ、それは樹木だ。てな訳で今回は、Terrainに木を置いていくツールを頑張って使いこなしたい。
ちなみにインポートしてきたローポリ系のアセットは例によって例の如く謎のピンク化現象を起こしているので、ここはやはりBlenderで樹木を自作するしかなかろう。
ちなみに「URP ピンク」でググったらそれなりに情報が出てくる。レンダリングパイプラインとの相性的な何からしいが、話が複雑になるので放置!
Blenderで木を造る
どうせ調子に乗ってオブジェクト置きまくるだろうから描画負荷うなぎのぼりだろうし、可能な限りローポリを目指したい。なので、こちらの動画を見ながらローポリな木を造ってみる事にした。
頂点をCtrl+Eでテキトーに伸ばして幹と枝のベースを作って、スキンモディファイアで肉付けしてやる。そのままだと頂点数が多くてローポリどころの話じゃないので、モディファイア適用したあとは頂点マージとかでポリゴンを適宜間引いておく。
葉っぱ部分はクッソ滑らかなICO球の頂点をプロポーショナル編集でクッソ雑に変形していく。
もちろんそのままだと頂点数多くてお話にならないので、最終的にはデシメートモディファイアでいい感じにポリゴン数を減らしてやればOK。
他の木もだいたい同じ感じで作れる。
よし、さっそくFBXに変換してUnityに持っていってやろうじゃんか。
PaintTreesで木を配置する
Terrainに木を置く機能として「PaintTrees」があるのだけれど、これがなかなか曲者だ。
まず最初につまづいた点としては、BlenderからFBX出力する前にすべてのオブジェクト(今回でいうと、木の幹と葉っぱ部分)をCtrl+Jなりで結合しとかないと、なぜかPaintTreesのブラシで木を置けなかった。理由は分からん。
あと前回の石を置く時もそうだったのだけれど、木を配置するとごま塩程度の大きさになってしまう。なぜなんだぜ。
こいつは困ったぞ、とググり回ってるとUnityフォーラムで外国人ニキが同じような現象で困っていた。
「FBXインポーター」セクションを見つけて、「スケールファクター」を調整します。
そいつの回答を参考にFBXのインポート設定でScaleFactorを調整したら一応解消はしたのだが、恒久対策としては釈然としない。
「もしかして、BlenderでFBXを出力するとき既にスケール変換的な奴が入ってんじゃねえの?」と思ってそのあたり調べてみるとビンゴで、みんな困ってるのか情報が山のように出てきた。
つまりはスケールだとか座標系の違いだとかを、Blender側でUnity向けにいい感じに調整する必要があるっぽい。
FBX出力するとき「スケールを適用」を「すべてFBX」にしておく。意味はわからんが、とにかくそうしておけばいいらしい。
あと、オブジェクトのXを-90度でぶっ倒した状態でCtrl+Aから回転を適用して「倒れてる状態が0度なんやで!」と錯覚させておく。
そのうえで90度回して元の形に戻した上で、FBX出力かましておく。
そうすると、ようやくPaintTreesのブラシで無事に塗ることができた。ふえぇ、長い戦いだった・・・
ちなみになんか警告出てるけどもう疲れたから知らんー!!!111
たぶん「指定のシェーダー使えやオラァん!」的な奴だと思うが、いつか解決させるわ(解決しないフラグ)
俺たちの戦いはこれからだ
木を置けたのはいいけれど、BatchesとかSetPass callsあたり眺めてると、なんとなく描画負荷たかそうで心配。実際「Terrainの負荷高くなりがち」的な記事が結構出てくるので、次回はそのあたりチューニングできないかも軽く探ってみるかー。