首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.obj 11中导入DirectX文件

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

Stack Overflow用户
提问于 2014-10-26 20:50:43
回答 2查看 8.3K关注 0票数 3

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

首先,是否有任何简单的库(有很好的文档)可以为初学者在DirectX 11中导入DirectX 11

第二,如何导入和呈现它们的模型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-26 21:12:37

使用VS 2012和VS 2013,内容管道可以将Wavefront OBJ文件导出为CMO。DirectXMesh库包含一个命令行工具CMOs,它将加载Wavefront文件并将它们导出为CMO或SDKMESH文件。

DirectX工具包的Model类可以从CMO或SDKMESH文件中加载和呈现。

DirectX工具包: http://go.microsoft.com/fwlink/?LinkId=248929

DirectXMesh: http://go.microsoft.com/fwlink/?LinkID=324981

还有一个WaveFrontReader类可以在DirectXMesh实用程序文件夹中使用,用于将Wavefront文件解析为VB和IB的示例。

票数 4
EN

Stack Overflow用户

发布于 2014-10-26 23:17:52

obj文件通常具有以下格式:

代码语言:javascript
复制
v <numbers>
etc..

vt <numbers>
etc..

vn <numbers>
etc..

f <numbers>
etc..

其中v为位置数据;vt纹理法线;vn位置法线;人脸为其指标。因此,您必须读取每个值,并根据第一个字母的不同将它们放入正确的容器中(我推荐向量,因为它们易于使用)。您不必将索引的所有值都放入向量中,因为索引只是指向特定类型的某个顶点的数字。通常,而且确实,“f”行应该具有这种格式的值:

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

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

代码语言:javascript
复制
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.

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26577804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档