我正在编写一个程序,它将根据三维空间中已知坐标的简单几何形状(例如矩形棱镜和圆柱体)输出3D模型文件。举个例子,想象一下创建巨石阵的3D模型。 this question表明OBJ文件最容易生成,但我很难找到一个好的教程或易于使用的库。
任何人都可以
(1)逐步描述如何创建简单文件OR (2)给我一个描述如何操作的教程
注意: *使用基于GUI的程序绘制此类文件不是我的选择 *我之前没有3D建模经验 *其他格式如WRL或DAE也适用于我
编辑:
我不需要使用纹理,只需要放置在3D空间中的简单几何形状的组合。
答案 0 :(得分:0)
我强烈建议使用一些 ASCII交换格式那里有很多我经常使用的:
*.x
DirectX对象(它是C ++源代码)
这个最容易实施!但是没有很多工具可以处理它们。如果您不想花太多时间编码,那么这是正确的选择。只需从任何*.x
文件中复制模板(在开始时)即可开始使用。
*.iges
在大多数CAD / CAM平台上都很常见且可导入(包括Catia)
这个有点复杂,但出于出口目的,它并没有那么糟糕。它支持+,-,&,^
之类的卷操作,非常难可以正确实现,但您不必使用它们。)
*.dxf
AutoCAD交换格式
这个比 IGES 更复杂。我不建议使用它
*.ac
AC3D
我第一次看到这个飞行装备。
起初看起来很容易但是子对象实现真的很棘手。除非你使用它,否则你应该没事。
这种方法可以在记事本中轻松验证,也可以加载到某些 3D 模型查看器中。选择一个最适合您需求的代码并将代码save/load
设置为您的Apps内部模型class/struct
。通过这种方式,您将与其他软件兼容并消除不兼容问题,这些问题是创建“几乎已知”的原因。二进制格式,如3ds
,...
在您的情况下,我会使用 IGES (初始图形交换规范)
对于导出,您不需要实现所有的基本形状,因此不会太困难。我编码的导入器要复杂得多。我的 IGES 加载程序类约为{{1>} C ++ 源代码外观here以获取更多信息
您未提供有关 3D 网格模型结构和功能的任何信息
就像你使用的基元一样,你的对象是简单的还是骨架层次结构,你使用的是纹理,还有更多...所以无法回答
无论如何,出口通常如下:
如果格式有任何目录结构填写并写入(IGES)
对于子对象,不要忘记添加转换矩阵......
写下你需要的块(点列表,面部列表,法线,......)
使用 ASCII 格式,您可以在String变量中执行此操作,以便您可以轻松插入或修改。在内存中做所有的事情并将整个事情写到文件的最后是快速的,并且还增加了使用内存而不是文件的功能。如果您想将许多文件打包到单个包文件(例如30KB
)或通过 IPC 或 LAN 发送/接收文件...
[Edit1]有关IGES的更多信息
我从这个pdf中学到了 IGES ...不知道从哪里得到它但是这是我今天在google找到的第一个有效链接。我相信那里也有一些非注册链接。它大约是13.7 MB,原始名称为*.pak
。
这是免费的 IGES 查看器。我不喜欢界面和处理,但它的工作原理。有必要使用功能查看器来测试你的......
这里有许多实体的教程文件有3个子链接(IGES5-3_forDownload.pdf
),您可以通过更多方式查看示例文件以便更好地理解。
导出到IGES
您没有提供有关 3D 网格内部结构的任何信息,因此我无法帮助导出。有许多方法可以以相同的方式导出,因此选择一个最接近 App 3D 网格表示的方法。例如,您可以使用: