1

我正在编写一个程序,它将基于简单的几何形状(例如矩形棱柱和圆柱体)输出 3D 模型文件,并在 3 维空间中具有已知坐标。例如,想象一下创建巨石阵的 3D 模型。这个问题表明 OBJ 文件是最容易生成的,但我正在努力寻找一个好的教程或易于使用的库来这样做。

任何人都可以

(1) 逐步描述如何创建一个简单的文件或 (2) 指向一个描述如何创建简单文件的教程

注意: * 使用基于 GUI 的程序绘制此类文件对我来说不是一个选项 * 我之前没有 3D 建模经验 * WRL 或 DAE 等其他格式也适用于我

编辑:

我不需要使用纹理,只需在 3D 空间中放置简单几何形状的组合。

4

1 回答 1

0

我强烈建议使用一些ASCII 交换格式,有很多我通常使用这些:

  1. *.xDirectX 对象(它是 C++ 源代码)

    这是最容易实现的!!!但是能够处理它们的工具并不多。如果您不想花太多时间编码,那么这是正确的选择。只需从任何文件复制模板(在开始时)*.x即可开始。

    这里有一些规格

  2. *.iges在大多数 CAD/CAM 平台上通用且可导入(包括 Catia)

    这个有点复杂,但出于出口目的,它还不错。它支持 Volume 操作,例如很难正确实现,但您不必使用+,-,&,^它们:)

  3. *.dxfAutoCAD 交换格式

    这个比IGES更复杂。我不建议使用它

  4. *.acAC3D

    我第一次看到这个是在飞行装备上。

    这里有一些规格

    乍一看这很容易,但子对象的实现确实很棘手。除非你使用它,否则应该没问题。

这种方法很容易在记事本中或通过加载到某些3D模型查看器中进行验证。选择最适合您的需求和代码save/load功能的应用程序内部模型class/struct。通过这种方式,您将与其他软件兼容,并消除创建“几乎已知”二进制格式(如3ds...

在您的情况下,我会使用IGES(初始图形交换规范)

对于导出,您不需要实现所有几个基本形状,因此不会太困难。我编码的进口商要复杂得多。我的IGES加载器类是关于30KBC ++源代码的,请看这里查看更多信息

您没有提供有关您的3D网格模型结构和功能的任何信息

就像您使用的原语一样,您的对象是简单的还是骨架层次结构,您是否使用纹理等等......所以无法回答

无论如何导出通常看起来像这样:

  1. 创建目标文件格式的标题和结构
  2. 如果格式有任何目录结构,请填写并写入(IGES)

    对于子对象不要忘记添加转换矩阵...

  3. 写出你需要的块(点列表,面列表,法线,...)

使用ASCII格式,您可以在 String 变量中执行此操作,以便轻松插入或修改。在内存中做所有事情并在最后将整个事情写入文件,这很快,并且还增加了使用内存而不是文件的能力。如果您想将许多文件打包成单个包文件,或者通过IPCLAN*.pak发送/接收文件,这很方便这将非常方便......

[Edit1] 更多关于 IGES

文件格式规范

我从这个 pdf 中学习了IGES ......不知道我从哪里得到它,但这是我今天在谷歌找到的第一个有效链接。我相信那里也有一些非注册链接。大约 13.7 MB 和原始名称IGES5-3_forDownload.pdf

win32 查看器

这是免费的IGES查看器。我不喜欢界面和处理,但它的工作原理。有必要有功能查看器来测试你的...

例子

这里有许多实体的许多教程文件,有 3 个子链接 ( igs,peek,gif),您可以在其中以更多方式查看示例文件以便更好地理解。

导出到 IGES

你没有提供任何关于你的3D网格内部结构的信息,所以我无法帮助导出。有很多方法可以导出相同的方式,因此请选择最接近您的App 3D网格表示的一种。例如,您可以使用:

  • 点云
  • 旋转表面
  • 矩形 (QUAD) 曲面
  • 边界线表示(非实线)
  • 修剪表面等等...
于 2014-05-30T09:32:47.730 回答