2

OpenGL の GLU 拡張機能を使用してレンダリングを行う NURBS クラスを作成していますが、制御点の重みを設定する方法がわからないことに気付きました。それは Red Book にも GLU のドキュメントにもありませんし、ウェブでもあまり言及されていません。GLU の NURBS 実装にこの機能が含まれていない可能性はありますか? もしそうなら、B スプラインだけでなく NURBS と呼んでいたことに驚いています。

編集:「結び目の重み」を「制御点の重み」に変更しました。

4

1 に答える 1

4

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

パラメータの 1 つは ですが*knot、重みの配列ではありません。glu がノットの重みを処理する方法は少し混乱しています。詳細については、こちらを参照してください

ctlarray と最後のパラメーターは、興味のあるものです。最後のパラメーター type は、2 次元エバリュエーター タイプの 1 つです。一般的に、非有理制御点には GL_MAP2_VERTEX_3 を、有理制御点には GL_MAP2_VERTEX_4 をそれぞれ使用します。

詳細については、レッド ブックを参照してください。

于 2010-01-07T08:43:24.690 に答える