Sphere-To-Sphere Kollision

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

ToeB

Betreff: Sphere-To-Sphere Kollision

BeitragSa, Aug 22, 2009 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich brauche für 3D schüsse eine berechnung, die sphere_to_sphere Kollision berechnet (weil wenn sich die Gegner bewegen, kann man ja net die BlitzKollision benutzen). Wie berechne ich das ?

Also die beiden spheren sollen beide einen xz-radius+yxradius haben (also wie bei EntityRadius), und wie berechne ich das ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Goodjee

BeitragSa, Aug 22, 2009 11:43
Antworten mit Zitat
Benutzer-Profile anzeigen
einfach die abstände vergleichen? wenn die spheren rund sind einfach nur den abstand<radius1+radius2, wenn sie eher oval sind wirst du wohl etwas komplizierter rechnen müssen, darüber hab ich noch nie nachgedacht
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

ToeB

BeitragSa, Aug 22, 2009 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das mein ich ja... oval halt... sonst den abstand zwischen zwei kugeln und so berechnen... ist ja einfach ^^

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Aug 22, 2009 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
LinePick mit Schussradius benutzen und die Geschwindigkeit (als LinePick-Prüflänge) *2 nehmen, um das Problem der bewegten Gegner zu kompensieren sollte gehen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ToeB

BeitragSa, Aug 22, 2009 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
nein da nehm ich doch lieber EntityPick, da kann ich auch die länge einstellen und es ist viel schneller aber danke trotzdem für den Tipp !!


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

FreizeitCoder

BeitragSa, Aug 22, 2009 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
mal eine Saublöde Frage..... Wieso kann man die Blitz-Kollision nicht benutzen, wenn sich die Gegner bewegen?

Gruß

ToeB

BeitragSa, Aug 22, 2009 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil das so ist Wink

Die Blitz Kollision ist so ausgelegt, das ein Bewegtes Object nur mit einem Unbeweglichem Kollidieren kann (Frag mich net wieso ^^). Bewegt sich das andere aber auch, so wird die kollision für das Object nicht berechnet, da es ja vorher als "konstant" angegeben wurde (Collisions).

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

BIG BUG

BeitragSa, Aug 22, 2009 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Kugel-Kugel-Kollisionen funktionieren auch wenn sich beide Objekte bewegen...
Wichtig ist nur, dass die Bewegungsschritte klein genug bleiben damit die Kugeln auch mindestens ein Frame kollidieren...
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Mr.Keks

BeitragSa, Aug 22, 2009 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
kollision funktioniert auch mit bewegten objekten. da kann es probleme geben, sodass das sliden nicht funktioniert und die objekte einander durchqueren, aber erkannt wird die kollision mit sicherheit.
MrKeks.net

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Aug 22, 2009 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Also nur so am Rande: EntityPick ist mit LinePick nicht zu vergleichen, da bei EntityPick schon der Radius fehlt der von dir oben gefordert wird. Im Übrigen benötigt EntityPick auch ein Entity welches mit einem anderem Entity kollidiert. Dieses ist für Schüsse ein Unding, da das Programm sowas von uneffizient sein wird. Da nimmt man SingleSurface für Schüsse und LinePick ist dann die erste Wahl - da sehr schnell.

Aber wie mir auch grad einfällt und auch schon von anderen beschrieben, zwei Entity-Radien kollidieren auch wenn sich beide bewegen. Gibt ja genügend Beispielcodes dazu. Eine Kollision auf bewegte Objekte funktioniert nur auf Polygon-Kollision nicht. Hat aber meiner Meinung nach nichts mit Blitz3D zu tun.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ToeB

BeitragSa, Aug 22, 2009 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habs jetzt so gelöst, ich hab ja eine Laserstrahl Entity (loadMesh) und dann habe ich es so gemacht :
Code: [AUSKLAPPEN]
entity = EntityPick(schuss\mesh,schuss\speed*2)
If entity = 0
     MoveEntity schuss\mesh,0,0,schuss\speed
Else
     ;finde heraus mit was der Kollidiert ist ...
     ;[...]
     ;-----------------------------------
Endif


Also ich bin sehr zu frieden mit dem ergebniss und ich glaub zwei kugeln zu berechnen wäre langsamer gewesen (ganz zu schweigen von Linepick). Linepick zwingt schon bei 16 fachen gebrauch meinen rechner in die knie... Hatte da mal ein Spiel, für das ich Bots geschrieben habe. es waren 4 Bots. Alle sollten in 4 richtungen mit linepick gucken ob da frei ist, und bei mir hats geruckelt wie sau... nee davon lass ich die finger !

Danke trotzdem !

Very Happy

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

darth

BeitragSo, Aug 23, 2009 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Normale Kugel-Kugel kollision berechnet man (im Prinzip jedenfalls) über den Abstand und die Radien. Dazu nimmt man Pythagoras. Ist es nun aber kein perfekter Kreis, sondern ein Oval, dann muss man lediglich den einen Radius etwas mehr gewichten.

Code: [AUSKLAPPEN]
   For x=100 To 700
    For y=100 To 500
     If 0.25*(x-400)^2+(y-300)^2<10000
      Plot x,y
     EndIf
    Next
   Next
   Color 255,0,0
    Oval 400-200,300-100,400,200,0 ;oval: M=(400/300), rx=200, ry=100
   Flip
   WaitKey()
   End


Das ist nur ein Beispiel. Wie man sieht ist der Radius in X-Richtung doppelt so gross, wie der Radius in Y-Richtung. Als Basis-Radius wähle ich (grundsätzlich) den kleineren der beiden, dann die Gewichtung.
rX=r*2 -> gX=(1/2)^2

Dieses Prinzip funktioniert auch in 3D.

Wie man aber sieht, ist das hier nur Punkt-Sphere Kollision. Wenn man zwei Ovale miteinander kollidieren lassen will, muss man einfach statt hinter dem < r^2 zu schreiben (die 100^2=10000) ein (r1+r2)^2 setzen.

GG, HF
mfg Darth
Diese Signatur ist leer.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group