콘텐츠로 이동

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 BendFull Additional Bend에 같은 역비율을 적용합니다. 2.0은 두 각도를 절반으로 만들어 더 작은 bend에서 반응합니다.
Reach SimpleReach 1.0, 단위 없음, 0–5 authored Correction Radius에 비율을 곱합니다. radius가 변위 계산 기준이므로 영향 범위와 절대 displacement가 함께 바뀝니다.
Focus SimpleFocus 1.0, 단위 없음, 0–5 authored Spatial FalloffSide 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이 FullStart 이상으로 보정합니다.

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 RuleModule 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 FillOutside 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를 만들지 않습니다.