Ich suche nach Algorithmen, wie man die Physik von Einstürzen / Zusammenbrüchen für eine Spielidee modelliert, an der ich arbeite. Das Spiel ermöglicht es dem Spieler, 3D-Voxel-basierte Asteroiden ausgiebig abzubauen, und ich möchte, dass Bereiche, die nicht ausreichend unterstützt werden, unter ihrem eigenen Gewicht zusammenbrechen. Um das Problem noch schwieriger zu machen, ist die Schwerkraft ungleichmäßig (die Richtung, in die sie zieht, hängt davon ab, wo sich ein bestimmtes Voxel im Verhältnis zum Massenmittelpunkt des Asteroiden befindet), und die Anzahl der Voxel im Asteroiden ist zu groß, um modelliert zu werden sie alle einzeln (ich benutze einen spärlichen Voxeloktree, um den Asteroiden zu modellieren).
Hoffentlich kann jemand Links zu Artikeln bereitstellen, in denen geeignete Algorithmen erörtert werden, oder Ideen zur Lösung des Problems bereitstellen. Wenn Sie weitere Informationen benötigen, fragen Sie bitte.
Bearbeiten 1: Es muss nicht sehr genau sein, ich suche nach etwas, das eine vernünftige Annäherung für ein Spiel im Stil von Minecraft oder Dwarf Fortress wäre. Ich bin hauptsächlich daran interessiert zu bestimmen, wo Abschnitte abbrechen sollen, wenn Blöcke hinzugefügt oder entfernt werden. Das Verschieben der Körper nach dem Brechen ist nicht Teil dieses Problems.
Bearbeiten 2: Meine ursprüngliche Idee war es, die Kraft auf jeden Block zu berechnen und dann die Kräfte iterativ unter den Nachbarn zu verteilen. Dies würde jedoch einen Eintrag für jeden Block erfordern, während nur Blöcke auf der Oberfläche Einträge in der Datenstruktur haben. Das Modellieren aller Blöcke auf der von mir gewünschten Skala wäre wahrscheinlich unerschwinglich - ich hätte gerne Körper mit mindestens 10.000.000 Voxeln, von denen 200.000 an der Oberfläche sind und gelagert werden müssen.