각 점이 입력 PointCloud의 위치를 목표로 삼아 스프링으로 따라가는 PointCloud를 출력합니다. Stiffness는 목표로 끌어당기는 강도, Damping은 속도의 감쇠이며, Damping이 작을수록 목표를 지나쳐 흔들립니다. Kick Trigger가 발동한 프레임에는 모든 점에 Kick Force 크기의 속도가 한 번만 더해집니다(방향은 인덱스로부터 결정되는 유사 난수 단위 벡터입니다). 프레임 드롭으로 날뛰지 않도록 한 스텝의 시간은 0.05초로 제한됩니다.
- Stiffness(기본값 60, 음수는 0으로 처리)
- Damping(기본값 6, 음수는 0으로 처리) — 감쇠는
exp(-Damping × dt)의 지수 감쇠입니다
- Kick Force(기본값 3)
- Velocity Stretch(기본값 0) — 0보다 크면 속도가 0.05를 넘은 점이 진행 방향을 향하고, Z 스케일이
1 + 속도 × Stretch 배로 늘어납니다
입력의 점 개수가 바뀌면 시뮬레이션 상태가 리셋되어, 모든 점이 목표 위치로 순간 이동하고 속도가 0으로 돌아갑니다. 상류에서 Count를 움직이면 스프링의 움직임이 끊깁니다.
입력 포트
| Port ID | 타입 |
PointCloud | PointCloudInput |
Stiffness | float |
Damping | float |
Kick Trigger | trigger |
Kick Force | float |
Velocity Stretch | float |
출력 포트
| Port ID | 타입 |
PointCloud | PointCloudOutput |
스크립트에서 설정할 수 있는 멤버
| 경로 | 타입 |
stiffnessInput | float |
dampingInput | float |
kickForceInput | float |
stretchInput | float |
Synapse Apps (스크립팅)
await synapse.modules.create({ type: "SpringPoints" })