如何从几何形状创建3D模型文件?

时间:2014-05-25 20:15:58

标签: geometry 3d-modelling 3d-model

我正在编写一个程序,它将根据三维空间中已知坐标的简单几何形状(例如矩形棱镜和圆柱体)输出3D模型文件。举个例子,想象一下创建巨石阵的3D模型。 this question表明OBJ文件最容易生成,但我很难找到一个好的教程或易于使用的库。

任何人都可以

(1)逐步描述如何创建简单文件OR (2)给我一个描述如何操作的教程

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

编辑:

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

1 个答案:

答案 0 :(得分:0)

我强烈建议使用一些 ASCII交换格式那里有很多我经常使用的:

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

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

    here some specs

  2. *.iges在大多数CAD / CAM平台上都很常见且可导入(包括Catia)

    这个有点复杂,但出于出口目的,它并没有那么糟糕。它支持+,-,&,^之类的卷操作,非常难可以正确实现,但您不必使用它们。)

  3. *.dxf AutoCAD交换格式

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

  4. *.ac AC3D

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

    here some specs

    起初看起来很容易但是子对象实现真的很棘手。除非你使用它,否则你应该没事。

  5. 这种方法可以在记事本中轻松验证,也可以加载到某些 3D 模型查看器中。选择一个最适合您需求的代码并将代码save/load设置为您的Apps内部模型class/struct。通过这种方式,您将与其他软件兼容并消除不兼容问题,这些问题是创建“几乎已知”的原因。二进制格式,如3ds,...

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

    对于导出,您不需要实现所有的基本形状,因此不会太困难。我编码的导入器要复杂得多。我的 IGES 加载程序类约为{{1>} C ++ 源代码外观here以获取更多信息

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

    就像你使用的基元一样,你的对象是简单的还是骨架层次结构,你使用的是纹理,还有更多...所以无法回答

    无论如何,出口通常如下:

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

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

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

    4. 使用 ASCII 格式,您可以在String变量中执行此操作,以便您可以轻松插入或修改。在内存中做所有的事情并将整个事情写到文件的最后是快速的,并且还增加了使用内存而不是文件的功能。如果您想将许多文件打包到单个包文件(例如30KB)或通过 IPC LAN 发送/接收文件...

      ,这很方便

      [Edit1]有关IGES的更多信息

      fileformat specs

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

      win32 viewer

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

      examples

      这里有许多实体的教程文件有3个子链接(IGES5-3_forDownload.pdf),您可以通过更多方式查看示例文件以便更好地理解。

      导出到IGES

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

      • 点云
      • 旋转曲面
      • 矩形(QUAD)曲面
      • 边界线表示(非实体)
      • 修剪表面等等......