PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ray Collision (Revolution3D)


Cebalis
2005-03-24, 09:47:58
Hi,

in der Revolution3D-Engine gibt es "Ray Collision" Kollisionsabfragen.

3D-Programmierung ist für mich eh noch ziemlich Neuland und ich hab Ray Collision noch nie gearbeitet. Nach 1 h Rumprobiere bin ich's jetzt leid. Ich arbeite mit R3D unter VB, denke aber irgendwie, dass das ein ganz grundlegendes Problem/Missverständnis zum Thema Ray Collision oder Vektoren überhaupt meinerseits ist.

Dim intersec As R3DIntersection, ray As R3DRay
ray.pStart = MeshBuilder2.Mesh_GetPosition
ray.vDir.x = -movingVector.x
ray.vDir.y = -movingVector.y
ray.vDir.z = 0
intersec = MeshBuilder2.Class_RayCollision(ray, R3DINTERSECTIONTYPE_SPHERE, 10000)
If intersec.bCollide Then MsgBox "geht"


Ich habe einen ganzen Haufen Meshes, alles Kugeln, alle z=0 (quasi 2D-Kreise *g*). Weil die Kollisionsbedingung für alle gelten soll, spreche ich Class_RayCollision an. Übergeben wird die aktuelle Position (pStart) und der Vektor vDir (die sind beide in diesem Ray). Den Vektor hab ich hier relativ zu pStart angegeben, bei absoluter Koordinaten-Angabe (rel. zum Ursprung) funzt nichts besser. Lasst euch nicht durch die beiden Minuszeichen stören, die müssen eigentlich wirklich so (movingVector zeigt in die Gegenrichtung). Den letzten Parameter des Aufrufs hab ich auch schon gut rumgespielt, ich glaube, dass ist die maximale Länge des Vektors, also je größer desto besser.

Das ganze hab ich in die Durchlaufroutine-Schleife einfach mit eingeschleust. Die Kugeln interessiert das nicht, wenn sie "durcheinander" (wörtlich) fliegen. Wo ist das Problem?

Funktionsbeschreibung:
http://www.revolution3d.de/mambo/components/com_helpnet/hns_vsctrl.php?file=ENG_R3D_MD2System_Class_RayCollision.txt

Gesamtes Nachschlagewerk der Engine:
http://www.revolution3d.de/mambo/components/com_helpnet/helpnet2.php?cur_user=&flag=0

Vielen Dank!

MfG der Cebalis