3D - Kollision: Bounding Box



  • Also mit Bounding Spheres wäre das deutlich einfacher.
    Was kannst du denn schon? Weisst du wie man berechnet auf welcher Seite einer Fläche sich ein Punkt befindet?



    1. Bounding Shperes sind Kugeln, oder ? Wäre für Treppen ungeeignet ^^

    2. Nur wenn die Fläche parallel zu einer Achse ist...
      Ich kann aber die Entfernung von 2 3D-Punkten bestimmen 😃



  • DarkShadow44 schrieb:

    Naja, ich habe zwei Bounding Boxes (zur einfacheren Kollision),
    halt 3D-Kisten (^^) mit den Koordinaten aller Eckpunkte.

    Wie kann ich prüfen, ob die zwei sich berühren, oder ob eine in der anderen ist ?

    Du könntest die Eckpunkte der ersten Kiste in das Koordinatensystem der zweiten Kiste transformieren. Wenn die zweite Kiste in ihrem Koordinatensystem zwischen (0, 0, 0) und (1, 1, 1) liegt, ist der Test ob die Eckpunkte drin sind ganz einfach.



  • Wie Bitte ?

    Wie meinst du denn DAS ?



  • empgodot schrieb:

    DarkShadow44 schrieb:

    Naja, ich habe zwei Bounding Boxes (zur einfacheren Kollision),
    halt 3D-Kisten (^^) mit den Koordinaten aller Eckpunkte.

    Wie kann ich prüfen, ob die zwei sich berühren, oder ob eine in der anderen ist ?

    Du könntest die Eckpunkte der ersten Kiste in das Koordinatensystem der zweiten Kiste transformieren. Wenn die zweite Kiste in ihrem Koordinatensystem zwischen (0, 0, 0) und (1, 1, 1) liegt, ist der Test ob die Eckpunkte drin sind ganz einfach.

    Nein, betrachte folgenden Fall:

    /-------------------------          
              /-                      -/|           
           /--                       /  |           
         /-                        -/   |
       +-------------------------+/     |
       |                         |    --+-------------------
       |                         |   /  |---\            /  \---
       |     Box 1               |  /   |    ---\       /       \---
       |                         | o    |        ---\  /            \--
       |                         |      |    Box 2   -/-\              \---
       |                         |      |            /   ------------------\/--
       |                         |      |P2         /    /                 /
       |                         |     /           /    /                 /
       |                         |    |           /    /                 /
       |                         |   o           /    /                 /
       |                         |  /           /    /                 /
       |                         | o           /    /                 /
       |                         | |          /    /                 /
       |                         | /         /    /                 /
       +-------------------------+/P1       /    /                 /
                       /                   /    /                 /
                      /                   /    /                 /
                     /                   /    /                 /
                    ----------------------   /                 /
                       \---               \---                /
                           \---            /  \---           /
                               \---       /       \---      /
                                   \---  /            \--- /
                                       \/-----------------\-
    

    (P1, P2 liegen nicht in Box2). Kein Punkt einer Box liegt in der anderen Box. Dennoch schneiden sich die Boxen



  • o------------o
                         |            |
                         |            |
                    o-----------------------o
                    |                       |
                    |                       |
                    |                       |
                    |                       |          
                    |                       |  
                    |                       |
                    |                       |
                    o-----------------------o
                         |            |
                         |            |
                         |            |
                         o------------o
    

    2D Entsprechung, ich bin nicht so gut wie du ^^

    Aber wie kann ich dann Kollisionen überprüfen ? 😞



  • Du kannst versuchen zu berechnen, ob es eine Fläche einen Spats(Würfel, Quaders) gibt, der von einer Kante des anderen Spats geschnitten wird. (Ein Hoch auf die Vektorrechnung 😉 )

    Zurvor würde ich jedoch aber noch die

    • Summe der Außerradien (=> Ist es möglich, dass eine Kollision stattfinden kann? => Wenn nein, dann keine Kollision möglich) und
    • die Summe der Innenradien (=> Wann ja, Kollision ist garantiert vorhanden)

    mit dem Abstand vergleichen.

    Außerdem kann man es auf bis zu 9 Vergleiche optimieren. (Nur die zugewandten Kanten und Flächen berücksichtigen)



  • Du kannst versuchen zu berechnen, ob es eine Fläche einen Spats(Würfel, Quaders) gibt, der von einer Kante des anderen Spats geschnitten wird. (Ein Hoch auf die Vektorrechnung 😉 )

    Aha... Und wie macht man so was ? 😮

    Wie berechne ich Innen und Außenradius am Besten bei Polygonen ??



  • Da es Quader sind geht es ziemlich einfach.

    Innenradius: Die Länge der kürzesten Kante (also Breite, Höhe oder Länge) * 0.5
    Außenradius: Die Wurzel aus der Summe der Quadrate von Breite, Höhe und Länge



  • Rhombicosidodecahedron schrieb:

    die Summe der Innenradien (=> Wann ja, Kollision ist garantiert vorhanden)

    Je nachdem in welchem Kontext die Kollision geprüft wird, könnte das die Laufzeit auch verlängern. Z.b. bei langsam bewegenden Kisten wird meistens eine Eck-Kollision stattfinden.


Anmelden zum Antworten