2016-04-01 3 views
-1

J'utilise OpenTK (un wrapper C# d'OpenGL) pour dessiner une surface NURBS calculée avec l'algorithme de Cox-deBoor. L'algorithme donne des points individuels sur la surface. Comment puis-je rendre toute la surface à partir de ces points? En outre, comment puis-je dessiner un fil de fer de ces points?Comment rendre un maillage surfacique NURBS à partir de points calculés?

Merci!

+0

Alors, qu'avez-vous essayé? Comment votre code ne fonctionne-t-il pas? Connaissez-vous OpenGL du tout? –

Répondre

0

Vous devez d'abord générer une grille de points individuels sur la surface. Si vos paramètres de surface vont de 0 à 1, disons que vous générez des points tous les 0,05. De cette façon, vous aurez une grille de 200x200 = 40000 points. (à partir de votre message, je comprends que vous avez déjà fait cela)

Ensuite, vous pouvez dessiner votre surface en utilisant GL_QUADS, pour chaque groupe de 4 points dans votre grille. Par exemple, votre premier QUAD sera:

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

Vous devrez faire la même chose pour chaque "cellule" de la grille. Pour finir, si vous voulez voir la surface comme une structure filaire, vous avez 2 options: 1ère option. Utilisez le 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);

2ème option. Utilisez GL_LINES au lieu de GL_QUADS pour dessiner les lignes qui formeront le modèle filaire.