UDN
Search public documentation:

DevelopmentKitGemsControllingPostProcessEffectsJP
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

UE3 ホーム > Unreal Development Kit Gems > Kismet または UnrealScript を使用してポストプロセス エフェクトを制御する方法
UE3 ホーム > Kismet ビジュアル スクリプト処理 > Kismet または UnrealScript を使用してポストプロセス エフェクトを制御する方法
UE3 ホーム > ポストプロセス エフェクト > Kismet または UnrealScript を使用してポストプロセス エフェクトを制御する方法

Kismet または UnrealScript を使用してポストプロセス エフェクトを制御する方法


2011年3月に UDK について最終テスト実施済み
PC 対応

概要


「Unreal Engine 3」では、UnrealScript を利用して動的にポストプロセスを調整することが可能です。ただし、レベルデザイナーがポストプロセスを動的に調整することができるようになる、既存の Kismet ノードはありません。本資料を使用して、独自の Kismet ノードを作成することもできます。また、ポストプロセス エフェクト スクリプトを取り込むことによって、他のトリガー (たとえば、武器がズームされた際の被写界深度など) に基づいてポストプロセスを調整することが可能です。

関連テーマ

Set Ambient Occlusion Effect Properties (環境色オクルージョン エフェクトのプロパティ 設定) Kismet アクション

この Kismet アクションによって、ポストプロセスチェーン内にある環境光オクルージョン ポストプロセス エフェクト ノード (複数も) のプロパティを調整することが可能になります。

  • OcclusionColor - 多くのオクルージョンがある場合に、シーンカラーに代わって置き換えられるカラーです。
  • OcclusionPower - 算出されたオクルージョン値に適用する指数です。指数を大きくするとコントラストが強くなります。ただし、OcclusionScale (オクルージョン スケール) のような他の係数も調整する必要があります。
  • OcclusionScale - 算出されたオクルージョン値に適用するスケールです。
  • OcclusionBias - 算出されたオクルージョン値に適用するバイアスです。
  • MinOcclusion - 他の変形がすべて適用された後の最小オクルージョン値です。
  • bAngleBasedSSAO (ブール型 角度ベースの SSAO) - SSAO 画質が向上するとともに、ノイズが減少し、精度が上がり、平面部分が暗くなることがなくなり、凸部分の明度が上がりすぎることがなくなります。パラメータの再調整が必要となります。
  • OcclusionRadius - 各ピクセルを中心としてオクルーダをチェックするときの、ワールド単位での距離 (半径) です。
  • OcclusionQuality - 環境光オクルージョン エフェクトのクオリティです。 Low (低) クオリティに設定すると、ベストパフォーマンスが可能で、ゲームプレイに適しています。Medium (中) クオリティにすると、フレーム間のノイズを減らしますが、パフォーマンス上の負荷がやや増えます。High (高) クオリティにすると、詳細を保存するために余分なサンプルを使用します。
  • OcclusionFadeoutMinDistance - オクルージョン係数のフェードアウトを開始する距離 (ワールド単位) です。スカイボックス上にある遠くのアーティファクトを隠すのに有効です。
  • OcclusionFadeoutMaxDistance - オクルージョン係数が完全にフェードアウトする距離 (ワールド単位) です。
  • HaloDistanceThreshold - オクルーダが別個のオブジェクトとして認識されるために、ピクセルから離れていなければならない距離 (ワールド単位) です。この閾値は、近くのオブジェクトの周りのハロー領域を識別するために使用されます。たとえば、1 人称の武器などが該当します。
  • HaloDistanceScale - 遠くのピクセルについて HaloDistanceThreshold を増加させるためのスケーリングの係数です。この係数が 0.01 増えると、HaloDistanceThreshold が、距離 1000 (ワールド単位) につき 1 単位増加します。
  • HaloOcclusion - ハローに寄与するサンプルに割り当てるオクルージョン係数です。 0 にすると、そのサンプルのオクルージョンは最大になり、値を増加させると 2 次関数的にオクルージョン値は減少します。
  • EdgeDistanceThreshold - 2 つのピクセルがエッジであると認識される (したがって、その間をブラーされない) ために必要となる深度の差です。(ワールド単位)。
  • EdgeDistanceScale - 遠くのピクセルについて、EdgeDistanceThreshold を増加させるためのスケーリングの係数です。0.001 につき、 EdgeDistanceThreshold が 1000 ワールド単位の距離で 1 単位増加します。
  • FilterDistanceScale - スクリーンスペースにおいてカーネルサイズにマップする距離です。(ワールド単位)。結果としてノイズが増えますが、それと引き換えに、遠くのピクセルのためのフィルタカーネルサイズを減らし、精度を保つことができます。
  • HistoryConvergenceTime - オクルージョン履歴が収束するおよその時間です。時間が長ければ (0.5秒)、フレーム間でよりスムージングされてノイズが減ります。ただし、履歴ストリーキングが目立つようになります。 0 にするとこの機能はオフになります。(メモリのオーバーヘッドおよび GPU のパフォーマンスが低下します)。
  • HistoryWeightConvergenceTime - ウエイト履歴が収束するおよその時間です。

SetAmbientOcclusionEffectPropertiesKismet.jpg

Kismet プロパティ

SetAmbientOcclusionEffectPropertiesKismetProperties.jpg

Unrealscript

SeqAct_SetAmbientOcclusionEffectProperties.uc
class SeqAct_SetAmbientOcclusionEffectProperties extends SeqAct_SetPostProcessEffectProperties
  DependsOn(AmbientOcclusionEffect);
var() LinearColor OcclusionColor;
var() float OcclusionPower<UIMin=0.1|UIMax=20.0>;
var() float OcclusionScale<UIMin=0.0|UIMax=10.0>;
var() float OcclusionBias<UIMin=-1.0|UIMax=4.0>;
var() float MinOcclusion;
var() bool bAngleBasedSSAO;
var() float OcclusionRadius<UIMin=0.0|UIMax=256.0>;
var() EAmbientOcclusionQuality OcclusionQuality;
var() float OcclusionFadeoutMinDistance;
var() float OcclusionFadeoutMaxDistance;
var() float HaloDistanceThreshold;
var() float HaloDistanceScale;
var() float HaloOcclusion;
var() float EdgeDistanceThreshold;
var() float EdgeDistanceScale;
var() float FilterDistanceScale;
var() float HistoryConvergenceTime;
var() float HistoryWeightConvergenceTime;

event Activated()
{
  local array<PostProcessEffect> PostProcessEffects;
  local int i;
  local AmbientOcclusionEffect AmbientOcclusionEffect;

  GetPostProcessEffects(PostProcessEffects, class'AmbientOcclusionEffect');

  if (PostProcessEffects.Length > 0)
  {
    for (i = 0; i < PostProcessEffects.length; ++i)
    {
      AmbientOcclusionEffect = AmbientOcclusionEffect(PostProcessEffects[i]);

      if (AmbientOcclusionEffect != None)
      {
   AmbientOcclusionEffect.OcclusionColor = OcclusionColor;
   AmbientOcclusionEffect.OcclusionPower = OcclusionPower;
   AmbientOcclusionEffect.OcclusionScale = OcclusionScale;
   AmbientOcclusionEffect.OcclusionBias = OcclusionBias;
   AmbientOcclusionEffect.MinOcclusion = MinOcclusion;
   AmbientOcclusionEffect.bAngleBasedSSAO = bAngleBasedSSAO;
   AmbientOcclusionEffect.OcclusionRadius = OcclusionRadius;
   AmbientOcclusionEffect.OcclusionQuality = OcclusionQuality;
   AmbientOcclusionEffect.OcclusionFadeoutMinDistance = OcclusionFadeoutMinDistance;
   AmbientOcclusionEffect.OcclusionFadeoutMaxDistance = OcclusionFadeoutMaxDistance;
   AmbientOcclusionEffect.HaloDistanceThreshold = HaloDistanceThreshold;
   AmbientOcclusionEffect.HaloDistanceScale = HaloDistanceScale;
   AmbientOcclusionEffect.HaloOcclusion = HaloOcclusion;
   AmbientOcclusionEffect.EdgeDistanceThreshold = EdgeDistanceThreshold;
   AmbientOcclusionEffect.EdgeDistanceScale = EdgeDistanceScale;
   AmbientOcclusionEffect.FilterDistanceScale = FilterDistanceScale;
   AmbientOcclusionEffect.HistoryConvergenceTime = HistoryConvergenceTime;
   AmbientOcclusionEffect.HistoryWeightConvergenceTime = HistoryWeightConvergenceTime;
      }
    }
  }
}

defaultproperties
{
  ObjName="Set Ambient Occlusion Effect Properties"
  ObjCategory="Post Process"

  VariableLinks(0)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Occlusion Power",PropertyName=OcclusionPower)
  VariableLinks(1)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Occlusion Scale",PropertyName=OcclusionScale)
  VariableLinks(2)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Occlusion Bias",PropertyName=OcclusionBias)
  VariableLinks(3)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Min Occlusion",PropertyName=MinOcclusion)
  VariableLinks(4)=(ExpectedType=class'SeqVar_Bool',bHidden=true,LinkDesc="Angle Based SSAO",PropertyName=bAngleBasedSSAO)
  VariableLinks(5)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Occlusion Radius",PropertyName=OcclusionRadius)
  VariableLinks(6)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Occlusion Fadeout Min Distance",PropertyName=OcclusionFadeoutMinDistance)
  VariableLinks(7)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Occlusion Fadeout Max Distance",PropertyName=OcclusionFadeoutMaxDistance)
  VariableLinks(8)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Halo Distance Threshold",PropertyName=HaloDistanceThreshold)
  VariableLinks(9)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Halo Distance Scale",PropertyName=HaloDistanceScale)
  VariableLinks(10)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Halo Occlusion",PropertyName=HaloOcclusion)
  VariableLinks(11)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Edge Distance Threshold",PropertyName=EdgeDistanceThreshold)
  VariableLinks(12)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Edge Distance Scale",PropertyName=EdgeDistanceScale)
  VariableLinks(13)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Filter Distance Scale",PropertyName=FilterDistanceScale)
  VariableLinks(14)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="History Convergence Time",PropertyName=HistoryConvergenceTime)
  VariableLinks(15)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="History Weight Convergence Time",PropertyName=HistoryWeightConvergenceTime)

  OcclusionColor=(R=0.0,G=0.0,B=0.0,A=1.0)
  OcclusionPower=4.0
  OcclusionScale=20.0
  OcclusionBias=0
  MinOcclusion=.1
  OcclusionRadius=25.0
  OcclusionQuality=AO_Medium
  OcclusionFadeoutMinDistance=4000.0
  OcclusionFadeoutMaxDistance=4500.0
  HaloDistanceThreshold=40.0
  HaloDistanceScale=.1
  HaloOcclusion=.04
  EdgeDistanceThreshold=10.0
  EdgeDistanceScale=.003
  FilterDistanceScale=10.0
  HistoryConvergenceTime=0
  HistoryWeightConvergenceTime=.07
}

関連するテーマ

Set Blur Effect Properties (ブラーエフェクトのプロパティ設定) Kismet アクション

この Kismet アクションによって、ポストプロセスチェーン内にあるブラー ポストプロセス エフェクト ノード (複数も) のプロパティを調整することが可能になります。

  • BlurKernelSize - ブラーする距離です。(単位はピクセル)。

SetBlurEffectPropertiesKismet.jpg

Kismet プロパティ

SetBlurEffectPropertiesKismetProperties.jpg

Unrealscript

SeqAct_SetBlurEffectProperties.uc
class SeqAct_SetBlurEffectProperties extends SeqAct_SetPostProcessEffectProperties
  DependsOn(BlurEffect);


var() float BlurKernelSize;

event Activated()
{
  local array<PostProcessEffect> PostProcessEffects;
  local int i;
  local BlurEffect BlurEffect;

  GetPostProcessEffects(PostProcessEffects, class'BlurEffect');

  if (PostProcessEffects.Length > 0)
  {
    for (i = 0; i < PostProcessEffects.length; ++i)
    {
      BlurEffect = BlurEffect(PostProcessEffects[i]);

      if (BlurEffect != None)
      {
   BlurEffect.BlurKernelSize = BlurKernelSize;
      }
    }
  }
}

defaultproperties
{
  ObjName="Set Blur Effect Properties"
  ObjCategory="Post Process"

  VariableLinks(0)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Blur Kernel Size",PropertyName=BlurKernelSize)
}

関連するテーマ

Set DOF and Bloom Effect Properties (被写界深度および ブルーム エフェクトのプロパティ設定) Kismet アクション

この Kismet アクションによって、ポストプロセスチェーン内にある被写界深度およびブルームのポストプロセス エフェクト ノード (複数も) のプロパティを調整することが可能になります。

  • FalloffExponent - ブラー量を [0,1] に正規化した後に適用する指数です。
  • BlurKernelSize - 被写界深度のボケの半径 (シーンがブラーする程度) に影響します。
  • MaxNear - フォーカスプレーンの前にあるアイテムに適用するブラーの程度をクランプするための、0 から 1 までの値です。
  • Min - 適用するブラーの程度をクランプするための、0 から 1 までの値です。
  • MaxFar - フォーカスプレーンの後ろにあるアイテムに適用するブラーの程度をクランプするための、0 から 1 までの値です。
  • FocusType - フォーカスポイントの決定方法を決定します。
  • FocusInnerRadius - 内部のフォーカスの半径です。
  • FocusDistance - FOCUS_Distance が有効な場合に使用されます。
  • FocusPosition - FOCUS_Position が有効な場合に使用されます。
  • BloomScale - ブルームカラーに適用するスケールです。
  • BloomThreshold - ブルームに寄与するには、ピクセルカラーのどの成分もこの値より大きくなければいけません。
  • BloomTint - ブルームカラーに乗じる値です。
  • BloomScreenBlendThreshold - ブルームを得るには、シーンのカラー ルミナンスがこの値よりも小さくなければいけません。 Photoshopのスクリーンブレンドモードのように動作します。また、明度がすでに高いエリアに過度のサチュレーションによってブルームが追加されるのを防ぎます。デフォルトの値である 1 は、ルミナンス 1 のピクセルがブルームをまったく得ないことになります。ルミナンス 0.5 のピクセルは半分のブルームを得ます。
  • BlurBloomKernelSize - ブルームエフェクトの半径です。
  • DepthOfFieldType - 被写界深度のタイプを指定することができます。パフォーマンスとクオリティの必要性に応じて選択します。
    • SimpleDOF - フォーカスされていないコンテンツをブラーするとともに、そのコンテンツをブラーされていないシーンと再結合させます。(高速、ほぼ一定の速度)。
    • ReferenceDOF - ピクセルシェーダーにおいて動的分岐を利用するとともに、円形のボケエフェクトをフィーチャーします。(カーネルサイズが大きい場合は遅い)。
    • BokehDOF - ボケテクスチャおよびより大きな半径を指定することができます。(D3D11 が必要。大量のフォーカスされていないコンテンツを使用する場合に遅くなる)。
  • DepthOfFieldQuality - パフォーマンスに役立てるために被写界深度のクオリティを調整します。
  • BokehTexture - BokehDOF が有効になっている場合に使用されます。

SetDOFAndBloomEffectPropertiesKismet.jpg

Kismet プロパティ

SetDOFAndBloomEffectPropertiesKismetProperties.jpg

Unrealscript

SeqAct_SetDOFAndBloomEffectProperties.uc
class SeqAct_SetDOFAndBloomEffectProperties extends SeqAct_SetDOFEffectProperties
  DependsOn(DOFAndBloomEffect);

var() float BloomScale;
var() float BloomThreshold;
var() color BloomTint;
var() float BloomScreenBlendThreshold;
var() float BlurBloomKernelSize;
var() EDOFType DepthOfFieldType;
var() EDOFQuality DepthOfFieldQuality;
var() Texture2D BokehTexture;

function SetProperties(PostProcessEffect PostProcessEffect)
{
  local DOFAndBloomEffect DOFAndBloomEffect;

  Super.SetProperties(PostProcessEffect);
  DOFAndBloomEffect = DOFAndBloomEffect(PostProcessEffect);

  if (DOFAndBloomEffect != None)
  {
    DOFAndBloomEffect.BloomScale = BloomScale;
    DOFAndBloomEffect.BloomThreshold = BloomThreshold;
    DOFAndBloomEffect.BloomTint = BloomTint;
    DOFAndBloomEffect.BloomScreenBlendThreshold = BloomScreenBlendThreshold;
    DOFAndBloomEffect.BlurBloomKernelSize = BlurBloomKernelSize;
    DOFAndBloomEffect.DepthOfFieldType = DepthOfFieldType;
    DOFAndBloomEffect.DepthOfFieldQuality = DepthOfFieldQuality;
    DOFAndBloomEffect.BokehTexture = BokehTexture;
  }
}

defaultproperties
{
  ObjName="Set DOF And Bloom Effect Properties"
  ObjCategory="Post Process"

  BloomScale=1.0
  BloomThreshold=1.0
  BloomTint=(R=255,G=255,B=255)
  BloomScreenBlendThreshold=10
  BlurKernelSize=16.0
  BlurBloomKernelSize=16.0

  VariableLinks(8)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Scale",PropertyName=BloomScale)
  VariableLinks(9)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Threshold",PropertyName=BloomThreshold)
  VariableLinks(10)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Screen Blend Threshold",PropertyName=BloomScreenBlendThreshold)
  VariableLinks(11)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Blur Bloom Kernel Size",PropertyName=BlurBloomKernelSize)
}

関連するテーマ

Set DOF, Bloom and Motion Blur Properties (被写界深度、ブルーム、モーションブラーのプロパティ設定) Kismet アクション

この Kismet アクションによって、ポストプロセスチェーン内にある被写界深度、ブルーム、モーションブラー ポストプロセス エフェクト ノード (複数も) のプロパティを調整することが可能になります。このアクションのプロパティは、Set DOF and Bloom Effect Properties (被写界深度とブルームエフェクト プロパティの設定) Kismet アクションのプロパティと同じです。

  • MaxVelocity - ブラーの最大速度量です。ブラー量のクランプです。
  • MotionBlurAmount - ブラーの「感度」とみなすことができるスケールです。
  • FullMotionBlur - あらゆるもの(静的 / 動的オブジェクト)がモーションブラーするか否かについて決定します。無効の場合は、動いているオブジェクトだけがブラーできます。
  • CameraRotationThreshold - 単一フレーム内でカメラが素早く回転した際にモーションブラーが切れる閾値です。(単位は度数です)。
  • CameraTranslationThreshold - 単一フレーム内でカメラが素早く平行移動した際にモーションブラーが切れる閾値です。(単位はワールド単位です)。

SetDOFBloomAndMotionBlurEffectPropertiesKismet.jpg

Kismet プロパティ

SetDOFBloomAndMotionBlurEffectPropertiesKismetProperties.jpg

Unrealscript

SeqAct_SetDOFBloomMotionBlurEffect.uc
class SeqAct_SetDOFBloomMotionBlurEffect extends SeqAct_SetDOFAndBloomEffectProperties
  DependsOn(DOFBloomMotionBlurEffect);

var() float MaxVelocity;
var() float MotionBlurAmount;
var() bool FullMotionBlur;
var() float CameraRotationThreshold;
var() float CameraTranslationThreshold;

function SetProperties(PostProcessEffect PostProcessEffect)
{
  local DOFBloomMotionBlurEffect DOFBloomMotionBlurEffect;

  Super.SetProperties(PostProcessEffect);
  DOFBloomMotionBlurEffect = DOFBloomMotionBlurEffect(PostProcessEffect);

  if (DOFBloomMotionBlurEffect != None)
  {
    DOFBloomMotionBlurEffect.MaxVelocity = MaxVelocity;
    DOFBloomMotionBlurEffect.MotionBlurAmount = MotionBlurAmount;
    DOFBloomMotionBlurEffect.FullMotionBlur = FullMotionBlur;
    DOFBloomMotionBlurEffect.CameraRotationThreshold = CameraRotationThreshold;
    DOFBloomMotionBlurEffect.CameraTranslationThreshold = CameraTranslationThreshold;
  }
}

defaultproperties
{
  ObjName="Set DOF, Bloom and Motion Blur Effect Properties"
  ObjCategory="Post Process"

  MotionBlurAmount=0.5f
  MaxVelocity=1.0f
  FullMotionBlur=true
  CameraRotationThreshold=90.0f
  CameraTranslationThreshold=10000.0f

  VariableLinks(12)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Max Velocity",PropertyName=MaxVelocity)
  VariableLinks(13)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Motion Blur Amount",PropertyName=MotionBlurAmount)
  VariableLinks(14)=(ExpectedType=class'SeqVar_Bool',bHidden=true,LinkDesc="Full Motion Blur",PropertyName=FullMotionBlur)
  VariableLinks(15)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Camera Rotation Threshold",PropertyName=CameraRotationThreshold)
  VariableLinks(16)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Camera Translation Threshold",PropertyName=CameraTranslationThreshold)
}

関連するテーマ

Set Material Effect Properties (マテリアル エフェクト プロパティの設定) Kismet アクション

この Kismet アクションによって、ポストプロセスチェーン内にあるマテリアル エフェクト ポストプロセス エフェクト ノード (複数も) のプロパティを調整することが可能になります。

  • Material - ポストプロセス エフェクトのために設定するマテリアルです。
  • Material Object - マテリアルの参照か、マテリアルインスタンスの参照のどちらかに設定することができます。この Kismet ノードは、マテリアルの参照を適切に見つけます。

SetMaterialEffectPropertiesKismet.jpg

Kismet プロパティ

SetMaterialEffectPropertiesKismetProperties.jpg

Unrealscript

SeqAct_SetMaterialEffectProperties.uc
class SeqAct_SetMaterialEffectProperties extends SeqAct_SetPostProcessEffectProperties
  DependsOn(MaterialEffect);

var() MaterialInterface Material;
var Object ObjectReference;

event Activated()
{
  local array<PostProcessEffect> PostProcessEffects;
  local int i;
  local MaterialEffect MaterialEffect;
  local MaterialInterface MaterialInterface;
  local MaterialInstanceActor MaterialInstanceActor;

  GetPostProcessEffects(PostProcessEffects, class'MaterialEffect');

  if (PostProcessEffects.Length > 0)
  {
    for (i = 0; i < PostProcessEffects.length; ++i)
    {
      MaterialEffect = MaterialEffect(PostProcessEffects[i]);

      if (MaterialEffect != None)
      {
        if (ObjectReference != None)
        {
          MaterialInterface = MaterialInterface(ObjectReference);

          if (MaterialInterface != None)
          {
            MaterialEffect.Material = MaterialInterface;
          }
          else
          {
            MaterialInstanceActor = MaterialInstanceActor(ObjectReference);

            if (MaterialInstanceActor != None)
            {
              MaterialEffect.Material = MaterialInstanceActor.MatInst;
            }
          }
        }
        else
        {
          MaterialEffect.Material = Material;
        }
      }
    }
  }
}


defaultproperties
{
  ObjName="Set Material Effect Properties"
  ObjCategory="Post Process"

  VariableLinks(0)=(ExpectedType=class'SeqVar_Object',bHidden=true,LinkDesc="Material Object",PropertyName=ObjectReference)
}

関連するテーマ

Set Motion Blur Effect Properties (モーションブラー エフェクト プロパティの設定) Kismet アクション

この Kismet アクションによって、ポストプロセスチェーン内にあるモーションブラー エフェクト ポストプロセス エフェクト ノード (複数も) のプロパティを調整することが可能になります。

  • MaxVelocity - ブラーの最大速度量です。ブラー量のクランプです。
  • MotionBlurAmount - ブラーの「感度」とみなすことができるスケールです。
  • FullMotionBlur - あらゆるもの(静的 / 動的オブジェクト)がモーションブラーするか否かについて決定します。無効の場合は、動いているオブジェクトだけがブラーできます。
  • CameraRotationThreshold - 単一フレーム内でカメラが素早く回転した際にモーションブラーが切れる閾値です。(単位は度数です)。
  • CameraTranslationThreshold - 単一フレーム内でカメラが素早く平行移動した際にモーションブラーが切れる閾値です。(単位はワールド単位です)。

SetMotionBlurEffectPropertiesKistmet.jpg

Kismet プロパティ

SetMotionBlurEffectPropertiesKistmetProperties.jpg

Unrealscript

SeqAct_SetMotionBlurEffectProperties.uc
class SeqAct_SetMotionBlurEffectProperties extends SeqAct_SetPostProcessEffectProperties
  DependsOn(MotionBlurEffect);

var() float MaxVelocity;
var() float MotionBlurAmount;
var() bool FullMotionBlur;
var() float CameraRotationThreshold;
var() float CameraTranslationThreshold;

event Activated()
{
  local array<PostProcessEffect> PostProcessEffects;
  local int i;
  local MotionBlurEffect MotionBlurEffect;

  GetPostProcessEffects(PostProcessEffects, class'MotionBlurEffect');

  if (PostProcessEffects.Length > 0)
  {
    for (i = 0; i < PostProcessEffects.length; ++i)
    {
      MotionBlurEffect = MotionBlurEffect(PostProcessEffects[i]);

      if (MotionBlurEffect != None)
      {
        MotionBlurEffect.MaxVelocity = MaxVelocity;
        MotionBlurEffect.MotionBlurAmount = MotionBlurAmount;
        MotionBlurEffect.FullMotionBlur = FullMotionBlur;
        MotionBlurEffect.CameraRotationThreshold = CameraRotationThreshold;
        MotionBlurEffect.CameraTranslationThreshold = CameraTranslationThreshold;
      }
    }
  }
}

defaultproperties
{
  ObjName="Set Motion Blur Effect Properties"
  ObjCategory="Post Process"

  MotionBlurAmount=0.5f
  MaxVelocity=1.0f
  FullMotionBlur=true
  CameraRotationThreshold=90.0f
  CameraTranslationThreshold=10000.0f

  VariableLinks(0)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Max Velocity",PropertyName=MaxVelocity)
  VariableLinks(1)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Motion Blur Amount",PropertyName=MotionBlurAmount)
  VariableLinks(2)=(ExpectedType=class'SeqVar_Bool',bHidden=true,LinkDesc="Full Motion Blur",PropertyName=FullMotionBlur)
  VariableLinks(3)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Camera Rotation Threshold",PropertyName=CameraRotationThreshold)
  VariableLinks(4)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Camera Translation Threshold",PropertyName=CameraTranslationThreshold)
}

関連するテーマ

Set Uber Post Process Effect Properties(uber ポストプロセス エフェクト プロパティの設定) Kismet アクション

この Kismet アクションによって、ポストプロセスチェーン内にあるモーションブラー エフェクト ポストプロセス エフェクト ノード (複数も) のプロパティを調整することが可能になります。

  • SceneShadows - シーンのシャドウをカラー化します。
  • SceneHighLights - シーンのハイライトをカラー化します。
  • SceneMidTones - シーンの中間トーンをカラー化します。
  • SceneDesaturation - シーンをデサチュレーションします。0 の場合はデサチュレーションしません。1 の場合は完全にデサチュレーションします。
  • SceneColorize - シーン全体をカラー化します。
  • TonemapperType - HDR カラーを LDR カラーレンジにマッピングするトーンマッパ関数を指定できます。
  • TonemapperRange - このトーンマッパ プロパティによって、最大 LDR 値にマッピングされている HDR 輝度値を指定することができます。輝度が高い値は白にマッピングされます。(適切な値は、2 から 16 までの範囲です)。Customizable (カスタム可能な) トーンマッパにのみ影響します。
  • ToeFactor - このトーンマッパ プロパティによって、暗色のマッピングを調整することができます。(tonemapper toe)。調整はカラーチャンネル単位で独立しているため、微細なシフトカラーとサチュレーション変化を導入することができます。Customizable (カスタム可能な) トーンマッパにのみ影響します。0 にすると線形となります。1 にすると暗色が抑圧され、より映画的なシーンとなります。
  • TonemapperScale - トーンマッパのための入力をスケーリングします。トーンマッパが指定されている場合にのみ使用されます。 0 が黒色です。
  • SoftEdgeKernelSize - モーションブラーのためのソフトエッジの半径です。値が 0 より大きくなるとソフトエッジ モーションブラーが有効になります。この方法によって、動いているオブジェクトの輪郭がブラーされ、モーションブラーが改善されます。この方法はスクリーン空間で機能します。したがって、この方法によるパフォーマンスは、スクリーンにのみ依存します。オブジェクト数、頂点数、トライアングル数には依存しません。
  • bEnableImageGrain - イメージ粒子 (ノイズ) を有効にするか否かを決めます。有効な場合は、8 ビットの量子化によるアーティファクトに対処するとともに、フィルム粒子をシミュレートします。(SceneImageGrainScale によってスケーリングされます)。
  • SceneImageGrainScale - イメージ粒子のスケールです。暗部にのみ影響します。
  • Weight Small - ブルームを調整することによって、内部でよりシャープな発光効果をさらに得ることができます。この機能が使用される場合、ブルームの半径に応じて、パフォーマンスに余分な負荷がかかります。ただし、ある場合においては、より大きな半径が低解像度で実行されると、速度が上がります。実際のウエイトは、あらゆるブルームのウエイト間の比率として算出されます。
  • Weight Medium - ブルームの形を調整することによって、内部および外部の余分なウエイトを減らします。ただし、ある場合においては、より大きな半径が低解像度で実行されると、速度が上がります。実際のウエイトは、あらゆるブルームのウエイト間の比率として算出されます。
  • Weight Large - ブルームを調整することによって外部でより大きく広がった発光効果をさらに得ることができます。この機能が使用される場合、ブルームの半径に応じて、パフォーマンスに余分な負荷がかかります。ただし、ある場合においては、より大きな半径が低解像度で実行されると、速度が上がります。実際のウエイトは、あらゆるブルームのウエイト間の比率として算出されます。
  • Size Multiplier Small - 小さなカーネルサイズをスケーリングします。0.1 から 0.5 の範囲の値が有効です。このプロパティは、BloomWeightSmall がウエイトを指定している場合にのみ使用されます。
  • Size Multiplier Medium - 中規模なカーネルサイズをスケーリングします。0.5 から 1.5 の範囲の値が有効です。
  • Size Multiplier Large - 大規模なカーネルサイズをスケーリングします。2 から 4 の範囲の値が有効です。このプロパティは、BloomWeightLarge がウエイトを指定している場合にのみ使用されます。
  • bScaleEffectsWithViewSize - BlurKernelSize に影響を与えます。この特性はビューサイズに応じてスケーリングされます。

SetUberPostProcessEffectPropertiesKismet.jpg

Kismet プロパティ

SetUberPostProcessEffectPropertiesKismetProperties.jpg

Unrealscript

SeqAct_SetUberPostProcessEffect.uc
class SeqAct_SetUberPostProcessEffect extends SeqAct_SetPostProcessEffectProperties
  DependsOn(UberPostProcessEffect);

var() vector SceneShadows<DisplayName=Shadows>;
var() vector SceneHighLights<DisplayName=HighLights>;
var() vector SceneMidTones<DisplayName=MidTones>;
var() float SceneDesaturation<DisplayName=Desaturation>;
var() vector SceneColorize<DisplayName=Colorize>;
var() ETonemapperType TonemapperType;
var() float TonemapperRange;
var() float TonemapperToeFactor<DisplayName=ToeFactor>;
var() float TonemapperScale;
var() float MotionBlurSoftEdgeKernelSize<DisplayName=SoftEdgeKernelSize>;
var() bool bEnableImageGrain;
var() float SceneImageGrainScale;
var() float BloomWeightSmall<DisplayName=Weight Small>;
var() float BloomWeightMedium<DisplayName=Weight Medium>;
var() float BloomWeightLarge<DisplayName=Weight Large>;
var() float BloomSizeScaleSmall<DisplayName=Size Multiplier Small>;
var() float BloomSizeScaleMedium<DisplayName=Size Multiplier Medium>;
var() float BloomSizeScaleLarge<DisplayName=Size Multiplier Large>;
var() bool bScaleEffectsWithViewSize;

event Activated()
{
  local array<PostProcessEffect> PostProcessEffects;
  local int i;
  local UberPostProcessEffect UberPostProcessEffect;

  GetPostProcessEffects(PostProcessEffects, class'UberPostProcessEffect');

  if (PostProcessEffects.Length > 0)
  {
    for (i = 0; i < PostProcessEffects.length; ++i)
    {
      UberPostProcessEffect = UberPostProcessEffect(PostProcessEffects[i]);

      if (UberPostProcessEffect != None)
      {
        UberPostProcessEffect.SceneShadows = SceneShadows;
        UberPostProcessEffect.SceneHighLights = SceneHighLights;
        UberPostProcessEffect.SceneMidTones = SceneMidTones;
        UberPostProcessEffect.SceneDesaturation = SceneDesaturation;
        UberPostProcessEffect.SceneColorize = SceneColorize;
        UberPostProcessEffect.TonemapperType = TonemapperType;
        UberPostProcessEffect.TonemapperRange = TonemapperRange;
        UberPostProcessEffect.TonemapperToeFactor = TonemapperToeFactor;
        UberPostProcessEffect.TonemapperScale = TonemapperScale;
        UberPostProcessEffect.MotionBlurSoftEdgeKernelSize = MotionBlurSoftEdgeKernelSize;
        UberPostProcessEffect.bEnableImageGrain = bEnableImageGrain;
        UberPostProcessEffect.SceneImageGrainScale = SceneImageGrainScale;
        UberPostProcessEffect.BloomWeightSmall = BloomWeightSmall;
        UberPostProcessEffect.BloomWeightMedium = BloomWeightMedium;
        UberPostProcessEffect.BloomWeightLarge = BloomWeightLarge;
        UberPostProcessEffect.BloomSizeScaleSmall = BloomSizeScaleSmall;
        UberPostProcessEffect.BloomSizeScaleMedium = BloomSizeScaleMedium;
        UberPostProcessEffect.BloomSizeScaleLarge = BloomSizeScaleLarge;
        UberPostProcessEffect.bScaleEffectsWithViewSize = bScaleEffectsWithViewSize;
      }
    }
  }
}

defaultproperties
{
  ObjName="Set Uber Post Process Effect Properties"
  ObjCategory="Post Process"

  SceneShadows=(X=0.0,Y=0.0,Z=-0.003)
  SceneHighLights=(X=0.8,Y=0.8,Z=0.8)
  SceneMidTones=(X=1.3,Y=1.3,Z=1.3)
  SceneDesaturation=0.4
  SceneColorize=(X=1,Y=1,Z=1)
  bEnableImageGrain=false
  TonemapperScale=1.0
  SceneImageGrainScale=0.02
  TonemapperRange=8
  TonemapperToeFactor=1
  BloomWeightSmall=0
  BloomWeightMedium=1
  BloomWeightLarge=0
  BloomSizeScaleSmall=0.25
  BloomSizeScaleMedium=1
  BloomSizeScaleLarge=3

  VariableLinks(0)=(ExpectedType=class'SeqVar_Vector',bHidden=true,LinkDesc="Scene Shadows",PropertyName=SceneShadows)
  VariableLinks(1)=(ExpectedType=class'SeqVar_Vector',bHidden=true,LinkDesc="Scene HighLights",PropertyName=SceneHighLights)
  VariableLinks(2)=(ExpectedType=class'SeqVar_Vector',bHidden=true,LinkDesc="Scene MidTones",PropertyName=SceneMidTones)
  VariableLinks(3)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Scene Desaturation",PropertyName=SceneDesaturation)
  VariableLinks(4)=(ExpectedType=class'SeqVar_Vector',bHidden=true,LinkDesc="Scene Colorize",PropertyName=SceneColorize)
  VariableLinks(5)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Tonemapper Range",PropertyName=TonemapperRange)
  VariableLinks(6)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Tonemapper Toe Factor",PropertyName=TonemapperToeFactor)
  VariableLinks(7)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Tonemapper Scale",PropertyName=TonemapperScale)
  VariableLinks(8)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Motion Blur Soft Edge Kernel Size",PropertyName=MotionBlurSoftEdgeKernelSize)
  VariableLinks(9)=(ExpectedType=class'SeqVar_Bool',bHidden=true,LinkDesc="Enable Image Grain",PropertyName=bEnableImageGrain)
  VariableLinks(10)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Scene Image Grain Scale",PropertyName=SceneImageGrainScale)
  VariableLinks(11)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Weight Small",PropertyName=BloomWeightSmall)
  VariableLinks(12)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Weight Medium",PropertyName=BloomWeightMedium)
  VariableLinks(13)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Weight Large",PropertyName=BloomWeightLarge)
  VariableLinks(14)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Size Scale Small",PropertyName=BloomSizeScaleSmall)
  VariableLinks(15)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Size Scale Medium",PropertyName=BloomSizeScaleMedium)
  VariableLinks(16)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Bloom Size Scale Large",PropertyName=BloomSizeScaleLarge)
  VariableLinks(17)=(ExpectedType=class'SeqVar_Bool',bHidden=true,LinkDesc="Scale Effects With View Size",PropertyName=bScaleEffectsWithViewSize)
}

関連するテーマ

Toggle Post Process Effect (ポストプロセス エフェクトの切り替え) Kismet アクション

この Kismet アクションによって、ポストプロセス チェーン内にあるポストプロセス エフェクト ノードの有効 / 無効を切り替えることができます。

TogglePostProcessEffectsKismet.jpg

Kismet プロパティ

TogglePostProcessEffectsKismetProperties.jpg

Unrealscript

SeqAct_TogglePostProcessEffect.uc
class SeqAct_TogglePostProcessEffect extends SeqAct_SetPostProcessEffectProperties;

var bool Value;

event Activated()
{
  local array<PostProcessEffect> PostProcessEffects;
  local int i;

  if (InputLinks[0].bHasImpulse) // Enable
  {
    Value = true;
  }
  else if (InputLinks[1].bHasImpulse) // Disable
  {
    Value = false;
  }
  else if (InputLinks[2].bHasImpulse) // Toggle
  {
    Value = !Value;
  }

  GetPostProcessEffects(PostProcessEffects);

  if (PostProcessEffects.Length > 0)
  {
    for (i = 0; i < PostProcessEffects.length; ++i)
    {
      if (PostProcessEffects[i] != None)
      {
        PostProcessEffects[i].bShowInEditor = Value;
        PostProcessEffects[i].bShowInGame = Value;
      }
    }
  }
}

defaultproperties
{
  ObjName="Toggle Post Process Effects"
  ObjCategory="Post Process"

  InputLinks(0)=(LinkDesc="Enable")
  InputLinks(1)=(LinkDesc="Disable")
  InputLinks(2)=(LinkDesc="Toggle")

  VariableLinks(0)=(ExpectedType=class'SeqVar_Bool',LinkDesc="Bool",bWriteable=true,MinVars=0,PropertyName=Value)
}

非表示の Kismet ノード


お気づきかもしれませんが、上記の Kismet ノードは、必要最低限のものが表示されています。オプションのほとんどは、単に非表示になっています。これらのオプションの非表示を解除するには、その対象となる Kismet ノードを右クリックして、コンテクストメニューを出します。そこで [Expose Variable] (変数のエクスポーズ) サブメニューを展開し、エクスポーズしたい変数を選択します。

次は、Occlusion Power ノードを展開した後の、Set Ambient Occlusion Effect Properties Kismet ノードです。

SeqAct_SetPostProcessEffectProperties


この基本 Kismet クラスは、上記すべての Kismet ノードの親クラスです。

Unrealscript

SeqAct_SetPostProcessEffectProperties.uc
class SeqAct_SetPostProcessEffectProperties extends SequenceAction
  abstract;

var() Name PostProcessEffectName;

function GetPostProcessEffects(out array<PostProcessEffect> PostProcessEffects, optional class<PostProcessEffect> MatchingPostProcessEffectClass = class'PostProcessEffect')
{
  local WorldInfo WorldInfo;
  local PostProcessEffect PostProcessEffect;
  local PlayerController PlayerController;
  local LocalPlayer LocalPlayer;

  WorldInfo = class'WorldInfo'.static.GetWorldInfo();

  // Affect the world post process chain
  if (WorldInfo != None)
  {
    ForEach WorldInfo.AllControllers(class'PlayerController', PlayerController)
    {
      LocalPlayer = LocalPlayer(PlayerController.Player);

      if (LocalPlayer != None && LocalPlayer.PlayerPostProcess != None)
      {
        PostProcessEffect = LocalPlayer.PlayerPostProcess.FindPostProcessEffect(PostProcessEffectName);

        if (PostProcessEffect != None && (PostProcessEffect.Class == MatchingPostProcessEffectClass || ClassIsChildOf(PostProcessEffect.Class, MatchingPostProcessEffectClass)))
        {
          PostProcessEffects.AddItem(PostProcessEffect);
        }
      }
    }
  }
}

defaultproperties
{
}

SeqAct_SetDOFEffectProperties

被写界深度のエフェクトを処理する基本クラスです。

Unrealscript

SeqAct_SetDOFEffectProperties.uc
class SeqAct_SetDOFEffectProperties extends SeqAct_SetPostProcessEffectProperties
  DependsOn(DOFEffect)
  abstract;

var() float FalloffExponent;
var() float BlurKernelSize;
var() float MaxNearBlurAmount<DisplayName=MaxNear>;
var() float MinBlurAmount<DisplayName=Min>;
var() float MaxFarBlurAmount<DisplayName=MaxFar>;
var() EFocusType FocusType;
var() float FocusInnerRadius;
var() float FocusDistance;
var() vector FocusPosition;

event Activated()
{
  local array<PostProcessEffect> PostProcessEffects;
  local int i;

  GetPostProcessEffects(PostProcessEffects);

  if (PostProcessEffects.Length > 0)
  {
    for (i = 0; i < PostProcessEffects.length; ++i)
    {
      SetProperties(PostProcessEffects[i]);
    }
  }
}

function SetProperties(PostProcessEffect PostProcessEffect)
{
  local DOFEffect DOFEffect;

  DOFEffect = DOFEffect(PostProcessEffect);

  if (DOFEffect != None)
  {
    DOFEffect.FalloffExponent = FalloffExponent;
    DOFEffect.BlurKernelSize = BlurKernelSize;
    DOFEffect.MaxNearBlurAmount = MaxNearBlurAmount;
    DOFEffect.MinBlurAmount = MinBlurAmount;
    DOFEffect.MaxFarBlurAmount = MaxFarBlurAmount;
    DOFEffect.FocusType = FocusType;
    DOFEffect.FocusInnerRadius = FocusInnerRadius;
    DOFEffect.FocusDistance = FocusDistance;
    DOFEffect.FocusPosition = FocusPosition;
  }
}

defaultproperties
{
  FocusType=FOCUS_Distance
  FocusDistance=800
  FocusInnerRadius=400
  FalloffExponent=2
  BlurKernelSize=2
  MaxNearBlurAmount=1
  MinBlurAmount=0
  MaxFarBlurAmount=1

  VariableLinks(0)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Falloff Exponent",PropertyName=FalloffExponent)
  VariableLinks(1)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Blur Kernel Size",PropertyName=BlurKernelSize)
  VariableLinks(2)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Max Near",PropertyName=MaxNearBlurAmount)
  VariableLinks(3)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Min",PropertyName=MinBlurAmount)
  VariableLinks(4)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Max Far",PropertyName=MaxFarBlurAmount)
  VariableLinks(5)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Focus Inner Radius",PropertyName=FocusInnerRadius)
  VariableLinks(6)=(ExpectedType=class'SeqVar_Float',bHidden=true,LinkDesc="Focus Distance",PropertyName=FocusDistance)
  VariableLinks(7)=(ExpectedType=class'SeqVar_Vector',bHidden=true,LinkDesc="Focus Position",PropertyName=FocusPosition)
}

Kismet の例


次は、PostProcessingExample マップ (下でダウンロードできるものに含まれている) によって使用されている Kismet です。

PostProcessKismetExampleThumbnail.jpg

ダウンロード


  • 本資料のためのスクリプトとコンテンツは、 ここから ダウンロードしてください。 (PostProcessingContent.zip)