HK-87@UEのブログ -12ページ目

HK-87@UEのブログ

UE4で理想のVRゲームを作るまでの軌跡

ダンジョン(洞窟)を地形に配置するため、
Landscapeに穴を開けたい。

UE4のLandscapeには確か Visibility を指定して穴をあける機能があったはず・・・。
 

これだ。


どうやら Landscape Material の OpacityMask 出力に Landscape Visibility Mask ノードを繋いで実現するらしい。
 

なるほど。
仕組みは単に Opacity Mask  で非表示にしているだけなのか。
システムで勝手にやられるよりは分かりやすくていいな。

さて、これをプロシージャルに、動的に制御するため、内部実装を確認する。

・・・
わかった。

どうやらマテリアルウエイトと同じ仕組みで、マテリアルウエイトテクスチャの1チャンネルが割り当てられるようだ。

現状マテリアル x 4チャンネルのつもりで作っていたので、
VisibilityMask が 1チャンネル増えるとテクスチャがもう1枚増えるな・・・。
 

マテリアル x 3 + Visibility x 1 にすべきだろうか?
あるいは受け入れて マテリアル x 7 + Visibility x 1 で考える?

負荷に結構効いてきそうな気がするので前者だろうか?
・・・だが、3つは少なくないか?

・・・
まだビジュアル的な検討をしていないので今は決められない。
後で考える。

次。


----
マテリアルと同じように、Visibility Mask も塗れるように処理を実装。

Visibilityという名前に反して、チャンネルに 0 を書き込むと表示、0xFF を書き込むと穴になるようだ。

・・・
表示は消えるようになったけれども、コリジョンが消えていない。
まぁ勝手には消えないか。
コリジョンはどんな実装になっている・・・?

・・・
みつけた。

physx::PxHeightFieldSample の materialIndex0, materialIndex1 に以下の値を入れると、そこが穴になるようだ。

Sample.materialIndex0 = physx::PxHeightFieldMaterial::eHOLE
Sample.materialIndex0 = physx::PxHeightFieldMaterial::eHOLE

physx の HeightField がサポートしている機能のようだ。
なので、いずれ CHAOS に切り替わったらまた実装の再確認が必要。

・・・
・洞窟の周囲を山として盛り上げる
・洞窟の入り口付近の Landscape に穴を開ける

この2つをデータで仕込めるように Landscape を加工するための Component を作った。
これで洞窟を地形に配置できる。

----
洞窟の中を暗く見せるため、ライティングやらポストプロセスやらの値を調整。

・・・

うーーーん、

うまくいかない。
やっぱライティングわからん。

とりあえずこんな感じにしてみた・・・が、

これが合っている気は全くしない。

  • Exponential Height Fog の Volumetric Fog にチェックを入れる。(重くなるので本当は入れたくない)
       -> これで洞窟の中のスペキュラが光って見える症状が改善した。影を見るようになるからかな。
  • PostProcessVolume の Exposure - Min EV100 を 3.0 に。
  • 洞窟に入ったら SkyLight の Intensity を 0.0 に。
       -> 松明つけないと真っ暗にしたいので。

調整キリがないので、ひとまずこれで。
しかしこれだと洞窟に入る瞬間と、不自然に暗くなるのがわかってしまう。要改善。




洞窟



動画