DirectX/[Inflearn_rookiss] Part2: DirectX1235 35. Animation - 실습 애니메이션도 FBXLoader 클래스의 LoadFbx 함수를 통해로 로드된다. void FBXLoader::LoadFbx(const wstring& path) { // 파일 데이터 로드 Import(path); // Animation LoadBones(_scene->GetRootNode()); LoadAnimationInfo(); // 로드된 데이터 파싱 (Mesh/Material/Skin) ParseNode(_scene->GetRootNode()); // 우리 구조에 맞게 Texture / Material 생성 CreateTextures(); CreateMaterials(); } LoadBones 함수 void LoadBones(FbxNode* node) { LoadBones(node, 0, -1); .. 2023. 2. 23. 34. Animation - 개념 애니메이션은 관절을 이용해서 구현한다. 메시 그 큰 덩어리의 정점 하나 하나의 변화를 추적해서 FBX에 기록하면 사이즈가 말도 안되게 커질 것이다(..) 위 사진과 같이 뼈대를 만들고 그 뼈대가 움직이면 뼈대와 연결된 살들도 같이 움직이는 식 이런 작업을 스키닝이라고 한다. 예제에서 정확한 표현은 관절을 통해 움직이는 것인데, 관절이 움직이면 그 관절이 움직일 때 뼈도 움직이니까 그 뼈에 붙은 정점들도 같이 움직이는 식. 그리고 그 관절들은 어깨의 자식은 팔이고, 팔의 자식은 손과 같은 방식으로 부모 자식 계층 관계를 가지고 있다. 어깨가 움직이면 간접적으로 팔이 움직이고 팔이 움직이면 손이 움직이는 것과 같은 이치. 이 관절 하나 하나를 노드라고 부르며, 하나의 노드 아래에 여러 노드가 붙을 수 있다... 2023. 2. 22. 33. Mesh 기존에는 정점들을 이용해 삼각형과 사각형을 만들어 사용했으나, 이제는 실제 3D FBX 모델을 사용하여 모델을 화면에 띄워본다. FBX는 프로그래밍 외에도 여러 용도로 사용할 수 있기 때문에, 내부적으로 다양한 데이터를 담고 있음 따라서 FBXLoader를 통해서 내부 데이터를 읽고 파싱해서 긁어오는 과정이 필요하다. FBX를 로드하는 방법은 Assimp 라이브러리를 쓰거나 Autodesk에서 제공하는 sdk를 사용하는 방법이 있음 이번 실습에서는 Autodesk에서 제공하는 fbx sdk를 통해 파일을 로드하는 것 FBXLoader 클래스 정의 FBXLoader 클래스에선 fbx 파일을 파싱해서 정점 정보, 인덱스 정보와 애니메이션 정보를 긁어 오는 역할을 하며, 이번 예제에서는 애니메이션에 관한 내용.. 2023. 2. 21. 32. Picking RTS 게임을 보면 마우스로 물체를 클릭하면 그 물체가 선택된다. 그런데 실제로 물체가 존재하는 공간은 3D 공간이고 내가 클릭하는 공간은 마우스 공간인데, 선택되었는지 어떻게 판별하지? 레이캐스팅이란? - 이런 문제를 해결해주는 기술 - 이번 예제에서는 카메라 위치에서 레이를 발사해서 그 레이와 충돌여부를 검사한 후 그 결과로 클릭여부를 판별한다 - 레이캐스팅은 3D 공간에서 충돌처리를 할 때 많이 사용되는 기술인데, - 지형을 이동할 때 플레이어 배꼽 위치에서 아래로 광선을 쏴서 지형이 있는지를 검사하고, 판별하게 된다. - 내 앞에 광선을 쏴서 벽으로 막혔는지, 이동이 가능한지 확인하기도 한다. (거리를 확인할 수 있는데, 거리가 N 이하라면 이동불가 로직을 짜면 될 듯) 레이와 마우스 클릭한 좌표.. 2023. 2. 20. 이전 1 2 3 4 ··· 9 다음