Necesito hacer una simulación con piedra lanzada a través de una ventana de vidrio. ¿Cómo puedo lograr eso?
Quiero decir, estaba pensando en hacer un modelo 3D de una piedra y vidrio en 3D Studio Max 2012, romper el vidrio y exportar ambos a XNA 4.0 como modelos .x. Luego, en XNA, hago la animación, escribiendo mi propio motor de física. ¿Es posible de esa manera? ¿Es posible destruir el vidrio en XNA después del impacto o debería hacerlo en 3DS Max? Al "destruir el vidrio" me refiero a desconectar unos pedazos de vidrio previamente destrozados unos de otros, porque dependiendo de la velocidad de inicio y el peso de la piedra y la resistencia (dureza?) Del vidrio (todo definido por el usuario) los pedazos se desconectarán de entre sí de diferentes maneras.
Haga un panel sin romper y un panel roto. Cuando tenga la colisión, apague la versión sin romper y comience a usar el panel roto.
Si está lanzando una piedra (de un tamaño algo consistente) en una ventana, entonces puede recorrer un largo camino con su modelo 3D del panel roto (modele los fragmentos en su lugar en el panel y luego ejecute una simulación física simple en cada uno los fragmentos para simularlos cayendo / volando). A menos que la cámara esté muy cerca (o en cámara lenta), no debería necesitar colisiones entre las piezas, solo con la geometría circundante (¿plano del suelo?). No te olvides de rociar algunos efectos de partículas para la nube de partículas de vidrio más pequeñas que acompañan a la rotura.
Si crea el panel roto con la suposición de que la piedra está golpeando el centro, puede escalar las piezas en función de la posición de golpe real para obtener un descanso bastante atractivo para la mayoría de los golpes.
fuente
Si descarga la Bullet Physics Library , tiene una muestra que incluye cristales rotos, y necesitaría algo como bala en cualquier juego con cristales rotos.
Editar: Bullet sería una gran demostración para modelar su propio motor después.
fuente
Muchas gracias por sus respuestas y ayuda invaluable. Finalmente logré construir el proyecto. Probé todas tus sugerencias y al final elegí en parte mi propio camino para esta simulación.
Utilicé bulledsharp (envoltorio de física de bala para c #) para el motor de física, pero es importante usar el más reciente, compilado por usted mismo con la fuente de bulletsharp de sourceforge svn, así como fuentes de física de bala nuevas. No es el .dll precompilado, disponible para descargar desde sitios web. La versión precompilada era demasiado antigua para mí y no incluía algunas características preciosas desarrolladas aún más. Lo que también aprendí es que para simulaciones simples en las que no se necesitan gráficos avanzados, es mejor usar 3dsmax anteriores, es decir, 2011 (no el 2012 más reciente), para desarrollar modelos, etc. Principalmente porque hay más complementos y exportadores. Además, es realmente útil consultar los tutoriales en todos los marcos disponibles (sharpdx, xna, xna4, slimdx, c ++ y otros).
Finalmente, mi enfoque fue construir la pared de vidrio con piezas de cubo realmente pequeñas. Por supuesto, para ejecutar la simulación debe tener una máquina realmente poderosa. En caso de que tenga algo menos potente, puede usar cubos más grandes. Es importante hacer todos los cubos creados con el estado insular dormido. Ahora, cada pieza tiene su representación en dos conjuntos dimensionales de carrozas. El número allí indica cuál es la fuerza de conexión entre dos cubos. Cuando se arroja la piedra y se detecta colisión, se calcula la fuerza para cada cubo en la pared (incluida la masa de piedra y la velocidad, la masa del cubo y el tamaño y la distancia desde el centro de la colisión) y se resta de la matriz en el círculo -como patrón. Los cubos que después de la resta tienen cero o menos fuerza de conexión se activan. Esto hace que los cachorros se muevan.
Eso es todo. Gracias por tu ayuda.
fuente