Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Position eines 3D Objektes bestimmen und auslesen (https://www.delphipraxis.net/64830-position-eines-3d-objektes-bestimmen-und-auslesen.html)

Nachtreiter 8. Mär 2006 20:17


Position eines 3D Objektes bestimmen und auslesen
 
Hallo,

ich möchte in einer 3D Landschaft mit der Maus einen großen Stein umsetzen und die neue Position auf HD speichern.
Programmieren will ich es mit DirectX 9.
Die Literatur, die ich gefunden habe, scheint eine gleiche Quellen zu haben.

Wie muß ich da vorgehen? Kann man den Grafikkartenspeicher einfach auslesen?

Jürgen

Tubos 8. Mär 2006 20:24

Re: Position eines 3D Objektes bestimmen und auslesen
 
Weißt du wie DirectX funktioniert? Offenbar nicht.

Informier dich zuerst wie du das Ganze angehst. Dann schreib eine Landschaft mit einem Stein darin.
Dann implementier eine Funktion mit der man den Stein verschieben kann.
Anschließend wirst du wissen, dass man beim Verschieben eines Objekts nicht den Grafikkartenspeicher verändert, sondern eine bestimmte Einstellung (die Transformationsmatrix) setzt, sodass der Stein an einer anderen Stelle erscheint.
Diese Transformationsmatrix ist im System-Speicher und kann wie jede andere Variable ausgelesen werden.

Nachtreiter 16. Mär 2006 22:30

Re: Position eines 3D Objektes bestimmen und auslesen
 
Zitat:

Dann implementier eine Funktion mit der man den Stein verschieben kann.
Ja da ist das Problem, die Maus liefert die Position mit x und y Koordinaten und meine Objekte haben die Koordinaten x,y und z.

Weazy 16. Mär 2006 22:39

Re: Position eines 3D Objektes bestimmen und auslesen
 
Falls du mit der Maus (also 2d) eine Position auf einem 3d Objekt (hier deine Landschaft) wie z.B in einem Strategie Spiel wählen willst, solltest du dich mal über Octrees und Gizmos informieren...

Oxmyx 17. Mär 2006 00:51

Re: Position eines 3D Objektes bestimmen und auslesen
 
Zitat:

Zitat von Nachtreiter
Ja da ist das Problem, die Maus liefert die Position mit x und y Koordinaten und meine Objekte haben die Koordinaten x,y und z.

Davon stand nichts in deinem Anfangpost, aber jetzt ergibt dieser Thread langsam einen Sinn.

Mit anderen Worten, du hast die Mauskoordinaten im Bildschirmraum und willst ausrechnen, welche Entsprechung sie im 3D-Raum auf der Oberfläche der Landschaft haben. Da gibt es mehr oder weniger zwei Möglichkeiten. Einmal stellst du dir vor, dein Mauszeiger sei der Startpunkt einer Geraden, die geradeaus nach hinten in den Bildschirm rein geht. Diese Gerade schneidet dann wohl irgendwann deine Landschaft, und den Schnittpunkt rechnest du aus. Die andere Möglichkeit ist es, mit den Bildschirmkoordinaten der Maus die Tiefe aus dem Tiefenpuffer auszulesen, und eine inverse Transformation durchzuführen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz