Comment simuler le verre brisé?

10

J'ai besoin de faire une simulation avec de la pierre lancée à travers une fenêtre en verre. Comment puis-je y parvenir?

Je veux dire, je pensais à faire un modèle 3D d'une pierre et du verre dans 3D Studio Max 2012, briser le verre et exporter les deux vers XNA 4.0 en tant que modèles .x. Ensuite, dans XNA, faites l'animation - en écrivant mon propre moteur physique. Est-ce possible de cette façon? Est-il possible de détruire le verre dans XNA après impact ou dois-je le faire dans 3DS Max? En `` détruisant le verre '', je veux dire déconnecter certains morceaux de verre précédemment brisés les uns des autres, car en fonction de la vitesse de démarrage et du poids de la pierre et de la résistance (dureté?) Du verre (tous définis par l'utilisateur), les bits se déconnecteront les uns des autres de différentes manières.

toomek308
la source

Réponses:

5

L'éclatement de Voronoï est une approche qui crée un éclatement assez réaliste, par exemple. verre trempé qui a la capacité remarquable de se briser en petits fragments typiquement convexes en raison de modifications structurelles du verre pendant la fabrication. De plus, étant donné que vous avez une vitre, vous n'aurez besoin que de l'implémentation 2D Voronoi, pas 3D.

Ingénieur
la source
3

Je pense que générer automatiquement des morceaux brisés à partir d'un maillage initialement entier est assez délicat. Si vous souhaitez simplement simuler la dynamique des éclats lorsqu'ils volent dans les airs, entrent en collision, etc., je commencerais par un maillage pré-brisé, en utilisant des contraintes cassables ou quelque chose pour maintenir les pièces ensemble jusqu'à ce qu'elles soient tirées à part avec assez de force.

Nathan Reed
la source
Salut Nathan (encore), as-tu travaillé sur cette tâche après 2011? Pouvez-vous donner plus d'indices? Thx
karlphillip
@karlphillip J'ai travaillé sur une démo utilisant PhysX Destruction , bien que personnellement je n'ai fait que du rendu, pas de physique sur ce projet. La technologie PhysX fonctionne en générant des pièces pré-brisées dans un outil DCC et en les échangeant contre le maillage ininterrompu en cas de dommages.
Nathan Reed
3

Créez un volet non brisé et un volet brisé. Lorsque vous obtenez la collision, désactivez la version non brisée et commencez à utiliser le volet brisé.

Si vous lancez une pierre (d'une taille quelque peu cohérente) sur une fenêtre, vous pouvez obtenir un long chemin avec votre modèle 3D du volet cassé (modélisez les tessons en place dans le volet, puis exécutez une simulation physique simple sur chacun des les éclats pour les simuler tombant / volant). À moins que la caméra ne soit très proche (ou au ralenti), vous ne devriez pas avoir besoin de faire des collisions entre les pièces - juste avec la géométrie environnante (plan du sol?). N'oubliez pas de vaporiser certains effets de particules pour le nuage de petites particules de verre qui accompagnent l'éclatement.

Si vous faites le volet cassé en supposant que la pierre frappe le centre, vous pouvez mettre à l'échelle les pièces en fonction de la position de coup réelle pour obtenir une pause assez belle pour la plupart des coups.

Méduse M
la source
2

Si vous téléchargez la bibliothèque de physique des balles, elle contient un échantillon qui comprend du verre brisé, et vous auriez besoin de quelque chose comme une balle dans n'importe quel jeu avec du verre brisé.

Edit: Bullet serait une excellente démonstration pour modéliser votre propre moteur.

Matt Jensen
la source
1

Merci beaucoup pour vos réponses et votre aide inestimable. J'ai finalement réussi à construire le projet. J'ai essayé toutes vos suggestions et j'ai finalement choisi en partie ma propre voie pour cette simulation.

J'ai utilisé bulledsharp (wrapper de physique des balles pour c #) pour le moteur de physique, mais il est important d'utiliser le plus récent, compilé par vous-même avec la source bulletsharp de sourceforge svn ainsi que de nouvelles sources de physique de balle elle-même. Pas celui .dll précompilé, disponible pour téléchargement à partir de sites Web. La version précompilée était trop ancienne pour moi et ne comprenait pas de fonctionnalités précieuses développées plus avant. Ce que j'ai également appris, c'est que pour les simulations simples où vous n'avez pas besoin de graphiques avancés, il est préférable d'utiliser des versions plus anciennes de 3dsmax, c'est-à-dire 2011 (pas la plus récente 2012), pour développer un modèle, etc. Principalement parce qu'il y a plus de plugins et d'exportateurs. De plus, il est vraiment utile de consulter les tutoriels dans tous les frameworks disponibles (sharpdx, xna, xna4, slimdx, c ++ et autres).

Enfin, mon approche a été de construire le mur de verre en utilisant de très petits morceaux de cube. Bien sûr, pour faire fonctionner la simulation, vous devez avoir une machine vraiment puissante. Si vous avez quelque chose de moins puissant, vous pouvez utiliser des cubes plus gros. Il est important de créer tous les cubes créés avec l'état insulaire endormi. Maintenant, chaque pièce a sa représentation dans deux tableaux dimensionnels de flotteurs. Le nombre indique la force de connexion entre deux cubes. Lorsque la pierre est lancée et que la collision est détectée, la force est calculée pour chaque cube dans le mur (y compris la masse de pierre, et la vitesse, la masse du cube et la taille et la distance du centre de la collision) et soustraite du tableau dans le cercle -modèle semblable. Les cubes qui, après soustraction, ont une force de connexion nulle ou inférieure sont rendus actifs. Cela fait bouger les oursons.

Ça y est. Merci de votre aide.

toomek308
la source