콘텐츠로 이동

Smear

목적

UOverAnimSmearModule은 Pose History(포즈 기록)와 표면 속도를 이용해, 움직임이 진행된 방향의 메시 표면을 시간차 있게 늘이는 Offset / Smear 모듈입니다.

  • 헤더: OverAnimation/Asset/OverAnimModule.h
  • 클래스: UOverAnimSmearModule
  • 실행 Phase: Offset / Smear (EOverAnimModulePhase::Smear)
  • 기본 Input Composition: Re-Skinning

Simple과 Details 공통

Module Id, Module Name, 활성 상태 및 Order Within Module Phase는 Module Stack에서 관리되므로 이 Details 레퍼런스에는 포함하지 않습니다. Input Composition은 Details에 노출되는 공통 모듈 속성입니다.

UI 이름 소유 C++ 속성 기본값 / 범위 영향
Master Effect Intensity UOverAnimMeshDeformer::MasterEffectIntensity 1.0 / 최소 0.0, UI 최대 3.0 선택한 모듈의 Details에서도 보이는 asset 공용 값입니다. asset 안의 모든 module authored strength를 배율 조정하며, 각 module의 safety limit은 별도로 유지됩니다.
UI 이름 C++ 속성 기본값 / 범위 영향
Input Composition CompositionMode Re-Skinning 현재 control-point transform을 기준으로 다시 skinning합니다. Smear 생성자는 이 값을 Re-Skinning으로 설정합니다.
Length SimpleLength 1.0 / 0–5 authored Buffer Size의 비율입니다. 2.0은 pose history frame 수를 두 배로 늘립니다. Simple에서만 표시되지만 runtime에는 항상 적용됩니다.
Density SimpleDensity 1.0 / 0–5 authored Noise Density의 비율입니다. break-up의 주파수만 바꾸며 깊이·변위량은 바꾸지 않습니다. Use Noise가 꺼져 있으면 결과에 영향이 없습니다.

Simple knob의 런타임 해석

Simple knob는 Detailed 값을 수정하지 않습니다. runtime은 현재 레이아웃과 관계없이 authored Detailed 값으로부터 다음 값을 해석합니다.

Simple knob 해석되는 속성 처리
SimpleLength NumFrames authored frame 수에 비율을 적용하고 반올림한 뒤 2–64로 제한합니다. pose 간격용 별도 속성은 없습니다.
SimpleDensity NoiseDensity authored density에 비율을 적용하고 최소 0으로 제한합니다. bUseNoise == true일 때만 결과에 사용됩니다.

Details: Buffer

UI 이름 C++ 속성 기본값 / 범위 영향과 관계
Buffer Size NumFrames 2 / 2–64 authored pose 표본 수입니다. runtime은 SimpleLength를 곱한 최종 frame 수를 2–64로 제한합니다. 클수록 더 긴 pose history를 보관하며 control point 수에 비례해 메모리를 사용합니다.
Transform Buffer Space TransformBufferSpace Component Space (Local) Component Space는 부모에 상대적인 지연 애니메이션 pose를 재생합니다. World Space는 과거 world motion을 현재 component 기준으로 다시 맞춰 관성적인 trailing을 보존합니다.
History Source HistorySource Source Animation Pose Source Animation Pose는 원본 애니메이션 pose·속도에서 history와 속도를 읽습니다. Simulated Guide는 앞선 procedural guide 결과를 읽습니다. Angular Velocity를 켠 경우에도 이 선택이 위치와 각속도 원본을 결정합니다.

EOverAnimTransformBufferSpace

TransformBufferSpace가 사용하는 BlueprintType enum입니다.

C++ 값 Editor UI 의미
Local Component Space parent-relative animation pose를 history에 보관하고 지연 재생합니다.
World World Space 과거 world motion을 현재 Skeletal Mesh Component 기준으로 rebase하여 trailing inertia를 보존합니다.

EOverAnimTransformHistorySource

HistorySource가 사용하는 BlueprintType enum입니다.

C++ 값 Editor UI 의미
SourceAnimationPose Source Animation Pose 원본 animation pose와 그로부터 얻은 velocity를 history 입력으로 사용합니다.
SimulatedGuide Simulated Guide 앞 순서 procedural guide 결과와 그 velocity를 history 입력으로 사용합니다.

Details: Activation, Smear, Threshold, Noise

UI 이름 C++ 속성 기본값 / 범위 표시 조건 영향
Driver Mode DriverMode Automatic + Signal Boost 항상 Automatic Motion은 pose 기반 동작만 유지하고 Signal을 거부합니다. Signal Gated Motion은 response envelope가 활성인 동안만 Smear를 적용합니다. Automatic + Signal Boost는 pose 기반 동작을 유지하면서 response 중 history 사용량을 가중합니다.
Include Angular Velocity bUseAngularVelocity true 항상 bone의 각속도에서 생기는 접선 방향 표면 속도를 추가합니다. 켜면 runtime proxy가 각속도와 control-point 위치 배열도 생성합니다.
Use Velocity Threshold bUseVelocityThreshold false 항상 최종 표면 속도가 임계값을 넘기 전에는 Smear를 억제합니다.
Velocity Threshold VelocityThreshold 0.0 cm/s / 최소 0.0 Use Velocity Threshold가 켜진 경우 선형 및 회전 성분을 합친 최종 표면 속도의 최소값입니다. 각속도 단독 임계값이 아닙니다.
Use Noise bUseNoise true 항상 Perlin field 기반 break-up을 사용할지 결정합니다.
Noise Density NoiseDensity 50.0 / 최소 0.0 Use Noise가 켜진 경우 UV 공간 Perlin field의 authored 주파수입니다. 최종 값에는 SimpleDensity가 항상 곱해집니다. 값이 높을수록 break-up이 촘촘해집니다.

EOverAnimSmearDriverMode

UI 이름 Signal/Response 영향
MotionOnly Automatic Motion pose-history 기반 동작만 유지합니다. SupportsSignals()가 거짓이며 Response Rule 요청을 거부합니다.
SignalGatedMotion Signal Gated Motion active response envelope가 있을 때만 Smear를 적용합니다. Pulse, Sustained Response를 지원합니다.
MotionWithSignalBoost Automatic + Signal Boost procedural Smear를 유지하며 active response가 history 사용량을 가중합니다. Pulse, Sustained Response를 지원합니다.

실행·Signal·Response 범위

항목 지원 내용
Signal Driver ModeAutomatic Motion이 아닐 때만 지원합니다.
Response Mode Pulse, Sustained
Response Parameters FOverAnimSmearResponseParameters
Automatic Six-Stage Motion 조건부 지원합니다. 모듈이 활성화되어 이름을 가지며, Signal을 받는 Driver Mode, Buffer Size >= 2가 필요합니다. 기본 자동 단계 설정은 Anticipation, Recoil, Settle을 끄고 Overshoot Strength0.45로 둡니다.
Pulse / Sustained 타이밍 Driver Mode가 Signal을 허용하면 둘 다 허용합니다.

Automatic Motion은 Signal 요청을 받지 않습니다. 이 모드에서는 Response Rule이 모듈 인스턴스에 도달해도 거부됩니다.

Response Rule 파라미터와 Signal 조건

Response Rule의 Module Parameters는 FOverAnimSmearResponseParameters입니다.

UI 이름 C++ 속성 기본값 / 범위 영향
History Strength at Full Response HistoryStrengthAtMax 1.0 / 0.0–1.0 response가 최대일 때 사용할 구성된 pose history의 비율입니다. trail의 방향과 영향을 받는 silhouette은 계속 motion에서 결정합니다.

runtime은 이 파라미터가 유한수이고 0.0–1.0 범위인지 확인합니다. 요청 가중치는 ResolvedMagnitude × Master Effect Intensity × HistoryStrengthAtMax0.0–1.0으로 제한한 값입니다.

제한 사항과 성능

  • Driver Mode == Automatic Motion이면 SupportsSignals()가 거짓이므로 Signal/Response 요청을 거부합니다.
  • Automatic Six-Stage Response는 모듈 활성화, Module Name, Signal 수신 Driver Mode, Buffer Size >= 2를 모두 만족해야 생성됩니다.
  • pose-history 메모리는 authored Buffer Size × SimpleLength의 최종 frame 수와 control point 수에 따라 증가합니다. 최종 frame 수는 2–64로 제한됩니다.
  • Use Angular Velocity가 켜진 경우에만 각속도와 위치 데이터가 runtime proxy로 전달됩니다. Use Noise가 꺼져 있으면 noise field는 사용되지 않습니다.