Akışkanları, Ateşi ve Dumanı Gerçek Zamanlı Simüle Etme Teknolojisi
(andrewkchan.dev)- Ateş ve duman gibi akışkanları gerçek zamanlı simüle etmeye ilişkin matematik, algoritmalar, yöntemler ve kaynak kodu notları (GitHub)
1. Akışkan simülasyonu
- Ateşi simüle etmeden önce akışkanı simüle etmek gerekir
- Akışkanın sıkıştırılamaz ve viskoz olmadığını varsayarsak problem büyük ölçüde basitleşir
1.1 Temel akışkanlar dinamiği
- Uzayın DDD bölgesi akışkanla doludur ve ttt zamanında akışkanın hızı u(x,t)'dir
- 2D hız alanı u, N×N bir grid ile ifade edilebilir
- Akışkana bir damla boya bırakılırsa ne olur?
- Boyanın yoğunluğunu temsil eden skaler alan ψ(x,t) tanımlanır ve bunun akışkanın hızıyla taşınmasına advection denir
- advection'ı hesaplamak için Naive Method, her grid noktasını hareket ettirip en yakın grid noktasını güncellemektir; ancak bunu paralelleştirmek zordur ve yöntem kararsızdır
Advection için kısmi diferansiyel denklem
- advection'ı kararlı biçimde türetmek için açık bir PDE ifadesi gerekir
- Sabit uzay bölgesi WWW içindeki toplam boya kütlesi ∫WψdV'dir ve zamana göre kütle değişimi ddt∫Wψ(x,t)dV'dir
- Kütlenin korunumu yasasına göre ddt∫WψdV=−∫Sψu⋅ndA olur
- Diverjans teoremi uygulanınca ∫W[∂ψ∂t+∇⋅(ψu)]dV=0 elde edilir ve birim alt bölge W=dV için ∂ψ∂t+∇⋅(ψu)=0 olur
- Bu, çözmemiz gereken açık PDE'yi verir
Advection için kararlı yöntem
- eqn. (1) yakından incelendiğinde, sağ tarafın −u yönündeki yönlü türev olduğu görülür
- Semi-Lagrangian advection adı verilen bu yöntem 1999'da Jos Stam tarafından geliştirildi
- Her grid noktası yalnızca bir kez güncellendiği için paralelleştirmesi çok kolaydır ve koşulsuz olarak kararlıdır
1.2 Navier-Stokes denklemi
- Akışkanın skaler özelliklerinin zaman içinde nasıl evrildiğine dair bir model bulduk; peki akışın kendisi nasıl davranır?
- Navier-Stokes denklemi, akışkan içindeki herhangi bir noktada hız alanı u'nun zaman içinde nasıl değiştiğini tanımlar
- Akışkanın viskoz olmadığını varsaydığımız için μ=0'dır ve dış kuvvetler de şimdilik göz ardı edilebilir
- Böylece elimizde yalnızca self-advection ve basınç olmak üzere iki terim kalır
- Her zaman adımında bu terimler sayısal olarak hesaplanıp toplanarak akışkan simüle edilebilir
Basınç çözümü
- Yeni hız alanının sıkıştırılamazlık kısıtını sağlayıp sağlamadığı bilinmediğinden, basınç terimi p bunu düzeltmelidir
- Bunun için Poisson denklemini çözmek gerekir
- Poisson denklemini çözmek için Jacobi yöntemi gibi yinelemeli algoritmalar kullanılabilir
- Jacobi yöntemi GPU üzerinde paralel çalıştırılabildiği için uygulanması çok basittir
Özet: Navier-Stokes simülasyonu
- Navier-Stokes matematiği biraz karmaşık olabilir, ancak denklemleri çözerek akışkan simüle etmek birkaç temel güncelleme adımına indirgenebilir
1.3 Vorticity confinement
- Hız alanını bir grid üzerinde saklamak çok kullanışlıdır, ancak grid noktaları arasındaki değerler enterpole edilirken istenmeyen sayısal yumuşatma oluşur
- Bunun sonucunda akıştaki türbülanslı girdaplar yok olur ve ortaya genellikle aşırı yumuşak, "sıkıcı" bir akış çıkar
- Vorticity confinement, kaybolan bu girdapsallığı yeniden güçlendirme sürecidir
- Vorticity confinement, helikopter pervane kanatlarının son derece karmaşık akış alanını çözmek için tasarlanmıştır
- Vorticity, u'nun curl'ü alınarak her noktada hesaplanır ve bunu güçlendirmek için her noktaya dairesel akış eklenir
Curl-noise turbulence
- Curl noise, vorticity confinement'a benzer bir yöntemdir; ancak hız alanındaki vorticity'yi ölçüp güçlendirmek yerine, bir noise fonksiyonu kullanarak skaler vorticity alanını en baştan üretir
- Hızlı hareket eden ve çok türbülanslı akışkanlar, vorticity confinement ve curl noise'dan en fazla fayda sağlar
2. Ateş simülasyonu
- Ateş ve dumanı simüle etmek için yakıtı ve sıcaklığı temsil eden kanallar eklemek, ayrıca ısı üretmek için yakıtın yanmasını modellemek gerekir
- Ayrıca çok sıcak akışkan bölgelerinin termal kaldırma modeli uyarınca yükselmesini ele almak ve alevleri doğru şekilde render etmek gerekir
2.1 Temel yanma modeli
- Kimyasal olarak ateş, yakıt maddesinin oksidasyon tepkimesi sonucu oluşur ve ısı ile ışık yayar
- Yakıt yoğunluğunu temsil eden skaler alan ρ ve sıcaklığı temsil eden skaler alan T tanımlanır
- Yakıt yanarak sisteme sıcaklık ekler ve sıcaklık sıcaktan soğuğa doğru yayılır
- Isıl taşınım, bu iki sürecin birleşimi olarak tanımlanır ve bunu modellemek için gereken matematiksel modele zaten sahibiz: advection!
GN⁺ görüşü:
- Bu yazı, ateş ve duman gibi akışkanların gerçek zamanlı simülasyonundaki karmaşık süreci açıklıyor; bu da bilgisayar grafikleri ve oyun geliştirme için çok önemli bir konu.
- Son dönemde GPU'lardaki gelişmeler, karmaşık akışkan simülasyonlarının gerçek zamanlı işlenmesini mümkün kıldı; bu da görsel olarak etkileyici oyunlar ve film özel efektleri üretimine katkı sağladı.
- Yazı, Navier-Stokes denklemi ve vorticity confinement gibi ileri matematik kavramlarını ele aldığı için, bu alana ilgi duyan başlangıç seviyesindeki yazılım mühendisleri için faydalı bilgiler sunuyor.
1 yorum
Hacker News yorumu