| 
			
				|  | JLI Spieleprogrammierung 
 
 |  
 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |  
		| Autor | Nachricht |  
		| Florian Super JLI'ler
 
  
 Alter: 37
 Anmeldedatum: 20.06.2003
 Beiträge: 302
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 02.04.2005, 18:34    Titel: |   |  
				| 
 |  
				| gibt es dazu Tutorials |  |  
		| Nach oben |  |  
		|  |  
		| stroggi Mini JLI'ler
 
  
 Alter: 39
 Anmeldedatum: 28.08.2003
 Beiträge: 27
 Wohnort: Gernsheim
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 02.04.2005, 18:36    Titel: |   |  
				| 
 |  
				| ich habe ein einfaches Image-fenster von Delphi verwendet und mit zwei simplen Gleichungen die 3D-Positionen der Punkte auf eine 2D-Ebene projeziert, die dann gezeichnet werden. Hier ein kleiner Ausschnitt:
 
  	  | Code: |  	  | procedure TfrmFCM.Draw3D(fPosX: array of single;fPosY: array of single;fPosZ: array of single); var
 Ax,Ay,Bx,By,Cx,Cy: single;
 begin
 Ax := fPosX[0] + 0.707107*fPosZ[0];
 Ay := fPosY[0] - 0.707107*fPosZ[0];
 Bx := fPosX[1] + 0.707107*fPosZ[1];
 By := fPosY[1] - 0.707107*fPosZ[1];
 Cx := fPosX[2] + 0.707107*fPosZ[2];
 Cy := fPosY[2] - 0.707107*fPosZ[2];
 // 0 <-> 1
 img3D.Canvas.MoveTo(round(Ax+(img3D.Width/2)),round(Ay+(img3D.Height/2)));
 img3D.Canvas.LineTo(round(Bx+(img3D.Width/2)),round(By+(img3D.Height/2)));
 // 1 <-> 2
 img3D.Canvas.MoveTo(round(Bx+(img3D.Width/2)),round(By+(img3D.Height/2)));
 img3D.Canvas.LineTo(round(Cx+(img3D.Width/2)),round(Cy+(img3D.Height/2)));
 // 0 <-> 2
 img3D.Canvas.MoveTo(round(Ax+(img3D.Width/2)),round(Ay+(img3D.Height/2)));
 img3D.Canvas.LineTo(round(Cx+(img3D.Width/2)),round(Cy+(img3D.Height/2)));
 end;
 
 | 
 
 Die Gleichungen hab ich aus irgend nem uralten Buch, in dem es um so Grafik für PASCAL geht.
 Xb := cos(wi1)*X+cos(wi2)*Z;
 Yb := sin(wi1)*X+Y+sin(wi2)*Z;
 
 Die Winkel sind bei mir für die Kavalierperspektive gewält:
 wi1 = 0°
 wi2 = -45°
 _________________
 MfG Michi
 
 http://www.roboter-projekte.de
 |  |  
		| Nach oben |  |  
		|  |  
		| Patrick Dark JLI Master
 
  
 
 Anmeldedatum: 25.10.2004
 Beiträge: 1895
 Wohnort: Düren
 Medaillen: Keine
 
 
 |  |  
		| Nach oben |  |  
		|  |  
		| HomeLess_PunkDrummer JLI Master Trainee
 
  
 Alter: 37
 Anmeldedatum: 28.11.2004
 Beiträge: 583
 Wohnort: Alter Joghurtbecher an der A4
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 02.04.2005, 19:14    Titel: |   |  
				| 
 |  
				| Fuck, wie ich Delphi hasse   Nimms mir bitte nich übel aber "array of single"
 
 Hmm... Vielleicht habe ich auch nur wegen meinem Infolehrer (der wohl wenig anderes kann) so eine Abneigung dagegen entwickelt...
  _________________
 "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
 |  |  
		| Nach oben |  |  
		|  |  
		| Florian Super JLI'ler
 
  
 Alter: 37
 Anmeldedatum: 20.06.2003
 Beiträge: 302
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 02.04.2005, 19:56    Titel: |   |  
				| 
 |  
				| und wie hast du das Gitter erstellt Lines oder Textur mit GitterTexttur |  |  
		| Nach oben |  |  
		|  |  
		| stroggi Mini JLI'ler
 
  
 Alter: 39
 Anmeldedatum: 28.08.2003
 Beiträge: 27
 Wohnort: Gernsheim
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 02.04.2005, 20:58    Titel: |   |  
				| 
 |  
				|  	  | Code: |  	  | // Raster zeichnen if(displaygrid.Checked)
 then begin
 //  vertikal
 for i := 0 to imgXY.Width do
 begin
 if((round(i-OriginXY[0]) mod round(strtofloat(edtGridSize.Text))) = 0)
 then begin
 imgXY.Canvas.Pen.Color := $00FFFFFF;
 imgXY.Canvas.MoveTo(i,0);
 imgXY.Canvas.LineTo(i,imgXY.Height);
 end;
 end;
 //  horizontal
 for i := 0 to imgXY.Height do
 begin
 if((round(i-OriginXY[1]) mod round(strtofloat(edtGridSize.Text))) = 0)
 then begin
 imgXY.Canvas.Pen.Color := $00FFFFFF;
 imgXY.Canvas.MoveTo(0,i);
 imgXY.Canvas.LineTo(imgXY.Width,i);
 end;
 end;
 end;
 | 
 
 eigentlich ganz simpel
   
 Ich hab da nochmal ne Frage:
 ich verwende zum Zeichnen über meine 3D-Engine den IndexBuffer, so dass ich weniger Vertices abspeichern muss, etc. Mein Problem besteht nun darin, dass ich somit pro Vertex ja nur eine Texturkoordinate, pro Texturschicht, vergeben kann. Allerdings kommt es dadurch doch zwangsweise dazu, dass die Texturen eventuell auf manchen Seiten des Würfels richtig und auf den anderen verkehrt herum, bzw. verzerrt dargestellt werden.
 Wie kann ich dieses Problem bei "indizierten" Vertices umgehen???
 _________________
 MfG Michi
 
 http://www.roboter-projekte.de
 |  |  
		| Nach oben |  |  
		|  |  
		| KI JLI Master
 
  
 Alter: 40
 Anmeldedatum: 04.07.2003
 Beiträge: 965
 Wohnort: Aachen
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 02.04.2005, 23:22    Titel: |   |  
				| 
 |  
				| Dieses Problem kannst du mit Vertexdeclaration lösen. Dann kannst du vor dem Rendern eine Zusammenstellung aus mehreren einzelnen Vetrexbuffern machen. Position einzeln, Texturkoordinaten einzeln...
 
 Ich habs jetzt irgendwie nicht mitbekommen. OpenGL oder Direct3D?
 
 Achja. Hier sind Beispiele zu Vertexdeclaration: www.codesampler.com
 |  |  
		| Nach oben |  |  
		|  |  
		|  |  
  
	| 
 
 | Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten.
 Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
 Du kannst deine Beiträge in diesem Forum nicht löschen.
 Du kannst an Umfragen in diesem Forum nicht mitmachen.
 
 |  
 Powered by phpBB © 2001, 2005 phpBB Group
 Deutsche Übersetzung von phpBB.de
 |