Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

1

17.05.2004, 20:05

Schnelle Berechnung der Bounding Box.

Hallo,

Ich arbeite gerade an meinem Rendersystem rum weil momentan war halt alles noch so Bruteforce Mäßig das soll sich aber ändern. Das erste was ich gerne einbauen möchte ist das alle Objekte gegen das Kamera Frustum getestet werden obs sie überhaupt sichtbar sind. Dazu habe ich allen Objekten eine Bounding Box verpasst um die Anzahl der Test zu veringern.

Ich habe das Bounding Box wie folgt erstellt. Wenn ich das Objekt lade also die Vertices dann gehe ich die einzellnen Vertices durch und speicher immer die am weitesten Entfernten Punkte. Danach rufe ich meine Funktion "CalculateBoundingBox" auf welche die Bounding Box dann erechnet bzw. die Vertices.

Ich skaliere dabei zuerst mit dem Skalierungsfaktor des Objekts den am weitesten entfernten Punkt dann rotiere ich es und dann Positioniere ich es. Bei jeder nachträglichen Skalierung Positionierung oder Rotation des Objekts wird die Boundbox neu berechnet.

Die Rotation geht, allerding benutze ich dafür Trigonometrische Funktionen also sin und cos auserdem muss ich j für jeden Punkt den eineWurzel ziehen wegen dem Radius.

Geht das nicht irgendwie schneller und unkomplizierter ?
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

2

17.05.2004, 20:51

Berechne die Bounding Box am Anfang. Speichere die Standard-Bounding-Box. Und transformiere sie dann nach belieben, halte die Standard-Bounding-Box dann immer gespeichert. Du musst das mit dem am weitesten entferneten Punkt dann nur einmal durchführen. Sonst wär das ja grottenlangsam.

Ich glaube das bei einem normalen Spiel die Bounding-Boxen in jedem Frame transformiert wird (Das machst du mit den Objekten ja auch).

Dann musst du nur die Standard-Bounding-Box gespeichert haben.

Bitte korrigiert mich wenn ich falsch liege.
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

3

17.05.2004, 23:04

blöd wirds nur wenn du z.B. bei einem character
z.B. den arm animierst......bedenke das die box dann ausgeweitet
werden muss und entsprechend
ungenauer wird.......da sollte man sich andere
techniken überlegen.

MannyDasMammut

Treue Seele

  • »MannyDasMammut« ist der Autor dieses Themas

Beiträge: 76

Wohnort: Baden - Würtemberg / Achern

Beruf: Schüler

  • Private Nachricht senden

4

18.05.2004, 09:18

Jo hi

Das mache ich genau so:

Ich speichere die Standard Box und Transformiere sie in jedem Frame. Diese Box benutze ich als Rendertest und nicht für die Kolisionserkennung ich bin aber gestern auf ein paar nützliche Funktionen gestoßen in der DirectX Doku damit ich das mit der Worldmatrix machen kann.
Werde ich hier eigentlich noch gebrauch ansonsten würd ich gerne nach Hause gehen und meine graue Wand anstarren.

Werbeanzeige