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

Aktuelle Zeit: Fr Jul 18, 2025 08:11

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 3ds Render probleme
BeitragVerfasst: So Jun 05, 2005 16:45 
Offline
DGL Member

Registriert: Mo Jan 24, 2005 15:55
Beiträge: 28
Wohnort: Biberach an der Riß
Hallo!
Ich verwende den 3ds loader von Noeska und dglopengl.
Ich habe eine 3ds Datei, und möchte einzelne Meshes davon Rendern. Eigentlich nicht schwer: Meshes.Mesh[x].Render
Ich kann nur ein einziges Mesh render. Wen ich versuche mehrere zu rendern, dann sehe ich nur eins oder gar keins.
Wie kann ich die einzelnen Meshes rendern, und zwar so, dass sie auch alle angezeigt werden?

_________________
Olonia - schaut mal rein!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 16:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Genau das gleiche Problem hatte vor kurzen schon jemand. Schau mal die Posts durch :wink:

MfG
Flo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 17:43 
Offline
DGL Member

Registriert: Mo Jan 24, 2005 15:55
Beiträge: 28
Wohnort: Biberach an der Riß
Kanns leider nicht finden!

_________________
Olonia - schaut mal rein!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 18:01 
Offline
DGL Member

Registriert: So Nov 16, 2003 14:37
Beiträge: 37
Kann dir leider nicht helfen, vielleicht solltest du auch mal ein bissl code herzeigen.

Wollte deswegen keinen neuen "gl3ds"-Thread erstellen (davon gibts ja schon massenhaft), aber kanns sein das der Loader generell noch ein paar Macken hat? Mich wundert z.B. noch immer folgendes: Wenn ich mein mesh mit gl3ds lade hab ich ca. 150 FPS, wenn ich das gleiche Mesh mit GLScene lade habe ich so um die 500 Frames :shock:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 18:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Ich vermute mal das du einfach das Modell nicht richtig skalliert hast. Für gewöhnlich sind die viel zu groß.

MfG
Flo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 18:11 
Offline
DGL Member

Registriert: Mo Jan 24, 2005 15:55
Beiträge: 28
Wohnort: Biberach an der Riß
Ok, hier der gewünschte Code:

Timer zum Rendern:
Code:
  1.  
  2. procedure TForm1.TimerSkriptTimer(Sender: TObject);
  3. begin
  4.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  5.   glLoadIdentity;
  6.   Rendern.Analyse1;
  7.   SwapBuffers(form1.myDC);
  8. end;


In der Procedure Analyse1 wird dann die Procedure Render aufgerufen:
Code:
  1. procedure TRendern.Render(typ:String);
  2.  var typ2:String;
  3. begin
  4.   if Typ='renderall' then begin
  5.     glTranslatef(Einheit.Posxoptionen/10,EInheit.PosyOptionen/10,Einheit.Poszoptionen/10);
  6.     glrotatef(Einheit.Winkelxoptionen,1,0,0);
  7.     glrotatef(Einheit.WinkelYOptionen,0,1,0);
  8.     glrotatef(Einheit.Winkelzoptionen,0,0,1);
  9.  
  10.     if Einheit.geladen=True then Einheit.Meshes.Render;
  11.  
  12.     glTranslatef((Einheit.Posxoptionen/10)*(-1),(EInheit.PosyOptionen/10)*(-1),(Einheit.Poszoptionen/10)*(-1));
  13.     glrotatef(Einheit.Winkelxoptionen*(-1),1,0,0);
  14.     glrotatef(Einheit.WinkelYOptionen*(-1),0,1,0);
  15.     glrotatef(Einheit.Winkelzoptionen*(-1),0,0,1);
  16.   end
  17.   else
  18.   begin
  19.     glTranslatef(Einheit.Posxoptionen/10,EInheit.PosyOptionen/10,Einheit.Poszoptionen/10);
  20.     glrotatef(Einheit.Winkelxoptionen,1,0,0);
  21.     glrotatef(Einheit.WinkelYOptionen,0,1,0);
  22.     glrotatef(Einheit.Winkelzoptionen,0,0,1);
  23.     typ2:=Aufteilen.Werte[1];
  24.     glTranslatef(Einheit.Posx[StrToInt(typ2)]/10,Einheit.Posy[StrToInt(typ2)]/10,Einheit.Posz[StrToInt(typ2)]/10);
  25.     glrotatef(Einheit.winkelx[strToint(typ2)],1,0,0);
  26.     glrotatef(Einheit.Winkely[StrToInt(typ2)],0,1,0);
  27.     glrotatef(Einheit.Winkelz[StrToInt(typ2)],0,0,1);
  28.  
  29.    
  30.     if Einheit.geladen=True then Einheit.Meshes.Mesh[StrToInt(typ2)].Render;
  31.  
  32.     glTranslatef((Einheit.Posxoptionen/10)*(-1),(EInheit.PosyOptionen/10)*(-1),(Einheit.Poszoptionen/10)*(-1));
  33.     glrotatef(Einheit.Winkelxoptionen*(-1),1,0,0);
  34.     glrotatef(Einheit.WinkelYOptionen*(-1),0,1,0);
  35.     glrotatef(Einheit.Winkelzoptionen*(-1),0,0,1);
  36.     glTranslatef((Einheit.Posx[StrToInt(typ2)]/10)*(-1),(Einheit.Posy[StrToInt(typ2)]/10)*(-1),(Einheit.Posz[StrToInt(typ2)]/10)*(-1));
  37.     glrotatef(Einheit.winkelx[strToint(typ2)]*(-1),1,0,0);
  38.     glrotatef(Einheit.Winkely[StrToInt(typ2)]*(-1),0,1,0);
  39.     glrotatef(Einheit.Winkelz[StrToInt(typ2)]*(-1),0,0,1);
  40.  
  41.      
  42.   end;
  43. end;


Das ganze Programm läuft per Skript, das heißt das ich während der Laufzeit Befehle geben kann.

_________________
Olonia - schaut mal rein!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 18:30 
Offline
DGL Member

Registriert: So Nov 16, 2003 14:37
Beiträge: 37
Hmm, kann da jetzt nichts offensichtlich falsches entdecken, sieht ja ganz gut aus. Könntest du vielleicht mal die Funktion Einheit.Meshes.Render; zeigen?

@Flo: Hab gerade mein Model um noch eine 10er Potenz skaliert und es hatte keinen Effekt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 18:32 
Offline
DGL Member

Registriert: Mo Jan 24, 2005 15:55
Beiträge: 28
Wohnort: Biberach an der Riß
Die ist im gl3ds Loader integriert! Einheit.Meshes ist vom Typ TAll3dsMesh in den Die 3ds Datei geladen wird.

_________________
Olonia - schaut mal rein!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 18:38 
Offline
DGL Member

Registriert: So Nov 16, 2003 14:37
Beiträge: 37
Ahh, sry - hätt ich mein Hirn eingeschaltet hätt ich das auch bemerkt :oops:

Hmm, aber du könntest alternativ versuchen testweise statt "Meshes.Render;" in einer "for"-Schleife alle Meshes über "Meshes.Mesh[X].Render;" zu zeichnen...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 05, 2005 18:44 
Offline
DGL Member

Registriert: Mo Jan 24, 2005 15:55
Beiträge: 28
Wohnort: Biberach an der Riß
Das Problem ist halt, das vornherein nicht bekannt ist, welche mesches, und wie viele, gezeichnet werden sollen. Das wird erst zur Laufzeit über den Skript bestimmt.

_________________
Olonia - schaut mal rein!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 06, 2005 08:38 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
EDIT ARGH...
ich hab im falschen Thread gepostet... ^^
Verschiebt das wer in: http://delphigl.com/forum/viewtopic.php ... ced711f306 ??
danke ''^^
/EDIT


Hi,

also ich kenne HDRI und PhotonMapping lediglich aus 3D Software.. aber evtl kann ich dir trotzdem helfen, zummindest wenn es darum geht zu verstehen was beide dinge machen ;)

Allerdings.. sowohl HDRI als auch PhotonMapping sind extrem rechenaufwendig... zwar kann man die Photonen baken, das dürfte aber für RealTime dann trotzdem noch eine ganze ecke zu langsam sein...

Genauso HDRI.. man kann es zwar einigermaßen gut Faken so das es gut aussieht und in echtzeit läuft.. aber mit wirklichem HDRI hat das nich viel zu tun ;) (Aber dazu gibt es schon nen fertigen glSlang Shader wenn mich nicht alles täuscht... war glaub ich bei RenderMonkey dabei).


Ansonsten, was genau möchtest du über die beiden Themen wissen???

Au'revoir,
Aya~

PS: PhotonMapping kann man auch für Outdoor scenen benutzen... wird halt nur noch extrem langsamer... denn desto weitläufiger das Gelände desto weiter können die Photonen fliegen und desto mehr werden benötigt.

PPS: Wenn du im Spiel einen guten Look haben willst der meiner Meinung nach sogar realistischer aussieht als HDRI+PM würd ich dir AmbientOcclusion noch empfehlen... ist mit ein wenig trickserei in echtzeit machbar (mußt halt NormalMap baken)


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 3 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 | 17 Queries | GZIP : On ]