2011-08-05 26 views
7

Bir yükseklik haritası üzerinde hareket eden bir sıvı hacmine yaklaşmanın bir yolunu arıyorum. Düşünebildiğim en kolay çözüm, küçük çaplı (< 0.1 m) çok sayıda çizilmemiş küre olarak tahmin etmektir. Daha sonra kürenin “üst” ünde suyun yüzeyini temsil eden görünür bir düzlemi, dinlenmeye geldikleri yerlere yerleştiririm. Benim bildiğim kadarıyla, yönetilen hiçbir fizik motoru, yerleşik bir sıvı simülatörü içermez, bu yüzden soru. Uygulama, kürelerin hareketini simüle edebilen JigLibX gibi bir fizik motoru kullanmaktan ibaret olacaktır. Düzlemlerin yüksekliğini belirlemek için, bir gruplamanın en üst katındaki her kürenin maksimum yüksekliğini ortalama olarak düşünmeyi düşünüyordum.Bir yükseklik haritası üzerinde sıvı akışını simüle etme

Performansın harika olmasını beklemiyorum, ancak gerçek zamanlı olarak ulaşılabilir mi? Değilse, bu simülasyonu akış hatlarını önceden pişirmek için kullanabilir miyim?

Umarım bu mantıklıdır, bunun uygulanabilir olup olmadığını veya bu yaklaşıma daha iyi bir yol olup olmadığını düşünmek istiyorum.

herhangi bir yardım için teşekkürler, Venatu

onun alakalı, benim hedef platformu XNA 4.0 ise C# kullanarak. Yalnızca Windows sürede bu noktada PhysX/Havok simülasyon için olasılıklar vardır, ama bu yüzden

(yapardım yönetilen bir çözümü tercih edin)

+0

(http://vterrain.org/Water/). Özellikle nehir simülasyonu üzerine çalışmalar. – Bart

+0

Tam olarak tanımladığınız gibi bir çok küçük küre ile bir şey uygulamak üzereyim! Plan, kürelerin araziyi aşındırmasına izin vermek ve nehir vadilerini kesmeyi umuyor. –

cevap

2

Gerçekte, akıcı bir dinamik dinamiği gerçek zamanlı olarak henüz PhysX gibi bir şey kullanmadan görmedim - muhtemelen ihtiyaç duyulan hesaplamalar çok karmaşık! Gördüğüm kadarıyla yaklaştığınız problem, yerleştikleri tüm alanların dinlenme temasıyla gelecektir, bu da çok fazla işleme gücü gerektirir. Dinlenme temas noktalarının birçoğu, en güçlü masaüstlerinde bile çok hızlı bir şekilde performansa dönüşmesiyle ünlüdür. Eğer bu rotadan aşağıya gidiyorsanız, o zaman suyun bir parçasına uygulanan kuvvetin yaylara yayılması için yayları kullanacağı yay tabanlı fiziği kullanarak sıvıyı elastik ancak katı bir gövde olarak modellemenizi tavsiye ederim. Bu size yaylar için bir kırılma noktası belirleme ve vücudu iki veya daha fazla cisme ayırma seçeneği sunar (ve geri gelmek için tersi). Bu size sprey gibi şeyler için temel sağlayabilir. Ayrıca performans açısından daha çok yönlü bir yaklaşımdır, çünkü modelinize yaklaşmak için kullandığınız parçacık ve yay sayısını seçebilirsiniz.

Bu büyük ve karmaşık bir konu, ama umarım en azından bazı anlayış sağladı!

1

Akışkanları gerçek zamanlı olarak simüle etmek için en popüler yöntem Pürüzsüzleştirilmiş parçacık hidrodinamiği'dur.

Çeşitli faydalı linkler: Ayrıca

http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics

http://http.developer.nvidia.com/GPUGems/gpugems_ch38.html

http://www.plunk.org/~trina/thesis/html/thesis_toc.html

da böyle süpürme-ve- gibi bazı özel geniş fazlı çarpışma algılama algoritmaları gerekir kendisini simülasyon erik veya karma hücreler.

Ve haklısınız, akışkan dinamikleri için tamamlanmış 2d çözümleri yoktur.