[ Cloth Simulation & Collision ] 01. 천 시뮬레이션 (Cloth Simulation)

2023. 7. 6. 09:30·물리 기반 시뮬레이션/Cloth Simulation

📌 천 시뮬레이션 (Cloth Simulation)

이전 글에서 정리했던 위치 기반 역학(PBD)으로 표현할 수 있는 가장 대표적인 시뮬레이션으로, 천의 표현과 강체와의 충돌, 자가 충돌, 천 팽창 등의 내용을 포함한다.


📌 천의 표현 (Representation of Cloth)

천 시뮬레이터는 임의의 삼각형 메쉬를 입력받는다. 이때 각 가장자리는 최대 두 개의 삼각형에 공유되어야 하며, 메쉬의 각 노드는 정점이다. 또한, 사용자는 면적 당 질량으로 표시된 밀도 $\rho [kg/m^2]$ 를 제공하며 정점의 질량은 각 인접한 삼각형의 질량의 1/3의 합으로 설정된다.


🔗 스트레칭 제약 조건 (Stretching Constraint)

각 가장자리에 대해 다음과 같은 가장자리의 초기 길이를 나타내는 스칼라 $l_0$ 와 전역 매개변수로 제공되는 stretch stiffness $k$ 를 이용하여 스트레칭 제약을 생성한다. 이때 제약 함수는 다음과 같이 표현된다:

이는 $\text{equality}$ 유형이다.


🔗 굽힘 제약 조건 (Bend Constraint)

인접한 두 삼각형 $(p_1, p_3, p_2)$ 및 $(p_1, p_2, p_4)$ 에 대해 굽힘 제약을 생성한다. 이때 굽힘 제약 함수는 다음과 같이 표현된다:

위에서 $\phi_0$ 은 두 삼각형 사이의 초기 이중각(dihedral angle)이며, $k_{bend}$ 는 천의 굽힘 강성을 정의하는 전역 매개변수이다. 또한, 이는 인접한 두 삼각형의 법선 벡터 사이의 각도로 표현되며, 스트레칭과 독립적이라는 특징을 가진다.


💥 강체와의 충돌 (Collision with Rigid Bodies)

(이전 글의 충돌 감지 및 반응 참고)
양방향 상호작용을 위해 강체와의 충돌로 인해 정점 $i$ 가 투영될 때마다 접점에서 강체에 임펄스 $m_i\Delta p_i / \Delta t$ 를 적용한다. 또한, 작은 강체는 큰 천의 삼각형 메쉬를 통과할 수 있기 때문에, 강체의 볼록한 모서리와 천의 삼각형과의 충돌 검사를 수행해야 한다. 


💥 자가 충돌 (Self Collision)

삼각형의 크기가 거의 동일하다고 가정하면, 정점-삼각형 충돌을 찾기 위해 공간 해싱(spatial hashing)을 사용한다.

정점 $q$ 가 삼각형 $p_1, p_2, p_3$ 를 통과한다면 다음과 같은 제약 함수를 사용할 수 있다:

만약 정점이 삼각형의 법선에 대해 아래에서 다가온다면, 제약 함수는 다음과 같아야 한다:

이렇게 두 개의 제약 함수로 구분함으로써 정점을 원래의 면 방향으로 유지할 수 있다.

또한, 이러한 제약 함수는 선형 및 각 운동량이 보존되며, 천의 자체 충돌에 필수적인 요소이다.


🎈 천의 팽창 (Cloth Balloons)

닫힌 삼각형 메쉬의 경우, 메쉬 내부의 과압을 쉽게 모델링 할 수 있으며, 이를 표현하기 위해 모든 $N$ 개의 정점에 대해 다음과 같은 $\text{equality}$ 제약을 추가할 수 있다:

이때, $k$ 는 1로 설정한 하나의 제약 조건에 대한 강성을 나타내며, $t^i_1, t^i_2, t^i_3$ 는 삼각형 $i$ 에 속하는 세 개의 정점 인덱스이다. 또한, 괄호 안의 합계는 닫힌 메쉬의 실제 부피를 계산한다. 이렇게 계산된 부피는 원래의 부피 $V_0$ 에 과압 인자 $k_{pressure}$ 를 곱한 값과 비교된다. 

 

이러한 제약 함수는 다음과 같은 그래디언트를 생성한다:

이를 이용해 이전 글에서 다룬 스케일링 요소와 질량 가중치를 부여하여 최종적인 투영 오프셋 $\Delta p_i$ 를 얻을 수 있다.


📈 시뮬레이션 결과 (Result)

위 결과는 천에 움직임을 주기 위해 외력(바람)을 각 정점에 대해 가하도록 구현한 결과이다.


참고 자료 :

Position Based Dynamics - Matthias Müller, Bruno Heidelberger, Marcus Hennix, John Ratcliff


깃허브:

https://github.com/qkrdmstn/pbd-cloth-simulation.git

 

GitHub - qkrdmstn/pbd-cloth-simulation

Contribute to qkrdmstn/pbd-cloth-simulation development by creating an account on GitHub.

github.com

 

'물리 기반 시뮬레이션 > Cloth Simulation' 카테고리의 다른 글

[ Cloth Simulation & Collision ] 06. SDF 생성  (0) 2025.05.15
[ Cloth Simulation & Collision ] 05. Local Optimization for SDF  (0) 2024.01.17
[ Cloth Simulation & Collision ] 04. 천 자가 충돌 (Cloth Self-Collision)  (0) 2023.09.06
[ Cloth Simulation & Collision ] 03. 충돌 (History-Based Collisions)  (0) 2023.07.19
[ Cloth Simulation & Collision ] 02. 레벨 셋 충돌 (Level Set Collision)  (0) 2023.07.13
'물리 기반 시뮬레이션/Cloth Simulation' 카테고리의 다른 글
  • [ Cloth Simulation & Collision ] 05. Local Optimization for SDF
  • [ Cloth Simulation & Collision ] 04. 천 자가 충돌 (Cloth Self-Collision)
  • [ Cloth Simulation & Collision ] 03. 충돌 (History-Based Collisions)
  • [ Cloth Simulation & Collision ] 02. 레벨 셋 충돌 (Level Set Collision)
coding-l7
coding-l7
  • coding-l7
    coding-l7rl0
    coding-l7
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 기타
      • 유니티
        • OfficeWorkerRunning
      • 프로그래밍 언어
        • C
        • C#
        • C++
      • CS
        • 컴퓨터 구조
        • 운영체제
      • 물리 기반 시뮬레이션
        • 기초
        • Cloth Simulation
        • Fluid Simulation
      • 코딩 테스트
        • 프로그래머스
        • 백준
      • 독서
        • [ 뇌를 자극하는 윈도우즈 시스템 프로그래밍 ]
        • [ 혼자 공부하는 컴퓨터 구조 + 운영체제 ]
        • [ CUDA 기반 GPU 병렬 처리 프로그래밍 ]
      • 영어
        • Basic Grammar In Use
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 포트폴리오
  • 공지사항

  • 인기 글

  • 태그

    collision
    파동 난류
    액체 시뮬레이션
    surface turbulence
    시스템 프로그래밍
    GLSL
    cloth simulation
    pbd
    실수
    C언어
    bilateral blur
    narrow range filter screen-space fluid rendering
    물리 기반 시뮬레이션
    정수 승격
    fluid simulation
    screen-space rendering
    jump table
    wave simulation
    그리드 기반 방법
    Flip
    입자 기반 방법
    유체 시뮬레이션
    screen space fluid rendering
    position based dynamics
    명령어
    RAM
    fluid implicit particle
    OpenGL
    컴퓨터 구조
    상수
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
coding-l7
[ Cloth Simulation & Collision ] 01. 천 시뮬레이션 (Cloth Simulation)
글쓰기
상단으로

티스토리툴바