Mesh Bulge
공개 타입: UOverAnimMeshBulgeModule
헤더: OverAnimation/Asset/OverAnimModule.h
실행 Phase: Shape
목적
Mesh Bulge는 Bone Group(본 그룹)의 표면을 움직임 또는 Runtime Signal에 따라 팽창시키는 Shape 모듈입니다. 최종 변위는 Region mask, Response 강도, Bulge Scale, asset의 silhouette budget 순서로 제한됩니다.
Details 속성
Module ID, Module Name, Enabled, Order Within Module Phase는 Module Stack에서 관리하거나 Details customization에서 숨겨지므로 아래 표에는 포함하지 않습니다. Input Composition은 상속된 Details 노출 속성입니다.
Simple
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향과 상호작용 |
Strength |
SimpleStrength |
1.0, 단위 없음, 0–5 |
authored Bulge Scale의 비율입니다. 2.0은 200%, 0은 bulge를 제거합니다. |
Sensitivity |
SimpleSensitivity |
1.0, 단위 없음, 0–5 |
authored 속도·가속도 threshold와 Motion Intensity Dead Zone에 역비율을 적용합니다. 2.0은 threshold를 절반으로 만듭니다. 0은 안전 비율로 100배가 되어 사실상 반응하지 않습니다. |
Snap |
SimpleSnap |
1.0, 단위 없음, 0–5 |
authored Intensity Attack Rate에 정비율, Motion Smoothing Rate에 완화된 비율을 적용합니다. 2.0은 attack을 두 배로 만들며 0은 상승을 멈춥니다. |
Settle |
SimpleSettle |
1.0, 단위 없음, 0–5 |
authored Intensity Release Rate에 역비율을 적용합니다. 2.0은 release rate를 절반으로 만들어 두 배 오래 남습니다. 0은 release를 authored 값의 100배로 만듭니다. |
Focus |
SimpleFocus |
1.0, 단위 없음, 0–5 |
authored distribution exponent에는 정비율, focal radius에는 역비율, root influence에는 additive span을 적용합니다. Uniform에서는 공간 집중도에 영향이 없습니다. |
Directionality |
SimpleDirectionality |
1.0, 단위 없음, 0–5 |
authored Directional Bias에 고정 span을 더합니다. 1.0은 변화 없음, 0은 -1, 5는 +1이며 결과는 0–1로 제한됩니다. |
Simple 값은 Detailed 필드를 수정하지 않습니다. runtime은 현재 레이아웃과 관계없이 authored Detailed 값에 위 knob를 적용하고 각 안전 범위로 제한합니다.
OverAnim | Driver
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향과 상호작용 |
Driver Mode |
DriverMode |
Motion and Signal (Maximum) |
motion/Signal 입력의 사용 여부와 결합 방식을 정합니다. Runtime Signal Only이면 OverAnim|Motion 및 OverAnim|Collision Trigger 카테고리가 숨겨집니다. Animation / Guide Motion Only는 Signal Response를 받지 않습니다. |
OverAnim | Motion
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
표시 조건·변경 영향 |
Threshold Type |
ThresholdType |
Range Map (Recommended) |
Driver Mode != Runtime Signal Only일 때 표시됩니다. Range Map은 최소·최대 사이를 연속 값으로 변환하고, Threshold Gate는 최소 threshold를 넘으면 이진 accent를 만듭니다. |
Motion Source |
MotionSource |
Source Animation Pose |
같은 표시 조건입니다. Source Animation Pose는 upstream procedural dynamics를 제외하고, Simulated Guide Motion은 Spring/Follow Through 결과를 사용합니다. 후자는 sequential geometry input을 요구합니다. |
Mesh Bulge Velocity Type |
MeshBulgeVelocityType |
LinearVelocity |
같은 표시 조건입니다. LinearVelocity는 선형 단위, AngularVelocity는 각도 단위를 선택합니다. Min/Max Speed와 acceleration threshold의 단위 해석이 함께 바뀝니다. |
Motion Driver |
MotionDriver |
Speed |
같은 표시 조건입니다. Speed는 Min/Max Speed를, Acceleration은 Acceleration Min/Max Threshold를 사용합니다. |
Min Speed |
MinSpeed |
50.0 cm/s, >= 0 |
motion-only 표시 조건 및 Motion Driver = Speed일 때 표시됩니다. 이 값 아래의 motion은 procedural bulge를 만들지 않습니다. AngularVelocity에서는 deg/s로 해석됩니다. |
Max Speed |
MaxSpeed |
500.0 cm/s, >= 1 |
위와 같은 조건입니다. 이 값에서 procedural bulge가 최대치에 도달합니다. runtime은 SimpleSensitivity의 역비율을 항상 적용한 뒤 Min Speed + 1 이상이 되도록 보정합니다. |
Acceleration Min Threshold |
AccelerationMinThreshold |
400.0, >= 0 |
motion-only 및 Motion Driver = Acceleration일 때 표시됩니다. 이 값 아래의 가속도는 procedural bulge를 만들지 않습니다. 선형은 cm/s², 각도는 deg/s²입니다. |
Acceleration Max Threshold |
AccelerationMaxThreshold |
4000.0, >= 1 |
위와 같은 조건입니다. 이 값에서 procedural bulge가 최대치에 도달합니다. runtime은 SimpleSensitivity의 역비율을 항상 적용한 뒤 Min + 1 이상이 되도록 보정합니다. |
Motion Smoothing Rate |
MotionSmoothingRate |
12.0 s⁻¹, >= 0 |
motion-only일 때 표시됩니다. threshold mapping 전에 적용되는 low-pass filter 비율입니다. 0이면 즉시 반영됩니다. Snap이 이 값도 변경합니다. |
Motion Intensity Dead Zone |
MotionIntensityDeadZone |
0.01, 0–1 |
motion-only일 때 표시됩니다. 정규화 강도가 이 값보다 낮으면 0으로 만듭니다. Sensitivity가 이 값에 역비율로 작용합니다. |
Measurement Basis |
MeasurementBasis |
Auto |
motion-only일 때 표시됩니다. Region motion의 scale 기준을 선택합니다. Auto, character/locomotion height, region span/bounds/chain, average bone length, absolute unit을 선택할 수 있습니다. |
OverAnim | Distance
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
표시 조건·변경 영향 |
Root Influence |
DistanceWeight |
0.0, 0–1 |
Region root에서의 authored bulge influence입니다. SimpleFocus의 additive span이 항상 적용되며 Terminal Taper에서 사용됩니다. |
Distribution Exponent |
DistributionExponent |
1.5, >= 0.1 |
Distribution Mode != Uniform일 때 표시됩니다. authored spatial falloff에 SimpleFocus가 항상 곱해집니다. 값은 motion intensity가 아니라 spatial profile에만 영향을 줍니다. |
OverAnim | Shape
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
표시 조건·변경 영향 |
Bulge Scale |
BulgeScale |
1.0, >= 0 |
Region mask와 Response intensity 뒤에 적용되는 기하 팽창량입니다. 최종 값에는 SimpleStrength가 항상 곱해집니다. |
Distribution Mode |
DistributionMode |
Terminal Taper |
Uniform은 Region 전체에 같은 shape strength를, Terminal Taper는 focus bone 방향 skeleton chain을 따라 증가하는 profile을, Focal은 focus bone에서의 component-space 거리 기반 peak를 사용합니다. Uniform 외 모드는 유효한 focus bone을 해석하지 못하면 effect가 비활성화됩니다. |
Focus Bone |
FocusBoneName |
None |
Distribution Mode != Uniform일 때 표시됩니다. None이면 Bone Group에서 해석한 Region motion sample bone을 사용합니다. 지정한 bone 또는 fallback bone이 control point에서 해석되지 않으면 해당 effect는 실행되지 않습니다. |
Focal Radius Calibration Mode |
FocalRadiusCalibrationMode |
Character Relative |
Distribution Mode = Focal일 때 표시됩니다. Character Relative, Region Relative, Absolute 중 focal radius의 보정 기준을 정합니다. 다음 두 radius 필드의 표시 조건을 결정합니다. |
Focal Radius |
FocalRadius |
30.0 cm, >= 0.1 |
Focal이며 calibration mode가 Region Relative가 아닐 때 표시됩니다. authored radius에는 SimpleFocus의 역비율이 항상 곱해집니다. |
Focal Radius Ratio |
FocalRadiusRatio |
0.5, >= 0.01, UI 최대 2.0 |
Focal이며 calibration mode가 Region Relative일 때 표시됩니다. authored radius ratio에는 SimpleFocus의 역비율이 항상 곱해집니다. |
Intensity Attack Rate |
IntensityAttackRate |
24.0 s⁻¹, >= 0 |
authored 상승 rate에 SimpleSnap이 항상 곱해집니다. 최종 0이면 상승 intensity가 증가하지 않습니다. |
Intensity Release Rate |
IntensityReleaseRate |
8.0 s⁻¹, >= 0 |
authored 하강 rate에 SimpleSettle의 역비율이 항상 곱해집니다. |
Directional Bias |
DirectionalBias |
0.65, 0–1 |
0은 radial expansion, 1은 motion axis에 수직인 평면 방향입니다. authored 값에 SimpleDirectionality의 additive span이 항상 적용됩니다. |
Response |
Response |
SmoothStep |
spatial response curve입니다. Linear 또는 SmoothStep을 선택합니다. |
OverAnim | Mask
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향 |
Include Descendant |
bIncludeDescendant |
true |
focal/terminal shape profile에서 focus bone의 descendants를 포함할지 결정합니다. |
OverAnim | Collision Trigger
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
표시 조건·변경 영향 |
Enable Collision Trigger |
bEnableCollisionTrigger |
false |
motion-only일 때 표시됩니다. 켜면 motion target은 trigger 결과로 gate됩니다. Trigger Bone이 None이면 현재 구현은 gate를 열어 둡니다. |
Trigger Bone |
TriggerBoneName |
None |
trigger가 켜진 motion-only 상태에서 표시됩니다. 이 Bone Group 내부 control point의 motion을 검사 대상으로 찾습니다. 못 찾으면 collision gate가 적용되지 않습니다. |
Trace Length |
TraceLength |
200.0 cm, >= 0 |
같은 표시 조건입니다. 초기화 때 Trigger Distance의 상한으로 사용됩니다. 현재 PerformMotionTriggerTrace() 구현은 이 길이로 ray를 cast하지 않고 origin에서 sphere overlap을 수행하므로 overlap 결과 자체에는 반영되지 않습니다. |
Trigger Distance |
TriggerDistance |
100.0 cm, >= 0 |
같은 표시 조건입니다. 초기화 때 Trace Length 이하로 clamp됩니다. 현재 sphere-overlap 구현에서는 hit 거리 판정에 사용되지 않습니다. |
Sphere Radius |
SphereRadius |
10.0 cm, >= 0 |
같은 표시 조건입니다. 현재 runtime collision check가 Trigger Collision Channel로 수행하는 sphere overlap 반지름입니다. |
Trigger Collision Channel |
TriggerCollisionChannel |
WorldStatic |
같은 표시 조건입니다. sphere overlap의 collision channel입니다. |
Draw Debug Trace |
bDrawDebugTrace |
false |
같은 표시 조건입니다. debug build에서 현재 overlap sphere를 그립니다. |
OverAnim (상속)
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향 |
Input Composition |
CompositionMode |
Additive Offset |
Additive Offset은 이전 compose 결과에 displacement를 더하고, Re-Skinning은 현재 control-point transform을 기준으로 모듈을 다시 평가합니다. |
실행·Signal·Response 범위
| 항목 |
동작 |
| Phase |
Shape |
| Signal |
Driver Mode가 Animation / Guide Motion Only가 아닐 때만 수신합니다. |
| Response Mode |
Pulse와 Sustained를 선언합니다. 다만 Sustained는 Timing Driver = Automatic Six-Stage Motion일 때만 허용됩니다. 다른 Timing Driver의 Sustained 요청은 모듈에서 Pulse로 처리됩니다. |
| Automatic Six-Stage Motion |
호환됩니다. 자동 생성 Response의 기본 timing role은 Volume이며, 기본 설정은 Anticipation/Recoil/Settle 비활성, Overshoot만 활성입니다. |
| Driver Mode |
Animation / Guide Motion Only는 pose/guide motion만, Runtime Signal Only는 Signal만, Motion and Signal (Maximum)은 둘 중 큰 강도, Signal Gated Motion은 motion 강도와 Signal 강도를 곱해 사용합니다. |
공개 Enum
EOverAnimMeshBulgeDriverMode
DriverMode의 BlueprintType enum입니다. 선택값은 motion 입력의 계산 여부와 Response Rule Signal의 수락 여부를 함께 결정합니다.
| C++ 값 |
Editor UI |
의미 |
MotionOnly |
Animation / Guide Motion Only |
pose 또는 guide motion만으로 intensity를 계산합니다. Signal/Response 요청은 지원하지 않습니다. |
SignalOnly |
Runtime Signal Only |
pose-derived motion을 계산하지 않고 Signal intensity만 사용합니다. Motion 및 Collision Trigger Details는 숨겨집니다. |
MotionAndSignal |
Motion and Signal (Maximum) |
motion intensity와 Signal intensity 중 큰 값을 최종 intensity로 사용합니다. |
SignalGatedMotion |
Signal Gated Motion |
motion intensity에 active Signal response intensity를 곱합니다. Signal이 활성화되지 않으면 motion 출력도 0이 됩니다. |
EOverAnimMeshBulgeMotionSource
MotionSource가 사용하는 BlueprintType enum입니다. DriverMode != SignalOnly일 때만 입력으로 사용됩니다.
| C++ 값 |
Editor UI |
의미 |
SourcePose |
Source Animation Pose |
원본 animation pose에서 motion을 측정합니다. 앞선 procedural Dynamics 결과는 입력에서 제외됩니다. |
SimulatedGuide |
Simulated Guide Motion |
앞 단계의 simulated guide transform에서 motion을 측정합니다. Shape 입력이 순차 geometry input을 제공해야 합니다. |
EOverAnimMeshBulgeThresholdType
ThresholdType이 사용하는 BlueprintType enum입니다. DriverMode != SignalOnly일 때 Speed 또는 Acceleration 측정값을 intensity로 바꾸는 방식을 선택합니다.
| C++ 값 |
Editor UI |
의미 |
Normalize |
Range Map (Recommended) |
최소 threshold에서 0, 최대 threshold에서 1이 되는 연속 intensity를 만듭니다. |
FilterCut |
Threshold Gate |
최소 threshold를 넘는지 여부로 이진 accent를 만듭니다. |
EOverAnimMeshBulgeVelocityType
MeshBulgeVelocityType이 사용하는 UENUM입니다. DriverMode != SignalOnly일 때 Speed 및 Acceleration threshold의 물리 단위를 결정합니다.
| C++ 값 |
의미 |
LinearVelocity |
control point의 선형 속도와 선형 가속도를 사용합니다. Speed는 cm/s, Acceleration은 cm/s²로 해석됩니다. |
AngularVelocity |
control point의 각속도와 각가속도를 사용합니다. Speed는 deg/s, Acceleration은 deg/s²로 해석됩니다. |
EOverAnimMeshBulgeMotionDriver
MotionDriver가 사용하는 BlueprintType enum입니다. DriverMode != SignalOnly일 때 어떤 threshold 쌍을 읽을지 정합니다.
| C++ 값 |
Editor UI |
의미 |
Speed |
Speed |
MinSpeed와 MaxSpeed로 motion intensity를 계산합니다. |
Acceleration |
Acceleration |
AccelerationMinThreshold와 AccelerationMaxThreshold로 motion intensity를 계산합니다. |
EOverAnimMeshBulgeDistributionMode
DistributionMode가 사용하는 BlueprintType enum입니다. motion intensity가 Region 안에서 공간적으로 분배되는 방식을 정합니다.
| C++ 값 |
Editor UI |
의미 |
Uniform |
Uniform |
Region 전체에 동일한 shape strength를 적용합니다. Focus Bone과 Distribution Exponent는 사용하지 않습니다. |
TerminalTaper |
Terminal Taper |
focus bone 방향의 skeleton chain을 따라 shape strength를 증가시키는 profile을 사용합니다. |
Focal |
Focal |
focus bone을 중심으로 component-space 거리 기반 peak와 falloff를 계산합니다. Focal radius 관련 속성이 활성화됩니다. |
EOverAnimMeshBulgeResponse
Response가 사용하는 UENUM입니다. 최종 spatial response curve를 선택합니다.
| C++ 값 |
의미 |
Linear |
spatial weight를 선형으로 적용합니다. |
SmoothStep |
spatial weight의 시작·끝 기울기를 부드럽게 만드는 smooth-step curve를 적용합니다. |
Response Rule 전용 파라미터
UOverAnimMeshBulgeModule의 Module Response struct는 FOverAnimMeshBulgeResponseParameters입니다.
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
영향 |
Intensity Scale |
IntensityScale |
1.0, >= 0 |
resolved response magnitude에 곱한 뒤 Max Intensity로 clamp합니다. |
Max Intensity |
MaxIntensity |
3.0, >= 0 |
Intensity Scale 적용 뒤의 signal intensity 상한입니다. Bulge Scale 및 Region displacement budget 적용 전의 제한입니다. |
One-Shot Decay Rate |
DecayRate |
8.0 s⁻¹, >= 0 |
Pulse Signal intensity에 적용하는 지수 감쇠율입니다. Sustained automatic response는 envelope를 따라가므로 이 감쇠를 사용하지 않습니다. |
Signal 요청은 유효한 Mesh Component, 양수이고 finite인 resolved magnitude, 음수가 아닌 위 Response 파라미터, 그리고 모두 >= 0인 Attack/Hold/Release envelope를 요구합니다. DirectionWS가 finite이면 component space 방향으로 변환해 shape direction에 사용하며, 유효하지 않거나 영이면 signal intensity는 처리되지만 방향은 zero입니다.
안전·성능·검증
Signal Gated Motion은 signal gate용 motion history를 control point 수와 pre-roll 길이에 따라 유지합니다. 자동 motion phase 기반 sustained response일 때 motion phase tempo에서 pre-roll 시간을 계산합니다.
Simulated Guide Motion은 sequential geometry input을 요구합니다. 이 조건을 충족하지 않으면 Shape source의 upstream procedural 결과를 일관되게 사용하지 못합니다.
Distribution Mode != Uniform에서 Focus Bone 또는 fallback Region motion sample bone을 해석하지 못하면 warning을 기록하고 effect가 비활성화됩니다.
- Collision trigger는 매 fixed step에서 trigger control point의 motion dead zone 통과 여부를 검사하고 sphere overlap을 수행합니다.
Sphere Radius와 channel이 collision 비용에 직접 영향을 줍니다.
Bulge Scale은 0, Focal Radius는 0.1 cm, Focal Radius Ratio는 0.01, Distribution Exponent는 0.1보다 작게 runtime에서 사용되지 않습니다.