2023/11 34
-
OBB Oriented Bounding Box로, 회전이 가능한 사각형 또는 직육면체를 사용하여. 두 객체가 충돌하는지 를 검출하는 방식이다. 각 객체는 로컬 좌표게에 따라 정렬된 사각형 또는 직육면체 충돌체로 표현되며, 이를 기반으로 충돌 검출과 충돌 처리를 수행한다. OBB의 검사방식두 객체가 OBB를 생성한다.OBB는 로컬 좌표계에 기반하여 회전, 크기, 위치 등의 정보를 포함한다. 두 객체의 OBB가 겹치는지 확인한다. 이를 위해 Separating Axis Teorem(분리 축 정리) 을 사용하여 OBB의 로컬 축들을 기준으로 프로젝션을 수행하고, 프로젝션 범위를 비교한다.객체의 중심점을 확인 객체간의 거리를..
-
AABB 축이 정렬된 바운딩 박스 ( Axis-Aligned Bounding Box)를 이용하여, 두 객체가 충돌하는지를 파악하는 간단한 알고리즘이다. 객체의 경계를 모두 포함하는 최소크기의 정렬된 사각형 충돌체로 구성되며. 각 축이 절대축과 평행한다. AABB의 검사방식 각 객체의 AABB를 생성한다. 이때 AABB는 해당 객체의 충돌 콜리전의 바운딩 박스를 구성하는 XY좌표로. 좌상단, 우상단, 좌하단, 우하단 으로 이루어져 있다. 두 객체의 AABB가 겹치는지를 확인한다. AABB의 겹침 여부는 각 축의 범위를 비교하여 판단한다. X축과 Y축의 범위가 겹치는지를 서로 비교하여 판단하게 된다. 모든 축에서 겹침을 확인하면, 두 객체는 충돌한다고 간주한다. 그렇지 않았다면 두 객체는 충돌하지 않았다고 ..
-
FBX파일에서 Png파일을 모두 가져왔었으니 이번에는 Mesh데이터를 가져오고 저장, 불러오기를 해야한다. 전에 만들어두었던 ModelExporter에 값을 저장하는 함수를 제작한다. void ModelExporter::ReadMesh(aiNode* node) { FOR(node->mNumMeshes) { // 새로운 MeshData 객체를 생성 MeshData* mesh = new MeshData(); // Mesh의 이름을 설정, node->mName.C_Str()는 C 문자열로 Mesh의 이름을 제공합니다. mesh->name = node->mName.C_Str(); // 현재 처리 중인 Mesh에 대한 포인터를 가져옵니다. aiMesh* srcMesh = scene->mMeshes[i]; // M..
-
Assimp를 설치한다. 설치시 Cmake를 사용하여 lib파일을 뽑아서 사용한다. Assimp는 FBX파일에서 데이터를 긁어올 수 있도록 하는것만 사용하고, 긁어온 데이터를 현재 프로젝트에서 사용할 수 있도록 재가공하는 방식은 사용자에 따라 달라진다. 자신이 구축해놓은 Framework에 맞게 데이터를 재가공해 사용하도록 하자. #pragma once class ModelExporter { public: ModelExporter(string name, string file); ~ModelExporter(); void ExportMaterial(); private: //Material void ReadMaterial();// 머티리얼 읽기. void WriterMaterial(); // 머티얼 써서 저장..
-
Assimp는, DirectX상에서 FBX파일을 사용할 수 있게 해주는 라이브러리 뭉치이다. 오픈소스임으로 누구나 쉽게 접근하여 사용할 수 있다. 한번 설치해보자. https://github.com/assimp/assimp GitHub - assimp/assimp: The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clea The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clean data structure. - GitHub - assimp/assi..
-
Cmake는, 프로그램의 lib파일을 사용하기 위해 lib파일을 생성해주는 프로그램이다. https://cmake.org/ CMake - Upgrade Your Software Build System CMake is a powerful and comprehensive solution for managing the software build process. CMake is the de-facto standard for building C++ code, with over 2 million downloads a month. cmake.org cmake 사이트에 들어가서 cmake를 먼저 다운받아주자. 다운로드를 클릭한 뒤 밑으로 내리면, Binary distributions로. 설치버전이나 설치파일을 확인할 ..