« 事前調査、絶対しよう。 | トップページ | 失敗を恐れずに »

2016年6月 6日 (月)プログラマーだけどマテリアルの話

おはようございます。本日のブログ当番、プログラマーのM.I.です。

UnrealEngine4では手軽に見た目を調整できる機能、マテリアルエディタがあります。
今回は光の当たり具合をマテリアルエディタで調整する方法を紹介します。

光の当たり具合の調整と聞いてすぐに思いつくのはテクスチャで微調整することかと思います。
金属の部分だけちょっと反射光を強くする、という風なスペキュラマップを作る場合もありますね。

しかし、テクスチャだけでは作れない部分もあります。
例えば画面奥から光が当たっていて、モデルの外周部分に光がほしい時、いわゆるリムライトですね。
これはテクスチャに描いても意味がありません。

そんな時に使えるのがベクトルの内積。
内積をとると2つのベクトルが正対しているほど-1に近くなり、直行すると0、向きが近いほど1に近くなります。

カメラの方向とポリゴンの法線の方向の内積をとればカメラの方を向いていない面に光をつけられそうです。

2016_0603_01

説明を単純にするためなんちゃってリムライトを実装してみました。
Camera Vectorはカメラの向きではなく、カメラへの向きを返すので注意が必要です。
VertexNormalWSがポリゴンの法線になります。

端の方が0に近くなっていくのですが、端ほどライトを入れたいので1-xを使用して端ほど1に近いものにします。
端から中に向けて急に光量が減衰した方が見た目がそれらしくなります。
1以下の数なので累乗を使い、16乗ほどやればそれっぽく減衰してくれます。
マテリアルのエミッシブカラーを強くすればマテリアルが光を放つようになるので、このエミッシブカラーにある程度大きい値を入れるために何倍か内積の値をかけます。
今回42倍ほど強くしてみました。

2016_0603_02

それっぽくするならライト方向とも内積をとれば光の当たっている部分だけふちが白くなる、という風にも実装できます。

手軽に見た目が調整できますし、何より物理ベースレンダリングのおかげで存在感を持った雰囲気になるのでモチベーションが上がりますね。
勉強したことを手軽に試せるので、どんどん試して知識を身につけていきましょう。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2016/06/post-7e54.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 事前調査、絶対しよう。 | トップページ | 失敗を恐れずに »

プログラマー」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: プログラマーだけどマテリアルの話:

« 事前調査、絶対しよう。 | トップページ | 失敗を恐れずに »