Algorithm 对nurbs曲面的理解
我想在OpenGL中创建一个NurbsSurface。我使用尺寸为40x48的控制点网格。此外,我创建索引以确定顶点的顺序 这样我就创建了我的三角形曲面。 只是为了避免误解。我有Algorithm 对nurbs曲面的理解,algorithm,opengl,surface,nurbs,Algorithm,Opengl,Surface,Nurbs,我想在OpenGL中创建一个NurbsSurface。我使用尺寸为40x48的控制点网格。此外,我创建索引以确定顶点的顺序 这样我就创建了我的三角形曲面。 只是为了避免误解。我有 float[]顶点=x1、y1、z1、x2、y2、z2、x3、y3、z3…… float[]指数=1,6,2,7,3,8.. 现在我不想画三角形了。我想插值曲面点。我想到了nurbs或B样条曲线 线索是: 为了确定Nurbs算法,我必须逐块插值。根据我的理解,一个补丁被定义为例如点1、6、2、7或2、7、3、8(请打
float[]顶点=x1、y1、z1、x2、y2、z2、x3、y3、z3……
float[]指数=1,6,2,7,3,8..
现在我不想画三角形了。我想插值曲面点。我想到了nurbs或B样条曲线
线索是:
为了确定Nurbs算法,我必须逐块插值。根据我的理解,一个补丁被定义为例如点1、6、2、7或2、7、3、8(请打开图片)
首先,为了使用vertexshader,我创建了顶点和索引。
但事实上,按照老方法画就足够了。在这种情况下,我将按如下方式确定顶点和索引:
float[] vertices= v1,v2,v3... with v=x,y,z
及
在OpenGL中,有一个Nurbs函数可供使用。glnewnurbs渲染器。因此,我可以很容易地渲染面片。
不幸的是,我在这一点上失败了,如何缝合补丁。我找到了一个解释,但(也许我已经被这个问题困扰了)我无法将解决方案转移到我的案例中。您能帮忙吗?您有一组要从中绘制曲面的控制点 有两种方法可以做到这一点
我想如果你不想使用现代管道,那么我建议使用选项1。好的,我认为我混淆了顶点和控制点。将三角形发送到图形管道后,我需要如何使用glNurbssurface?只需遵循nurbs命令,并将所有控制点作为浮点输入即可?除此之外,我还发现了一个几何体着色器代码,我也可以使用它吗?据我所知,在图形管道中,几何体着色器位于选项1中提到的顶点着色器之后,您可以使用gluNurbSurface功能。他们还展示了如何从控制点计算顶点位置。在VBO中填充顶点位置后,只需使用GL_三角形进行法线绘制。是的,您也可以使用几何体着色器。但请记住,几何体着色器对性能非常不利,因为输入程序集阶段必须在几何体着色器之前和之后运行。几何体着色器实际上位于细分着色器之后,但如果您不使用它们,则“是”几何体着色器位于顶点着色器之后。谢谢,我想您已经清除了它。最后一个问题,关于选项2,细分着色器,您有很好的教程吗?因为程序应该在开发一段时间后实时运行。当然,请参阅下面的链接。
float[] indices= 1,6,2,7,3,8....