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

Aktuelle Zeit: So Jun 16, 2024 13:32

Foren-Übersicht » DGL » Feedback
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bezier-Tut klasse aber brauche Hilfe
BeitragVerfasst: Mo Nov 11, 2002 18:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
hi,

da muss ich euch echt mal loben( wie immer ) :wink: :
Das Bezierkurven Tut ist echt, das was mir noch gefehlt hat.
Jetzt muss ich nurnoch irgendwie Zeit finden, um es mir detailliert anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 16, 2002 20:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
äähh... jetzt wo ichs mir anschau hab ich nun doch ein kleines Problem: so ganz versteh ich die 16 Koordinaten aus der *.txt nich....
Nun gut das ist Anfangs- und Endpunkt und Richtungspunkte.... aber.... wie sind die mit diesen arrays aufgeteilt? und lassen sich damit auch Quads/Spheres machen(wenn ja, wie)? und wie stark beeinträchtigt so 'ne Kurve die Leistung, wie viel Curved Surfaces sollten Maximal auf dem Bildschirm zu sehen sein?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 17, 2002 11:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
das mit den Texturen läuft auch nicht wie es soll. Ich seh nur immer ein weißes Objekt!
Code:
  1. const
  2.  
  3.   TexCoords : Array[0..1, 0..1, 0..1] of TGlFloat =
  4.  
  5.    (((0.0, 0.0),(0.0, 1.0)), ((1.0, 0.0),(1.0, 1.0)));
  6.  
  7.  
  8.  
  9. var
  10.  
  11.   MainForm: TMainForm;
  12.  
  13.   Framez: Boolean;
  14.  
  15.   XROT, YROT, ZROT, ZOOMROT: Single;
  16.  
  17.   Rotator: Cardinal;
  18.  
  19.   CtrlPoints2D : Array[0..3] of Array[0..3] of Array[0..2] of TGlFloat;
  20.  
  21.   Tex: TGluInt;
  22.  
  23.  

Code:
  1. procedure TMainForm.Draw;
  2.  
  3. begin
  4.  
  5.   glClearColor(0,0,0.3,0.5);
  6.  
  7.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  8.  
  9.  
  10.  
  11.   glLoadIdentity;
  12.  
  13.  
  14.  
  15.   glTranslatef(0,0,-8);
  16.  
  17.   glTranslatef(0,0,ZOOMROT);
  18.  
  19.  
  20.  
  21.   glRotatef(XROT,1,0,0);
  22.  
  23.   glRotatef(YROT,0,1,0);
  24.  
  25.   glRotatef(ZROT,0,0,1);
  26.  
  27.  
  28.  
  29.   glEvalMesh2(GL_FILL, 0, 40, 0, 40);
  30.  
  31. end;

Code:
  1.  
  2.  
  3. procedure TMainForm.FormShow(Sender: TObject);
  4.  
  5.  
  6.  
  7. ......
  8.  
  9.  
  10.  
  11. begin
  12.  
  13.   RC := 0;
  14.  
  15.  
  16.  
  17.   SetPixelFormat;
  18.  
  19.   StartGL;
  20.  
  21.  
  22.  
  23.   //GL Extensions neu auslesen
  24.  
  25.   ClearExtensions;
  26.  
  27.   ReadExtensions;
  28.  
  29.  
  30.  
  31.   SetupGL;
  32.  
  33.  
  34.  
  35.   //Kleinkram initialisieren
  36.  
  37.   Frames := 0;
  38.  
  39.   StartTick := GetTickCount;
  40.  
  41.  
  42.  
  43.   //OnIdle setzen
  44.  
  45.   Application.OnIdle := ApplicationEventsIdle;
  46.  
  47.  
  48.  
  49.   MainForm.Resize;
  50.  
  51.  
  52.  
  53.   //OpenGL ist nun bereit
  54.  
  55.   OpenGLInitialized := True;
  56.  
  57.  
  58.  
  59.   LoadCtrlPoints;
  60.  
  61.     glMap2f(GL_MAP2_VERTEX_3, 0.0, 1.0, 3, 4, 0.0, 1.0, 12, 4, @CtrlPoints2D[0,0,0]);
  62.  
  63.  
  64.  
  65.     LoadTexture('F:MyT.bmp',Tex,False);
  66.  
  67.     glMap2f(GL_MAP2_TEXTURE_COORD_2, 0.0, 1.0, 2, 2, 0.0, 1.0, 4, 2, @TexCoords[0,0,0]);
  68.  
  69.     glEnable(GL_MAP2_TEXTURE_COORD_2);
  70.  
  71.  
  72.  
  73.     glEnable(GL_MAP2_VERTEX_3);
  74.  
  75.     glEnable(GL_AUTO_NORMAL);
  76.  
  77.     glEnable(GL_NORMALIZE);
  78.  
  79.     glMapGrid2f(40, 0.0, 1.0, 40, 0.0, 1.0);
  80.  
  81. end; (*FormShow*)


Zitat:
-2 0 -2
-2 0 2
2 0 2
2 0 -2
-1.8 0.5 -1.8
-1.8 0.5 1.8
1.8 0.5 1.8
1.8 0.5 -1.8
-1.7 1.2 -1.7
-1.7 1.2 1.7
1.7 1.2 1.7
1.7 1.2 -1.7
-1.5 2 -1.5
-1.5 2 1.5
1.5 2 1.5
1.5 2 -1.5


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 17, 2002 11:33 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Nun, ich hoffe mal, dass du bei den Texturen keinen Fehler gemacht hast, die Textur korrekt geladen wird und du anschließend auch ein glEnable(GL_TEXTURE_2D) eingebaut hast - ohne es später wieder zu deaktivieren. Und, dass je nach Grafikkarte du daran gedacht hast, die Texturen auf eine 2^n*2^n Grösse zu skalieren.
Wenn du nur ein Weißes Objekt, ohne jegliche Schattierungen siehst, solltest du vielleicht noch ein wenig Licht anwerfen, dann schauen die Teile ein bischen schöner aus - dafür sind nämlich auch glEnable(GL_AUTO_NORMAL) und glEnable(GL_NORMALIZE) - die sind nicht unbedingt die schnellsten und sind nur für die Faulen, die keine Normalen für ihre Evaluators angeben wollen.
@"wie sind die mit diesen arrays aufgeteilt?": Nun, so ähnlich wie eine Heightmap, bei der du nun nicht nur die Höhe auf dem Bild angibst, sondern auch die x,z Koordinate(In meinem Beispiel liegen die meisten dieser Punkte schön auf einem Gitternetz, das man rauslesen können sollte). Für kompliziertere Objekte sollte man vielleicht ein paar Mehr kontrollpunkte verwenden. 4x4 sind u.U. etwas wenig.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 17, 2002 11:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Zitat:
die Textur korrekt geladen wird und du anschließend auch ein glEnable(GL_TEXTURE_2D) eingebaut hast - ohne es später wieder zu deaktivieren.

Genau das wars! Bin davon ausgegangen, dass es da war
Zitat:
 
@"wie sind die mit diesen arrays aufgeteilt?": Nun, so ähnlich wie eine Heightmap, bei der du nun nicht nur die Höhe auf dem Bild angibst, sondern auch die x,z Koordinate(In meinem Beispiel liegen die meisten dieser Punkte schön auf einem Gitternetz, das man rauslesen können sollte). Für kompliziertere Objekte sollte man vielleicht ein paar Mehr kontrollpunkte verwenden. 4x4 sind u.U. etwas wenig.

Wenn ich jetzt z.B. nur 4 Punkte für mein Objekt brauche, wie reduziere ich denn dann die Arrays, und wieso sind das z.B. 4x4 und nicht 5x3 , also was bedeutet die erste Anzahl des Arrays und was die zweite?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 17, 2002 11:53 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
es ist ein 4x4 Array, weil ich ein 4x4 Array nehmen wollte, ein 5x3 tuts also auch. und darunter versteht man normalerweise die dimensionen des arrays - es handelt sich um ein 2- Dimensionales, also Array[0..3, 0..3]. Wenn du weniger punkte brauchst, dann musst du die arrays einfach verkleinern und dann die parameter bei glMap2f entsprechend anpassen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 17, 2002 14:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
puah... die SDK spuckt bei Map2f nur komplizierteres Englisch aus... und so ganz blick ich die Koordinaten auch net.... Jetzt seh ich garnix mehr... Wofür steht denn da 'ne 12 und 'ne 4? hngh.... Kannst du mir die Funktion mal auf Deutsch erläutern?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 17, 2002 16:03 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Also, in array Darstellung sieht das Ganze so aus(4x4).
Code:
  1.  
  2.  
  3. p[1,1]-p[1,2]-p[1,3]-p[1,4]
  4.  
  5. p[2,1]-p[2,2]-p[2,3]-p[2,4]
  6.  
  7. p[3,1]-p[3,2]-p[3,3]-p[3,4]
  8.  
  9. p[4,1]-p[4,2]-p[4,3]-p[4,4]
  10.  
  11.  

jeder dieser ps besteht selber aus 3 floats.
also schaut die erste Zeile des Arrays im speicher so aus:
Code:
  1.  
  2.  
  3. p[1,1,1],p[1,1,2],p[1,1,3],p[1,2,1],p[1,2,2],p[1,2,3],p[1,3,1],p[1,3,2]...
  4.  
  5.  

danach noch ein paar weitere Punkte und darauf die folgenden zeilen des
4x4 Arrays.
Alles noch Standard Computer Technik. Mit glMap2f sagst du ihm jetzt, wie diese Koordinaten im Spiecher abgelegt sind. Du erzählst ihm also genau das Bild von oben:
uStride sagt aus, wie viele floats die einzelnen Kontrollpunkte einer Zeile im Array auseinanderliegen. In unserem Fall also 3:p[x,y,1] bis p[1,1,3].
uOrder sagt aus, wie viele Kontrollpunkte in einer Zeile liegen, in unserem Fall also 4.
vStride sagt, wie viele Floats zwischend den Anfängen zweier Zeilen sind, also bei uns, die Anzahl der Floats, die 4 Kontrollpunkte umschließen: 4*3=12
und vOrder gibt die Zahl der Zeilen an.

So schwer ist das doch nicht, wäre vielleicht sinnvoll sich ein bischen mit der Technik hinter Speicher und Arrays auseinanderzusetzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 17, 2002 18:21 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Zitat:
So schwer ist das doch nicht, wäre vielleicht sinnvoll sich ein bischen mit der Technik hinter Speicher und Arrays auseinanderzusetzen.

Mein Prob liegt eher nicht im Array, sondern mehr darin, was in Funktion rein kommt... was sich jetzt aber geklärt hat


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mär 19, 2006 18:52 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
Auch von meiner Seite erst mal recht herzlichen Dank für das Tut!!!

Ich hab mir das nun auch mal alles angeschaut. Und das mit den Texturen so weit so gut ganz toll hinbekommen :-)

Aber ich hab in meinem Template eine Funktion drin, womit ich alles auch drehen kann, was ich in meiner "Welt" erstelle und siehe da, es gibt keine Rückseite :-( Jetzt habe ich versucht sie mit dem Culling sichtbar zu machen, aber das klappt leider nicht :-( und da wollte ich nun mal um Hilfe bitten.

Was kann ich machen, damit ich bei einer einfachen Ebene beide Seiten sehen kann, mit Textur.

PS: Ohne Textur sieht es genau so aus (es gibt keine Hinterseite von dem weissen "Tuch"). :-(

_________________
Schönen Gruß, Sky.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mär 19, 2006 19:41 
Offline
DGL Member

Registriert: Di Jun 22, 2004 17:40
Beiträge: 51
Wohnort: Aachen
eigentlich sollte das mit
Code:
  1. glDisable(GL_CULL_FACE);

behoben sein.. so hat es auf jedenfall bei mir funktioniert ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mär 19, 2006 23:29 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
ohh ohh, ich sollte mal wieder ne Tüte schlaf nehmen. Hab immer versucht das ganze einzuschalten, anstatt auszuschalten.

Nun geht alles, danke :-)

_________________
Schönen Gruß, Sky.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 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.047s | 17 Queries | GZIP : On ]