본문 바로가기
PhysX/[NVIDIA] PhysX_Tutorial

3. PhysX - Geometry

by 헛둘이 2023. 3. 3.

PhysX 지오메트리는 강체의 모양을 만드는 데 사용되며, 충돌 트리거로 사용된다.
PhysX는 지오메트리 간 교차점 검사, 레이캐스팅, 한 지오메트리를 다른 지오메트리와 충돌 검사하는 함수도 제공한다
(이 함수는 독립적으로 실행된다고 함)
 
지오메트리는 공통 기본 클래스인 PxGeometry에서 상속된다.
각 지오메트리 클래스는 고정된 위치, 방향을 가진 볼륨, 표면을 정의한다
 
지오메트리는 두 가지 클래스로 나뉨
 

1. 기본 도형 - 지오메트리 객체가 모든 데이터를 포함한다

- PxBoxGeometry
- PxSphereGeometry
- PxCapsuleGeometry
- PxPlaneGeometry
 

2. 메시 또는 높이 필드 - 지오메트리 객체가 훨씬 큰 객체를 가리키는 포인터를 포함한다

- PxConvexMeshGeometry (PxConvexMesh를 가리키는 포인터)
- PxTriangleMeshGeometry (PxTriangleMesh를 가리키는 포인터)
- PxHeightFieldGeometry (PxHeightMesh를 가리키는 포인터)
- 이는 각 유형에서 참조하는 객체를 서로 다른 스케일로 사용할 수 있다
 
* 지오매트리 클래스가 시뮬레이션에 사용되기 위해 SDK로 전달될 때, 지오메트리는 PxShape 클래스로 복사된다.
 


지오메트리 타입

 
 
1. 구 (Sphere)

출처 : NVIDIA PhysX 4.1 SDK Docs

- 구는 원점을 중심으로 반지름 속성을 가진다
 
2. 캡슐 (Capsule)

 - 캡슐은 원점을 중심으로 X축으로 확장되는 반높이, 반지름 값으로 이루어져 있다.

PxRigidDynamic *  aCapsuleActor  =  thePhysics -> createRigidDynamic ( PxTransform ( 위치 )); 
PxTransform  relativePose ( PxQuat ( PxHalfPi ,  PxVec ( 0 , 0 , 1 ))); 
PxShape *  aCapsuleShape  =  PxRigidActorExt :: createExclusiveShape ( * aCapsuleActor , 
    PxCapsuleGeometry ( radius ,  halfHeight ),  aMaterial );
aCapsuleShape -> setLocalPose ( relativePose ); 
PxRigidBodyExt :: updateMassAndInertia ( * aCapsuleActor ,  capsuleDensity ); 
aScene -> addActor ( aCapsuleActor );

 
 
 
3. 박스 (Box)

- 박스는 3가지 속성이 있으며, 이 3가지 속성은 만들고자하는 박스의 X, Y, Z 값을 반으로 줄인 것
 
 
4. 평면 (Plane)

- 평면은 위, 아래 공간으로 나뉘며, 평면 아래의 모든 것이 평면과 충돌한다.
- PxPlaneGeometry는 정적 액터에 대해서만 생성할 수 있다.

'PhysX > [NVIDIA] PhysX_Tutorial' 카테고리의 다른 글

6. PhysX - RigidBody 충돌 - 2  (0) 2023.03.03
5. PhysX - RigidBody 충돌 - 1  (0) 2023.03.03
4. PhysX - RigidBody 개요  (0) 2023.03.03
2. PhysX API  (0) 2023.03.02
1. PhysX 초기화  (0) 2023.02.25

댓글