Kollisionserkennung

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Goodjee

Betreff: Kollisionserkennung

BeitragSa, Dez 29, 2007 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe eine kollision zwischen einer sphere und einem cube, jedoch steckt die sphere schon halb im cube drin, die beiden oberflächen schneiden sich jedoch trotzdem noch. Blitz erkennt dennoch keine kollision. wie kann ich trotzdem eine feststellen, ohne das die performance den bach hinunter geht.
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Dez 30, 2007 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ql:MeshesIntersect überprüft ob Triangles zweier Meshes sich überschneiden. Damit könntest du bis auf bestimmte Ausnahmen genau dieses feststellen. Ausnahmen sind z.B. wenn z.B. der Cude sich komplett in der Sphere befindet und keines der Traingles gegenseitig sich berühren. Ansonsten sollte man alles so programmieren, dass immer eine Kollision durch die Bewegung entsteht. Dann kann man sich auch im grunde 100%ig darauf verlassen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Goodjee

BeitragSo, Dez 30, 2007 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
meshesintersect ist zu langsam, da ich eigentlich viele meshes überprüfen will, und die kollision soll eigentlich immer so stattfinden, dass die partner schon zusammenstecken...

kann mir denn jemand helfen, wie ich linepicks in alle richtungen ausschieße?

2dimensional kann ich mit linepick(-cos(a),0,sin(a),2cos(a),0,-2sin(a)), aber wie kann ich eine kugel aussenden und keinen kreis?
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Dez 30, 2007 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit LinePick würde es schon reichen, wenn man nur die drei Achsen ausstrahlt, also einmal von -X nach +X und einmal von -Y nach +Y und einmal von -Z nach +Z. und den Durchmesser der Kollisionslinie dem Ausgangsmesh in etwa angleichen. Die Länge der Kollisionslinie sollte etwas mehr (-0.01 bis +0.01) als das Ausgangsmesh sein. Da LinePick nur in eine Richtung auf ein Triangle wirkt (bin ich mir nicht ganze sicher) müssten aber noch alle Linien in die entgegengesetzte Richtung ausgetrahlt werden, also nicht nur von -X nach +X sonder auch von + nach - in jeder Achse. Ob nun sechsmal ausstrahlen besser ist, als einmal Meshesintersect müsste mal vom Speed her getestet werden. Hinzu kommt auch, dass jeder Mesh von dem aus eine Kollision getestet wird im Pickedmode ausgeschaltet werden muss, um nicht selbt von der Kollisions registriert zu werden.

edit1: Wie Dreamora unter mir erwähnt, hat er natürlich Recht. Sechs LinePicks sind nicht genauer als eine Simple Positionskontrolle per If/Then.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
  • Zuletzt bearbeitet von hectic am So, Dez 30, 2007 12:56, insgesamt einmal bearbeitet
 

Dreamora

BeitragSo, Dez 30, 2007 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
6 Linepicks reichen bei der Kugel um das Festzustellen:

-RadiusX bis +RadiusX
+RadiusX bis -RadiusX
und gleiches für Y und Z


Allerdings brauchst du das bei sphere und cube garnet.
TForm die globale position der sphere in die koordinaten des Cubes und wenn x,y,z < ist als halbe würfelseitenlänge + radius is sie drin, sense.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Goodjee

BeitragSo, Dez 30, 2007 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
funzt das auch wenn die sphere den cube nur leicht schneidt?


und dasmit den sinus cosinus will ich trotzsdem noch wissen
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Dreamora

BeitragSo, Dez 30, 2007 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein vor allem wenn sie nur die ecke schneidet gehts nicht. aber bei bewegenden objekten kann das eigentlich net sein dass sie einfach ma so in den würfel rein kommt ...

Mit TForm ist man allerdings bei weitem am besten dran, da TForm sehr schnell ist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group