[ Simulation ]
[ simulation in obi ]
Obi는 모든 물리적 시뮬레이션을 입자 (Particle) 및 제약 조건(constraints)의 집합으로 모델링한다 .
즉 , 입자는 자유롭게 움직이는 물질 덩어리이며 제약 조건은 입자의 동작을 제어하는 규칙이다 .
각 제약 조건은 입자 집합과 (선택적으로) "외부" 세계에 대한 정보(충돌기, 강체, 바람, 기압 등)를 입력으로 받는다.
그런 다음 특정 조건을 충족하도록 입자의 위치를 수정한다.
예를 들어,
- 거리 제약 조건을 통해 두 입자를 서로 특정 거리 내에 유지하려고 하거나,
- 충돌 제약 조건을 통해 입자가 충돌체 내부로 들어갈 수 없도록 하거나,
- 공기 역학적 제약조건을 통해 입자를 주변의 공기 흐름과 일치하는 위치에 배치 할 수 있다 .
Obi는 이를 위해 위치 기반 역학 또는 줄여서 PBD 로 알려진 시뮬레이션 패러다임을 사용한다 .
PBD에서 힘과 속도는 시뮬레이션에서 다소 부차적인 역할을 하며 위치가 대신 사용된다.
[ PBI ]
[ 위치 기반 역학 (PBI) ]
모든 시뮬레이션 단계가 시작될 때 Obi는 각 입자를 속도 와 시간 단계 크기 에 따라
현재 위치에서 새로운 임시 위치 로 이동시킨다
이 임시 위치는 많은 제약 조건을 위반할 것이다.
(충돌체 내부에 있거나 거리 제약 조건을 통해 연결된 다른 입자에서 멀리 떨어져 있을 수 있다.)
입자는 시작 위치(녹색)에서 임시 위치(빨간색)로 이동하며 입자 속도만 사용하여 계산된다.
그렇게 이동한 임시 위치는 충돌체와 교차하므로 입자를 그곳으로 이동 시킬 수 없다 .
따라서 임시위치는 해당 입자에 영향을 미치는 제약 조건 에 의해 부과된 모든 조건을 충족하도록 조정 되어야 한다 .
임시 위치를 조정하여 입자의 속도도 간접적으로 조정한다.
임시 위치(빨간색)는 충돌 제약 조건을 충족하도록 수정된다.
프레임마다 이 프로세스(임시 위치 예측 -> 임시 위치 수정 -> 수정 위치로 진행)를 반복한다 .
녹색 위치만 화면에 렌더링되므로 물리 법칙에 따라 입자의 부드러운 애니메이션을 볼 수 있다.
[ 제약조건의 해결 ]
모든 시뮬레이션 단계가 시작될 때 , 때로는 제약 조건을 적용이 다른 제약 조건을 위반할 수 있으며
이로 인해 모든 제약 조건을 충족하는 새로운 위치를 찾기가 어려울수 있다 .
Obi는 반복적으로 모든 제약에 대한 전체적인 솔루션을 찾으려고 노력한다 .
반복적으로 시도할때마다 모든 제약 조건을 동시에 충족하는데 가까운 솔루션을 얻을 수 있다 .
Obi는 이를 위해 순차/병렬 두가지 방식으로 반복을 진행할 수 있다.
- 순차 모드 (Sequential)
각 제약 조건이 평가되고 , 다음 제약 조건으로 진행하기 전에 입자 위치에 대한 결과 조정이 즉시 적용된다.
이 때문에 제약 조건의 반복순서는 최종 결과에 약간의 영향을 미친다.
- 병렬 모드 (Parallel)
모든 제약조건은 첫 번째 패스에서 평가된다. 두 번째 패스에서 각 입자에 대한 조정이 평균화되고 적용된다.
이 때문에 병렬 모드는 순서 독립적 이지만 실측 솔루션에 더 느리게 접근한다 .
3개의 순차 반복으로 얻은 것과 동일한 결과에 도달하려면 6개의 병렬 반복이 필요하다.
추가 반복을 할 때마다 시뮬레이션이 실측에 가까워 지지만 , 성능은 저하된다 .
따라서 반복 횟수는 성능(적은 반복) 과 품질(많은 반복) 사이에서 슬라이더 역할을 한다.
대부분 큰 시뮬레이션 (길이가 긴/고해상도 로프와 같이 더 많은 제약 조건이 있는 시뮬레이션)에는
더 많은 반복이 필요하다.
[ 해결 되지 않은 제약조건의 활용 ]
불충분한 반복 횟수는 어떤 제약 조건을 완전히 충족 시키지 못할 수 있고 ,
이는 부드러움/신축성의 효과로 나타날 수 있다 .
- 거리 제한을 충족할 수 없는 경우 신축성 있는 천/로프 .
- 밀도 제약 조건을 충족할 수 없는 경우 탄력 있고 압축 가능한 유체 .
- 충돌 제약 조건을 충족할 수 없는 경우 약하고 부드러운 충돌이 발생함.
즉 , 탄성 /신축 동작이 필요한 경우 해결되지 않은 제약조건을 활용 할 수 있다 .
제약조건을 충족하지 못하게 하여 탄성 / 신축의 효과를 낸다는 것이다 .
단계의 모든 반복이 수행되고 입자 위치가 조정되면 위치 차별화를 사용하여
새 속도가 계산되고 새 시뮬레이션 단계를 시작할 수 있다.
다음은 여러 단계에 걸친 전체 프로세스를 보여주는 애니메이션이다.
녹색 위치만 각 단계가 끝날 때 렌더링된다.
빨간색 위치는 초기 단계 시작 시 입자 속도만 사용하여 계산된 임시 위치이며 매 단계마다 여러 번 반복하여 정제된다.
반복 작업을 마친 후에야 파티클이 임시 위치(현재 조정됨) 및 최종 위치로 이동할 수 있다.
제약 조건 제한과 신축성의 감소의 예시
제약 조건을 충족하는 데 필요한 반복 횟수를 줄이는 매우 효과적인 방법은 시뮬레이션 타임스텝 크기를 줄이는 것이다 .
이Fixed 업데이터 에서 하위 단계 의 양을 늘리 거나 ,Unity의 Fixed Time Step (ProjectSettings->Time에 있음)를 줄임 으로써 달성할 수 있다 . 이를 통해 제약 조건의 충족으로 인한 신축성의 감소 (즉, 탄탄해짐)의 효과를 볼 수 있다.
시뮬레이션을 진행할 때 더 작은 단계를 거치면 각 단계의 시작 부분에서 계산된 임시 위치가
우리가 시작하는 유효한 위치에 더 가까워진다.
이렇게 하면 새로운 유효한 위치에 도달하는 데 더 적은 반복이 필요하다.
다른 엔진과 달리 Obi에서는 각 유형의 제약 조건에서 개별적으로 소요되는 반복 횟수를 설정할 수 있다 .
각각은 특정 유형의 제약 조건이 수행하는 작업에 따라 다른 방식으로 시뮬레이션에 영향을 미치므로 시뮬레이션을 실제로 미세 조정할 수 있다.
출처
http://obi.virtualmethodstudio.com/manual/6.3/convergence.html
'유니티 > Asset' 카테고리의 다른 글
[ Asset - ObiRope ] 07 . 최적화 하기 (0) | 2023.07.28 |
---|---|
[ Asset - ObiRope ] 06 . 제약 유형 (0) | 2023.07.25 |
[ Asset - ObiRope ] 04 . Actor (0) | 2023.07.24 |
[ Asset - ObiRope ] 03 . Updater (0) | 2023.07.24 |
[ Asset - ObiRope ] 02 . Obi Solver (0) | 2023.07.24 |