Joint Volume Corrective
공개 타입: UOverAnimJointCorrectiveModule
헤더: OverAnimation/Asset/OverAnimModule.h
실행 Phase: Shape
목적
Joint Volume Corrective는 강한 skeletal 또는 Shape 변형 뒤에 굽혀진 관절의 안쪽 crease와 바깥 silhouette의 표면 volume을 보정하는 Shape 모듈입니다. 관절 hierarchy를 바꾸지 않으며, reference pose 대비 추가 bend angle이 설정한 구간에 들어갈 때만 보정을 만듭니다.
Details 속성
Module ID, Module Name, Enabled, Order Within Module Phase는 Details customization에서 숨겨집니다. Input Composition은 상속된 Details 노출 속성입니다.
Simple
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향과 상호작용 |
Strength |
SimpleStrength |
1.0, 단위 없음, 0–5 |
authored Maximum Surface Correction에 비율을 곱합니다. inside/outside 균형은 변경하지 않습니다. |
Sensitivity |
SimpleSensitivity |
1.0, 단위 없음, 0–5 |
authored Start Additional Bend와 Full Additional Bend에 같은 역비율을 적용합니다. 2.0은 두 각도를 절반으로 만들어 더 작은 bend에서 반응합니다. |
Reach |
SimpleReach |
1.0, 단위 없음, 0–5 |
authored Correction Radius에 비율을 곱합니다. radius가 변위 계산 기준이므로 영향 범위와 절대 displacement가 함께 바뀝니다. |
Focus |
SimpleFocus |
1.0, 단위 없음, 0–5 |
authored Spatial Falloff과 Side Selectivity에 같은 비율을 곱하여 joint 주변으로 집중시킵니다. |
Balance |
SimpleBalance |
1.0, 단위 없음, 0–5 |
authored Inside Crease Fill에는 가중 역비율, Outside Volume에는 같은 가중 정비율을 적용합니다. 5.0에서 상승 측 multiplier가 2배가 되도록 가중됩니다. |
Simple 값은 Detailed 필드를 수정하지 않습니다. runtime은 현재 레이아웃과 관계없이 authored Detailed 값으로부터 위 필드를 해석합니다.
OverAnim | Joint
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향과 상호작용 |
Joint Bone |
JointBone |
None |
보정할 굽힘의 중심 bone입니다. Target Skeleton에 존재하고 resolved Region 안에 있어야 합니다. 없거나 Region 밖이면 joint chain을 해석하지 못해 effect proxy를 만들지 않습니다. |
Parent Bone |
ParentBone |
None |
명시하지 않으면 Joint Bone의 immediate skeleton parent를 사용합니다. 지정하면 반드시 Joint Bone의 immediate parent이고 Region 안에 있어야 합니다. |
Child Bone |
ChildBone |
None |
명시하지 않으면 Region 안의 Joint Bone direct child가 정확히 하나여야 합니다. direct child가 여러 개면 chain이 모호하므로 명시 선택이 필요합니다. 지정하면 Joint Bone의 direct child이고 Region 안에 있어야 합니다. |
OverAnim | Activation
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향과 상호작용 |
Start Additional Bend |
StartAdditionalBendDegrees |
12.0°, 0–179° |
current bend가 reference-pose bend를 이 authored angle보다 초과한 뒤 correction이 시작됩니다. 최종 angle에는 SimpleSensitivity의 역비율이 항상 곱해집니다. |
Full Additional Bend |
FullAdditionalBendDegrees |
75.0°, 1–180° |
additional bend가 이 authored angle에서 full correction에 도달합니다. 최종 angle에는 같은 역비율이 적용되고 runtime이 Full을 Start 이상으로 보정합니다. |
OverAnim | Shape
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향과 상호작용 |
Correction Radius |
CorrectionRadiusRatio |
0.35, 0.05–1.0 |
reference pose parent/child segment 중 더 짧은 segment 길이에 대한 authored 반지름 비율입니다. 최종 값에는 SimpleReach가 항상 곱해집니다. |
Maximum Surface Correction |
MaximumCorrectionRatio |
0.18, 0–1.0 |
resolved correction radius에 대한 authored 최대 vertex displacement 비율입니다. 최종 값에는 SimpleStrength가 항상 곱해지고 master effect intensity가 이후에 적용됩니다. |
Inside Crease Fill |
InnerCreaseRelaxation |
0.65, 0–2.0 |
authored inside fill에 SimpleBalance의 가중 역비율이 항상 곱해집니다. |
Outside Volume |
OuterBulgeStrength |
1.0, 0–2.0 |
authored outside volume에 SimpleBalance의 가중 정비율이 항상 곱해집니다. |
Spatial Falloff |
SpatialFalloffExponent |
2.0, 0.25–8.0 |
authored spatial profile 지수에 SimpleFocus가 항상 곱해집니다. 값이 높을수록 joint 주변에 집중됩니다. |
Side Selectivity |
SideFalloffExponent |
1.5, 0.25–8.0 |
authored inside/outside 선택 profile 지수에 SimpleFocus가 항상 곱해집니다. |
OverAnim (상속)
| UI 이름 |
C++ 속성 |
기본값·단위·범위 |
변경 영향 |
Input Composition |
CompositionMode |
Re-Skinning |
이 모듈 constructor가 설정하는 기본값입니다. Re-Skinning은 현재 control-point transform을 기준으로 module을 평가합니다. |
실행·Signal·Response 범위
| 항목 |
동작 |
| Phase |
Shape |
| Signal |
지원하지 않습니다. |
| Response Mode |
Module Response parameter struct가 없으며 Response Rule target이 될 수 없습니다. |
| Automatic Six-Stage Motion |
호환되지 않습니다. base automatic-response 검사에서 Signal을 지원하지 않는 module로 거부됩니다. |
| 구동 방식 |
매 frame의 current joint frame과 reference joint frame을 비교하는 procedural correction입니다. |
Response Rule과 Signal 입력
이 모듈은 SupportsSignals()를 override하지 않아 false이며, GetResponseParameterStruct()도 제공하지 않습니다. 따라서 Response Rule의 Module Response at 100%에 대응하는 module-specific Details 필드가 없고, Signal의 magnitude·direction·contact data는 이 모듈의 activation에 사용되지 않습니다.
안전·성능·검증
- chain 해석은
Joint Bone, immediate Parent Bone, direct Child Bone을 모두 Target Skeleton과 resolved Region에서 찾습니다. 명시 parent/child가 skeleton 관계에 맞지 않거나 Region 밖이면 effect를 만들지 않습니다.
- current와 reference joint frame 모두에서 parent/child segment 길이가 finite이고 0보다 커야 합니다. frame을 만들 수 없거나 inside direction이 zero이면 effect proxy를 만들지 않습니다.
Maximum Surface Correction이 0이거나 Inside Crease Fill과 Outside Volume이 모두 0이면 effect proxy를 만들지 않습니다.
- additional bend가
Start Additional Bend에 도달하지 않으면 activation은 0입니다. Full Additional Bend <= Start Additional Bend인 경우에는 Start를 넘는 순간 activation을 1로 처리합니다.
Correction Radius는 reference pose의 더 짧은 segment를 기준으로 계산합니다. radius가 0에 가깝거나 finite하지 않으면 effect proxy를 만들지 않습니다.