Eu preciso fazer uma simulação com pedra jogada através de uma janela de vidro. Como posso conseguir isso?
Quero dizer, eu estava pensando em criar um modelo 3D de pedra e vidro no 3D Studio Max 2012, quebrar o vidro e exportar para o XNA 4.0 como modelos .x. Então, no XNA, faça a animação - escrevendo meu próprio mecanismo de física. É possível assim? É possível destruir o vidro no XNA após o impacto ou devo fazê-lo no 3DS Max? Por 'destruição do vidro', quero dizer desconectar alguns pedaços de vidro anteriormente quebrados um do outro, porque dependendo da velocidade inicial e do peso da pedra e da resistência (dureza?) Do vidro (todos definidos pelo usuário), os bits serão desconectados um ao outro de maneiras diferentes.
Faça um painel não quebrado e um painel quebrado. Quando você tiver uma colisão, desative a versão sem quebra e comece a usar o painel quebrado.
Se você estiver jogando uma pedra (de tamanho um tanto consistente) em uma janela, poderá percorrer um longo caminho com o seu modelo 3D do painel quebrado (modele os fragmentos no lugar no painel e execute uma simulação física simples em cada os fragmentos para simulá-los caindo / voando). A menos que a câmera esteja muito próxima (ou em câmera lenta), você não precisará fazer colisões entre as peças - apenas com a geometria ao redor (plano do solo?). Não se esqueça de aplicar alguns efeitos de partículas na nuvem de partículas de vidro menores que acompanham o estilhaçamento.
Se você fizer o painel quebrado com a suposição de que a pedra está atingindo o centro, poderá escalar as peças com base na posição real da batida para obter uma quebra muito bonita para a maioria das batidas.
fonte
Se vocês baixar a Bullet Physics Library, ela possui uma amostra que inclui cacos de vidro e você precisaria de algo como bala em qualquer jogo com cacos de vidro.
Edit: Bullet seria uma ótima demonstração para modelar seu próprio motor depois.
fonte
Muito obrigado por suas respostas e ajuda inestimável. Eu finalmente consegui construir o projeto. Tentei todas as suas sugestões e, no final, escolhi parcialmente o meu próprio caminho para esta simulação.
Eu usei bulledsharp (wrapper de física de bala para c #) para o mecanismo de física, mas é importante usar o mais recente, compilado por você com a fonte bulletsharp do sourceforge svn, bem como as próprias fontes de física de bala novas. Não é aquele .dll pré-compilado, disponível para download em sites. A versão pré-compilada era muito antiga para mim e não incluía alguns recursos preciosos desenvolvidos ainda mais. O que também aprendi é que, para simulações simples em que você não precisa de gráficos avançados, é melhor usar o 3dsmax mais antigo, ou seja, 2011 (não o mais recente em 2012), para desenvolver o modelo etc. Principalmente porque há mais plugins e exportadores. Além do mais, é realmente útil verificar os tutoriais em todas as estruturas disponíveis (sharpdx, xna, xna4, slimdx, c ++ e outras).
Finalmente, minha abordagem foi construir a parede de vidro usando pedaços de cubo muito pequenos. Obviamente, para executar a simulação, você deve ter uma máquina realmente poderosa. Caso você tenha algo menos poderoso, use cubos maiores. É importante fazer todos os cubos criados com o estado insular adormecido. Agora, cada peça tem sua representação em dois arranjos dimensionais de carros alegóricos. O número indica qual é a força da conexão entre dois cubos. Quando a pedra é lançada e a colisão é detectada, a força está sendo calculada para cada cubo na parede (incluindo massa e velocidade da pedra, massa do cubo e tamanho e distância e distância do centro de colisão) e subtraída da matriz no círculo como padrão. Os cubos que após a subtração têm zero ou menos força de conexão são ativados. Isso faz com que os filhotes se movam.
É isso. Obrigado pela ajuda.
fonte