C++ 如何在DirectX 11中导入.obj文件

C++ 如何在DirectX 11中导入.obj文件,c++,visual-studio-2013,directx,C++,Visual Studio 2013,Directx,当前正在尝试将我的3D建模ship.obj文件导入我的DirectX11游戏。关于这一点,我有两个问题 首先,有没有简单的库(有好的文档)可以为初学者导入directx11中的.obj 其次,如何导入和渲染其模型?使用VS 2012和VS 2013,内容管道可以将波前OBJ文件导出为CMO。DirectXMesh库包括一个命令行工具Meshconvert,该工具将加载波前OBJ文件并将其导出为CMOs或SDKMESH文件 DirectX工具包的模型类可以从CMOs或SDKMESH文件加载和渲染

当前正在尝试将我的3D建模
ship.obj
文件导入我的
DirectX11
游戏。关于这一点,我有两个问题

首先,有没有简单的库(有好的文档)可以为初学者导入
directx11
中的
.obj


其次,如何导入和渲染其模型?

使用VS 2012和VS 2013,内容管道可以将波前OBJ文件导出为CMO。DirectXMesh库包括一个命令行工具Meshconvert,该工具将加载波前OBJ文件并将其导出为CMOs或SDKMESH文件

DirectX工具包的模型类可以从CMOs或SDKMESH文件加载和渲染

DirectX工具包:

DirectXMesh:


在DirectXMesh实用程序文件夹中还有一个波前阅读器类,您可以使用该类将波前OBJ文件解析为VB和IB。OBJ文件通常具有以下格式:

v <numbers>
etc..

vt <numbers>
etc..

vn <numbers>
etc..

f <numbers>
etc..
v
等
及物动词
等
越南
等
F
等
式中,v为位置数据;vt纹理法线;vn位置法线;脸就是它的指数。因此,您必须读取每个值,并根据第一个字母将它们放置在正确的容器中(由于向量易于使用,我建议使用向量)。您不必将所有索引值放入向量中,因为索引只是指向特定类型的特定顶点的数字。通常,并且可以肯定的是,“f”行应该具有以下格式的值:

f v/vt/vn v/vt/vn v/vt/vn假设模型是三角化的。这表示每个三角形的三个位置顶点,否则将构成整个模型。如果您的模型不是三角剖分的,那么您将有4组值,每个值都指向这些组中的一个值

在这一点上,您需要根据线“f”中指向的索引对位置顶点、法线及其纹理法线进行排序。一些伪代码:

for (int i = 0; i < indices; i++)
{
    orderedPositions.push_back(unOrderedPositions[positionIndex[indices] * # of indices + k]);
    // Same applies to normals and textures
}

// Where k is the group number of the face from 1 to n depending on how many groups of faces there are per line.
for(int i=0;i
希望这有帮助