Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Apr 16, 2024 13:16

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Nurbs mit OpenGL
BeitragVerfasst: Mi Mär 27, 2013 09:12 
Offline
DGL Member

Registriert: Do Mär 21, 2013 14:57
Beiträge: 51
Programmiersprache: C#,C++
Hi Leute,

ich sitze gerade über einer Arbeit in der ich mit OpenGL prorammieren muss und bin noch ein Frischling was diese Bibliothek angeht.
Mein Problem liegt in der Verwendung der GL.Map2 (ich verwende die opentk wrapper klassen, GL.Map2 entspricht glMap2f was ich
so gelesen habe).

Hier erstmal ein Source-Code-Ausschnitt:

Code:
  1.  
  2. public void generateNurbVertexes(float radius_top, float radius_bot, string detail)
  3.         {
  4.             int resolution = 0;
  5.             float dx, dy, dz;
  6.  
  7.             // Scale measures down.
  8.             float radius_top_scaled = radius_top / this.scale_factor;
  9.             float radius_bot_scaled = radius_bot / this.scale_factor;
  10.  
  11.             // Set nurb quality.
  12.             if (detail == "high")
  13.                 resolution = 40;
  14.             if (detail == "medium")
  15.                 resolution = 20;
  16.             if (detail == "low")
  17.                 resolution = 10;
  18.  
  19.             controlPointsNurb1 = new double[resolution, 3, 3];
  20.  
  21.             // Generate vertexes for nurb1.
  22.             for (int i = 0; i < resolution; i++)
  23.             {
  24.                 dx = ((Math.Abs((float)((PartialFrontPlain1[0].X - RarePlain2_1[0].X) / resolution))) * i);
  25.                 dy = ((Math.Abs((float)((PartialFrontPlain1[0].Y - RarePlain2_1[0].Y) / resolution))) * i);
  26.                 dz = ((Math.Abs((float)((PartialFrontPlain1[0].Z - RarePlain2_1[0].Z) / resolution))) * i);
  27.  
  28.                 controlPointsNurb1[i, 0, 0] = PartialFrontPlain1[0].X - dx;
  29.                 controlPointsNurb1[i, 0, 1] = PartialFrontPlain1[0].Y - dy;
  30.                 controlPointsNurb1[i, 0, 2] = PartialFrontPlain1[0].Z + dz;
  31.  
  32.                 controlPointsNurb1[i, 1, 0] = PartialFrontPlain2[0].X - dx;
  33.                 controlPointsNurb1[i, 1, 1] = PartialFrontPlain2[0].Y - dy + radius_top_scaled;
  34.                 controlPointsNurb1[i, 1, 2] = PartialFrontPlain2[0].Z + dz;
  35.  
  36.                 controlPointsNurb1[i, 2, 0] = PartialFrontPlain2[0].X - dx;
  37.                 controlPointsNurb1[i, 2, 1] = PartialFrontPlain2[0].Y - dy;
  38.                 controlPointsNurb1[i, 2, 2] = PartialFrontPlain2[0].Z + dz;
  39.             }
  40.         }
  41.  
  42.         public void drawNurbs()
  43.         {
  44.             GL.Color3(Color.Yellow);
  45.             GL.Map2(MapTarget.Map2Vertex3, 0.0, 1.0, 3, 3, 0.0, 1.0, 19*9, 3, ref controlPointsNurb1[0, 0, 0]);
  46.             GL.Enable(EnableCap.Map2Vertex3);
  47.             //GL.Enable(EnableCap.AutoNormal);
  48.             //GL.Enable(EnableCap.Normalize);
  49.             GL.MapGrid2(40, 0.0, 1.0, 40, 0.0, 1.0);
  50.             GL.EvalMesh2(MeshMode2.Fill, 0, 40, 0, 40);
  51.         }
  52.  


Die erste Methode berechnet die Vertex-Koordinaten die ich für die Nurb benötige, die zweite soll diese Zeichnen. Das funktioniert nahezu einwandfrei, jedoch wird diese Nurb nicht komplett gezeichnet . Der Parameter ustride ist mir nicht klar (wie sich dieser errechnet - hier der 19*3 - parameter). Mit dieser Einstellung (19*3 = 171) funktioniert diese Methode,wie jedoch bereits erwähnt wird die Nurb nicht bis zum letzten Punkt gezeichnet. Durch herumprobieren habe ich den aktuellen Wert für ustride ermittelt wodurch mir auch klar wurde,dass dieser das Problem darstelt.

Wichtige Info: für den Parameter "resolution" verwende ich zur Zeit standart-mäßig den Wert 40!

Ich hoffe es kann mir jemand helfen.

_________________
_______________________________________
Lets move over mountains and through valleys:
GL.Map2(,,,,,,,,,)
GL.MapGrid2(,,,,,,,,,)
GL.EvalMesh2(,,,,,,,,,)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nurbs mit OpenGL
BeitragVerfasst: Mi Mär 27, 2013 09:28 
Offline
DGL Member

Registriert: Do Mär 21, 2013 14:57
Beiträge: 51
Programmiersprache: C#,C++
^^ entschuldigt, dass ich jetzt lache. Aber ich hänge seit 3 Tagen an dem Problem und jetzt kurz nachdem ich mich entschloss mein Problem zu posten
habe ich den Parameter verstanden und erkannt, dass der Fehler bei der Berechnung meiner Vertex-Koordinaten liegt! Alles funktioniert nun einwandfrei!
Trotzdem danke ;D

_________________
_______________________________________
Lets move over mountains and through valleys:
GL.Map2(,,,,,,,,,)
GL.MapGrid2(,,,,,,,,,)
GL.EvalMesh2(,,,,,,,,,)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 27 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.039s | 19 Queries | GZIP : On ]