我需要在opengl中渲染的3d模型上通过鼠标拾取点来选择表面区域。我知道如何在世界坐标中获得一个点,但无法找到选择区域的方法。稍后我需要重新删除所选区域并将图像映射到我知道的区域。
答案 0 :(得分:1)
嗯,OpenGL本身无法帮助你。 OpenGL是一个绘图API。你绘制的东西,但是一旦绘制命令被执行,剩下的就是帧缓冲区中的像素,而OpenGL没有任何关于几何体的回忆。
您可以使用OpenGL实现基于图像的区域选择算法,例如将每个具有唯一索引颜色的面部绘制到屏幕外帧缓冲区中。然后通过查看可以在其中找到的值,您可以知道给定区域中存在哪些面。
稍后我需要重新制作
这称为拓扑修改,完全超出OpenGL的范围。
选择区域并在其上映射我知道的图像
您可以再次使用基于图像的方法,但是您必须知道首先要以哪种方式将图像制作成面部。如果你想打开网格,那么OpenGL没有任何帮助。但是,如果您希望用户能够“直接绘制”到网格上,可以通过将纹理坐标绘制到另一个屏幕外的帧缓冲区并通过此反向映射屏幕坐标到纹理坐标来完成。