假设我希望能够在 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