Wie kann ich Glasscherben simulieren?


10

Ich muss eine Simulation mit Stein machen, der durch ein Glasfenster geworfen wird. Wie kann ich das erreichen?

Ich meine, ich habe darüber nachgedacht, in 3D Studio Max 2012 ein 3D-Modell aus Stein und Glas zu erstellen, das Glas zu zerbrechen und beide als .x-Modelle nach XNA 4.0 zu exportieren. Dann mache in XNA die Animation - schreibe meine eigene Physik-Engine. Ist das so möglich? Ist es möglich, das Glas in XNA nach dem Aufprall zu zerstören, oder sollte ich es in 3DS Max tun? Mit "Glas zerstören" meine ich, einige zuvor zerbrochene Glasbits voneinander zu trennen, da sich die Bits je nach Startgeschwindigkeit und Gewicht des Steins und Widerstand (Härte?) Des Glases (alle benutzerdefiniert) trennen einander auf unterschiedliche Weise.

Antworten:


5

Voronoi-Shatter ist ein Ansatz, der ziemlich realistische Shatter erzeugt, z. gehärtetes Glas, das die bemerkenswerte Fähigkeit besitzt, aufgrund struktureller Änderungen des Glases während der Herstellung in kleine, typischerweise konvexe Fragmente zu zerbrechen. Wenn Sie eine Glasscheibe haben, benötigen Sie nur eine 2D-Voronoi-Implementierung, keine 3D-Implementierung.


3

Das automatische Generieren von zerbrochenen Teilen aus einem anfangs ganzen Netz ist meiner Meinung nach ziemlich schwierig. Wenn Sie nur daran interessiert sind, die Dynamik der Scherben zu simulieren, wenn sie durch die Luft fliegen, kollidieren usw., würde ich mit einem vorgesplitterten Netz beginnen, das zerbrechliche Einschränkungen oder etwas verwendet, um die Teile zusammenzuhalten, bis sie gezogen werden mit genügend Kraft auseinander.


Hallo Nathan (wieder), hast du nach 2011 an dieser Aufgabe gearbeitet? Können Sie noch weitere Hinweise geben? Thx
Karlphillip

@karlphillip Ich habe mit PhysX Destruction an einer Demo gearbeitet , obwohl ich persönlich nur Rendering-Sachen gemacht habe, keine Physik-Sachen für dieses Projekt. Die PhysX-Technologie generiert in einem DCC-Tool vorgesplitterte Teile und tauscht sie bei Beschädigung gegen das ungebrochene Netz aus.
Nathan Reed

3

Machen Sie eine ungebrochene Scheibe und eine zerbrochene Scheibe. Wenn Sie die Kollision erhalten, schalten Sie die unzerbrochene Version aus und verwenden Sie das zerbrochene Fenster.

Wenn Sie einen Stein (von einigermaßen gleichmäßiger Größe) gegen ein Fenster werfen, können Sie mit Ihrem 3D-Modell des zerbrochenen Fensters einen langen Weg zurücklegen (modellieren Sie die im Fenster vorhandenen Scherben und führen Sie dann eine einfache Physiksimulation für jedes Fenster aus die Scherben, um sie fallen / fliegen zu simulieren). Sofern sich die Kamera nicht sehr nahe (oder in Zeitlupe) befindet, sollten Sie keine Kollisionen zwischen den Teilen durchführen müssen - nur mit der umgebenden Geometrie (Grundebene?). Vergessen Sie nicht, einige Partikeleffekte auf die Wolke kleinerer Glaspartikel zu sprühen, die den Splitter begleiten.

Wenn Sie die zerbrochene Scheibe mit der Annahme machen, dass der Stein die Mitte trifft, können Sie die Teile basierend auf der tatsächlichen Trefferposition skalieren, um für die meisten Treffer eine ziemlich gut aussehende Pause zu erhalten.


2

Wenn Sie die Bullet Physics Library herunterladen , enthält sie ein Beispiel, das zerbrechendes Glas enthält, und Sie würden in jedem Spiel mit zerbrechendem Glas so etwas wie eine Kugel benötigen.

Bearbeiten: Bullet wäre eine großartige Demonstration, um Ihren eigenen Motor nachzubilden.


1

Vielen Dank für Ihre Antworten und Ihre unbezahlbare Hilfe. Ich habe es endlich geschafft, das Projekt aufzubauen. Ich habe alle Ihre Vorschläge ausprobiert und am Ende teilweise meinen eigenen Weg für diese Simulation gewählt.

Ich habe bulledsharp (Bullet Physics Wrapper für c #) für die Physik-Engine verwendet, aber es ist wichtig, die neueste zu verwenden, die Sie selbst mit einer Bulletsharp-Quelle von sourceforge svn sowie frischen Bullet-Physik-Quellen selbst zusammengestellt haben. Nicht die vorkompilierte DLL, die von Websites heruntergeladen werden kann. Die vorkompilierte Version war zu alt für mich und enthielt einige wertvolle Funktionen, die weiterentwickelt wurden. Was ich auch gelernt habe ist, dass es für einfache Simulationen, bei denen Sie keine erweiterten Grafiken benötigen, besser ist, ältere 3dsmax zu verwenden, dh 2011 (nicht das neueste 2012), um Modelle usw. zu entwickeln. Hauptsächlich, weil es mehr Plugins und Exporteure gibt. Darüber hinaus ist es sehr hilfreich, die Tutorials in allen verfügbaren Frameworks (Sharpdx, Xna, Xna4, Slimdx, C ++ und andere) zu lesen.

Schließlich bestand mein Ansatz darin, die Glaswand aus wirklich kleinen Würfelstücken zu bauen. Um die Simulation ausführen zu können, müssen Sie natürlich über eine wirklich leistungsstarke Maschine verfügen. Wenn Sie etwas weniger Kraftvolles haben, können Sie größere Würfel verwenden. Es ist wichtig, alle Würfel mit dem Zustand der schlafenden Insel herzustellen. Jetzt hat jedes Stück seine Darstellung in zwei dimensionalen Reihen von Schwimmern. Die Zahl dort gibt an, wie stark die Verbindung zwischen zwei Würfeln ist. Wenn der Stein geworfen wird und eine Kollision erkannt wird, wird die Kraft für jeden Würfel in der Wand berechnet (einschließlich Steinmasse und Geschwindigkeit, Würfelmasse und Größe und Abstand vom Kollisionszentrum) und von der Anordnung im Kreis abgezogen -ähnliches Muster. Diejenigen Würfel, die nach der Subtraktion eine Verbindungsstärke von Null oder weniger haben, werden aktiviert. Dies bewirkt, dass sich die Jungen bewegen.

Das ist es. Danke für Ihre Hilfe.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.