1

假设我希望能够在 3D 程序中显示对象的 3D 模型,但是这个网格的形状由许多参数(a、b、c..)控制,这样一个实例可以有几千个中的任何一个可能的组合。

例如,想象一个螺栓库,其中一个螺栓的基本形状可以很容易地在标准 CAD 程序中为一个特定的螺栓实例(一定的长度、直径、头部直径)绘制出来,而不必创建数千个对于所有排列几乎相等的模型文件我想将网格创建为“动态”或“参数”。请注意,整个模型甚至模型的一部分的简单比例是不够的。单个顶点基本上必须具有动态位置(x,y,z) = f(a, b, c)

这个问题的解决方案可能需要文件格式(将动态模板模型编码到文件中)和一些代码来应用参数并获得最终模型。我知道 AutoCad 有所谓的“动态块”,但我不知道它们是否可以在独立应用程序中被解析和使用。

到目前为止,我想出的唯一解决方案是以标准 CAD 格式绘制模型,在具有整数坐标的归一化坐标系中,以便模型的各个平面与已知坐标对齐,然后编写映射因此,例如,任何坐标 (x,y,3) 都将被映射到(x,y,a)。这是相当有限的,因为它只允许平面部分的映射,并且模型本身将由文件该文件的外部硬编码映射集组成。

模型需要显式获取,即我不能使用“隐式”变换,例如仅在可视化步骤中使用骨架和顶点着色器,因为我需要能够保存最终变换的网格。

可视化将使用 Direct3D9 完成,代码为 C#/.NET 4.0

4

1 回答 1

0

这就是现代参数化 CAD 软件的工作原理。最值得注意的应用程序是 Solidworks、Creo (Pro|engineer)、Catia、NX。也可能是发明家。从这个意义上说,Auto-CAD 非常初级,它仅落后于当前最先进的技术 30 年。我见过 Pro|engineer 的模型,它们通过所有相关的计算和模拟构建了整个 90% 的石油钻井平台最终设计。因此,所有这些都可以按照您的要求进行。就我每天所做的复杂性而言,螺栓示例非常简单。事实上,我的任何学生都可以在第一次练习之后毫无问题地做到这一点。

现在相关格式称为 SETP ap 214。但是实际上完全支持这种格式的东西并不多(该格式的标准长度约为 5000 页)。由于它需要一个非常强大的3D引擎来解决所以基本上是上述软件之一。

编辑:

但是,如果您的模型是游戏的多边形模型,那么做您想做的事情实际上是微不足道的,只是对用户不太友好。只需将您的参数化导出为关节数据并移动/缩放大多数 DCC 格式具有此功能的关节。但请注意游戏图形与 CAD 无关。或cad格式。他们为此有不同的软件,例如 3dsMax 或 Maya。此类别中的大多数格式都支持关节。如果使用 collada 等格式,您可以为参数化的关节运动规则添加一些扩展。取决于 a 但取决于您希望如何对其进行参数化。我必须自己测试一下,但由于它在 Maya 中有效,我看不出它为什么不能以某种格式工作。

问题是帽子游戏并不完全是一个平台。

于 2013-03-17T16:45:48.180 回答