This document is about: QUANTUM 2
SWITCH TO

연속 충돌 감지 (CCD)

개요

연속 충돌 감지는 빠르게 움직이는 물리 엔티티가 다른 물리 충돌기를 터널링 하는 대신 충돌하는 데 사용됩니다.

CCD 알고리즘에는 speculativesweep based라는 두 가지 일반적인 접근 방식이 있습니다. Quantum은 상태 비저장 물리 엔진과 관련된 성능 고려 사항으로 인해 추측적인 연속 충돌 감지를 구현합니다. 추측성 CCD 접근법은 각운동도 잘 다루면서 병렬화에 더 적합합니다. 전자는 성능에 필요하고 후자는 많은 게임 플레이 시나리오에서 필요합니다.

투기적 CCD 알고리즘은 PhyiscsBody 컴포넌트 리니어 VelocityAngularVelocity를 기준으로 엔티티에 대해 넓은 단계에서 사용되는 최소 경계 상자를 증가시킵니다. 이는 엔티티가 해당 영역의 다른 물리 객체와 충돌할 수 있다고 "추측" 하고 이 모든 후보들을 해결사로 공급하기 때문에 expective 라고 불립니다. 이 추측을 통해 충돌을 해결할 때 모든 접촉 제약이 고려되어 터널링을 방지할 수 있습니다.

설정

CCD를 설정하려면 두 가지 간단한 단계가 필요합니다. 두 단계 모두 편집 시 및/또는 런타임에 수행할 수 있습니다.

주의: CCD가 시뮬레이션에 미치는 성능 영향을 고려할 때 CCD 기능은 엔티티별 기준으로 활성화되며 전역적으로 활성화되지 않습니다!

편집-시간

단계 1: Simulation Config 에셋의 Physics 섹션 내의 Allow CCD 부울 값을 체크합니다.

allow ccd in the simulation config
Simulation Config 내의 CCD 활성.

단계 2: 엔티티 프로토타입의 PhysicsBody 컴포넌트에 있는 ConfigUse Continuous Collision Detected 플래그를 활성화합니다.

ccd flag in the physicsbody config
PhysicsBody Config의 CCD 플래그 선택.

런타임

CCD가 게임의 특정 상황이나 순간에만 필요한 경우, CCD와 CCD를 사용하는 엔티티를 동적으로 전환하거나 해제할 수 있습니다.

단계 1: 현재 게임 상태의 PhysicsSceneSettings에서 AllowCCD 속성을 토글 합니다. PhysicsSceneSettings는 프레임의 일부이며 SimulationConfig 에셋에 있는 물리 값으로 초기화됩니다. 중요: 런타임에 SimulationConfig 에셋을 수정하지 마십시오. 이것은 비결정적이며 비동기화가 됩니다!

C#

frame.PhysicsSceneSettings->CCDSettings.AllowCCD = true;

단계 2: CCD를 사용해야 하는 엔티티에 대해 PhysicsBody 컴포넌트의 UseContinuousCollisionDetection 속성을 토글 합니다.

C#

var physicsBody = f.Get<PhysicsBody3D>(myEntityRef);
physicsBody.UseContinuousCollisionDetection = true;

Config

SimulationConfig 에셋은 CCD와 관련된 측면을 포함하여 물리 엔진을 초기화하기 위한 기본값을 유지합니다. CCD(Continuous Collision Detection) 섹션에서 볼 수 있는 기본값은 대부분의 게임에 적합하며 에지 케이스가 발생할 경우에만 신중하게 조정해야 합니다.

  • AllowCCD: 물리 바디 구성 플래그에서 CCD가 활성화된 경우 CCD를 수행할 수 있습니다.
  • CCDLinearVelocityThreshold: CCD가 허용되면 CCD가 활성화되어 있고 이 임곗값을 초과하는 선형 속도 크기를 가진 모든 물리 바디에서 CCD가 수행됩니다.
  • CCDAngularVelocityThreshold: CCD가 허용되면 CCD가 활성화되어 있고 각속도 크기가 이 임곗값을 초과하는 모든 물리 바디에서 CCD가 수행됩니다.
  • CCDDistanceTolerance: CCD 아래의 물리 바디가 확인하는 절대 거리 값은 접촉으로 간주될 수 있습니다.
  • MaxTimeOfImpactIterations: 두 물리 바디 사이의 충격 시간을 계산할 때 CCD 알고리즘에 의해 수행되는 최대 반복 횟수입니다.
  • MaxRootFindingIterations: 주어진 분리 축에서 두 물리 물체 사이의 거리가 공차보다 낮은 시점을 계산할 때 수행되는 최대 반복 횟수입니다.

제약사항

speculative CCD는 기능이 완전하지만, 추측 접근법의 알려진 한계를 알아야 합니다.

현재 알고리즘은 일반 물리 충돌 해결과 함께 단일 CCD 반복을 실행합니다. 즉, CCD 충돌이 감지되고 해결된 후 해당 엔티티에 대한 나머지 델타 시간은 CCD에 관계없이 통합됩니다. 따라서 매우 빠르게 움직이는 실체가 있는 고밀도 환경에서 터널링이 발생할 가능성이 있습니다.

Back to top