Einzelnen Beitrag anzeigen

schmorbraten

Registriert seit: 11. Mär 2004
16 Beiträge
 
#15

Re: Leichter Zugriff auf DirectX durch Kapselung

  Alt 19. Jun 2005, 21:13
Hi Mimi,
habe leider zu wenig Zeit, um im Moment der Sache auf den Grund zu gehen. Wäre auch gut, wenn man Deinen Source downloaden könnte. Mir sind so ein paar Kleinigkeiten aufgefallen:
1. Vertausche diese beiden Zeilen, SetStandard könnte den Move beeinflussen.
Delphi-Quellcode:
  Camera.Move(32.5,-26,-50);
  Camera.SetStandard;
2. Eine Camera hat einen Positions- und einen Richtungsvektor. Benutze statt Move lieber MoveHoriz(d, xorDXCamId) oder dergleichen, so wirkt sich Dein Move auch auf diese Vektoren aus. Ein einfaches Move wirkt sich nur auf die Transformationsmatrix aus, was bei normalen Objekten auch ausreicht. Vereinfacht unterscheide ich immer Camera und Kameramann. MoveHoriz wirkt sich auf beide aus, Move nur auf die Kamera. Analog RotateY und RotateHoriz. Ein RotateY macht Sinn, wenn der Kameramann die Kamera die ganze Zeit verdreht halten soll, ich den Kameramann aber davon unabhängig "ganz normal" navigieren will.

3. Ansonsten fällt mir auf, dass Du die Camera nach rechts unten hinten verschiebst, aber weiterhin auf den Nullpunkt (LookAt-Vektor) schaust, also nach oben links vorne. Die Kugel verschiebst Du jetzt (nur) nach vorn und genau das sieht man doch auch in Deinem Programm oder?
Soll sich die Kugel in Blickrichtung wegbewegen, so verschiebe die Kugel in Richtung der Kamera, also etwas derart:
Delphi-Quellcode:
  TxorDXVector v := Camera.Direction;
  Ball.Move(v.x * 0.1, v.y * 0.1, v.z * 0.1);
Hi Spider,
xorDX8 ist konzipiert für die einfache und schnelle Benutzung von DirectX.
Kollisionserkennung ist nicht integriert. Kenne mich damit auch nicht richtig aus. Auf die Transformationsmatrizen der Objekte, Kamera und Welt(Scene) kannst Du jedoch zugreifen.
Viel Erfolg.

Gruß xor
  Mit Zitat antworten Zitat