在SharpGL中使用NURBS

时间:2017-08-14 09:39:33

标签: opengl shader heightmap nurbs opennurbs

我写了一个程序来显示一些压力测量值。我想使用NURBS进行细节可视化。所以我指导我 enter link description here

我的领域范围为40x48平方。所以有40行和48列。 Z分量(高度)应该是可变的。

但我不明白如何定义

glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &ctrlpoints[0][0][0]);

// Parameter:
        //   target:
        //     What the control points represent (e.g. MAP2_VERTEX_3).
        //
        //   u1:
        //     Range of the variable 'u'.
        //
        //   u2:
        //     Range of the variable 'u.
        //
        //   ustride:
        //     Offset between beginning of one control point and the next.
        //
        //   uorder:
        //     The degree plus one.
        //
        //   v1:
        //     Range of the variable 'v'.
        //
        //   v2:
        //     Range of the variable 'v'.
        //
        //   vstride:
        //     Offset between beginning of one control point and the next.
        //
        //   vorder:
        //     The degree plus one.
        //
        //   points:
        //     The data for the points.

我不知道如何在我的情况下设置参数。 例如什么是u1和u2?或者我的ControlPoints是什么?

1 个答案:

答案 0 :(得分:0)

在此链接中,您可以找到有关参数的更详细说明:

https://msdn.microsoft.com/en-us/library/windows/desktop/ee872053(v=vs.85).aspx

在表面X方向由u坐标给出,Y方向由v坐标给出。通常将u1-u2和v1-v2设置为[0,1]间隔。

曲面的顺序在点之间进行插值(您可以使用order = 1进行线性插值,使用order = 2进行二次插值,依此类推.2或3应该可以满足您的需求。

有了这个说法,我担心方法“glMap2f”不能准确地表示你的数据,因为一般来说“控制点”不在表面本身(如下面的image所示)

你必须寻找一种算法来从点云中插入nurbs曲面,然后使用glMap2f计算控制点。

如果您想了解更多有关Nurbs的信息,请查看L. Piegl的“The Nurbs book”