画力がないなら立体を作ればいい

「何を作る」より「どう作るか」を考えたい人

UE4の学習でまた微妙な罠にはまる(木の葉っぱの影だけが出ない)

(約 1,800文字の記事です。)
UE4の学習中にまたはまった罠。ネットで検索しても出てこなかった奇妙な罠。そしてはまる人も多分少ないであろう罠にはまりました。

屋外環境の影の制御

f:id:yamato-tsukasa:20200115072229j:plain

今日はこのシリーズの屋外の影、カスケードシャドウを学習していたら、これまた運の悪いことに多分アクタのバグに遭遇して3時間持って行かれた。

幹だけ影があるっておかしいでしょ?

f:id:yamato-tsukasa:20200115071113j:plain

Infinity Blade: Grass Lands

https://www.unrealengine.com/marketplace/ja/product/infinity-blade-plain-lands

SM_Cherry_Tree、このアセットの葉っぱだけ最初から影が出ていない。

f:id:yamato-tsukasa:20200115074214j:plain

設定がおかしいのか悩み、その葉っぱのマテリアルを別のメッシュに適用させてみたが普通に影も出る。葉っぱの隙間のアルファ部分も透けてきちんと隙間のある影になるので正常。
ってことは、マテリアル設定は正常みたいだ。ならばスタティックメッシュの作り方がおかしいか、ファイルが壊れているとか?

アクタの移行を試すも、バグごと移る。それでは意味がない。

困ったので、FBXに一度エクスポートしてからインポートしたらあっさり影が出る。うん、そりゃそうだ。
で、幹と葉っぱのマテリアルを手動で再割り当てしてみた結果。

f:id:yamato-tsukasa:20200115071307j:plain

普通に出るじゃ~~ん!!!!


おれの3時間を返せ。

バグ報告送信

悔しいので、このアセットはEpic純正なのでマーケットプレースのバグ報告に送ってみた。これがバグでなければ何なのか、ということになる。回答を待つことにしよう。

f:id:yamato-tsukasa:20200115071521j:plain

2020/01/21 追記

まさかのメッシュエディタ上のチェックボックスOn/Offかよ。
どう考えても間違ってOffにしたままリリースしたとしか思えないよ、Epicさん……。

f:id:yamato-tsukasa:20200121152701j:plain

次にこんな目にあったときには絶対にここを確かめてやる、と心に決めたのでした。

でもなぜパラメータをいじったらCSMで影が出たり出なかったりしたのかは全く謎のまま。何やっても出ないならまだ正常だと思うのだが、バグ?

カスケードシャドウマップとディスタンスフィールドシャドウ

いっぱいテストした結果、良く身に付いた(笑)
カスケードシャドウマップは、要するに段階的に影の解像度を遠距離になるごとに落とす手法。で、ある程度離れるとばっさりと消える仕様にもなるので、それは不自然で困る。というわけで急に消えないようにダミーの影に差し替えるってのがディスタンスフィールドシャドウ。

ではこの両者がどう違うかというと、樹木が風でそよいでいるときの影の挙動が違う。
ディレクショナルライトが、ステーショナリーでもムーバブルでも、影はきちんと動いてくれる。

カスケードシャドウマップは、きちんと揺れる影を作れる。その解像度が変わるけれど、きちんと揺れている。対してディスタンスフィールドシャドウは、かなり適当な固定的な影。だが、カメラが遠ざかった遠景では影の揺れなど誰にも見えない。なので固定的な影が全部の構造物の側にできてさえいればそれでいい、という考え方。

なので、遠景から近づくと、粒のような影が生成され、徐々に近づくとモワッとこっそりカスケードシャドウマップの荒いバージョンに切り替わり、影が揺れ始める。徐々にズームインしていくと徐々に葉っぱ一枚一枚が見える様になり、それらがくっきり見える状態でストップです。

詳細はチュートリアルをやれば分かります。というか動画で説明されています。

これもみんな、ハードウェア資源を節約しながらリアルタイムで演算するための工夫。

これでUE4で影制御で苦しむことはないだろう。あの日、勝手に消えて困った影も、今ならこんなに表現できる。

f:id:yamato-tsukasa:20200115073825j:plainf:id:yamato-tsukasa:20200115073827j:plainf:id:yamato-tsukasa:20200115073831j:plainf:id:yamato-tsukasa:20200115073837j:plainf:id:yamato-tsukasa:20200115073842j:plain

最後の1枚が、カスケードシャドウマップの段差がよく分かるかな。もちろん設定でこの段差が起こらない範囲も調整できる。が、今回はわざと。


ようやくUE4で影の制御ができるようになってきた。


MyTestLevel 2


序盤でまたまたバグに遭遇して時間が持って行かれたのが痛かったが、何とかまた一歩前進。




今回の創作活動は約4時間30分(累積 約1,346時間)
(485回目のブログ更新