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

Aktuelle Zeit: Fr Jul 04, 2025 22:09

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 25, 2003 15:32 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Apr 25, 2003 15:09
Beiträge: 71
Wohnort: BAYERN! *g*
Hallo Leute
Also, ich arbeite atm an einem game Project, dieses game soll vollständig in einer Röhre stattfinden. Solange das rohr gerade ist ist die ganze sache ja auch kein Problem, wenn sie aber einen knick macht, kann ich ihre Verticies nicht mehr einfach mit
Code:
  1. x := cos(angle);  //so siehts gekürzt aus
  2. y := sin(angle);

berechnen, weil der Ring z.B. die Punkte uaßenrum um die y-Achse(oder sonst wo außenrum) sein sollen. natürlich kann ich die Position der Mitte einfach aus dem tube-array laden und per translatef setzen, aber wie schaffe ich es den mittelpunkt richtig hinzudrehen?
Ich denke, man kann den winkel, in dem das 'Rohr an der stelle recht einfach berechnen (hab schon ne idee), aber wie weise ich diese 2 schönen winkel(Kugelkoordinaten) nun an glRotatef zu, oder gibts da ne passende Hilfsfunktion, bei der man Kugel Korrdinaten (ohne Radius) (=2winkel) angeben kann?

Ich hoffe ich habe mich verständlich ausgedrückt ;)

IO-sys/MathiasH


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 25, 2003 20:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Apr 25, 2003 15:09
Beiträge: 71
Wohnort: BAYERN! *g*
das mag ja stimmen, so mache ich es bisher ja auch, doch ich muss die matrix vorher mit translate und rotate so "ummodelieren", dass dieser kreis die richtige lage hat, sonst kann man ja nur geradeausfahren, mein Problem ist in erster Linie, wie ich an die Parameter für das Rotate rankommen, soll, ich hab nur die mittelpunkte der Rohringe als kartesische Koordinaten in einem array, mehr nicht.

IO-sys/MathiasH


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 25, 2003 23:31 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
wenn deine mittelpunkte der reihe nach abgelegt werden, sit das doch recht einfach: du stellst dir eine Linie vom einen zum nächsten punkt vor. zeichene dir das auf ein blatt, etwa so:
Code:
  1.  
  2.  
  3. :----------p2
  4. |         /
  5. |       /
  6. |     /
  7. |a  /
  8. | /
  9. p1
  10.  

jetzt kommt trigonometrie zum einsatz(a: 2 mal, einmal für x, einmal für y), so kannst du schrittweise deine matrix weitermodellieren - transformationen sind nicht notwendig in der matrix, reine rotationen müssten ausreichen, wenn du vorher drüber nachdenkst. das ergebnis lässt sich sicherlich noch verbessern, indem man den nachfolgenden mittelpunkt auch noch in seine betrachtung einbezieht, aber so kannst du in jedem fall ringe auf einer bahn erzeugen - das willst du doch?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 26, 2003 18:00 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Apr 25, 2003 15:09
Beiträge: 71
Wohnort: BAYERN! *g*
also nochmal mein Programm kann bereits einen geraden Tunnel zeichnen (Beweis: <a href='http://www.kernelz.de/index.php?action=projects.php' target='_blank'>www.kernelz.de</a> ), mein einziges Problem ist wie ich nun den Winkel den die strecke hat der matrix zuweise (2winkel) denn diese kann ich ja nur mit rotation an x,yoder z achse drehen, da kann ich keine 2 Winkel angeben.

Das ganze bei gewundenen Röhren mit sinus und cosinus zu machen ist aussichtslos, die sind nur für die Punkte eines Ringes zu gebrauchen, nicht aber für die drehung eines Ringmittelpunktes

IO-sys/MathiasH


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 26, 2003 18:41 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
doch natürlich.... aber nicht mit sin und cos, sondern mit arcsin und arccos... du musst doch bloß errechnen, in welchen winklen ner nächste punkt von deinem derzeitigen blickrichtung weggedreht ist, dann drehst du die matrix weiter und kannst deine nächsten ring errechnen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 29, 2003 19:52 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Apr 25, 2003 15:09
Beiträge: 71
Wohnort: BAYERN! *g*
ich werd das ganze nun ohne drehen der Matrix zeichnen, auf in den mathematischen Spaß

aber ich hab nu auch ein prob mit der textur meines tunnels, wenn ich nämlich immer
0|0
1|0
1|1
0|1
schreib sind die texturen viel zu klein auf der tunnel wand (für jedes quad halt), ich hab schon verschiedene systeme versucht, aber idR ist nur Müll dabei herausgekommen

Code:
  1. glBegin(GL_QUADS);
  2.  &nbsp; &nbsp;For a :=0 to parts_round-1 do begin
  3.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0, 1);
  4.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f(tunnel.rings[ &nbsp;i].points[ &nbsp;a].x, &nbsp;tunnel.rings[ &nbsp;i].points[ &nbsp;a].y, &nbsp;tunnel.rings[ &nbsp;i].points[ &nbsp;a].z);
  5.  
  6.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0, 0);
  7.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f(tunnel.rings[i+1].points[ &nbsp;a].x, &nbsp;tunnel.rings[i+1].points[ &nbsp;a].y, &nbsp;tunnel.rings[i+1].points[ &nbsp;a].z);
  8.  
  9.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1, 0);
  10.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f(tunnel.rings[i+1].points[a+1].x, &nbsp;tunnel.rings[i+1].points[a+1].y, &nbsp;tunnel.rings[i+1].points[a+1].z);
  11.  
  12.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1, 1);
  13.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f(tunnel.rings[ &nbsp;i].points[a+1].x, &nbsp;tunnel.rings[ &nbsp;i].points[a+1].y, &nbsp;tunnel.rings[ &nbsp;i].points[a+1].z);
  14.  &nbsp; &nbsp;end;
  15.  &nbsp; &nbsp;glEnd();


der entscheidende Quellcode, dieses teil ist in einer Schleife drin, die die ringe des tunnels der reihe nach durchgeht (i). die hier enthaltene Schleife geht außenrum um einen ring (a)

mein Problem sind die params von glTexCoord

wie schaffe ich es, dass er die textur auf mehre Felder verteilt?

Danke für Jegliche Hilfe :)
IO-sys


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 14:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Apr 25, 2003 15:09
Beiträge: 71
Wohnort: BAYERN! *g*
also ich hab mich mit dem Vater meines Freundes unterhalten (der is mathe Prof) und der hat so was ähnliches vor recht langer zeit von hand geschrieben, also das zeichnen einer Schraube mit kurven ohne jede art von 3d engine, net schlecht, oder? naja, der hat gemeint, mit dem relativen vektor 2er tunnelpunkte zueinander kann man dann die Punkte recht einfach drehen, mal schaun, wenn ich's schaff poste ich die Lösung hier

IO-sys


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2003 14:27 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
wenn ich deinen ansatz richtig versteh, sit das genau das, was ich ziemlich am fanfang vorgeschlagen hab 8-O


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 05, 2003 19:32 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Apr 25, 2003 15:09
Beiträge: 71
Wohnort: BAYERN! *g*
mit einer entscheidenden Änderung: das ganze geschieht ohne die Matrix zu drehen, weil dann die Quads nicht mehr zusammenhängend wären!, ich muss das ganze auf mathe eben machen, aber die Performance is egal, da ich die map sowieso komplett uas ner datei lade.

IO-sys/MathiasH


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 » Programmierung » OpenGL


Wer ist online?

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