Epic Games のテクスチャリングに関するガイドライン
概要
このドキュメントでは、テクスチャ作成に関してこれまで私たちが学んできた教訓についてまとめています。グローバルイルミネーションのソリューションのために Lightmass に変更して以降、それまで作成してきたテクスチャの多くが、暗すぎたり、コントラストが大きすぎたり、ノイズが多すぎることに私たちは気がつきました。
ここに掲載されている情報が、美しいビジュアルを作成するには、非生産的であるように思われるかもしれません。覚えておいていただきたいことは、これまで、1 つのテクスチャで多くの要素を表現するテクスチャを作るために、1 つのテクスチャに大量のデータをベークしてきたという事実です。しかし、光源処理とマテリアルが複雑化したからには、それらデータのいくつかを分離または削除することによって、現実的な方法でマテリアルを表現する必要があるのです。
ガンマ空間と線形空間
特定のテクスチャとテクニックについて見ていく前に、テクスチャが Photoshop で操作され「Unreal Engine」にインポートされるときの仕組みについて理解することが重要です。Photoshop でテクスチャを作成する際は、sRGB のカラープロファイルを使用することになるはずです。すなわち、ガンマ曲線が適用された状態でテクスチャが格納されることになります (ガンマ空間)。テクスチャがデフォルトの設定をともなって (sRGB 値が有効になって)、「Unreal Engine 3」にインポートされる場合は、光源処理を計算する前にテクスチャを線形空間に変換するようにエンジンに命じることになります。どのような仕組みになっているのか、なぜそのようなことをしなければならないのか、といった問題の背後には多くの計算と技術的な情報が控えていますが、重要なことは、 ガンマ空間でペイントした値が線形空間では暗くなる ということです。たとえば、光源の 50% を反射するサーフェスをペイントする場合、Photoshop では、50% のグレイが 127,127,127 となります。 ガンマ空間における 127,127,127 は、線形空間では 55,55,55 すなわち 21% の光反射率に変換されます。 したがって、グローバルイルミネーションを計算すると、シーンが、意図したよりも暗く、かなり少なく光を反射することになります。
下のカーブは、ガンマ空間 (gamma space) と線形空間 (liner space) における値の分布を表したものです。Photoshop で画像をペイントする場合、この曲線を使用して、画像が保存されるとともに輝度が計算されます。
次は、50% のグレイが、ガンマ空間と線形空間それぞれで評価された場合に、どのくらい異なって見えるかを、視覚的なサンプルとして示したものです。
ディフューズテクスチャ
ディフューズテクスチャを作成する際にまず念頭に置かなければならないことは、サーフェスの最終的なイメージをペイントするのではないということです。さまざまな角度で反射するライトを表すサーフェスプロパティをペイントするということです。したがって、ディフューズテクスチャは、大きなシャドウまたはライトの値の変化をもつべきではありません。大量のアンビエントオクルージョンは、LightmassAO または SSAO によって表現されるべきです。それでも、ディフューズテクスチャで表される少量の AO (アンビエントオクルージョン) が、法線マップで表される詳細によって必要とされる場合があります。
第 2 に考慮すべきことは、ディフューズテクスチャが明るく、低いコントラスト値をもたなければならないということです。暗すぎるテクスチャを作成すると、ゲームで明るくなる機能を制限してしまうことになります。作成するテクスチャが、100% の明るい白光によって照らされた場合に、そのサーフェスの輝度を描写するものであることを忘れてはなりません。また、暗すぎるテクスチャをペイントしたり、暗すぎるアンビエントオクルージョンを含めたりすると、シャドウおよびライトを表示するサーフェスの機能を制限してしまうことに注意する必要があります。また、ノイズが多く、コントラストが高いテクスチャは、サーフェスの形状とライティングが読み取りづらくなります。
レンダリングされる場合に中間のグレイがどれになるのか、Photoshop のためにガイドラインが必要な場合は、middle (中間) としてヒストグラム上で 186 を使用するとよいでしょう。
次の例は、暗すぎかつサチュレート (高彩度化) されたテクスチャと本来の明るさのテクスチャを比較したものです。
元のテクスチャの値は平均で 46 でした。つまり、線形空間に変換されると、光源のたった 2 % しか反射しないことになります。調整されたテクスチャの平均値は 150 です。入射光の 31% が反射されることになり、レンガの壁にとっては適正な値です。調整されたテクスチャは、完全に光が当てられた場合と完全にシャドウが投じられた場合の格差が非常に大きくなるため、シェーディングも適切に表示されます。
次は、暗いテクスチャが光源処理に及ぼす影響を実際的な例で示したものです。最初の画像では、元の暗いテクスチャを使用しています。 2 番目の画像では、光強度を 2 から 12 に引き上げることによって、輝度を修正しようと試みたものです。GI あるいは暗い領域については、何の役にも立っていません。最後の画像では、光強度を元の 2 に戻して、調整されたテクスチャを使用しています。 これらの画像によって分かることは、輝度の高い光でいくら調整しようとしても、テクスチャが暗すぎる場合、適切な光源処理ができないということです。
スペキュラテクスチャ
過去、さまざまな理由で (線形空間にないレンダラを使用し、単純な光源で複雑なマテリアルを近似させるため)、アーティストはさまざまな量のカラーを使用してスペキュラマップをペイントしていました。その良い例が肌です。過去においてアーティストたちは、青、時にはオレンジ色のスペキュラテクスチャをペイントしたものです。肌のスペキュラ反応は、実際のところ、白なのです。スペキュラカラーを実際に有するマテリアルはほとんどありません。(たいていは金属です)。次の画像から、スペキュラ反射が白であることが分かります。
あらゆるサーフェスに、何らかの形態のスペキュラ反射があることを覚えておくべきです。そのスペキュラ反射は鈍く強度が低い場合があり、したがって、それ独自のテクスチャが保証されない可能性もあります。そのような場合には、ディフューズテクスチャを使用することができますが、マテリアル内でテクスチャをデサチュレートする (彩度を落とす) か、スペキュラのために使用するカラーチャンネルのうちの 1 つだけを取得しなければなりません。
スペキュラパワー / マスク
スペキュラパワーおよびマスクは、2 つの値を線形補間するためにしばしば使用されます。したがって、通常は、テクスチャのガンマ補正処理を実行したくない場合に使用します。これらのテクスチャを 1 つのアルファチャンネル (ガンマ補正されない) に詰め込むか、あるいは、チャンネル内にすべて詰め込んで []sRGB のチェックを外すことができます。こうすることによって、値が 0 の場合は、値 A の 100% のブレンドとなり、値が 255 の場合は、値 B の 100% のブレンドとなり、値が 127 の場合は、AB のちょうど50% ずつのブレンドとなります。
エミッシブテクスチャ
エミッシブテクスチャでは、全レンジの値を使用して、圧縮および精度アーティファクトを避けるように努めるべきです。過去においては、エミッシブテクスチャが、暗いテクスチャを用いて作成され、マテリアル内で大きな数値を乗じられることによって補正されていました。このようなやり方では、エミッシブのレンダリングにおいて、バンディング (縞) と不適切なカラーが生じてしまいます。最も良いやり方は、エミッシブテクスチャを作成してから、Photoshop において Levels または Curver ツールを利用して、使用するレンジを最大化することです。以下の画像は、狭いレンジの値のみが使用されマテリアル内で非常に大きな数値を乗じられたエミッシブテクスチャと、より広いレンジの値が使用されマテリアル内で適度な数値を乗じられたエミッシブテクスチャを比較したものです。
法線マップ
法線マップを編集する際に重要なことは、ブレンドの操作を常に正規化すべきであるということです。すなわち、Crazybump を利用して法線マップをブレンドするか、あるいは、Photoshop ですでにブレンドしている場合は、Crazybump にインポートしてから再エクスポートすることによって、マップを正規化することになります。
もう 1 つ重要なこととして、次のことを覚えておくべきです。すなわち、1,1,0 よりも高い値を詳細法線マップに乗じると、DXT 圧縮アーティファクトが発生するとともに、場合によっては不適切な光源処理を行うことがあるマテリアルが作成される可能性があるということです。
肌に関する特別な補足
肌は複雑なマテリアルです。現在私たちは、Phong よりも複雑な光源モデルを使用して肌を表現しています。DirectX11 では、スクリーン空間 表面下散乱 (サブサーフェススキャタリング : SSS) を使用し、DirectX9 では、ソフトな法線をともなったカラー化された光源のフォールオフを利用する CustomLighting を使用しています。これら 2 つのテクニックとも、ディフューズテクスチャを表皮レイヤーとして扱い、それをカラー化することによって、肌の下にある肉の赤いライティングを表現します。したがって、肌のためのディフューズテクスチャは、通常作成するものよりも薄く淡くなければなりません。肌の写真には、あたかも「マテリアル」が内包されているがごとく、SSS で作成される赤みがすでに含まれています。したがって、テクスチャを作成する際は、テクスチャからそのような赤みを除去して、マテリアルによってなされるようにすることが不可欠です。
Important!
You are viewing documentation for the Unreal Development Kit (UDK).
If you are looking for the Unreal Engine 4 documentation, please visit the Unreal Engine 4 Documentation site.