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

23.03.2008, 14:05

Kollisionserkennung bei skalierten Objekten

Hi,

ich habe eine Frage zur Kollisionsabfrage mit den tb-Funktionen.

Ich weiß, dass einige Funktionen die Skalierung in Transformationsmatrix der Objekte (m_mMatrix) nicht berücksichtigen. Aber wieso funktioniert z.B. tbLineHitsBox nicht mit skalierten Objekten? Nach meinem Verständnis benutzt die Berechnungen die unveränderte m_mMatrix, in der die Skalierung enthalten ist. Trotzdem wird bei skalierten Objekten keine Kollision erkannt.

2

26.03.2008, 11:15

Hmm, gute Frage...
Ich kenn mich da auch nicht so gut aus, aber ich vermute folgendes:
Die Funkiton wendet ja die invertierte Matrix auf die Linie an, und das System funzt nicht, wenn die Matrix eine Skalierung enthält...wär zwar komisch und ist deshalb wahrscheinlich auch falsch, scheint mir aber die einzige Möglichkeit zu sein - oder der Fehler liegt ganz woanders...

NicoWe

Treue Seele

Beiträge: 126

Wohnort: Bielefeld / NRW

  • Private Nachricht senden

3

26.03.2008, 19:32

Mh, ich glaube das ist es nicht. Man kann Matrizen doch kombinieren wenn man sie multipliziert. Ist es vllt so dass du der Kollisionserkennungsfunktion nicht das skalierte objekt übergibst sondern das "normale"?
Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
ohne seine Begeisterung zu verlieren.
-Winston Churchill-

4

27.03.2008, 12:05

C-/C++-Quelltext

1
2
3
TRIBASE_API tbResult tbLineHitsBox(tbModel Model, //untransformiertes Modell

                    tbMatrix Matrix, //...

                    tbVector3 A, tbVector3 B) //endpunkte der Linie

In der funktion wird dann die matrix invertiert, und mit dieser dann die linie transformiert...

(ich hoffe, das war jetz aus dem Stehgreif so richtig - vielleicht sollte David mal was dazu sagen, schließlich reden wir hier über seine Engine...)

5

28.03.2008, 11:18

Ich denke es ist bei allen Funktionen so, ob sie nun nur das Modell, BoundingBox-Punkte oder Mittelpunkt einer BoundingSphere erwarten, dass in der Matrix des tbObject die gesamten Informationen (Translation, Rotation und Skalierung) drin sind. Daher sollten die Funktionen auch mit skalierten Objekten klar kommen. Es kann natürlich auch sein, dass ich einfach den Punkt übersehe, wo die Skalierung rausfällt.

Werbeanzeige