본문 바로가기

유니티/Asset

[ Asset - ObiRope ] 05 . Simulation

[ 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에 있음)를 줄임 으로써 달성할 수 있다 . 이를 통해 제약 조건의 충족으로 인한 신축성의 감소 (즉, 탄탄해짐)의 효과를 볼 수 있다.

 

시뮬레이션을 진행할 때 더 작은 단계를 거치면 각 단계의 시작 부분에서 계산된 임시 위치가

우리가 시작하는 유효한 위치에 더 가까워진다. 

이렇게 하면 새로운 유효한 위치에 도달하는 데 더 적은 반복이 필요하다.

예시 1 ) 0.1ms의 타임스텝, 단계당 1회 반복으로 로프는 매우 신축성이 있다.

 

예시 2 ) 반복을 10으로 늘리면 (제약조건이 충족된다면) 팽팽하게 유지되지만 역학이 약화되고 성능이 저하된다.
예시 3 ) 0.01ms의 타임스텝을 사용하면 스트레칭을 제거하고 보다 생동감 있는 역학을 달성하는 데 한 번의 반복만으로 충분하다.
 
위의 예시에서 예시 2와 3은 동일한 성능비용으로 예시2보다 3의 품질향상이 더 크다.
즉 , 반복횟수의 증가보다 TimeStep의 감소가 더 효과적이라는 말 .

다른 엔진과 달리 Obi에서는 각 유형의 제약 조건에서 개별적으로 소요되는 반복 횟수를 설정할 수 있다 .

각각은 특정 유형의 제약 조건이 수행하는 작업에 따라 다른 방식으로 시뮬레이션에 영향을 미치므로 시뮬레이션을 실제로 미세 조정할 수 있다.

 

출처

http://obi.virtualmethodstudio.com/manual/6.3/convergence.html

 

Obi Physics for Unity - Distance Constraints

Simulation The information in this page will give you deeper insight into how Obi performs the simulation, helping you using it more effectively by making informed decisions when adjusting parameters. Obi models all physical simulations as a set of particl

obi.virtualmethodstudio.com

 

'유니티 > 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