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

Aktuelle Zeit: Mi Jul 09, 2025 11:59

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Okt 07, 2007 11:41 
Offline
DGL Member

Registriert: Mi Mär 28, 2007 17:45
Beiträge: 131
Hallo,

zur Zeit arbeite ich weiter am Problemkreis "Kollisionen" und beschäftige mich mit Dingen wie ray-triangle intersection. Spannende Sache, aber wenn ich an die Umsetzung denke, holen mich meine mangelhaften OpenGL-Kenntnisse wieder ein.

Beispiel: Ich habe ein Objekt, etwa einen Baum mit 30 oder 40 dreieckigen Polygonen (sowas wie Blätterdächer). Diesen Baum will aber mehrfach in die Landschaft pflanzen, und damit er nicht immer gleich aussieht, jedesmal anders skalieren bzw. rotieren. Die Translation lasse ich mal außen vor. Skalierung/Rotation kann man natürlich schön einfach mit glRotate und glScale machen. Aber das ist ja noch die Kollision. Dafür gebrauche ich ja außerhalb von OpenGL die Vertices der rotierten und skalierten Polygone.

Ich vermute, dass man die nicht ohne weiteres aus OpenGL herauskitzeln kann. Das würde aber bedeuten, dass ich außerhalb von OpenGL rotieren und skalieren muss. Sehe ich das richtig, und wenn ja: wie bewerkstelligt man das am besten (=einfachsten)?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 07, 2007 11:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Für das Skalieren gehst du alle Vertices deines Objektes durch und berechnest:
Code:
  1. Vertex[i].Pos := Vertex[i].Pos * ScaleVector;
  2. Vertex[i].Nor := Normalize(Vertex[i].Nor / ScaleVector);


Für das Rotieren ist es wohl am einfachsten, wenn du dir eine Rotationsmatrix erstellst und jeden Vertex deines Objektes
damit multiplizierst.

So ich hoffe das stimmt und hilft dir weiter :wink:

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 07, 2007 13:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also als ersten ansatz würde ich die ModelView-Matrix (oder welche auch immer du dafür verwendest) aus OpenGL laden (glGet(GL_MODELVIEW_MATRIX)) und den Vertex dann damit multiplizieren.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 08, 2007 20:23 
Offline
DGL Member

Registriert: Mi Mär 28, 2007 17:45
Beiträge: 131
Hab' schon halb vermutet, dass an einer Rotationsmatrix kein Weg vorbei geht. Die Normalen zu rotieren, hätte ich glatt vergessen. Somit könnte folgendes Verfahren angewandt werden:

1. glRotate und glScale aufrufen und OpenGL die Dinger zeichnen lassen
2. dann die Matrix von OpenGL abkupfern, alle Vertices durch die Matrix kurbeln und
3. in Arrays mit beachtlichem Umfang speichern

Was die Bäume anbetrifft, so denke ich durchaus an einen kleinen Wald. 2000 Pflanzen sollten es schon sein.
Na denn, packen wir's an. Mir schwebt da so ein Vampir oder eine Hexe mit Besenstiel vor, die durch die Baumkronen flattern. Irgenwo hinter einem Baumstamm versteckt sich natürlich 'ne Jungfrau ...

Danke


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 09, 2007 08:33 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Such mal nach 'prozedurale Bäume'. Damit kannst Du 1000e von Bäumen machen, die sich nicht gleichen. Geht auch relativ schnell und kann ins Mapgenerieren eingebaut werden.

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]