Kollisionserkennung
Übersicht

![]() |
GoodjeeBetreff: Kollisionserkennung |
![]() Antworten mit Zitat ![]() |
---|---|---|
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/ |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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/ |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group