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

Aktuelle Zeit: Mo Jul 14, 2025 21:52

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



Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Editor Ansicht 2D und 3D
BeitragVerfasst: Mo Sep 08, 2003 16:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Ich habe in meinem Editor eine 2D Ansicht und eine 3D Ansicht.
Doch meine 2D Ansicht ,die ich selber auf einer TPaintBox zeichne, sieht noch irgend wie 3D aus. Ich zeichne irgend wie falsch glaube ich. Zeichne aber nur die XY Koordinaten


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 08, 2003 16:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn du die 2D-Ansicht auch mit OpenGL zeichnest, dann hast du zu 100% vergessen in eine parallele Projektion zu wechseln. (glOrtho)

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Sep 08, 2003 22:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
TOpenGL hat geschrieben:
...die ich selber auf einer TPaintBox zeichne...

Zeichne es auf einer TPaintBox. Ich zeichne nur die X und Y Koordinate. Kann es sein das ich nur ein Face zeichnen muss wenn seine Vertices alle den gleichen z wert haben?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 11:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
hat keiner eine Idee?

//Edit
Habe es jetzt so gemacht das nur alles Faces gezeichnet werden die auch die gleiche z Koordinate haben. Das sieht so aus. Jetzt sieht es nicht mehr 3d aus.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 12:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
TOpenGL hat geschrieben:
hat keiner eine Idee?

Tschuldige aber deine Beschreibung ist ein wenig dürftig. Wie zeichnest du es denn? Am Besten wäre es, wenn du mal so den ein oder anderen Codeschnipsel postest und mal genauer beschreibst was du tust. Dann kann dir dabei auch geholfen werden.

Für meine Augen sieht es so aus als hättest du OpenGL angewiesen alles mit Linien zu zeichnen bzw. irgendwie zeichnest du das mit der perspektivischen Verzerrung (Tiefe = Kleiner). So darfst du das aber nicht tun.
Du musst deine Objekte (die du ja noch irgendwo im speicher hast) per GDI oder glOrtho auf dein Fenster bringen. Aber mit einer Beschreibung ala "geht nicht" kann dir Keiner helfen! Da musst du schon ein bisschen genauer werden.

PS: Es sieht immer noch 3D aus. Du hast nur keine Kante mehr die in die Tiefe geht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 12:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Das LINKE Fenster wurde NICHT mit OPENGL gezeichnet sondern ich zeichne es selber mit LineTo und MoveTo nur das rechte 3D Fenster zeichne ich mit OpenGL. Hoffe das ist jetzt klar.

So zeichne ich einen vertex.
Code:
  1.  
  2. procedure TfrmXY.DrawVertex(V: Tvertex);
  3. var
  4.   r : TRect;
  5. begin
  6.   r.Left :=ScrollBarZoomX.Position + Round(+v.fx *FZoom);
  7.   r.Top  :=ScrollBarZoomY.Position + Round(-v.fy *FZoom);
  8.   r.Right := r.Left + Round(VerticesDraw.Size * 200);
  9.   r.Bottom := r.Top +Round(VerticesDraw.Size * 200);
  10.   FVertexList.AddObject(inttostr(r.Left)+','+inttostr(r.Top),TObject(V));
  11.   FBackPuffer.Canvas.Brush.Color := v.DrawColor;
  12.   FBackPuffer.Canvas.FillRect(r);
  13. end;
  14.  


und so ein Face
Code:
  1.  
  2. procedure TfrmXY.DrawFace(F: TFace);
  3. var
  4.   x,y,x1,y1 : Integer;
  5.   index : integer;
  6. begin
  7.   //Dicke ändern wenn selektiert
  8.   index := FacesDraw.GetIndex(f);
  9.   FBackPuffer.Canvas.Pen.Width := 2;
  10.   if index = FacesDraw.FaceIndex then
  11.     FBackPuffer.Canvas.Pen.Width := 4;
  12.   FLine := FBackPuffer.Canvas.Pen.Width;
  13.   FBackPuffer.Canvas.Brush.Color := f.DrawColor;
  14.   FBackPuffer.Canvas.Pen.Color := f.DrawColor;
  15.   x1 := ScrollBarZoomX.Position + Round(+F.V1.Fx * Fzoom)+Round(VerticesDraw.Size * 100);
  16.   y1 := ScrollBarZoomY.Position + Round(-F.V1.Fy * Fzoom)+Round(VerticesDraw.Size * 100);
  17.   FBackPuffer.Canvas.MoveTo(x1,y1);
  18.  
  19.   x := ScrollBarZoomX.Position + Round(+F.V2.Fx * Fzoom)+Round(VerticesDraw.Size * 100);
  20.   y := ScrollBarZoomY.Position + Round(-F.V2.Fy * Fzoom)+Round(VerticesDraw.Size * 100);
  21.   FBackPuffer.Canvas.LineTo(x,y);
  22.  
  23.   x := ScrollBarZoomX.Position + Round(+F.V3.Fx * Fzoom)+Round(VerticesDraw.Size * 100);
  24.   y := ScrollBarZoomY.Position + Round(-F.V3.Fy * Fzoom)+Round(VerticesDraw.Size * 100);
  25.   FBackPuffer.Canvas.LineTo(x,y);
  26.  
  27.   x := ScrollBarZoomX.Position + Round(+F.V4.Fx * Fzoom)+Round(VerticesDraw.Size * 100);
  28.   y := ScrollBarZoomY.Position + Round(-F.V4.Fy * Fzoom)+Round(VerticesDraw.Size * 100);
  29.   FBackPuffer.Canvas.LineTo(x,y);
  30.   FBackPuffer.Canvas.LineTo(x1,y1);
  31.   FFaceList.AddObject('',TObject(F));
  32. end;
  33.  

Hoffe das kann euch weiter helfen.
ScrollBarZoomX und ScrollBarZoomY sind Scrollbars um die 2D Ansicht zubewegen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 13:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Okay. Damit kann man schon mehr anfangen.
Ich habe mir das auch gerade mal angesehen und konnte da auf anhieb keinen Fehler feststellen. Hast du denn schon mal im Debugger nachgesehen, ob die Punkte auch die richtigen Werte haben? Wenn ich das richtig sehe, dann sollten sich die vordere und hintere Fläche lediglich durch die Tiefenposition unterscheiden. Prüfe das mal. Denn das ist das Wahrscheinlichste woran es liegen wird.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 13:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Ich zeichne die Hinter Ansicht mit. Aber ich kann nicht feststellen ob ein Face die Hinterwand ist oder die Seite etc.

//edit
Lossy eX hat geschrieben:
Hast du denn schon mal im Debugger nachgesehen, ob die Punkte auch die richtigen Werte haben?

Ja das haben sie.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 13:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das Finde ich alles äußerst merkwürdig.

Es spielt in 2D eigentlich keine Rolle was du zeichnest.

Versuche mal in deinem Editor NUR zwei Wände zu erstellen. Einmal die Vorderwand und einmal die selbe Wand nur etwas tiefer im Bild. (Oder nur die Rechte und Linke Wand) Und dann schau dir mal das 2D Bild an. Wenn das wieder so ähnlich ausschaut dann fließt irgendwo Z mit in deine Berechnung ein. Wie auch immer dies geschiet. Andernfalls wäre es evtl. sinnvoll, dass du mal deine gesammten Quellen hochlädst (oder PM). So, dass ich mir mal alles ansehen kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 13:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Habe jetzt mal ein Face erstellt mit den Koordinaten 0/0/-5 und ein Face mit den Koordinaten 0/0/0. Im editor sieht man nur ein Face das heist ja sie liegen übereinander. Aber wenn ich jetzt die Decke erstelle sieht es im 2d fenster wieder 3d aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 14:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Okay. Dann muss dort irgendwo was falsch berechnet werden. Schau mal, ob beim Zeichnen genau die Werte ankommen die du reingeworfen hast und vor allem dass die auch noch genau da stehen wo sie eigentlich hinsollen. Und wenn das doch richtig ist dann schau mal ob die anderen Variablen richtig sind. (FZoom, etc.) Nicht, dass da irgendwas aus versehen geändert wurde.

So wie du das sagst scheint es so, als ob da irgendwie die Tiefe eines Objektes mit hineinfließt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 14:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Die Variablen sind alle ok und stimmen auch.
Ich habe jetzt mal ein Quad erstellt eins wo alle seiten die gleichen x und y koordinate haben nur eine Unterschiedliche z Position haben.

Wenn ich jetzt die x und y Position änder, vom Hinterem Face, dann sieht es im 2d Modus anders aus. Ich habe NICHT die z Koordinate geändert.
Hier das Bild.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 14:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ja gut. Das Bild sieht ja jetzt auch so aus wie es eigentlich sein soll. Aber in dem ersten und zweiten Bild war das 3D Objekt ein Quader und in 2D war die selbe Verzerrung wie in 3D drin. Aber das stimmt ja jetzt. Oder irre ich mich da?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 14:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Ich habe aber nichts an den Sourcen geändert, ist genau das gleiche wie oben. Habe aber jetzt mal ein Quad mit dem DeleD Level Editor gemacht und wenn ich die vertices ändere sieht es genau aus wie bei mir, also denke ich mal ist es doch so richtig. Aber danke das du mir geholfen hast :D .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 09, 2003 14:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
:shock: Ähm gern geschehen. :roll:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

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