1

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

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

如果您决定阅读本文并提供帮助,非常感谢您。

4

4 回答 4

2

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

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

MeshCreator 的文件输出旨在轻松导入任何 3D 项目。您还可以查看 .OBJ 文件,因为大多数 3D 应用程序(包括我的)都支持它们。OBJ 文件可能会变得有点复杂。

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

于 2013-01-31T08:35:34.213 回答
1

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

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

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

于 2012-12-11T16:48:55.927 回答
0

四处搜寻。如果你想让你的引擎基于 DirectX,我相信 SDK 附带了解释基础知识的代码示例,比如加载网格。

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

于 2012-12-11T15:54:50.157 回答
0

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

于 2012-12-11T15:57:53.030 回答