hallo!
hab ne frage zu den bounding boxes!
also was brauch i dafür?(irgendwelche units (wo bekomm ich die her))
und wie funktioniert das genau?
wäre super wenn ihr mir das genau erklären könntet!!
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Bei den Tutorials findest du was zu den Bounding Boxes. Musste einfach mal gucken. Ansonsten hilft es bestimmt auch, wenn du mal die Forumssuche anwirfst. Eventuell kommt da was nützliches bei raus.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Für normale Bounding Boxen brauchst du nur die Vertexdaten deines Meshes. Dann musst du nur die Extremwerte auf allen drei Achsen ermitteln und hast dann die Eckpunkte deiner Bounding Box.
Was willst du denn damit genau machen? Deine Frage klingt ein wenig so, als ob du den Begriff mal irgendwo gehört hast, und jetzt irgendwas damit anstellen willst.
also ich möchte einfach nur überprüfen ob meine kamera mit einem anderen object zusammen stöst!
und ich dachte das geht mit der bounding box sicher am einfachsten!
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ja, für Kollisionstests die nicht sehr genau sein müssen sind Bounding Boxen am einfachsten. Ausserdem kosten sie kaum Leistung, denn die Bounding Box berechnet man normalerweise nur einmal (und bindet sie dann im Endeffekt an die Objektposition) und der Test ob ein Punkt sich in ner Box befindet ist ja ziemlich schnell.
Komplizierter wirds dann wenn mans etwas genauer will und OOBBs (Object Oriented Bounding Boxen) will, da die dann auch noch entsprechend mitrotiert werden müssen. Aber normale BBs dürften für die Kamerakollision erstmal reichen.
hab mir das obbtetris an geschaut und die box mal einfach wo hin gebastelt!
kenn mich aber mit den zentrum und den achsen nicht wirklich aus
und funktionieren tuts auch nicht richtig wein ich radii auf 10 setzte da geht gar nichts mehr und ansonsten kann ich einfach hindurch fahren
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wo genau liegt denn das Problem bei ner BB? Hab doch oben gesagt wie es geht :
- Du brauchst acht Eckpunkte für deine Box
- 6 Singlewerte für deine Extrempunkte (auf allen drei Achsen). Max = -MaxInt, Min = MaxInt
- Alle Vertices in ner Schleife durchgehen und dann die Extremwerte ermitteln
- Dann hast du alle Eckwerte deiner Box und kannst anhand der Extremwerte die Eckpunkte der BB ermitteln.
- BB fertig, testen ob ein Punkt in der BB ist, ist ja dann verdammt einfach
P.S. : Wenns nicht klappt, einfach mal die BB auf ein Blatt Papier malen (so hab ich das auch beim ersten mal gemacht), dann dürfte schnell klar sein wie es geht.
ich versteh das einfach nicht!
ich möchte nur überbrüfen ob die kamera in eine viereck fährt oder nicht
wie mach ich das alles was du gesagt hast?
hab nähmlich überhaupt keinen durchblick fang gerade erst mit opengl an!!!!
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das hat auch alles nix mit OpenGL zu tun. Wenn du was renderst, dann hast du doch auch alle Vertexdaten. Extremwerte finden ist dann doch popelig (if vertex. > MaxX then MaxX := vertex.x). Und wie sich dann ne Box aus diesen Extremwerten (Max/Min(x/y/z)) zusammensetzt ist doch ein Kinderspiel.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Was verstehst du denn nicht? Ne Box besteht aus 8 Eckpunkten, die Eckpunkte werden jeweils durch die entsprechenden Extremwerte beschrieben (z.B. Ecke X = MaxX/MaxY/MaxZ). Die Extremwerte zu ermitteln geht doch wie gesagt in dem du einfach guckst welche Vertices wo den größten Wert stellen. Das ist ganz einfache Logik.
Kleiner Tipp: Nimm mal ein Blatt Papier und überlege dir, wie so eine Bounding Box-Kollision in 2D aussehen würde.
Was ist so eine Kollision? Die Frage ist, ob sich zwei Rechtecke überlagern. Die Abfrage ist ein bisschen haarig, wenn man es noch nie gemacht hat, aber es geht. Wenn du soweit bist, kommst du auch noch in 3D, das macht sie Sache eben noch ein bisschen komplexer.
"Oriented" ist ja eine Vereinfachung und bedeutet einfach, dass alle Seiten deines Kollisions-Rechtecks parallel zur X- bzw. Y-Achse liegen (also nicht irgendwie schief im Raum liegen). Entsprechend reichen dann auch zwei Punkte aus (oben links und unten rechts) um so ein Rechteck eindeutig zu identifizieren.
Weiter kann ich dir nicht mehr helfen, da musst du dich schon selber mal eine Weile hinsetzen und nachdenken, also nicht einfach mal draufloshacken, sondern tatsächlich erstmal mit Bleistift und Papier überlegen, was du eigentlich GENAU programmieren willst.
Registriert: Mi Aug 28, 2002 19:27 Beiträge: 568 Wohnort: Chemnitz / Sachsen
für einfaches kollisionsdetection für ne kamera ist doch eigentlich ne sphere-collision einfacher, wenn alle objecte für spheres (kugeln) geeignet sind, also bsp: keine dünnen wände, sondern eher würfelartiges.
oder sehe ich das falsch, da man ja eigentlich nur den abstand ausrechnen muss.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.