GLU NURBS - 如何设置控制点权重?

发布于 2024-08-16 22:14:40 字数 206 浏览 2 评论 0原文

我正在编写一个 NURBS 类,它使用 OpenGL 的 GLU 扩展来进行渲染,但我刚刚意识到我不知道如何设置控制点权重。它不在红皮书或 GLU 文档中,网络上也没有提及太多。 GLU 的 NURBS 实现是否可能不包含此功能?如果是这样,我很惊讶他们居然把它称为 NURBS 而不仅仅是 B 样条线。

编辑:将“结权重”更改为“控制点权重”。

I'm writing a NURBS class that uses OpenGL's GLU extension to do rendering, but I just realized I have no idea how to set the control point weights. It's not in the Red Book or the GLU documentation, and the web doesn't mention much of it, either. Is it possible that GLU's NURBS implementation just doesn't include this feature? If so, I'm surprised they got away with calling it NURBS and not just B-splines.

Edit: Changed "knot weights" to "control point weights".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼角的笑意。 2024-08-23 22:14:40

NURBS 术语中所述的问题是您想要一条有理曲线而不是非有理曲线。

看看 gluNurbsCurve 原型,我们有

void gluNurbsCurve(GLUnurbsObj *nobj, // NURBS object 
                   GLint nknots,      // number of knots
                   GLfloat *knot,     // knot values
                   GLint stride,      // stride
                   GLfloat *ctlarray, // control points array
                   GLint order,       // order of data
                   GLenum type)       // data type

:参数是*knot,但是它不是权重数组。 glu 处理结权重的方式有点混乱,您可以在此处阅读相关内容。

ctlarray 和最后一个参数是您感兴趣的。最后一个参数 type 是二维求值器类型之一。通常,您可以分别对非有理控制点使用 GL_MAP2_VERTEX_3 或对有理控制点使用 GL_MAP2_VERTEX_4。

请参阅红皮书了解更多详情。

Your problem stated in NURBS terminology is that you want a rational curve instead of a non-rational.

Looking at the gluNurbsCurve prototype we have:

void gluNurbsCurve(GLUnurbsObj *nobj, // NURBS object 
                   GLint nknots,      // number of knots
                   GLfloat *knot,     // knot values
                   GLint stride,      // stride
                   GLfloat *ctlarray, // control points array
                   GLint order,       // order of data
                   GLenum type)       // data type

One of the parameters is *knot, HOWEVER it's not an array of weights. The way glu handles knot weights is a little confusion, you can read about it here.

The ctlarray and last parameter is the ones that interests you. The last parameter, type, is one of the two-dimensional evaluator types. Commonly, you might use GL_MAP2_VERTEX_3 for nonrational or GL_MAP2_VERTEX_4 for rational control points, respectively.

See the Red Book for further details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文