Flasche in OpenGL
-
Hi,
ich hab vor mit OGL eine Flasche zu proggen, die dann eben auch realistisch zerbricht, also wenn man erfolgreichen Kollisionstest macht das man dann die Brüche korrekt berechnen kann...
wie könnt ich das hinkriegen?
meine erste Idee war, so wie im Rope Physics-Tutorial von NeHe die einzelnen Vertices mit Federn zu verbinden und dann eben sozusagen bei Überdehnung die Federn zu kappen. das gibt aber 2 Probleme:
-Die Flasche fällt in sich zusammen
-beim Zersplittern zerfällt sie in lauter kleine Teile.Meine Idee war nun gewesen, Federn zu machen, die die Wnkel konstant halten. Bei "Überdehnung" werden die dann aber auch gekappt. hat irgendwer ne bessere Idee? mach im Moment noch "Brainstorming", damit ich nicht einfach sinnlos vor mich hinschreib...
-
Also wenn du das wirklich realistisch machen willst, dann ist das schon ganz schön kompliziert, da die Flasche ja an beliebigen Stellen zerbrechen kann. Oder würdest du dich auch damit zufrieden geben, wenn die Flache nur an n Sollbruchstellen kaputt gehen kann?
Bye, TGGC (Dem beste BdT)
-
Man könnte versuchen, ein Partikelsystem zu schreiben, das sich um die Konturen eines Körpers legt. Wenn dann eine Kollision stattfindet, wird das Objekt durch die Partikel ausgetauscht und diese fallen dann je nach physikalischem Hintergrund. Das Problem ist dann allerdings, daß die Partikel alle gleich groß sind. Evtl. könnte man zufällig Bindungen zwischen den Partikeln setzen..
Glaub aber nicht, daß das so leicht ist. Immerhin sollten die Partikel ja auch untereinander eine Kollisionsdetektion haben..
-
Ich würd dir das auch so ähnlich wie TGGC vorschlagen... Du könntest ja die gesamte flasche in einige Teile teilen sagen wir mal 10 scherben und jede von denen hat dann noch 2 oder 3 Sollbruchstellen und dann machst du gleich für jeden der Teile ne bounding box und überprüfst nach nem hirachischen Kollisionsmodell (also zuerst die 10 Teile; wenn eine Kollision dan alle Teile von dem bedroffenen Teil und dann am schluss noch die einzellen Dreiecke in dem (ich sag mal) Unterteil. dann lässt du die Scherbe ganz verbrechen also in alle Teilscherben und alle angrenzenden vielleicht auch und beim rest lässt du mal in alle scherben zerbrechen (in meinem beispiel 10) und ob die einzellen übrigen scherben auch noch in die teilscherben zerbrechen lässt du den zufall entscheiden. Der Vorteil von dem system wäre das es nicht immer gleich aussieht und es auch darauf draufan kommt wie du sie aufschmeißt.
Ich hoffe es ist nach den ganzen Scherben und Teilscherben noch verständlich wie ich das gemeint habe... Aber ich hoffe ich hab dir da geholfen!

Ich kanns aber gern nochmal erklären falls nicht so nicht verständlich ist.
Ich kann mir aber gut vorstellen das dieses system nicht zu kompliziert ist um es zu implementieren... dennoch am einfachsten ist natürlich noch immer einfach ein paar sollbruchstellen und fertig! (Wenn die Flasche nicht das Hauptobjekt ist also nur ein Nebengegenstand dann ist das sollbruchstellensystem aufjeden fall das beste!)Würd mich interessieren wofür du das brauchst, ob das irgendwo eingebaut wird oder ob es nur eine Demo sein soll wo eben nur diese Flasche ist?
mfg Manuelh87
-
Ich hatte vor, eine Demo damit zu basteln.
eine andere Möglichkeit wäre doch auch:
-Kollisionstest
-wenn erfolgreich, testen ob die Flasche zerstört wird (Parameter: Krümmung, Wanddicke, Richtung der Kraftwirkung etc)
-Bei Zerbrechen: Kollision sozusagen weiterleiten, also benachbarte Vertices auswählen, je nach bestimmten Parametern -> Kollision am jeweiligen Vertice, dort wieder weiterleiten
-wenn man einen geschlossenen Kreis hat, diesen aus dem Modell entfernenVorteil: realistische Zerbrechungsanimation, bei genau gleichem Aufprall verläuft die Kollision immer gleich
Nachteil: etw. ressourcenintensiver, schwerer zu proggen