2016-04-01 8 views
-1

Ich verwende OpenTK (a C# wrapper von OpenGL) eine NURBS-Oberfläche mit Cox-deBoor Algorithmus berechnet zu ziehen. Der Algorithmus gibt einzelne Punkte auf der Oberfläche an. Wie kann ich die gesamte Oberfläche von diesen Punkten abbilden? Wie kann ich ein Drahtmodell dieser Punkte zeichnen?Wie man ein NURBS-Oberflächengitter von berechneten Punkten rendert?

Danke!

+0

Also, was haben Sie versucht? Wie funktioniert dein Code nicht? Kennen Sie überhaupt OpenGL? –

Antwort

0

Zuerst müssen Sie ein Gitter aus einzelnen Punkten auf der Oberfläche zu erzeugen. Wenn Ihre Oberflächenparameter zwischen 0 und 1 liegen, nehmen wir an, dass Sie alle 0,05 Punkte generieren. Auf diese Weise haben Sie ein Raster von 200x200 = 40000 Punkten. (Aus Ihrer Post erhalte ich, dass Sie dies bereits getan haben)

Dann können Sie Ihre Oberfläche zeichnen GL_QUADS verwenden, für jede Gruppe von 4 Punkten im Raster. Zum Beispiel wird Ihr erstes QUAD sein:

  • Surface.Evaluate_UV (0, 0)
  • Surface.Evaluate_UV (0,05, 0)
  • Surface.Evaluate_UV (0,05, 0,05)
  • Surface.Evaluate_UV (0, 0.05)

Sie müssen das gleiche für jede "Zelle" im Raster tun. Wenn Sie die Oberfläche als Drahtmodell sehen möchten, haben Sie 2 Optionen: 1. Option. Verwenden Sie den Code:

// This option renders the surface in wireframe mode GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); // This option renders the surface in shaded mode GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);

zweite Option. Verwenden Sie GL_LINES anstelle von GL_QUADS, um die Linien zu zeichnen, die das Drahtgittermodell bilden.