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

3D model files & creating triangle meshes from it

本文关键字:创建 三角形 网格 模型 文件 3D      更新时间:2023-10-16

我是新来的。我还在学习C++,所以我对一些东西没有太大的了解(嗯,我在编程方面有很多经验,但在其他语言方面也有。我也知道如何使用计算机xD)。我决定开始开发游戏引擎。我知道这并不容易,但这也是我想做这件事的原因之一——尝试/获得经验是我学习的最佳方式。

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

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

这是一个很好的问题,听起来很正确,因为你和我3年前在同一个地方。我四处查看了可以用来生成3D内容的各种应用程序。我不想花时间学习各种应用程序,因为我想对我的游戏引擎进行编码。我找不到足够快的东西来学习(这是免费的),所以最后我把一些脚本放在一起创建了3D模型(顶点阵列)。这些开发成了一个GUI驱动的界面,它开发成了我自己功能齐全的3D建模工具。现在,3年后,我的游戏引擎被搁置了,MeshCreator(查看http://www.MeshCreator.co.uk)现在是我正在进行的项目。

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

MeshCreator的文件输出设计用于轻松导入任何三维项目。你也可以查看.OBJ文件,因为它们受到大多数3D应用程序(包括我的)的支持。OBJ文件可能会变得有点复杂。

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

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

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

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

四处搜索。如果你想把你的引擎建立在DirectX的基础上,我相信SDK附带了解释基本原理的代码示例,比如加载网格。

如果你只是在学习C++,我建议你从一个更简单的项目开始,比如用Irrlicht或OGRE这样的引擎制作一个简单的游戏,但这取决于你。

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