Kollisionsabfrage wenn ich Objekte vorher rotieren lasse...
-
Hallo!
Ich habe (demnächst) eine Kollisionsabfrage zwischen meinem Level und der Spielfigur. Was ist jedoch wenn ich den Spieler rotieren lasse, also er sicht dreht. Angenommen die Spielfigur wäre ein Rechteck. Wenn es um 90 Grad rotiert ist kollidiert es ja aufgrund der Größe früher oder später als wenn es in der Ausgangsposition ist (beim Quadrat macht es wenig Unterschied ob es rotiert ist). Da die Rotation ja nur über die Verstellung der Matrix von Statten geht verändere ich ja nicht die Vertexdaten und für die Kollisionsberechnung an sich hat sich überhaupt nichts rotiert. D.h. um die Rotierung da mit einfließen lassen zu können müsste ich doch eigentlich die Vertexdaten verändern mit jeder Rotation oder wie wird sowas gehandlet?
Ich hoffe ihr konntet mich einigermaßen verstehen
Kevin
Edit: Das selbe trifft natürlich auch auf das "Moven" (= Translation) von Objekten zu, welches ich auch nur über die Worldmatrix mache...da wäre jedoch die Veränderung der Vertexdaten einfacher, da ich bei jedem Move ja die Vertexdaten ändern kann, je nachdem in welche Richtung die Spielfigur geht.
-
Du hast doch sicher schon des öfteren den ein oder anderen Shooter gezockt, ist
dir noch nie aufgefallen, dass du in so gut wie jedem, wenn du liegst dich auch
direkt neben einer Wand ohne Probleme um 360° drehen kannst, als gäbe es diese
Wand gar nicht?
Ich kenne nur Call of Duty in welchem dies nicht geht und empfinde es eher als
störend.
-
1. Wir hatten bis gerade eben die selbe Zahl an Postings *g*
2. Also sagst du mir damit ich soll die Rotation des Körpers einfach ignorieren? Aber was ist mit Moving? Soll ich da alle Vertizen des Körpers dann einfach um die Einheit um die sich bewegt wird dazuzählen? Ist das nich bissl performancelastig? hmmm obwohl...es reicht eigentlich wenn ich nur die Vertexdaten der Octrees die das Model umgeben verändere, da es dem User ja sowieso nicht auffällt. Und pro Tastendruck die Vertizen eines Octress und seiner "Unteroctress" zu verändern sollte möglich sein. Was meint ihr?Kevin
-
Wie SirLant schon andeutet, gibt es ausser dem Drehen deiner Kollisionsdaten, auch die Möglichkeit Kreise bzw. Kugeln als Boundingvolumes zu benutzen, da bei diesen die Rotation sich nicht auswirkt.
Bye, TGGC
-
Das wäre eine Idee, jedoch will ich am Anfang noch bei meinen Boxes bleiben...was sagst du zu dem Movevorschlag nur die Eckdaten der Boxes zu verändern? (Wäre bei Spheres performancelastier - wenn auch nur geringfühgig)
-
Surkevin schrieb:
(Wäre bei Spheres performancelastier - wenn auch nur geringfühgig)
So wie ich das sehe stehst Du noch relativ weit am Anfang...
Also ich versteh' nicht, wie ihr dann immer so engstirnig auf ph477e PERFORMANZ ausseiht...!!
Vor allem Dir auch noch ANZUMASSEN, daß das wirklich "geringfügig"en Unterschied macht...
Völlig im Ernst: Das ist doch erstmal Nebensache, zumindest so pisseliger Scheiß, der euch maximal 1-2 fps mehr bringt. Grob Culling und etwas SceneManagment muß sein, klar. Aber der Rest sollte euch erstmal völlig am Popöchen vorbeigehen...
Seht lieber zu, daß das ph477e Game endlich fertig wird, damit ich was zum Zocken hab'...!!
Auf die 2 fps mehr setz' ich'n großen Haufen...! :xmas1:
-
mh das war jetz aber nich wirklich ein konstruktiver Beitrag wenn ich mich nicht irre oder?
Wenn du es so siehst können sie die 2Fps auch summieren...
-
Spheres haben keine Ecken.
Bye, TGGC
-
Nein? Spheres bestehen doch natürlich auch aus Polygonen und jedes Polygon ist doch aus seinen 3 Eckdaten = Vertices bestimmt oder täusch ich mich jetzt? Ok bei Spheres wäre es einfacher, weil ich nur den Kreismittelpunkt neu setzen müsste aber sonst...
-
Eine Kugel kann nicht mit Dreiecken 100%ig korrekt dargestellt werden.
Mit Kugeln lässt sich so schön einfach rechnen - warum willst Du Dir das kaputtmachen, indem Du sie als einen Haufen von Dreiecken ansiehst?
-
ja ok, mit Kugeln zu rechnen ist vielleicht ganz einfach, ich denke das versuch ich mal...vielleicht besser als nur Boxes zu verwenden...mhh jetzt nur noch ne "Formel" überlegen mit der ich überprüfe ob eine Kugel eine Box schneidet ... sollte ja net all zu schwer sein :>
Kevin
edit: hmm geht das einfacher als alle Polygone der zwei Objekte auf "Schneidung" zu überprüfen? Ist das eindeutig wenn ich sage
Wenn Radius größer als Verbindungsstrecke zwischen Kreismittelpunkt zu einem der 8 Echtpunkte dann schneiden sie sich? Das trifft doch immer zu ausser wenn der Kreis vollständig in einer Box verschwindet oder?
-
1.Stimmt ist mir auch aufgefallen und jetzt haben wir wieder die gleche
2.Cool ich hab unabsichtlich nen Lösungsvorschlag gemacht, dabei wollt ich doch
nur anmerken, dass große Spiele sowas auch nicht berücksichtigen und man als
Hobbyspieleprogrammierer da nicht so rießigen Wert drauf legen muss
-
Surkevin schrieb:
mh das war jetz aber nich wirklich ein konstruktiver Beitrag wenn ich mich nicht irre oder?
Doch, war es...
Wenn auch mit einer gehörigen Portion Sarkasmus.
Ich wollte Dich nur wieder auf "den rechten Weg" bringen...
Im Ernst: Konzentriere Dich erstmal auf Dein generelles Spiel. Wie Du nachher noch 2-3 fps mehr rauskitzelst ist erstmal schnuppe. Dieses on-the-fly-optimizing is' sicher als Profi kewl, aber am Anfang verrennst Du Dich damit total... und Dein Projekt wird nie feddick.
Und das sage ich nicht, weil ich hochnäsig auf Dich herabschaue, sondern ich spreche aus eigener Erfahrung...
-
TGGC schrieb:
Was hat das jetzt hiermit zu tun?
Kugel vs Box macht man normalerweise mit 6 Kugel vs Plane-Abfragen, da eine Box ja aus 6 Planes zusammengesetzt ist. Ob eine Kugel eine Plane schneidet, merkt man an der Entferung Plane-Mittelpunkt. Ist deren Betrag kleiner als der Radius, so ist Kollision, ansonsten entscheidet das Vorzeichen, auf welche Seite die Kugel liegt.
Bye, TGGC
Also wie ist die Abfrage Box-Kugel? Entfernung zwischen Kugelmittelpunkt zu Planemittelpunkt. Und wenn deren Betrag kleiner als Radius => Kollision...also so wie ich das jetzt aufgenommen habe kann es ja nicht stimmen. Angenommen wir haben einen Quader mit a = 10 und eine Kugel mit r = 1. wenn die Kugel jetzt auf der Seite liegt dann ist die PlaneMP-KugelMP ungefähr 5...also auf jeden Fall größer als der Radius.... mhhh
Oh man das ist so mies wenn man analytische Geometrie in der Schule noch vor sich hat und jetzt alles erfragen muss ... naja ich geb nicht auf :xmas1:
Kevin
-
Surkevin schrieb:
Also wie ist die Abfrage Box-Kugel? Entfernung zwischen Kugelmittelpunkt zu Planemittelpunkt.
Eine Plane hat keinen Mittelpunkt. Der Abstand ist einfach die kürzeste Verbindung (hier: das Lot) vom Kugelmittelpunkt zur Plane.
Surkevin schrieb:
naja ich geb nicht auf
Mist.
Bye, TGGC
-
und wie komm ich an diese kürzeste Verbindung? Hab keine Ahnung wie ich das ausrechnen kann :(( schon geil wenn einem die mathematischen Kenntnisse fehlen
Edit: Glückwunsch - noch einer und du hast die 1000er
-
Wie wär's wenn Du nach sowas mal mit google suchst?! Oder Du schmökerst in einem guten Mathebuch.
P.S.: TGGC hat schon weit mehr als 1000, ihm wurde nur sein Account irgendwie falsch übernommen. Das hab' ich vor Monaten schonmal angemerkt, da wurde ich aber direkt beschimpft (nicht von ihm)...
-
ihr wisst ja wie man das ausrechnet...ich nich..und ich weiß auch nicht nach was ich da suchen muss "Kürzeste Strecke zwischen Punkt und Fläche im Raum" - super...ihr kennt ja die Lösungswege
Könnt ja sagen - Alle 4 Vektoren der 6 Flächen berechnen und dann mit der Position des Kugelmittelpunktes das Kreuzprodukt nehmen und dann den Rechner ausmachen...
Edit:
http://www.cz.j.th.schule.de/spezi/projekte/informatik/maple/Abstand_Ebene-Punkt1.htmljippi, damit gehts bestimmt oder?
manman ich brauch K13 gar nimmer besuchen...in 2 Monaten hab ich den kompletten Stoff drauf
Wenns nich geht oder einfacher sagts mir bitte
-
http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=abstand+ebene+kugel+im+raum&btnG=Google+Suche&meta=
http://www.mathe-aufgaben.de/mathehilfen/mathe-abitur/vektorrechnung.htm
http://www.mathe-aufgaben.de/mathehilfen/mathe-abitur/Vektoren/Vektorgeometrie/65012%20Kugel%202%20SW.pdf
Kann nicht sagen ob es wirklich hilft, hab's nur kurz überflogen...
-
Hallo!
Erstmal danke für die Links. Wie ich gelesen habe hat ja die kürzeste Verbindung zwischen Punkt und Ebene die selbe Richtung wie die Normalvektoren die auf den 4 Ecken sind. Trifft das immer zu? Also dass die Strecke eben senkrecht dazu ist? Weil wenn die Kugel direkt hinter einer Ecke wäre und dann sozusagen auf die Ecke einschlägt ist die kürzeste Verbindung doch auf die Ecke und es wäre nicht senkrecht. Oder kann ich davon ausgehen dass die Richtung der Normalvektoren immer die Richtung der Verbindungsstrecke ist? Hätte nich gedacht dass das so kompliziert ist