Quader in Octree einfügen



  • CChrissi schrieb:

    😕
    was ist RudP ?
    Und was willst du mir sagen?

    ah.. Rund um die Programmierung... ja war ein versehen, weil mein Rechner hing.. kann es leider selber nicht löschen.. 😕

    Ich wollte auch nicht den Moralapostel spielen, sondern nur darauf hinweisen.

    Crossposts sind hier nunmal nicht gerne gesehen.

    Aus folgendem Grund:
    Wenn sich jetzt hier jemand abmüht, Dir 30 Minuten lang eine möglichst perfekte Erklärung auf Deine Frage zu tippen, und kurz nach dem Abschicken im RudP-Forum bemerkt, daß Deine Frage schon lange beantwortet wurde, kann das in ziemlich derben Mord-Gelüsten enden... 🤡

    Irgendwo sollten die Posts also dicht gemacht bzw. verschoben werden... 💡



  • ja kann ich verstehen.. habe eigentlich nur 2 mal gepostet, weil ich ja einerseits eine lösung für das problem mit octrees suche, aber allerdings natuerlich auch für andere Datenstrukturen offen waere (mir nur keine einfallen)

    Aber kann gerne aus einem Forum gelöscht werden, je nach dem wo es halt besser rein passt, leider kann ich das aber nicht selber machen..

    lg,
    Chrissi



  • ich find octrees sind nicht wirklich was für spiele/grafikprogg, ein octrees ist auch eine datenstruktur wie zB binärbaum, und der hat ja auch nix mit grafik zu tun

    aber naja zurück zum thema 🤡



  • Hi,

    bei einem Octree gibt es viele verschiedene Möglichkeiten wobei man je nach Anwendung oder Bequemlichkeit die beste für sich selber raussuchen muss. Jeder Node eines Octrees ist im Grunde genommen eine AxisAligned Bounding Box (AABB -> Google) für den "Sub-Raum" den der Node umschließt.

    Wenn man nun einen Quader einsortieren will, so muss man für den zuerst auch eine AABB erstellen. Jetzt kann man die AABB in den Octree einsortieren indem man sie gegen die AABB des jeweiligen Nodes testet. Für Intersection Tests -> google oder http://www.realtimerendering.com/int

    Einsortierungsstrategien:

    Schiebe die AABB in die Root des Octree. An jedem Node wo die AABB komplett in die AABB eines Child-Nodes paßt geht man in den entsprechenden Ast. Wenn die Bedingung irgendwan nicht mehr erfüllt werden kann, dann ...

    A: ... bleibt man in dem aktuellen Node und packt den Quader dort in einem Liste von Objekten.

    B: ... schiebt man die AABB weiter in alle Child-Nodes in der die AABB des Quaders teilweise liegt. Erreicht man die jeweiligen Leaves des Baumes speichert man das Quader dort im Leaf wo sein Mittelpunkt liegt als Objekt und in allen anderenLeaves wo er teilweise angekommen ist in einer Visitor-Liste.

    C: ... zerlegt man den Quader in mehrere kleine Quader, so dass für jedenQuader die Bedingung wieder erfüllt werden kann. Kommt man in einem Leaf an so speichert man den Sub-Quader dort.

    A ist am einfachsten zu programmieren, macht aber nicht immer Sinn. B ist auch einfach zu programmieren, ist dann aber im Handling komplexer. C ist im Handling am einfachsten aber komplexer zu programmieren und erzeugt natürlich eine große Menge an Daten und raucht mehr rechenaufwand.

    Ciao,
    Stefan



  • Hallo Stefan,

    also erstmal ganz lieben Dank für deine Antwort, leider habe ich nicht wirklich viel verstanden, und ich denke ich werde mich wohl erstmal bei google schlau machen, was denn aabb sind und wie ich damit umgehe. Scheint mir alles relativ kompliziert, aber habe mir schon fast gedacht, dass das nicht so einfach ist 😞

    Lg,
    Chrissi



  • CChrissi schrieb:

    was denn aabb sind

    Axial Aligned Bounding Box = Achsenparallele Umgebende (k.a. wie man das besser übersetzen kann) Box.



  • Wenn meine Quader schon achsenparallel sind, dann passen die schon? oder muss ich noch den Würfel außenrum nehmen?



  • CChrissi schrieb:

    Scheint mir alles relativ kompliziert, aber habe mir schon fast gedacht, dass das nicht so einfach ist 😞

    da fällt mir der sinngemäße kommentar unseres cg-profs ein. "quadtrees sind für computergrafik schon nicht ideal und wer octrees benutzt ist sowieso nicht mehr zu retten". aber es gibt ja noch kd-trees und abt-trees. kd trees wären z.b. recht ähnlich, aber nicht so steif und bei dynamischen szenen ist sowieso alles chaos. da würd ich mir fast überlegen, statische und dynamische objekte getrennt zu handhaben. was für statische szenen toll ist, weil man den großen aufwand zum erstellen nur einmal hat, kann für dynamische für die tonne sein, weil man nach jeder bewegung alles neu aufbauen müßte. manchmal bekommt man fast das gefühl, 90% in der cg sind faule kompromisse *fg*



  • godlikebot schrieb:

    CChrissi schrieb:

    was denn aabb sind

    Axial Aligned Bounding Box = Achsenparallele Umgebende (k.a. wie man das besser übersetzen kann) Box.

    So?

    Bye, TGGC (Dem beste BdT)



  • TGGC schrieb:

    godlikebot schrieb:

    Axial Aligned Bounding Box = Achsenparallele Umgebende (k.a. wie man das besser übersetzen kann) Box.

    So?

    👍 🙂

    TGGC schrieb:

    Dem beste BdT

    qrazz!! *Auf den release freu* 😋.


Anmelden zum Antworten