Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Leichter Zugriff auf DirectX durch Kapselung (https://www.delphipraxis.net/27668-leichter-zugriff-auf-directx-durch-kapselung.html)

Speedmaster 20. Jun 2005 15:10

Re: Leichter Zugriff auf DirectX durch Kapselung
 
Zitat:

Zitat von mimi
eins verstehe ich noch nicht so genau:
Blickpos ? Kamrapos ? ist das nicht ein und das selbe ?

Wenn ich die Kamra bewege ändert sich doch auch die blick richtung oder etwa nicht ?

Nein, zumindestens bei meinen OpenGL Kenntnissen ist das nicht so( Ja, OpenGL <> DirectX ), die Position der Kamera hat nichts damit zu tun wohin es guckt. Stell dir das als ein Vertex vor, das sich verschiebt, aber nicht die Richtung ändert wo es hin ausgerichtet ist!

schmorbraten 20. Jun 2005 18:20

Re: Leichter Zugriff auf DirectX durch Kapselung
 
Ja genau, es gibt die KameraPosition und die KameraBlickrichtung (Direction). Position + Direction = LookAt. Zusätzlich gibt es noch den Up-Vektor, der sagt wo oben ist (wenn man z.B. kopfüber hängt, zeigt der nach unten).

Achtung:
1. Wie oben aufgeführt muss man in xorDX8 noch zwischen Kamera und Kameramann unterscheiden. Position etc beziehen sich auf den Kameramann und sollten mit MoveHoriz, -vert, -forward, RotateHoriz, -vert, -around, MoveTo, SetPosition, SetDirection etc gesteuert werden. Benutzt man stattdessen Move, Rotate etc bezieht sich dies lediglich auf das Verhältnis zwischen Kameramann und Kamera, was normalerweise unnötig ist. Direction etc bleiben dabei unangetastet. Das macht nur Sinn, wenn ich den Kameramann wie Kamera dirigieren will, aber er die Kamera permanent verdreht halten soll oder dergleichen... (Man kann somit die gleichen Befehle auf zwei Kameras loslassen, wobei die eine aber nach hinten und die andere nach vorne guckt. Glaub ich jedenfalls.)

2. Ein weiterer Punkt ist inwiefern ich MoveHoriz ausführen will, d.h. soll die Horizontale Bewegung parallel zur Koordinaten-XY-Ebene passieren (xorDXcamID), oder möchte ich mich horizontal zur in der (geneigten) Blickebene bewegen (camHuman, Bsp. man läuft auf einer schrägen Wand, dann heißt horizontal parallel zur Wand, nicht zum Erdboden), oder heißt horizontal senkrecht zum Up-Vektor der Kamera.... Diesen Parameter kann man bei MoveHoriz übergeben. xorDXcamHuman spiegelt menschliches Verhalten wieder.

3. Der Unterschied zu FreeCam. Bei der FreeCam wird der UpVektor mit gedreht. So kann ein Flugzeug ein Looping fliegen. Eine normale Kamera, deren UpVektor kerzengrade nach oben zeigt, kann nie ganz direkt nach unten/oben gucken und so auch keine Loopings.

xor

mimi 23. Jun 2005 10:54

Re: Leichter Zugriff auf DirectX durch Kapselung
 
ich möchte letzendlich nur folgendes:
ich habe eine Kugel und eine Panel und die gugel ist ganz hinten am null punk und wie schaffe ich es jetzt das die kamra 1. auf die kugel gerichtet ist und zwar in einen Konstanten abstand und wenn ich das obj nach vorne schiebe muss die karama ja nach hinten gehen.
Wie schaffe ich das ?

barf00s 23. Jun 2005 11:58

Re: Leichter Zugriff auf DirectX durch Kapselung
 
falls ihr nen gescheites paper zu kollision sucht, hier findest ihrs

schmorbraten 24. Jun 2005 07:22

Re: Leichter Zugriff auf DirectX durch Kapselung
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Mimi,
habe das in xorDX8 mitgelieferte Bowling-Beispiel verändert. Ich hoffe, es hilft Dir.

Im wesentlichen sieht der Source so aus:
Delphi-Quellcode:
//repeated drawing routine
procedure TForm1.Draw(Sender: TObject);
const
  MoveZ: Single = 0.01;
begin
  Scene.Clear;

  GetKeyboard(MoveZ);

  //Move Ball and Camera forward/backward
  Ball.Move(0, 0, MoveZ);
  Camera.MoveForward(MoveZ, xorDXCamHuman);
  Camera.Activate;

  Grid.Insert;
  Grid.Draw;

  DrawMultiMaps;

  Ball.Insert;
  Ball.Draw;

end;
Viele Grüße
xor alias Schmorbraten

mimi 24. Jun 2005 09:32

Re: Leichter Zugriff auf DirectX durch Kapselung
 
als ich das Projekt complirt habe(dein beispiel) ist das Komplete windows abgestürzt.... daher werde ich dieses projekt lieber nicht mehr Testen*schade*
fürher lief das beispiel auf mein Rechner jetzt nicht mehr.... woran ist liegt weiß ich leider nicht da ich nicht windows neu installieren möchte.....

evlt. kannst du ja diesen "kleinen" bug finden und fixen *G*

schmorbraten 24. Jun 2005 15:23

Re: Leichter Zugriff auf DirectX durch Kapselung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Mimi,
also zwischen Windows abstürzen und neu installieren müssen gibts einen kleinen Unterschied.
Ein bischen Forscherarbeit solltest Du da schon reinstecken, also mal debuggen bis zur abstürzenden Stelle wäre nicht schlecht. Immerhin habe ich gestern dafür auch ein paar Abendstündchen geopfert. (Vielleicht auch den Bowling-Ordner löschen vorm Entpacken des neuen Bowling-Beispiels?)

Zudem lief das Projekt bei mir, ich kann Deinen Fehler also nur schwer buggen.
Ansonsten: Benutzt Du DirectX8 o.besser? Welches Delphi hast Du? Welches Windows?

Viele Grüße
xor

mimi 24. Jun 2005 18:39

Re: Leichter Zugriff auf DirectX durch Kapselung
 
ich nutze
Delphi7
habe
WinXp home
und habe DX9.0

ich hatte ja schon füher mit deine libg rumgespielt.
und da ist mir einbefehl aufgefallen der windows zum abstürzen bringt. nagut ich werde es einmal riskieren das xp abstürzt.... weil bis ich den rechner dann soweit wieder habe dauert das leider seine zeit....

mimi 24. Jun 2005 18:52

Re: Leichter Zugriff auf DirectX durch Kapselung
 
der 2.Versuch schlug fehl: ich habe alle anweisungen in der create procedure mit einem haltepunkt versehen und den draw modus auskometiert, ergbnis: delphi hat sich aufgehangen und das komplete windows auch.
eine möglichkeit habe ich noch:
hinter und vor jeder anweisung eine log funktion zu schreiben so sehre ich nach dem absturzt wenigens wie weit er gekommen ist und kann dir dann die anweisung nennen *G*


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:29 Uhr.
Seite 3 von 3     123   

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