UDN
Search public documentation:

DevelopmentKitGemsControllingPostProcessEffectsKR
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 홈 > UDK 젬 > 키즈멧 또는 언리얼스크립트를 통한 포스트 프로세스 이펙트 제어법
UE3 홈 > 키즈멧 비주얼 스크립팅 > 키즈멧 또는 언리얼스크립트를 통한 포스트 프로세스 이펙트 제어법
UE3 홈 > 포스트 프로세스 이펙트 > 키즈멧 또는 언리얼스크립트를 통한 포스트 프로세스 이펙트 제어법

키즈멧 또는 언리얼스크립트를 통한 포스트 프로세스 이펙트 제어법


문서 변경내역: James Tan 작성. 홍성진 번역.
UDK 2011년 3월 버전으로 테스팅, PC 호환

개요


언리얼 엔진 3 는 언리얼스크립트를 통해 포스트 프로세싱을 동적으로 조절할 수 있습니다. 그러나 레벨 디자이너가 포스트 프로세싱을 동적으로 조절할 수 있게끔 미리 만들어진 키즈멧 노드같은 것은 없습니다. 이 젬은 (depth of field 나 무기 zooming 같은) 여러 트리거에 따른 포스트프로세싱을 조절할 수 있도록, 자체 키즈멧 노드를 만들거나 포스트 프로세스 이펙트 스크립트를 통합하는 데도 참고해 볼 수 있습니다.

관련 토픽

Set Ambient Occlusion Effect Properties 키즈멧 시퀸스 액션


포스트 프로세스 체인 내 앰비언트 오클루전 포스트 프로세스 이펙트 노드의 프로퍼티를 조절할 수 있습니다.

  • OcclusionColor - 오클루전(가려짐)이 많이 발생하는 곳에 대체할 씬 색입니다.
  • OcclusionPower - 계산된 오클루전 값에 적용할 힘입니다. 힘이 클 수록 대비가 세 지나, OcclusionScale 같은 요인도 조정해 줘야 합니다.
  • OcclusionScale - 계산된 오클루전 값에 적용할 스케일입니다.
  • OcclusionBias - 계산된 오클루전 값에 적용할 편향치입니다.
  • MinOcclusion - 다른 변형이 모두 적용된 이후의 최소 오클루전 값입니다.
  • bAngleBasedSSAO - SSAO 품질 향상, 노이즈 감소, 디테일 증가, 평평한 표면 어두움 없음, 볼록면 과도한 밝음 없음 등, 파라미터 재조정 필요.
  • OcclusionRadius - 오클루더 각 픽셀 주변을 검사할 거리로, 월드 유닛 단위입니다.
  • OcclusionQuality - 앰비언트 오클루전 이펙트의 품질입니다. Low 품질로도 게임플레이에 적합한 최적의 성능을 냅니다. Medium 품질은 프레임 간의 노이즈를 부드럽게 해 주며, 약간 높은 성능 비용이 듭니다. High 품질은 디테일 보존을 위해 추가 샘플을 사용합니다.
  • OcclusionFadeoutMinDistance - 오클루전 팩터의 페이드 아웃을 시작할 거리로, 월드 유닛 단위입니다. 스카이박스의 원거리 부작용을 숨기기에 좋습니다.
  • OcclusionFadeoutMaxDistance - 오클루전 팩터가 완전히 페이딩되는 거리로, 월드 유닛 단위입니다.
  • HaloDistanceThreshold - 오클루더를 다른 오브젝트로 간주시킬 픽셀 앞 거리로, 월드 유닛 단위입니다. 한계점은 주변 오브젝트, 예를 들어 1인칭 무기 주변의 후광 지역을 식별하는 데 사용됩니다.
  • HaloDistanceScale - 원거리 픽셀에 대한 HaloDistanceThreshold 을 늘이기 위한 스케일 팩터입니다. 값이 .001 이면 1000 월드 유닛 거리에서 HaloDistanceThreshold 가 1 유닛 커지는 결과를 냅니다.
  • HaloOcclusion - 후광에 공헌하기로 결정된 샘플에 적용할 오클루전 팩터입니다. 값이 0 이면 샘플에 온전한 오클루전이 적용되며, 값을 늘리면 2차적으로 감소되는 오클루전 값에 매핑합니다.
  • EdgeDistanceThreshold - 심도(depth)가 이 이상 차이나면 두 픽셀을 에지로 간주하여 교차 블러링하지 않습니다. 월드 유닛 단위입니다.
  • EdgeDistanceScale - 원거리 픽셀용 EdgeDistanceThreshold 를 늘리기 위한 스케일 팩터입니다. 값이 .001 이면 1000 월드 유닛 거리에서 EdgeDistanceThreshold 가 1 유닛 커지게 됩니다.
  • FilterDistanceScale - 화면 공간 내 커널 크기에 매핑시킬 월드 유닛 단위 거리입니다. 노이즈를 더 많이 남기는 대신, 원거리 픽셀용 필터 커널 크기를 줄이고 디테일을 유지하기에 좋습니다.
  • HistoryConvergenceTime - 오클루전 히스토리가 대략적으로 수렴하는 시간입니다. 시간이 길 수록 (.5 초) 프레임간의 스무딩은 늘고 노이즈는 줄지만 스트리킹(streaking, 탈색)이 현저해 집니다. 0 은 기능을 끕니다 (GPU 성능 및 메모리 부하가 덜합니다).
  • HistoryWeightConvergenceTime - 웨이트 히스토리가 대략적으로 수렴하는 시간입니다.

SetAmbientOcclusionEffectPropertiesKismet.jpg

키즈멧 프로퍼티

SetAmbientOcclusionEffectPropertiesKismetProperties.jpg

언리얼스크립트

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 키즈멧 시퀸스 액션


이 키즈멧 액션으로 포스트 프로세스 체인 내 Blur 포스트 프로세스 이펙트 노드의 프로퍼티를 조절할 수 있습니다.

  • BlurKernelSize - 블러링시킬 픽셀 단위 거리입니다.

SetBlurEffectPropertiesKismet.jpg

키즈멧 프로퍼티

SetBlurEffectPropertiesKismetProperties.jpg

언리얼스크립트

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 키즈멧 시퀸스 액션


이 키즈멧 액션으로 포스트 프로세스 체인 내 depth of field 와 bloom 포스트 프로세스 이펙트 노드의 프로퍼티를 조절할 수 있습니다.

  • FalloffExponent - 블러 양을 [0,1] 로 정규화시킨 후 적용할 지수입니다.
  • BlurKernelSize - DepthOfField bohek / 씬의 블러링 정도 반경에 영향을 끼칩니다.
  • MaxNear - 포커스 면 앞의 아이템에 적용할 블러 양을 제한하기 위한 값으로, 0 에서 1 범위입니다.
  • Min - 적용할 블러 양 제한용 최소값으로, 0 에서 1 범위입니다.
  • MaxFar - 포커스 면 뒤의 아이템에 적용할 블러 양을 제한하기 위한 값으로, 0 에서 1 범위입니다.
  • FocusType - 포커스 점이 결정되는 방식을 제어합니다.
  • FocusInnerRadius - 내부 포커스 반경입니다.
  • FocusDistance - FOCUS_Distance 가 켜졌을 때 사용됩니다.
  • FocusPosition - FOCUS_Position 이 켜졌을 때 사용됩니다.
  • BloomScale - 블룸 색에 적용되는 스케일입니다.
  • BloomThreshold - 픽셀의 어느 색 성분이든 이보다 커야 블룸에 공헌합니다.
  • BloomTint - 블룸 색에 대한 곱수입니다.
  • BloomScreenBlendThreshold - 이보다 씬 색 휘도(luminance)가 작으면 블룸을 받습니다. 포토샵의 화면 블렌드 모드와 같은 식으로 작동하며, 과-채도(over-saturation)가 이미 밝은 지역에 블룸을 추가하지 않도록 합니다. 디폴트 값 1 은, 휘도가 1 인 픽셀은 블룸을 받지 않으며, 휘도가 0.5 인 픽셀은 블룸을 절반만 받는다는 뜻입니다.
  • BlurBloomKernelSize - 블룸 이펙트의 반경입니다.
  • DepthOfFieldType - depth of field 유형을 지정할 수 있습니다. 필요한 성능과 품질에 따라 선택하십시오.
    • SimpleDOF - 포커스 콘텐츠 밖을 블러링한 다음 그것을 블러링되지 않은 씬과 재결합시킵니다. (빠르며 거의 고정 속도입니다)
    • ReferenceDOF - 픽셀 셰이더에서 동적 분기(branching)를 활용하여 원형 Bokeh 모양 효과를 냅니다. (커널 크기가 크면 느립니다)
    • BokehDOF - Bokeh 텍스처 지정과 더 큰 반경을 허용합니다. (D3D11 을 요하며, 포커스가 잡히지 않은 콘텐츠를 많이 사용하면 느립니다)
  • DepthOfFieldQuality - depth of field 품질을 조절합니다. 성능에 도움이 될 수 있습니다.
  • BokehTexture - BokehDOF 가 켜졌을 때 사용됩니다.

SetDOFAndBloomEffectPropertiesKismet.jpg

키즈멧 프로퍼티

SetDOFAndBloomEffectPropertiesKismetProperties.jpg

언리얼스크립트

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 키즈멧 시퀸스 액션


이 키즈멧 액션으로 포스트 프로세스 체인 내 depth of field, 블룸, 모션 블러 포스트 프로세스 이펙트 노드의 프로퍼티를 조절할 수 있습니다. "Set DOF and Bloom Effect Properties" 키즈멧 액션 프로퍼티를 그대로 갖습니다.

  • MaxVelocity - 최대 블러 속도 양입니다. 블러 양의 제한입니다.
  • MotionBlurAmount - 블러의 "감도"로 볼 수 있는 스케일입니다.
  • FullMotionBlur - 모든 것(스태틱/다이내믹 오브젝트)에 모션 블러링을 할지 말지 여부입니다. 끄면 움직이는 오브젝트만 블러링됩니다.
  • CameraRotationThreshold - 단일 프레임에 카메라가 얼마나 빨리 회전하면 모션 블러를 끌 지를 정하기 위한 (각도 단위) 한계치입니다.
  • CameraTranslationThreshold - 단일 프레임에 카메라가 얼마나 빨리 움직이면 모션 블러를 끌 지를 정하기 위한 (월드 유닛 단위) 한계치입니다.

SetDOFBloomAndMotionBlurEffectPropertiesKismet.jpg

키즈멧 프로퍼티

SetDOFBloomAndMotionBlurEffectPropertiesKismetProperties.jpg

언리얼스크립트

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 키즈멧 시퀸스 액션


이 키즈멧 액션으로 포스트 프로세스 체인 내 머티리얼 이펙트 포스트 프로세스 이펙트 노드의 프로퍼티를 조절할 수 있습니다.

  • Material - 포스트 프로세스 이펙트 용으로 설정할 머티리얼입니다.
  • Material Object - 머티리얼 참조나 머티리얼 인스턴스 액터 참조로 설정 가능합니다. 키즈멧 노드가 적절한 머티리얼 참조를 찾아낼 것입니다.

SetMaterialEffectPropertiesKismet.jpg

키즈멧 프로퍼티

SetMaterialEffectPropertiesKismetProperties.jpg

언리얼스크립트

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 키즈멧 시퀸스 액션


이 키즈멧 액션으로 포스트 프로세스 체인 내 모션 블러 이펙트 포스트 프로세스 이펙트 노드의 프로퍼티를 조절할 수 있습니다.

  • MaxVelocity - 최대 블러 속도 양입니다. 블러 양의 제한입니다.
  • MotionBlurAmount - 블러의 "감도"로 볼 수 있는 스케일입니다.
  • FullMotionBlur - 모든 것(스태틱/다이내믹 오브젝트)에 모션 블러링을 할지 말지 여부입니다. 끄면 움직이는 오브젝트만 블러링됩니다.
  • CameraRotationThreshold - 단일 프레임에 카메라가 얼마나 빨리 회전하면 모션 블러를 끌 지를 정하기 위한 (각도 단위) 한계치입니다.
  • CameraTranslationThreshold - 단일 프레임에 카메라가 얼마나 빨리 움직이면 모션 블러를 끌 지를 정하기 위한 (월드 유닛 단위) 한계치입니다.

SetMotionBlurEffectPropertiesKistmet.jpg

키즈멧 프로퍼티

SetMotionBlurEffectPropertiesKistmetProperties.jpg

언리얼스크립트

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 포스트 프로세스 이펙트 노드의 프로퍼티를 조절할 수 있습니다.

  • SceneShadows - 씬의 그림자 색을 입힙니다.
  • SceneHighLights - 씬의 하이라이트 색을 입힙니다.
  • SceneMidTones - 씬의 미드 톤 색을 입힙니다.
  • SceneDesaturation - 씬의 채도를 감소시킵니다. 0 은 채도 없음, 1 은 온전 채도입니다.
  • SceneColorize - 전체 씬에 색을 입힙니다.
  • TonemapperType - HDR 컬러를 LDR 컬러 범위에 매핑시키는 톤 매퍼 함수를 지정할 수 있습니다.
  • TonemapperRange - 이 톤매퍼 프로퍼티로 최대 LDR 값에 매핑되는 HDR 밝기 값을 지정할 수 있습니다. 더 밝은 값은 하양으로 매핑됩니다. (2 에서 16 범위의 값이 적절) "Customizable" 톤매퍼에만 영향을 끼칩니다.
  • ToeFactor - 이 톤매퍼 프로퍼티로 어두운 색(톤매퍼 끝부분(toe))의 매핑을 조절할 수 있습니다. 조절은 컬러 채널별로 독립적이기에 약간의 컬러나 채도 시프트 변경을 도입할 수 있습니다. "Customizable' 톤매퍼에만 영향을 끼칩니다. 0 은 선형 결과를 내며, 1 은 어두운 부분을 뭉개 좀 더 필름형 씬이 됩니다.
  • TonemapperScale - 톤매퍼에 대한 입력 스케일입니다. 톤매퍼가 지정되었을 경우에만 사용됩니다. 0 은 검정입니다.
  • SoftEdgeKernelSize - 모션 블러에 대한 소프트 에지의 반경입니다. 0 보다 큰 값은 소프트 에지 모션 블러를 켭니다. 이 메서드는 움직이는 오브젝트의 실루엣을 흐리게 만들어 모션 블러를 향상시킵니다. 이 메서드는 화면 공간에서 작동합니다. 그러므로 그 성능은 화면 크기에 따라서만 달라지며, 오브젝트/버텍스/트라이앵글 수와는 무관합니다.
  • bEnableImageGrain - 이미지 그레인(노이즈) 활성화 여부입니다. 8 비트 양자화 부작용과 싸워내고 필름 그레인을 흉내내기 위함입니다. (SceneImageGrainScale 로 스케일 조절)
  • SceneImageGrainScale - 이미지 그레인 스케일로, 어두운 부분에만 영향을 끼칩니다.
  • Weight Small - 내부를 추가하여 좀 더 선명한 빛을 내고자 블룸을 조절합니다. 이 기능을 사용하면 블룸 반경에 따른 성능상의 비용이 추가될 수 있습니다. 그러나 낮은 해상도로 큰 반경을 하는 경우 등에는 더 빠를 수도 있습니다. 실제 웨이트(weight)는 모든 블룸 웨이트 간의 비율로 계산됩니다.
  • Weight Medium - 부가 내외부 웨이트를 감소시키기 위해 블룸 모양을 조절합니다. 낮은 해상도로 큰 반경을 하는 경우 등에는 더 빠를 수도 있습니다. 실제 웨이트는 모든 블룸 웨이트 간의 비율로 계산됩니다.
  • Weight Large - 외부를 추가하여 좀 더 분산된 빛을 내고자 블룸을 조절합니다. 이 기능을 사용하면 블룸 반경에 따른 성능상의 비용이 추가될 수 있습니다. 그러나 낮은 해상도로 큰 반경을 하는 경우 등에는 더 빠를 수도 있습니다. 실제 웨이트는 모든 블룸 웨이트 간의 비율로 계산됩니다.
  • Size Multiplier Small - 작은 커널 크기를 스케일 조절합니다. 0.1 에서 0.5 사이의 값이 좋습니다. 이 프로퍼티는 BloomWeightSmall 에 웨이트가 지정될 때만 사용됩니다.
  • Size Multiplier Medium - 중간 커널 크기를 스케일 조절합니다. 0.5 에서 1.5 사이의 값이 좋습니다.
  • Size Multiplier Large - 큰 커널 크기를 스케일 조절합니다. 2 에서 4 사이의 값이 좋습니다. 이 프로퍼티는 BloomWeightSmall 에 웨이트가 지정될 때만 사용됩니다.
  • bScaleEffectsWithViewSize - BlurKernelSize 에 영향을 끼치며, 그 특성은 뷰 크기에 따라 스케일됩니다.

SetUberPostProcessEffectPropertiesKismet.jpg

키즈멧 프로퍼티

SetUberPostProcessEffectPropertiesKismetProperties.jpg

언리얼스크립트

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 키즈멧 시퀸스 액션


이 키즈멧 액션으로 포스트 프로세스 체인 내 포스트 프로세스 이펙트 노드를 enable / disable / toggle 할 수 있습니다.
  • Bool - 토글 값을 반환합니다.

TogglePostProcessEffectsKismet.jpg

키즈멧 프로퍼티

TogglePostProcessEffectsKismetProperties.jpg

언리얼스크립트

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)
}

숨겨진 키즈멧 노드


위의 키즈멧 노드 옵션이 꽤나 빈 듯한 느낌을 받으셨을 것입니다. 대부분의 옵션은 숨겨져 있기 때문입니다. 이 옵션을 보이게 하려면 키즈멧 노드에 우클릭하여 맥락 메뉴를 띄웁니다. 거기서 "Expose Variable"(변수 노출) 서브 메뉴를 확장한 다음 노출시키려는 변수를 선택하면 됩니다.

This is the Set Ambient Occlusion Effect Properties Kismet node after I exposed the Occlusion Power node.

SeqAct_SetPostProcessEffectProperties


This base Kismet class is the parent class of all the above Kismet nodes.

언리얼스크립트

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();

  // 월드 포스트 프로세스 체인에 영향을 끼칩니다.
  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


DOF 이펙트를 다루는 베이스 클래스입니다.

언리얼스크립트

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)
}

키즈멧 예제


아래 다운로드에 포함된 PostProcessingExample 맵에 사용되는 키즈멧입니다.

PostProcessKismetExampleThumbnail.jpg

다운로드