未来を創る、テックコミュニティー

代表技術通信~Unreal Engineで点群表示③ まずはUE4のチュートリアル(11)

草場代表
2020/10/28

こんばんは。代表の草場です。

UE4のチュートリアルの紹介となっています。オンラインコースのライティングの基礎概念とエフェクトの続きの、ライティングと反射に関してです。

ライティングエフェクトと反射 – はじめに

ライティングエフェクト

3つのトピックを取り上げます。
光源の半径とサイズを操作および変更する方法。
IES
ライト関数
についてです。

FundamentalsClassesのContent>Fundamentals>Lighting_Rendering>EffectsAndReflections>StartAssetsのLightingEffectsというレベルです。

3つのことをやります。
ライト関数を使用してプールの水面下の水コースティックスを作成します。
次にIESプロファイルを使用して部屋のスポットライトをより興味深い形状にします。
これを行う前に、まず光源の半径と長さについて説明します。これについてはキッチンのスポットライトを変更して説明します。
まず、キッチンのスポットライトをテレビの前に移動。興味深いのは、テレビにライトの反射を確認できるということです。

このスポットライトの詳細タブで、Source LengthとSource Radiusに注目します。例えば、Source Radiusを64にすると、ライトが大きな黄色い球体で囲まれます。これが光源です。光源はオブジェクトで、ある意味発光モデルといえます。黄色で囲まれた球体が発行しています。それがテレビに反射しています。

ではSource Radiusを4.0に、Source Radiusを64にすると、キューブ型のライトが表示されます。

このようなライトのセッティングは、キッチンキャビネットの下のとてもシンプルなチューブ型ライトに適しています。

次はIESについて。IESはスポットライトで使用します。
スポットライトの詳細タブを見ると、Light Profileというのがあります。

IES Textureです。いくつかテクスチャ選べます。まずはStrange IESから試してみます。

IESはスポットライトで最もうまく機能します。IESは投射されているからです。これをポイントライトでやると、非常に不自然に投射される可能性があります。ほんとだ。

IESを使用するとライトの形状を強調したり、基本的にその表面の光度を変えることができます。今の場合は大きく目立つ円が二つあります。これをComplex IESプロファイルに切り替えると、以下です。

実際に思い描くようなライティングが得られることがわかります。異なる光度帯があり、光度帯でライティングが協調されています。また、ライティングがあたかもガラスに干渉しているように表示することもできます。

これがIESテクスチャです。IESテクスチャはEditorでは生成できませんが、無料の外部ツールで作成できます。作成してコンテンツブラウザにインポートするだけです。これは、スタティック、ステーショナリー、ムーバブルの各ライトで機能します。スタティックを設定するとIESがグレーアウトされますが、機能はします。まずスタティックまたはムーバブルでIESテクスチャ設定して、それをStaticに戻すと、テクスチャがライトマップにベイクされます。

そして最後。この人が最も強力な機能と考えているもの。ライト関数です。ライト関数を使って、水中で水コースティックスを作成しましょう。ライト関数はマテリアルをライトと配合することを意味します。つまり、キャストされるライトは実際はマテリアルとライトそのものの配合です。これには特別なマテリアルが必要です。StartAssetsフォルダにあるLighting_Causticsを見ます。ダブルクリック。

表示されるのは非常に基本的なセットアップです。水コースティックスに使用するテクスチャです。これをEmissive Color(エミッシブカラー)と接続するのみです。赤の出力とつなぎました。これはグレーのテクスチャなので、フルRGBの出力が必要ないためです。

詳細タブを見ると、マテリアルのDomainはSurfaceです。

これをLgiht Functionに変更します。変更後、適用もしくは保存を押します。
ビューポートに戻り、スポットライトをプールの中に追加します。設定はムーバブルにします。Cast Shadowsは無効にします。シャドウはパフォーマンスに影響するからです。ライトファンクションという項目があります。ライトファンクションはマテリアルを前提としています。

そのため、先ほどいじったマテリアルを使用します。ドラッグ&ドロップしてやると、反映されました。

このマテリアルの外観をより良いものにします。マテリアルに少し変更加えます。
先ほどのLightEffect_Causicsに戻ります。マテリアルのスケールを変更しないとします。Texture Corrdinateというノードを追加します。
次に、Pannerノードを作り、Texture Corrdianteと結びます。そして、Texture CorrdianteとTexture SampleのUVsを結びます。Texture Sampleの詳細タブで、UTilingとVTilingを5に設定します。Pannerの詳細タブで、SpeedYを0.1に設定します。
そして、これらの3つを複製します。複製したものはUTiling, VTilingを6.0に、PannerのSpeedYは0.8くらいに設定します。
そしてこの二つを掛け合わせます。Multiplyノードです。
コントラストを強調するために、Powerノードを追加します。PowerノードのConstant Exponentを1.5程度に。
これでは暗すぎるので、さらに乗算します。Multiplyノード。ConstBは10とか。そして、このMultiplyノードとエミッシブカラーをつなぎます。

球ではなくボックスを選ぶと以下の感じ。

まだ完ぺきではないので(なぜ?)、微調整をします。例えば、0.8で設定したものを0.08にします。これを適用を押して、実際のビューポートに移動します。水の光っぽくなったかな?

次にこれらのライトを水の周りに配置できます。スポットライトのコーンの角度を大きくして、ライトでより広い範囲をカバーすることができます。詳細タブのOuter Cone Angleを44度くらいに。そしてそれを3つ複製。プール全体を覆うように配置します。

OK。Light Functionsは高度なライトアニメーションが必要なものに適しています。でも色に関しては何もすることができません。
空の雲のシャドウにもLight Functionsが利用できます。これはディレクションライト自体に設定します。そうすると世界全体に設定できます。

あとはいじって遊んでみな。

 

 

この記事を書いた人
草場代表
エディター