본문 바로가기

유니티/Asset

[ Asset - ObiRope ] 07 . 최적화 하기

[ 성능 향상하기 ]

[ Burst 활성 여부 및 작업 디버거 및 안전 검사 비활성화 ]

Obi Solver의 Backend가 Burst 인지 확인한다 .

비활성화시 코드가 벡터화 되지 않으므로 대부분의 수학연산비용이 눈에 띄게 증가하기 때문이다 .

Jobs Debugger를 비활성화 한다 . 

활성화시 Obi 코드 전체에 검사가 추가되어 속도가 느려지기 때문이다 .

Leak Detection을 off 해준다 .

위와 같은 이유로 꺼준다 .

 

[ 최대한 적은수의 SubSteps와 반복의 사용 ]

SubSteps 는 Obi의 주요 품질/성능 트레이드오프이다 .(하나가 증가하면 하나는 감소하는 구조)

시뮬레이션의 시간 해상도(즉, 시뮬레이션이 업데이트되는 빈도)를 설정할 수 있습니다. 

 

각 SubSteps 에서 제약 조건은 여러 번 반복 평가된다 . 이는 Iterations옵션의 조정으로 반복 횟수를 정한다 .

따라서 더 많은 SubSteps 와 반복을 사용할수록 시뮬레이션이 더 정확해지지만 성능은 저하됩니다.

 

조정팁

ObiSolver 에서 모든 제약 조건 반복을 1로 설정하고 ,

 ObiFixedUpdater 에서 하위 단계의 양을 1로 설정하여 시작한다 .

 

그런 다음 로프/천이 너무 늘어나지 않고 유체/소프트 바디가 너무 튀지 않을 때까지 SubSteps의 양을 천천히 늘린다 .

(10개 이상은 거의 필요하지 않음). 

 

마지막으로, 특정 유형의 제약 조건에 추가 "움직임"이 필요하다고 생각되면 몇 번 더 반복을 추가한다

시뮬레이션이 내부적으로 작동하는 방식과 하위 단계 및 반복이 미치는 영향을 살펴보면 좋을것이다 .

https://yeoyeoyeo.tistory.com/216?category=1046236 

 

[ Asset - ObiRope ] 05 . Simulation

[ Simulation ] [ simulation in obi ] Obi는 모든 물리적 시뮬레이션을 입자 (Particle) 및 제약 조건(constraints)의 집합으로 모델링한다 . 즉 , 입자는 자유롭게 움직이는 물질 덩어리이며 제약 조건은 입자의

yeoyeoyeo.tistory.com

 

[ 사용하지 않는 제약조건의 비활성화 ]

각 Solver 가 관리하는 모든 액터에 대한 제약 조건을 체크 해제하므로써 전역적으로 비활성화할 수 있다.

 

 일부 제약 조건 유형은 활성화된 상태로 두면(아무 액터도 사용하지 않더라도) 성능에 큰 영향을 미치지 않지만

충돌 및 입자 충돌 과 같은 다른 제약 유형은 영향을 미친다 .

 

안전을 위해 특정 유형의 제약 조건을 사용하지 않는 경우 비활성화하하자. 

 

예를 들어 Solver에 서로 충돌하지 않고 흔들리는 천 플래그가 포함되어 있는 경우 입자 충돌 제약 조건  입자 마찰 제약 조건을 비활성화하면 잠재적으로 충돌하는 입자 쌍을 결정하기 위해 많은 불필요한 계산을 건너뛸 수 있다.

 

[ 업데이터는 가능한 하나만 사용하기 ]

업데이터 (ObiFixedUpdater, ObiLateFixedUpdater, ObiLateUpdater)는 하나 이상의 솔버 시뮬레이션을 "틱"하거나

업데이트하는 역할을 한다. 

업데이터의 모든 솔버는 병렬로 업데이트된다 .

 

Solver 들이 동일한 업데이터를 사용하면 Obi가 동시에 업데이트할 수 있으므로

CPU의 멀티스레딩 기능을 훨씬 더 잘 활용할 수 있다.

 

두개 이상의 업데이터가 존재하지 않게 주의를 기울이자

 

[ Mesh Collicer 사용하지 않기 ]

메쉬는 많은 삼각형으로 구성되며,충돌 감지 중에 각 입자는 충돌할 삼각형을 결정하기 위해 모든 삼각형을 검사해야 한다

삼각형이 입자에 비해 작은 경우 특히 좋지 않다.

이는 많은 삼각형이 각 입자와 충돌할 수 있음을 의미하기 때문이다. 

항상 Distance Field 를 MeshColliders의 대안으로 고려하자. 더 강력하고 빠르기 때문 .

 

[ Particle / 제약의 양 줄이기 ]

최후의 수단 중 하나는 액터를 표현하기 위해 더 적은 입자와 제약 조건을 사용하는 것이다. 

이것은 다루는 액터의 종류에 따라 약간 다르게 수행된다.

 

  • 옷감:밀도가 낮은 메시를 사용하여 폴리카운트를 줄이자.
  • 로프/막대:Blueprint의 해상도를 줄이자 . 이렇게 하면 길이 단위당 더 적은 입자가 사용되면 로프에 틈이 생길 수 다. 이것이 충돌 감지에 문제가 되는 경우(다른 객체가 로프 입자 사이를 통과할 수 있음) 표면 충돌 을 사용하자
  • 유체:Blueprint의 해상도를 줄인다 . 이렇게 하면 부피 단위당 더 적은 입자가 사용된다.연체:청사진의 해상도를 줄입니다 . 이렇게 하면 부피/표면 단위당 더 적은 입자가 사용됩니다.

출처

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

 

Obi Physics for Unity - Performance

Performance tips Obi has lots of parameters available, and there's often many possible ways to set up a simulation. This makes it very flexible and puts a lot of control in your hands. But, like a wise man once said "with great power comes great responsibi

obi.virtualmethodstudio.com