"PhysX"의 두 판 사이의 차이
jjuiddong
19번째 줄: | 19번째 줄: | ||
* fixed joint 에서 죽을 때 (fixed joint crash bug) | * fixed joint 에서 죽을 때 (fixed joint crash bug) | ||
** ePROJECTION 옵션을 설정해서 허용오차를 설정하자. | ** ePROJECTION 옵션을 설정해서 허용오차를 설정하자. | ||
+ | PxReal tolerance = 0.1f; | ||
j->setProjectionLinearTolerance(tolerance); | j->setProjectionLinearTolerance(tolerance); | ||
j->setConstraintFlag(PxConstraintFlag::ePROJECTION, true); | j->setConstraintFlag(PxConstraintFlag::ePROJECTION, true); |
2014년 3월 2일 (일) 09:42 판
PhysX 정리
- Joint생성 함수
PxRevoluteJointCreate(PxPhysics& physics, PxRigidActor* actor0, const PxTransform& localFrame0, PxRigidActor* actor1, const PxTransform& localFrame1);
- joint를 부실수도 있다.
- joint->setBreakForce(100.0f, 100.0f);
- 부셔졌는지 판단 가능하다. 깨질때 콜백함수가 호출된다.
- 여러가지 관절을 만들어놔서 쉽게 갖다 쓸수있다.
- kinematic 속성의 rigidActor를 joint로 연결하면 localFrame 매트릭스가 적용되지 않는다.
- fixed joint 에서 죽을 때 (fixed joint crash bug)
- ePROJECTION 옵션을 설정해서 허용오차를 설정하자.
PxReal tolerance = 0.1f; j->setProjectionLinearTolerance(tolerance); j->setConstraintFlag(PxConstraintFlag::ePROJECTION, true);
- PxTransform, PxQuat, PxVec3 연산
PxTransform tm = PxTransform(PxVec3(1,0,0)) * PxTransform(PxQuat(1.3f,PxVec3(0,0,1))); - (1,0,0) 으로 이동한 후에 PxQuat 회전이 적용된다.
PxTransform tm = PxTransform(PxQuat(1.3f,PxVec3(0,0,1))) * PxTransform(PxVec3(1,0,0)); - 로컬좌표에서 회전한 후 (1,0,0) 으로 이동한다.
- 더블 버퍼링
- simulate() 가 실행되는 도중에 object를 추가해서 상태 값을 얻을 때 제대로 값을 못가져오는 경우가 있고, 이 때 다음 simulate() 가 호출되면 제대로된 값을 얻어온다.
- 더블버퍼링이 지원되지 않는 객체, cloth, particle
- Continuous Collision Detection
- CCD 를 켜려면 여러 플래그를 등록해야 한다.
- collision filtering
- PxAggregate
- bool NxPhysicsSDK::setParameter(NX_SKIN_WIDTH, fSkin);
- NX_SKIN_WIDTH로 설정된 값이 너무 작을 때, 오브젝트가 sleep상태가 되지 못하고 덜덜 거리는 현상이 발생합니다. 적절한 수준이 나올때까지 테스트 해보시면 됩니다.