Opengl 为复杂三维网格动态生成三角形列表

Opengl 为复杂三维网格动态生成三角形列表,opengl,graphics,3d,direct3d,tetgen,Opengl,Graphics,3d,Direct3d,Tetgen,在我的应用程序中,我从用户输入中获取了复杂三维实体(例如a)的形状和尺寸。我需要为它构造顶点和索引缓冲区 由于尺寸是从用户输入中获取的,因此我无法使用Blender或3D Max手动创建模型。教科书中动态生成此类网格的方法是什么 我正在寻找的东西,将生成给定的顶点,边和洞的三角形。例如,尽管TetGen无法排除落在实体/网格内部的三角形。这取决于您的要求 如果生成后不需要访问网格,而只需要渲染网格,最快的方法是使用glGenBuffers创建顶点缓冲区,使用glMapBuffer将其映射到内存中

在我的应用程序中,我从用户输入中获取了复杂三维实体(例如a)的形状和尺寸。我需要为它构造顶点和索引缓冲区

由于尺寸是从用户输入中获取的,因此我无法使用Blender或3D Max手动创建模型。教科书中动态生成此类网格的方法是什么


我正在寻找的东西,将生成给定的顶点,边和洞的三角形。例如,尽管TetGen无法排除落在实体/网格内部的三角形。

这取决于您的要求

如果生成后不需要访问网格,而只需要渲染网格,最快的方法是使用
glGenBuffers
创建顶点缓冲区,使用
glMapBuffer
将其映射到内存中,将数据写入缓冲区,然后使用
glUnmapBuffer
取消映射。绘图速度会非常快,因为所有数据都可以上传到显卡存储器中

如果生成网格数据后确实需要访问网格数据,或者希望定期修改网格数据,则最好在常规数组中构建顶点数据,并使用带有
glvertexponter
和friends的顶点数组

您还可以使用一种组合:在主内存中生成网格数据,然后
memcpy()
将其放入映射的顶点缓冲区


最后,如果“尺寸”只是指缩放整个物体,则可以在任何3D建模程序中脱机创建它,并使用OpenGL变换,例如
glScale
,在渲染时将尺寸应用于网格。

听起来您需要创建一组垂直面,以及三角形列表,每个三角形包含顶点数组中3个标记的列表。要做到这一点没有简单的方法。要绘制一个长方体,您需要8个边线和12个三角形(每边2个)。某些表示也将使用显式边表示。我怀疑这比你想做的要多

您需要的是一个可以执行CSG(复合实体几何体)的网格库。这样,您应该能够指定块的尺寸,然后指定圆柱体的尺寸,并告诉它为您剪切它们(CSG差异)。所有的顶点和三角形管理都应该为您完成。最后,这样的库应该能够将网格导出为一些常见格式。这里唯一的问题是我不知道这样一个图书馆的名字。有些东西告诉我,如果你知道如何编写脚本,Blender实际上可以完成所有这些。我还怀疑有一两个相当不错的库

谷歌实际上让我回到了StackOverflow:


如果没有提供创建网格的功能(它们都谈到了操作网格或进行CSG),您可能最终需要通过编程生成简单网格,并使用库对其进行操作。

我不确定是否有帮助?

Thomas,我正在寻找一种方法,以一种简单的方式从维度实际生成顶点。沿着TetGen线的东西。所谓“形状和尺寸”,我指的是顶点的数量,多边形的数量,洞的数量等等。。。以及顶点。从用户输入中获取的整个几何图形。