Paramparça camı nasıl simüle edebilirim?


10

Cam pencereden atılan taşla bir simülasyon yapmam gerekiyor. Bunu nasıl başarabilirim?

3D Studio Max 2012'de bir taş ve camın 3D modelini yapmayı, camı parçalamayı ve her ikisini de XNA 4.0'a .x modelleri olarak aktarmayı düşünüyordum. Sonra XNA'da animasyon yap - kendi fizik motorumu yazıyorum. Bu şekilde mümkün mü? Darbeden sonra XNA'daki camı imha etmek mümkün mü yoksa 3DS Max'de mi yapmalıyım? 'Camı yok etmek' ile, daha önce parçalanmış bazı cam parçalarının birbirinden ayrılması kastedilmektedir, çünkü taşın başlangıç ​​hızına ve ağırlığına ve camın direncine (sertlik?) Bağlı olarak (tüm kullanıcı tanımlı) bitler birbirinden farklı şekillerde.

Yanıtlar:


5

Voronoi paramparça , örneğin oldukça gerçekçi paramparça yaratan bir yaklaşımdır. imalat sırasında cama yapısal değişiklikler nedeniyle küçük, tipik olarak dışbükey parçalara ayrılma kabiliyetine sahip sertleştirilmiş cam. Ayrıca, bir cam bölmeniz varsa, 3D'ye değil, sadece 2D Voronoi uygulamasına ihtiyacınız olacak.


3

Başlangıçta bütün bir ağdan otomatik olarak parçalanmış parçalar oluşturmak oldukça zor, sanırım. Eğer parçaların havada uçarken, çarpışırken vb. Dinamikleri simüle etmekle ilgileniyorsanız, kırılabilir kısıtlamalar veya parçaları çekilene kadar bir arada tutacak bir şey kullanarak önceden parçalanmış bir ağla başlardım ayrı bir kuvvetle.


Merhaba Nathan (yine), 2011'den sonra bu görev üzerinde çalıştın mı? Daha fazla ipucu verebilir misin? Thx
karlphillip

@karlphillip PhysX Destruction kullanarak bir demo üzerinde çalıştım, ancak kişisel olarak bu projede herhangi bir fizik işi değil, sadece bir şeyler yaptım. PhysX teknolojisi, bir DCC aletinde önceden parçalanmış parçalar oluşturarak ve hasar meydana geldiğinde kırılmamış ağ için değiştirerek çalışır.
Nathan Reed

3

Kesilmemiş bir bölme ve parçalanmış bir bölme yapın. Çarpışmayı aldığınızda, dağılmamış sürümü kapatın ve parçalanmış bölmeyi kullanmaya başlayın.

Bir pencereye (biraz tutarlı bir boyutta) bir taş atıyorsanız, kırık bölmenin 3B modelinizle uzun bir yol elde edebilirsiniz (bölmelerdeki bölmeleri modelleyin ve ardından her birinde basit bir fizik simülasyonu çalıştırabilirsiniz. parçalanmalarını / düşmelerini simüle etmek için). Kamera çok yakın değilse (veya yavaş çekimde), parçalar arasında çarpışmalar yapmanıza gerek yoktur - sadece çevredeki geometriyle (yer düzlemi?). Paramparçaya eşlik eden daha küçük cam parçacıkları bulutu için bazı parçacık efektleri püskürtmeyi unutmayın.

Kırık bölmeyi, taşın merkeze çarptığı varsayımıyla yaparsanız, çoğu vuruş için oldukça iyi görünümlü bir mola almak için parçaları gerçek vuruş konumuna göre ölçeklendirebilirsiniz.


2

Eğer varsa Bullet Physics Kütüphane indir o camın ezilmesi içeren bir numuneyi vardır ve camın ezilmesi ile herhangi bir oyunda mermi gibi bir şey gerekir.

Edit: Bullet sonra kendi motor modellemek için harika bir gösteri olurdu.


1

Cevaplarınız ve paha biçilmez yardımlarınız için çok teşekkür ederim. Sonunda projeyi inşa etmeyi başardım. Tüm önerilerinizi denedim ve sonunda bu simülasyon için kısmen kendi yolumu seçtim.

Fizik motoru için bulledsharp (c # için bullet fizik sarıcı) kullandım, ancak en yeni olanı, sourceforge svn'den bulletsharp kaynağının yanı sıra taze bullet fizik kaynaklarının kendisiyle derlemek önemlidir. Önceden derlenmiş olan .dll'ler, web sitelerinden indirilemez. Önceden derlenmiş sürüm benim için çok eski ve daha da geliştirilmiş bazı değerli özellikler içermiyordu. Ayrıca öğrendiğim şey, gelişmiş grafiklere ihtiyacınız olmayan basit simülasyonlar için, model geliştirmek için eski 3dsmax'ı, yani 2011'i (en son 2012 değil) kullanmak daha iyidir. Temelde daha fazla eklenti ve ihracatçı olduğu için. Dahası, mevcut tüm çerçevelerde (sharpdx, xna, xna4, slimdx, c ++ ve diğer) öğreticilere göz atmak gerçekten yararlıdır.

Son olarak benim yaklaşımım, gerçekten küçük küp parçaları kullanarak cam duvar inşa etmekti. Tabii ki simülasyonu çalıştırmak için gerçekten güçlü bir makineye sahip olmalısınız. Daha az güçlü bir şeyiniz varsa daha büyük küpler kullanabilirsiniz. Uyuyan ada devleti ile yaratılan tüm küpleri yapmak önemlidir. Şimdi, her parçanın iki boyutlu şamandıra dizisinde temsili var. Buradaki sayı, iki küp arasındaki bağlantı gücünün ne olduğunu gösterir. Taş atıldığında ve çarpışma tespit edildiğinde, duvardaki her küp için (taş kütlesi ve hız, küp kütlesi ve çarpışma merkezinden boyut ve mesafe dahil) kuvvet hesaplanır ve daire içindeki diziden çıkarılır benzeri desen. Çıkarma işleminden sonra sıfır veya daha az bağlantı mukavemetine sahip olan küpler aktif hale getirilir. Bu yavruların hareket etmesine neden olur.

Budur. Yardımın için teşekkürler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.