我有基础四边形网格,在xz平原上有4个点(-8.0f,0.0f,-8.0f),(8.0f,0.0f,-8.0f),(8.0f,0.0f,8.0f) ,( - 8,0.0f.0f,8.0f)。如果我要求用户选择任意数量的维度,例如2x2或64x64,那么我需要做的是创建顶点数组并存储这些坐标,因为我需要创建那么多的四边形网格。我无法想出解决这个问题的清洁解决方案。我还需要使用这些顶点来创建四边形,因此创建顶点以便以后用于创建四边形网格非常重要
所以这是我正在研究的功能
void initializeMesh(float originX,float originZ,float xWidth,float zWidth) { // originX和Z沿着边界的边缘移动,扫描时尚
}
它看起来像个不错的主意吗? x和z宽度是根据用户输入尺寸(16.0f / dimX和16.0f / dimY)计算的,我需要确定何时停止遍历。
答案 0 :(得分:0)
如果维度是2的幂(就像你的例子2x2,64x64),你可以用循环来做。每次迭代将每个边缘(相邻顶点之间的垂直或水平空间)分成两半。新顶点位置将是相邻顶点的算术平均值。重复它直到达到所需的尺寸。我建议列出我们的数据结构,因为你需要在其中注入新的节点(顶点),并且列表比数组更容易和更快。
它不会弄乱顶点顺序,你可以扩展它以支持顶点属性(如纹理坐标),它们也将是算术平均值。