[ Obi Solver ]
[ Obi Solver ]
입자 물리학을 시뮬레이션하고 제약 조건을 적용하는 역할을 한다.
Solver 는 다음 3가지 사항을 기억해야 힌다 .
- Scene의 모든 GameObject에 추가할 수 있으며 동일한 장면에서 동시에 작동하는 둘 이상의 솔버가 있을 수 있다 .
- 모든 Actor는 업데이트 및 렌더링을 위해 Solver의 자식으로 존재해야 한다 .
- 각 Solver는 다른 Solver와 완전히 독립적이다. 따라서 다른 Solver에 의해 업데이트되는 Actor는 서로 상호 작용/충돌하지 않는다. 동일한 Solver의 Actor만 서로 반응한다.
Solver는 항상 로컬 공간 에서 시뮬레이션을 수행한다 .
즉, 솔버를 변환, 회전 또는 스케일링하면 시뮬레이션이 전체적으로 엄격하게 변환된다.
Solver의 선형/회전 이동의 비율을 관성력의 형태로 다시 시뮬레이션에 주입할 수 있다.
예를 들어 전체적인 캐릭터 움직임이 의상 시뮬레이션에 영향을 미치는 정도를 제어할 수 있다.
이를 위해 Solver는 두 개의 매개변수를 노출하여 선형 및 회전 관성력을 독립적으로 제어한다 .
cf ) 해당 옵션은 아래 예시에서 자세히 다룬다 .
[ 구성요소 ]
Solver는 동작의 특정 측면에 영향을 미치는 매개변수가 포함되어 있다 . 총 4개의 색션으로 구성되어 있다.
각자 살펴보자 .
[ 01 . Solver Settings ]
Backend : 사용할 시뮬레이션 백엔드 . 지정된 백엔드 사용이 불가시 Oni 백엔드로 풀백을 시도한다 .
Mode : 2D 혹은 3D 모드에서 시뮬레이션 여부를 선택한다 .
Interpolation : 입자렌더링시 보간 옵션이다 . None의 연산속도가 빠르지만 Interpolate는 시각적 결과가 우수하다
선택시 1프레임의 지연이 발생한다 (슬로우 모션 효과에 적합하다)
[ 02 . Simulation Settings ]
중력, 감쇠, 관성 등과 같은 외부/내부 힘에 관한 다양한 전역 매개변수
- Gravity Space : Solver의 로컬 공간(Self) 혹은 월드 공간(World)에 중력을 적용할지 여부 . Self 선택시 중력의 방향이 Solver와 함께 회전한다 .
- Gravity : Solver의 Local 공간에서 표현되는 이 Solver의 입자에 적용되는 중력의 방향 및 크기이다 .
- Sleep Threshold : 해당 값보다 낮은 운동 에너지를 지닌 모든 입자는 제자리에 고정된다 . 속도나 힘의 미세한 변화로 인해 액터가 흔들리거나 매우 느리게 움직이는 것처럼 보이게 하고 싶지 않을때 유용하다 . 만약 입자가 아무리 작더라도 입자에 적용되는 힘의 영향을 받고자 한다면 0으로 설정한다 . 즉,낮을수록 작은 에너지에도 반응한다
- Damping : 입자 속도에 적용되는 속도 감쇠. 운동 에너지를 줄이려면 값을 높이자 . 또한 ,감쇠 값이 높으면 수중 효과를 시뮬레이션하는 데 유용할 수 있다. 0이 아닌 낮은 값(예: 0.15)은 공기역학적 항력을 고려하여 대부분의 상황에서 시뮬레이션의 사실성을 향상시킬 수 있다.
- World Linear Inerita Scale : Solver 변환의 표준 공간 선형 관성이 파티클에 적용되는 정도를 제어한다. 값의 범위는 0(없음)에서 1(100%)까지이다.즉 , 직선이동에 대한 관성이다
World Linear Inerita Scale이 1로 설정된 천 조각을 포함하는 Solver의 이동이다 .
갑자기 정지 혹은 이동시 천이 관성을 받음을 볼 수 있다 .
- World Angular Inerita Scale : 이전 속성과 유사하지만 선형 관성(변환) 대신 각 관성(회전)을 제어합니다. 원심력 과 코리올리 힘이 고려 됩니다 . 즉 , 회전에 대한 관성이다 .
World Angular Inerita Scale이 1로 설정된 천 조각을 포함하는 Solver 이동. Solver가 갑자기 멈출 때 천이 계속 앞으로
이동하는 방법과 솔버가 이동을 다시 시작할 때 뒤로 어떻게 시작되는지 볼 수 있다 .
cf ) 선형 관성과 각형 관성에 관하여
선형 관성과 각 관성은 운동의 변화에 대한 물체의 저항과 관련된 개념이지만 각각 선형 운동과 각 운동과 같은 다른 유형의 운동에 적용됩니다. 두 가지의 차이점을 살펴보겠습니다.
- 선형 관성: 병진 관성이라고도 하는 선형 관성은 직선 운동(직선 이동)의 변화에 저항하는 물체의 속성입니다. 관성의 법칙이라고도 하는 뉴턴의 제1 운동 법칙에 의해 지배되며, 정지한 물체는 정지 상태를 유지하려는 경향이 있고 운동 중인 물체는 외력이 작용하지 않는 한 같은 속도와 같은 방향으로 움직이려는 경향이 있습니다.
물체의 선형 관성은 질량과 직접적인 관련이 있습니다. 질량이 큰 물체는 선형 관성이 더 높습니다. 즉, 선형 속도의 변화에 더 잘 견딥니다. 이것이 가벼운 물체에 비해 무거운 물체를 가속하거나 감속하는 것이 더 어려운 이유입니다.
- 각 관성: 회전 관성 또는 관성 모멘트라고도 하는 각 관성은 각 운동(축을 중심으로 한 회전)의 변화에 저항하는 물체의 속성입니다. 선형 관성의 회전 아날로그입니다. 선형 관성과 마찬가지로 각 관성도 뉴턴의 첫 번째 운동 법칙을 따르지만 회전 운동과 관련됩니다.
물체의 각도 관성은 질량 분포와 회전축 모두에 따라 달라집니다. 회전축에서 더 멀리 집중된 더 많은 질량을 가진 물체는 더 높은 각관성을 가집니다. 예를 들어, 회전하는 피겨 스케이팅 선수를 생각해 보십시오. 스케이터가 팔을 몸에 더 가까이 당기면 관성 모멘트가 줄어들어 각운동량 보존으로 인해 더 빨리 회전할 수 있습니다.
요약하면 선형 관성과 각도 관성의 주요 차이점은 적용되는 모션 유형입니다. 선형 관성은 선형 운동의 변화에 대한 저항을 다루며 물체의 질량에 따라 달라집니다. 한편, 각관성은 회전 운동의 변화에 대한 저항을 다루며 질량 분포와 회전축 모두에 따라 달라집니다.
- Max Anisotropy : Obi의 유체 입자는 완전한 구형이 아닌 타원형일 수 있다. 해당 옵션은 물체의 표면에 모양을 더 잘 적응시키는 데 사용되어 더 정확한 충돌 감지와 더 부드러운 렌더링을 보여준다. Max anistropy를 사용하면 타원체 반경 사이의 최대 비율을 결정할 수 있다. 값이 1이면 모든 입자가 구형이 된다(비등방성 비활성화). 1보다 큰 값은 최대 이방성이 높을수록 입자가 더 타원형이 된다. 즉 , 1은 입자가 구체 그 이상은 입자가 타원형으로 설정하는 옵션이다 .
이때 , 유체 렌더링은 비등방성을 활성화하면(1이면) 엄청난 이점을 얻을 수 있다.
더 낮은 유체 해상도를 사용하고 훨씬 더 매끄럽게 보이는 유체 표면을 얻을 수 있다.
cf ) 최대 이방성 (비등방성)관하여
최대 비등방성은 컴퓨터 그래픽 및 렌더링 맥락에서 보는 각도에 따라 텍스처 왜곡 수준을 제어하기 위해 텍스처 매핑 기술에 사용되는 매개변수를 나타냅니다. 일반적으로 비등방성은 서로 다른 방향에서 측정할 때 재료 특성의 차이를 의미합니다.
컴퓨터 그래픽에서 텍스처는 시각적 세부 정보와 표면 특성을 3D 모델에 추가하는 데 사용되는 2D 이미지입니다. 3D 개체에 텍스처가 지정되면 텍스처 좌표가 모델의 정점에 할당되어 2D 텍스처를 3D 표면에 매핑하는 데 도움이 됩니다.
텍스처 매핑에는 사실적이고 매끄럽게 보이는 방식으로 3D 모델의 표면에 텍스처를 적용하는 프로세스가 포함됩니다. 그러나 원통의 측면이나 구의 가장자리와 같이 다양한 각도나 곡선이 있는 표면을 처리할 때 기존 텍스처 매핑 기술은 왜곡이나 시각적 아티팩트를 유발할 수 있습니다.
이방성 필터링이 작동하는 곳입니다. 비등방성 필터링은 텍스처 왜곡을 줄이기 위해 표면의 방향을 고려하는 텍스처 필터링 방법입니다. Max Anisotropy 매개변수는 텍스처에 적용되는 비등방성 필터링 정도를 제어하는 데 사용됩니다.
Max Anisotropy가 1로 설정되면 비등방성 필터링이 비활성화되고 질감을 모든 방향에서 균일하게 처리하는 표준 등방성 필터링을 사용하여 텍스처 매핑이 수행됨을 의미합니다. 최대 비등방성 값을 높이면 텍스처 필터링이 더 비등방성이 되어 다양한 각도의 표면에 텍스처를 더 정확하게 매핑할 수 있으므로 왜곡과 시각적 아티팩트가 줄어듭니다.
더 높은 최대 이방성 값을 사용하면 특히 높은 수준의 곡률 또는 비스듬한 각도가 있는 표면을 처리할 때 질감이 있는 3D 모델의 시각적 품질을 크게 향상시킬 수 있습니다. 그러나 비등방성 필터링은 등방성 필터링에 비해 더 많은 처리 능력이 필요하기 때문에 계산 복잡성이 증가합니다.
최신 컴퓨터 그래픽 API 및 렌더링 엔진에서 Max Anisotropy 매개변수는 개발자나 아티스트가 원하는 수준의 텍스처 품질과 애플리케이션 또는 게임의 성능 균형을 달성하기 위해 조정할 수 있는 설정으로 노출되는 경우가 많습니다.
- Simulate When Invisible: 시뮬레이션을 항상 업데이트해야 하는 경우 이 기능을 활성화하고, 장면에 여러 솔버가 있지만 항상 표시되지 않는 경우 성능을 개선하려면 비활성화 하자 .
[ 03 . Collision Settings ]
해당 옵션은 Solver의 충돌감지파이프라인을 제어한다 .
- CCD(Continuous Collision Detection) : 충돌 감지 중에 경계 상자를 확장하는 데 사용되는 입자/강체 속도의 백분율이다. 값이 1이면 속도의 100%를 사용하여 전체 연속 충돌 감지가 이루어진다 .값이 0이면 순전히 정적 충돌 감지 가 된다 .
- collision margin : 접촉을 생성할 때 사용되는 입자 경계 상자(CCD 확장 후)에 추가된 여백이다. 입자의 경계 상자 내의 모든 충돌체/입자는 접촉 생성을 위해 고려된다 . 이 값은 상대적으로 낮게 유지되어야 한다. 큰 값은 더 많은 접촉을 생성하여 매우 복잡한 장면에서 견고성을 향상시킬 수 있지만 성능에 부정적인 영향을 미친다.
- Max Depenetration : 충돌체에서 입자를 꺼내기 위해 입자에 적용되는 최대 속도(미터/초). 이것은 이미 충돌체 내부에 있는 물리 단계를 시작하는 입자에만 적용된다 . 낮은 값은 입자를 충돌체에서 부드럽게 제거한다. 높은 값을 사용하면 솔버가 입자를 즉시 제거하여 충돌체에서 "점프"할 수 있다.
- Shock Propagation : 높은 값은 다른 입자를 지지하는 입자의 질량을 인위적으로 증가시킨다. 더 나은 적재 안정성을 얻기 위해 사용한다 .
- Surface collision iterationsn : 표면 충돌을 미세 조정하기 위해 수행되는 최대 반복 횟수이다 .
- Surface collision tolerance : 아래에서 표면 충돌 미세 조정이 중지되는 허용 오차 임계값. 이 값을 약간 늘리면 평평한 표면에 대해 보다 안정적인 표면 충돌을 얻는 데 도움이 될 수 있다.
[ 03 . Constrain Settings ]
Solver 가 관리하는 모든 Actor에 대해 각 제약 조건 유형을 전체적으로 활성화/비활성화할 수 있다.
이러한 방식으로 제약 조건을 비활성화하면(개별 액터에 대한 제약 조건 구성 요소를 비활성화하는 것과 반대로)
솔버가 해당 특정 제약 조건 유형과 관련된 모든 계산을 완전히 건너뛸 수 있다.
예를 들어 충돌 제약 조건 및 입자 충돌 제약 조건을 비활성화하면 전체 충돌 감지 파이프라인을 건너뛴다.
이를 통해 내부적으로 수행되는 작업을 사용자 정의하고 불필요한 오버헤드를 제거할 수 있다.
즉 , 사용하지 않는다면 제약조건을 꺼주는게 최적화에 좋을 것이다 .
해당 옵션은 각 타입마다 4개의 옵션을 보여준다 .
- Enabled : 해당 제약조건 옆에 체크표시이다 . 만약 사용하지 않는 제약조건이라면 비활성화 시키는게 좋다 . 만약 사용하지 않는 옵션이라면 활성화 해도 성능저하는일어나지 않는다 .
- Evaluation : 제약 조건의 적용방법을 결정한다 . 순차 (속도) / 병렬 (안정) 두가지 옵션이 존재한다 . 순차사용을 권장.
- Iterations : 제약조건을 하위단계당 몇변 평가할지를 정한다 . 높을수록 실제와 가깝지만 성능을 위해서는 낮게 유지.다만 , 특정 상황 (로프)에서는 3보다 높게 설정함이 합리적일수 있다 .
- Relaxation : SOR(Successive Over-Relaxation) 요인. 제약 조건을 충족하려고 할 때 수렴을 개선하는 한 가지 방법은 제약 조건을 "완화"하는 것이다.. 2는 최대값으로 제약 조건에 대해 두 배(200%) 완화를 수행할 수 있다. 높은 값을 사용하면 두 모드(순차 또는 병렬)에서 수렴 속도를 높이는 데 도움이 되지만 시뮬레이션 안정성이 저하될 수 있다는 점에 유의하자. 1보다 작은 값은 제약 조건을 부분적으로만 적용한다. 예를 들어, 완화 계수가 0.25인 제약 조건은 정상적인 효과의 25%만 갖는다. Distance 제약조건으로 예를 들자면 1의 값에서 팽팽한 거리를 유지하던 로프는 Relaxation을 0.1로 변경함으로 거리제약을 느슨하게 설정 할 수 있다.
출처
http://obi.virtualmethodstudio.com/manual/6.3/obisolver.html
'유니티 > Asset' 카테고리의 다른 글
[ Asset - ObiRope ] 06 . 제약 유형 (0) | 2023.07.25 |
---|---|
[ Asset - ObiRope ] 05 . Simulation (0) | 2023.07.25 |
[ Asset - ObiRope ] 04 . Actor (0) | 2023.07.24 |
[ Asset - ObiRope ] 03 . Updater (0) | 2023.07.24 |
[ Asset - ObiRope ] 01 . SetUp과 기본 구조 (0) | 2023.07.24 |