 |
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, 19:34 Titel: |
|
|
gibt es dazu Tutorials |
|
Nach oben |
|
 |
stroggi Mini JLI'ler

Alter: 38 Anmeldedatum: 28.08.2003 Beiträge: 27 Wohnort: Gernsheim Medaillen: Keine
|
Verfasst am: 02.04.2005, 19: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: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 02.04.2005, 20: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, 20:56 Titel: |
|
|
und wie hast du das Gitter erstellt Lines oder Textur mit GitterTexttur |
|
Nach oben |
|
 |
stroggi Mini JLI'ler

Alter: 38 Anmeldedatum: 28.08.2003 Beiträge: 27 Wohnort: Gernsheim Medaillen: Keine
|
Verfasst am: 02.04.2005, 21: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: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 03.04.2005, 00: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
|