Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

02.06.2007, 11:02

einen Strahl berechnen

Hallo ich habe mal eine Frage zu der Funktion

C-/C++-Quelltext

1
2
3
4
5
6
BOOL D3DXSphereBoundProbe(
  CONST D3DXVECTOR3 * pCenter,
  FLOAT Radius,
  CONST D3DXVECTOR3 * pRayPosition,
  CONST D3DXVECTOR3 * pRayDirection
);

Ich habe in meinem Programm ja meine Kammeraposition,meine Blickrichtung und meine Modelposition.
Wie kann ich jetzt berechnen dass wenn ich mein Model anschaue also die Bildschirmmitte(Fadenkreuz) auf das Model zeigt dass die Funktion true zurückgibt.
Ich habe es bisher nur so hinbekommen dass ich das Model treffe wenn ich davor stehe aber wenn ich mich um es herumbewege geht es nicht mehr.
Kann mir da jemand helfen.

CONST D3DXVECTOR3 * pCenter = Model Position
FLOAT Radius = 2
CONST D3DXVECTOR3 * pRayPosition = Kammeraposition
CONST D3DXVECTOR3 * pRayDirection = Blickrichtung

so habe ich gedacht könnte es funktionieren aber dem ist leider nicht so.
Wäre Euch für Hilfe echt dankbar

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

02.06.2007, 11:09

Ist aber egtl korrekt. Prüf mal nach ob die Vektoren (vorallem Richtungsvektor) stimmen.
@D13_Dreinig

3

02.06.2007, 11:19

Also wenn ich den Radius vergrössere funktioniert es auch von den anderen Seiten aber dann kann man auch am Model vorbeischießen.
Mit Radius 2 geht es nur wenn ich mich gerade auf das Model zubewege und auch nur wenn ich dicht davor stehe.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

02.06.2007, 11:26

Der Radius muss so groß sein dass das komplette Model genau in die Boundingsphere passt. Klar kommt es dann, je nach Form des Models, zu Räumen zwischen Kugeloberfläche und konkreten Geometriedaten. Darum würde eine Boundingbox wahrscheinlich bessere dienste leisten.
@D13_Dreinig

5

02.06.2007, 11:31

Ok aber was ist mit dem Strahl so wie ich es gemacht habe da muss doch ein Fehler drin sein auch wenn der Radius etwas kleiner ist müsste er auch von den anderen Seiten her treffen.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

02.06.2007, 11:32

Naja ist auch logisch. Wenn du den Radius sehr klein wählst, befindet sich die Kugel in dem Modell, wenn du den Radius sehr groß wählst, ist nun das Modell innerhalb der Kugel.
Um was für ein Modell handelt es sich denn(Mensch, Auto, Kiste, Kugel, Panzer)?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

02.06.2007, 11:34

Zitat von »"Andy"«

Ok aber was ist mit dem Strahl so wie ich es gemacht habe da muss doch ein Fehler drin sein auch wenn der Radius etwas kleiner ist müsste er auch von den anderen Seiten her treffen.


Nein, das ist korrekt. Alternativ zu Boxen kannst du auch mehrere Kugeln verwenden, dürfte schneller sein beim Testen.
@D13_Dreinig

8

02.06.2007, 11:36

Es ist ein Mensch.
Kann es auch daran liegen dass das Model Skaliert ist denn es ist recht groß und ich habe es verkleinert.
Was mir auch aufgefallen ist wenn ich den Radius auf 20 stelle funktioniert es ja in alle Richtungen aber auch nur weil ich mich dann im Radius befinde also denke ich dass es mit CONST D3DXVECTOR3 * pRayDirection zusammen hängt.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

02.06.2007, 11:39

Möglicherweise sind die Vektoren falsch. Aber ich tippe eher auf einen zu kleinen Radius. Beim Mensch machen mehrere Boundingspheres Sinn, solltest du mal drüber nachdenken.
@D13_Dreinig

10

02.06.2007, 11:42

Das mach ich schon ne ganze weile aber ich glaube dass es mit der Blickrichtung zu tun hat in die ich meinen Strahl abschießen will da es ja nur von einer Seite her geht.

Werbeanzeige