질량–스프링 토폴로지
입자 격자 전체에 걸쳐 신장 저항을 위한 구조 스프링, 대각선 안정성을 위한 전단 스프링, 굽힘 저항을 위한 굽힘 스프링을 배치했습니다.
컴퓨터 그래픽스 · UW CSE 457 최종 과제
Unity로 구현한 실시간 질량–스프링 천 솔버입니다. 안정적인 적분, 신장 제약, 설정 가능한 고정점, 충돌 처리, 인터랙티브 바람을 결합했습니다.
솔버
천을 세 종류의 스프링으로 연결된 입자 격자로 모델링했습니다. 구조 스프링은 늘어남에 저항하고, 전단 스프링은 대각선 방향 변형을 안정시키며, 굽힘 스프링은 접힘에 저항합니다.
매 프레임마다 스프링 힘과 전역 힘을 누적하고, 고정되지 않은 입자를 Verlet 적분으로 진행시킨 뒤, 충돌과 과신장 제약을 해결하고 보정된 위치를 렌더링 메시에 다시 기록합니다.
고정점 규칙으로 여러 가지 고정 구성을 지원합니다. 또한 프로젝트에서 제공하는 충돌 유틸리티와 표면 인식 바람 유틸리티를 루프에 통합해, 난류성 돌풍과 실시간 방향·세기 조절을 구현했습니다.
구현
입자 격자 전체에 걸쳐 신장 저항을 위한 구조 스프링, 대각선 안정성을 위한 전단 스프링, 굽힘 저항을 위한 굽힘 스프링을 배치했습니다.
정지 길이, 강성, 스프링 방향을 이용해 늘어나면 입자를 서로 끌어당기고 압축되면 밀어냅니다.
Verlet 적분에 과신장 제약을 더해, 비현실적인 늘어남이 천을 불안정하게 만들기 전에 스프링을 보정합니다.
프레임별 파이프라인: 힘 누적, 적분 및 충돌 처리, 제약 해결, 그리고 메시 정점 갱신.
여러 고정 패턴을 위한 고정점 감지 기능을 갖추고, 제공된 충돌 및 바람 헬퍼를 시뮬레이션 루프에 통합했습니다.
시뮬레이션 장면