UDN
Search public documentation:
DevelopmentKitGemsHUDDistortionJP
English Translation
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
中国翻译
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
UE3 ホーム > Unreal Development Kit Gems > HUD Distortion (歪み) の追加
UE3 ホーム > ポストプロセスエフェクト > HUD Distortion (歪み) の追加
UE3 ホーム > マテリアルとテクスチャ > HUD Distortion (歪み) の追加
UE3 ホーム > ポストプロセスエフェクト > HUD Distortion (歪み) の追加
UE3 ホーム > マテリアルとテクスチャ > HUD Distortion (歪み) の追加
HUD Distortion (歪み) の追加
2011年7月に UDK に即して最終テスト実施済み
概要
スクリーンに歪み (distortion) を加えることが、プレイヤーにフィードバックを与える上で、往々にしてとても役に立ちます。この歪みによって、プレイヤーが何らかの武器で攻撃されたことや、水中にいること、狙撃スコープから眺めていることなどを表現することができます。この開発キットドキュメントでは、例として狙撃スコープが取り上げられます。
ポストプロセス
「Unreal Engine 3」では、スクリーン出力がレンダリングターゲットの中に保存されます。これにより、その編集にはポストプロセスを使用することができます。レンダリングターゲットの中に保存されるため、マテリアルシステムを利用して、レンダリングターゲットを編集します。 ポストプロセスエフェクト のページを参照してください。より詳細な情報については、 ポストプロセスマテリアル を参照してください。
マテリアルのセットアップ
テクスチャ
まず始めに、テクスチャがいくつか必要です。テクスチャは、UI LOD グループに保存され、Address X および Address Y が Clamp (クランプ) にセットされています。 次は、歪みのための法線マップです。 次は、オパシティのためのアルファマップです。狙撃スコープテクスチャの座標
狙撃スコープにおいては、テクスチャがスクリーン全体に渡って広がっている状況は好ましいことではありません。理想的には、狙撃スコープがスクリーンの中央にあり、アスペクト比が 1:1 に限定されている必要があります。これをマテリアルで実現するには、テクスチャの座標を調整します。- テクスチャの座標を乗算 (Multiply) することによって、パーセンテージとしてテクスチャのスケールを調整することができます。 たとえば、0.5 の場合は テクスチャの 50% であり、2.0 の場合はテクスチャの 200% となります。
- テクスチャの座標に加算 (Add) することによって、パーセンテージとしてテクスチャの位置を調整することができます。これは、スクリーン上のテクスチャの位置と同じではありません。テクスチャが最初に使用される際にテクスチャ内のどこを表示するかを示すものです。通常は、0 になっていますが、この値を調整することによって、テクスチャをパンして、描画を開始する地点のピクセルを選択できるようになります。今回の例では、テクスチャの Address X と Address Y がクランプされているため、テクスチャがスクリーン内を移動して、縁に黒い部分が作り出されます。これは、狙撃スコープにとっては理想的です。
狙撃スコープの歪み
リアリティを出すためには、狙撃スコープのレンズの湾曲を暗示する歪みを少しばかり加えるのが良いでしょう。そのためには、Scene Texture Sample 上のテクスチャルックアップ座標を調整します。法線マップを乗じる (Multply) ことによって、歪みの強さを調整することが可能です。- 法線マップをスカラーパラメータで乗じる (Multiply) ことによって、歪みを簡単に調整することができます。
狙撃スコープの彩色
テクスチャのオフセットと歪みが完了したので、すべてをまとめることができます。オパシティマップを使用しながら、2 つのバージョンの Scene Texture Sample を線形補間することによって 、スクリーン上に狙撃スコープの模様を容易に作成することができます。- ScopeColor の RGB 値を調整することによって、狙撃スコープのオーバーレイのカラーを変更します。
- ScopeColor の アルファ値を調整することによって、狙撃スコープのオーバーレイの強さを変更します。
完成したマテリアル
シンプルなポストプロセスチェーンの作成
ポストプロセスチェーンは、「Unreal Engine 3」でポストプロセスエフェクトを扱う場合に使用されるものです。エフェクトを互いにチェーンさせるためにツリーのようにノードを使用しながら、他のポストプロセスエフェクトのモジュールを容易に結合させて、新たなポストプロセスエフェクトをデザイナーは作ることができます。このシステムに関する詳細については、 ポストプロセスエディタ ユーザーガイド および ポストプロセスエフェクトのリファレンス のページを参照してください。 このマテリアルエフェクトをテストするには、コンテンツブラウザ内で [New] ボタンを左クリックして、新たなポストプロセスチェーンを作成します。 ポストプロセスチェーンが作成されたら、コンテンツブラウザ内のアイコンをダブルクリックすることによって、ポストプロセスエディタを開きます。何もないところで右クリックすると、コンテクストメニューが表示されるので、そこから Material Effect (マテリアルエフェクト) を選択します。これで、新たな Material Effect ポストプロセスノードが作成されます。 Material Effect ポストプロセスノードを選択して、[Material] フィールドを、上で作成した狙撃スコープ (Sniper Scope) マテリアルにセットします。
UnrealScript でマテリアルのパラメータを編集する
この開発キットドキュメントにおけるマテリアル作成のセクションで述べたように、変数をいくつか調整しなければなりません。ポストプロセスチェーン内の Material Effect ノードを見つけて参照することができるようにするには、その Material Effect ノードに名前をつける必要があります。これは、ポストプロセスエディタ内で次のようにして行うことができます。
var MaterialInstanceConstant SniperPostProcessMaterialInstanceConstant; function PlayerTick(float DeltaTime) { local MaterialEffect SniperPostProcessEffect; local LocalPlayer LocalPlayer; local LinearColor LC; Super.PlayerTick(DeltaTime); if (SniperPostProcessMaterialInstanceConstant == None) { Super.PlayerTick(DeltaTime); // Get the local player, which stores the post process chain LocalPlayer = LocalPlayer(Player); if (LocalPlayer != None && LocalPlayer.PlayerPostProcess != None) { // Get the post process chain material effect SniperPostProcessEffect = MaterialEffect(LocalPlayer.PlayerPostProcess.FindPostProcessEffect('SniperScope')); if (SniperPostProcessEffect != None) { // Create a new material instance constant SniperPostProcessMaterialInstanceConstant = new () class'MaterialInstanceConstant'; if (SniperPostProcessMaterialInstanceConstant != None) { // Assign the parent of the material instance constant to the one stored in the material effect SniperPostProcessMaterialInstanceConstant.SetParent(SniperPostProcessEffect.Material); // Set the material effect to use the newly created material instance constant SniperPostProcessEffect.Material = SniperPostProcessMaterialInstanceConstant; // Adjust the scope color LC.R = 1.f; LC.G = 0.f; LC.B = 0.f; LC.A = 1.f; SniperPostProcessMaterialInstanceConstant.SetVectorParameterValue('ScopeColor', LC); } } } } }
ダウンロード
- このドキュメントで使用されているコンテンツは、 ここから ダウンロードすることができます。