3D模型文件&从中创建三角形网格

时间:2012-12-11 15:30:35

标签: c++ model 3d geometry mesh

我是新来的。我正在学习C ++,所以我对事物没有太大的了解(好吧,我有很多编程经验,但有其他语言。我也知道如何使用计算机xD)。我决定开始研究游戏引擎。我知道这并不容易,但这就是我想要这样做的一个原因 - 尝试/获得经验是我学习的最佳方式。

所以,我从渲染器开始,但我不知道如何制作一个3D模型文件,就像它在名称中所说的那样它将有一个三维模型并且可以加载到C ++中的三角形网格中引擎,我可以用它与Direct3D。除了让我知道如何开始之外,我不希望你做任何事情。

非常感谢你,如果你决定阅读这个&帮助

4 个答案:

答案 0 :(得分:2)

这是一个很好的问题,并且如此真实,因为你和我3年前完全一样。我环顾了可用于生成3D内容的各种应用程序。我不想花时间学习各种应用程序,因为我想编写我的游戏引擎。我找不到任何足够快的东西来学习让它值得我(这是免费的)所以最后我把一些脚本放在一起创建3D模型(顶点数组)。它们发展成为GUI驱动的界面,开发成我自己的全功能3D建模工具。现在,3年后,我的游戏引擎处于劣势,MeshCreator(查看http://www.MeshCreator.co.uk)现在是我正在进行的项目。

您需要一种在顶点数组中加载的方法。 OBJ文件(波前)是基于文本的,相当容易阅读。 MeshCreator的输出也是基于ASCII的,网站上有关于如何解释文件格式的详细信息。

MeshCreator的File输出设计用于轻松导入任何3D项目。您还可以查看.OBJ文件,因为大多数3D应用程序(包括我的)都支持这些文件。 OBJ文件虽然有点复杂。

简而言之,您需要一个易于使用的工具。我花了3年时间写自己的,所以我不推荐它。尝试使用MeshCreator,MilkShape 3D和Google Shetchup。此外,还有许多网站都有免版税的3D内容,您可以在项目中使用这些内容,其中很多都是OBJ格式的。

答案 1 :(得分:1)

3D模型文件格式可能非常复杂,主要是它们可以包含的大量类型的东西(网格,基元,曲面,材料,照明等等)。这也意味着你也很难想出自己的格式。因此,这里有两个选项:找到现成的库来处理模型的加载;或者,选择预先存在的格式并编写自己的代码来加载这些文件(并使用标准编辑器创建它们)。

使用现成的库加载模型的主要问题通常是这些库通常与特定的渲染器密切相关,并且通常在加载文件时生成的(可能的)数据结构中非常复杂。 。因此,只有当您准备采用此模型加载库所属的或与之相关的渲染器时,这通常是更好的解决方案。有一些选项,如Irrlicht,Ogre3D,Coin3D等,它们在加载相当标准的3D模型文件格式时都具有合理的功能。

如果您要选择一个预先存在的文件格式并自己创建加载代码(因此,绑定到您自己的渲染器),那么您应该仔细选择。 3ds文件格式使用非常广泛,其内部结构很好而且相当简单,其优点是您可以轻松跳过尚不支持的元素(当您逐步编写渲染代码时这很有用)。大多数其他格式具有类似的功能(向前和向后兼容性,以及跳过“不支持”元素的能力)。还有一些重要的开放标准格式,vrml和x3d,您可能需要查看这些格式。此外,还有一些与Blender等开源3D编辑器相关的简单格式。拥有一个可以以可加载的文件格式输出的良好3D编辑器非常重要。这就是为什么你不应该创建自己的文件格式,因为你需要做很多额外的工作,无论是为某些3D编辑器创建自定义的“导出”脚本(或插件),还是创建自己的编辑器(一个巨大的编辑器)任务)。

答案 2 :(得分:0)

搜索。如果您希望将引擎基于DirectX,我相信SDK附带了解释基础知识的代码示例,例如加载网格。

如果您只是在学习C ++,我建议您从一个更简单的项目开始,例如使用IrrlichtOGRE之类的引擎制作一个简单的游戏,但这取决于您。< / p>

答案 3 :(得分:0)

我认为你需要像obj files这样的东西。你可以找到在线免费文件。如果你想生成自己的,我认为你需要一些3D渲染软件。您还可以搜索如何解析它们并在程序中加载它们的内容。