Verständnisfrage: OpenGL-Kollisionen !?



  • Hi Leute,
    ich versteh das mit der Kollision nicht so ganz.
    Kann mir das mal einer kurtz erklären ?
    Also meine Vorstellung sieht irgendwie so aus :

    if(Objekt1=!Objekt2)
    {
    Objekt1_radius=x:(5);
    return FALSE;
    }
    

    Kann mir mal einer helfen oder mir ein kleines Code Beispiel geben ? Das währe natürlich noch das Beste 🙂
    Danke schonmal im Voraus.





  • Ich glaube deine Vorstellung von Kollisionserkennung ist falsch.
    OpenGL ist eine 3D Graphik Bibliothek und sonst nichts. OpenGL kennt keine Kollisionserkennung. Das mußt du schon selber bauen.

    Dazu stellt man sich am besten geometrisch vor was man haben will.
    Für Kugel Kugel Kollision z.B überlegt man sich wann sich zwei Kugeln berühren.
    Wenn deren Radien addiert größer sind als der Abstand der Mittelpunkte der beiden Kugeln.

    Solche überlegungen machst du jetzt für alle Objekte die auf Kollisaion getetstet werden sollen. (Für komplizierte Objekte nimmt man erst Bounding Boxes) und dann kann man wenn mans ganz genau will auf Dreieck Dreieck Kollision testen.

    Die Dreieck-Dreieck Kollision ist zugegebenermaßen etwas komplzierter als die Kugel-Kugel Kollision. Das schreibt man entweder selbst wenn man richtig viel Hirnschmalz hat oder man sucht im Internet (Google) oder man kauft sich nen Buch wo das drinsteht.



  • Danke erstmal, aber hat nicht einer nen kleines Beispiel mit einfachen Objekten?
    ich versteh das überhaupt nicht.



  • Hallo

    Es wäre schon einmal gut zu wissen, ob du Beispiele in 3d oder 2d suchst.

    chrische



  • http://www.scherfgen-software.net/index.php?action=tutorials
    Nicht das Beste, aber... (erster Treffer bei Google... 😃 )



  • pivke schrieb:

    Danke erstmal, aber hat nicht einer nen kleines Beispiel mit einfachen Objekten?
    ich versteh das überhaupt nicht.

    Vielleicht erklärst du erst einmal was du eigentlich wissen willst. Deine "Vorstellung" oben ist sowohl syntaktisch als auch semantisch Kauderwelsch, und im Prinzip gibt es auch nichts (von konkreten Algorithmen mal abgesehen 😉 ) was man irgendwie nicht verstehen könnte:

    Eine Kollision liegt trivialerweise genau dann vor wenn sich die Flächen bzw. Körper zweier Objekte überschneiden. Das war's eigentlich. Alles was du unter Google: collision detection oder Google: Kollisionserkennung finden wirst befasst sich dann entweder damit diese Berechnung zu optimieren oder damit sicherzustellen dass man keine Kollision zwischen (vorzugsweise fixen) Zeitschritten "verpasst" und herauszufinden wann und wo eine Kollision stattgefunden hat.



  • Meine Doofheit 🙄 .
    Die Kollision sollte wenn möglich zwischen zwei Würfeln in 3D sein.
    Wenn der Würfel auf den anderen trift, soll das und das passieren.



  • Gleich ausgerichtete Würfel oder im Raum verdreht?



  • Gleich ausgerichtete.
    Gibt es nicht irgendwie nen Code häppchen ?



  • Wenn sie gleich ausgerichtet sind ist das doch recht trivial. Sind dann doch bloß ein paar Rechteck-Überlappungstests.



  • Ja wie gesgat, wenn einer ein kleines Code häppchen hätte, dann währe das schonmal enorm hilfreich für mich. Aber ich denk mal, das sich da keiner Arbeit machen wird, was ich auch nicht verlange, aber wenn einer schon sowas übrig hätte wer das schon schön 🙂



  • Hallo

    Es gibt dazu doch tausend Codehäppchen. Schalt die Suchmaschine an oder folge dem Link, der hier schon gepostet wurde.

    chrische



  • Ok, dann vielleicht Code häppchen bei der Abfrage ?^^



  • Wie würde denn eine Abfrage aussehen, zwischen zwei parallelen Quadraten ?



  • Hallo

    BENUTZE DOCH EINFACH MAL GOOGLE ODER SCHAU DIR DEN LINK AN.

    chrische



  • Ich glaub ich habs.
    Bitte sag mir einer bescheid oder korrigiere mich einer wenn ich Falsch liege :

    Man stelle sich einen Tisch mit Rahmen vor, wo jede Seite gleich lang ist und man da eine Kugel rein legt. Wenn diese Kugel im Grad von 45° auf den Rahmen rollt,
    also der Einfallswinkel 45° beträgt und man noch die Senkrechte von der Seite hat, kann man doch auch den Ausfallswinkel errechnen und die Kugel dann weiter dahin schicken, also praktisch das Spiegelbild von dem Einfallswinkel.

    Das währ doch eine einfache Kollision oder ?
    Und schwer zu errechnen währe sie auch nicht, man rechnet einfach den WInkel zur Senkrechten aus und dann leitet man die Kugel vom Schneidepunkt weiter zum ausgerechneten Ausfallswinkel, der wie in diesem Fall eigentlich auch 45° haben müsste.

    Danke im Voraus ! 😋



  • Doch nicht richtig ?
    Weiss keiner eine Antwort ?



  • Ich vermute eher dass hier schlicht niemand deinen persönlichen Nachhilfelehrer mimen will, solange sich deine Eigeninitiative derart in Grenzen hält; insbesondere wenn das Internet förmlich übersät ist mit Artikeln und Einführungen zum Thema. Mir ist ehrlich gesagt auch fast unklar warum ich überhaupt noch einmal antworte.

    p.s. Manche meinen dass wer nähmlich mit 'h' schreibt dähmlich währe.


  • Mod

    pivke schrieb:

    Man stelle sich einen Tisch mit Rahmen vor, wo jede Seite gleich lang ist und man da eine Kugel rein legt. Wenn diese Kugel im Grad von 45° auf den Rahmen rollt,
    also der Einfallswinkel 45° beträgt und man noch die Senkrechte von der Seite hat, kann man doch auch den Ausfallswinkel errechnen und die Kugel dann weiter dahin schicken, also praktisch das Spiegelbild von dem Einfallswinkel.

    das ist collisiondetection und response.
    collisiondetection sagt nur ob objekte kollidieren oder nicht.
    (eventuell auch die stelle wo das passiert, notfalls in 4d)

    Das währ doch eine einfache Kollision oder ?
    Und schwer zu errechnen währe sie auch nicht, man rechnet einfach den WInkel zur Senkrechten aus und dann leitet man die Kugel vom Schneidepunkt weiter zum ausgerechneten Ausfallswinkel, der wie in diesem Fall eigentlich auch 45° haben müsste.

    oder noch einfacher, man schaut sich an die ein reflektionsvector berechnet wird. eine sehr gaengige und ueberall bekannte formel. (notfalls tabellenbuch)


Log in to reply