[PhysX] 3화 Compound

Grphics 2009. 5. 11. 12:03
그림 1. 실행 화면

오늘 살펴볼 내용은 여러개의 기본 도형을 혼합하여 사용하는 방법을 알아보겠습니다. 대부분의 경우, 기본적인 도형으로는 충분하지 않습니다. 그래서 위의 그림처럼, 기본 도형이나 삼각형 메쉬를 혼합하여(Compound) 사용합니다. 이번 강좌에서는 지금까지 배운 도형들을 혼합하여 사용하는 방법에 대해서 알아보겠습니다.

아마, 지난 강의부터 궁금해 하던 부분이 있었을 꺼에요. 없나요..?ㅋ 저는 다음 한줄이 너무 궁금했습니다.
actorDesc.shapes.push_back(&sphereShapeDesc);
저는 위에 한줄에서 왜 shapes 일까가 궁금했습니다. 왜 복수일까? 라는 생각을 했었습니다. 결국 이제서야 그 궁금증을 풀게되었네요. ShapeDesc를 만들어서 shapes에 추가만 해주면 됩니다. 참 쉽죠잉~? 죄송합니다(- -) (_ _) (- -)

자 그러면 소스 나갑니다. 이번 소스는 제가 그다지 설명드릴 부분이 없네요. 중요한 부분만 살펴보겠습니다.

소스 1. CreatePrimaryMultiShape() 함수


위에 소스에서 가장 중요한 부분은 이 부분이 아닐까 합니다.

    // 액터의 도형 리스트에 추가
    actorDesc.shapes.push_back(&boxShape);
    actorDesc.shapes.push_back(&capsuleDesc);
    actorDesc.shapes.push_back(&sphereShape);

shapes에 우리가 만든 도형들의 Desc를 추가해주는 겁니다. 아 그리고 한 가지 부분이 더 있네요.
    ...
    boxShape.localPose.t = NxVec3(1.5f, 0.0f, 0.0f);
    ...
    capsuleShape.localPose.t = NxVec3(0.0f, 0.0f, 0.0f);
    ...
    sphereShape.localPose.t = NxVec3(-1.5f, 0.0f, 0.0f);
    ...
바로 이 부분입니다. 로컬 좌표의 위치를 이동시키는 겁니다. 즉, 결과적으로 구성될 메쉬의 중심점으로 부터 이 도형을 어느 곳에 위치시킬 것인지를 정하는 부분입니다. 로컬 좌표와 글로벌 좌표의 관계는 나중에 다시 한번 소개하도록 하겠습니다.

자, 마지막 부분입니다. 이 소스를 마지막으로 강좌를 마쳐야겠네요~

소스 2. CreateMeshMultiShape() 함수


아참, 아마 이렇게 만들어 놓고 돌리면 CreateMeshMultiShape() 함수로 만든 도형은 움직이지 않을꺼에요. 왜냐하면, 너무 무겁기 때문이죠.
NxReal    gForceStrength = 40000;  // 20000에서 40000으로
위와 같이 힘의 세기를 변경하면 될꺼에요. 무거워서 안 움직인거뿐이에요~

posted by 스펜서.