
Houdini FLIP Akışkan Simülasyonları İçin 10 Hile: Üretim Optimizasyonu
Houdini akışkan simülasyonu yaparken güçlü bir araç setidir. Ancak akışkanları gerçekçi görünmelerini sağlamak her zaman zordur, özellikle yayın işi için.
Bu makalede, FuseFX sanatçısı Kevin Pinga'nın tekniklerini keşfederek, daha hızlı ve esnek FLIP akışkan simülasyonları oluşturmayı öğreneceksiniz.
1. FLIP Source yerine POP Source ile akışkan kaynağı oluşturun

POP Source ile akışkan kaynağı oluşturmak, tanıdık emission, activation ve velocity attributes sağlar
FLIP akışkanlığını kaynaklamanın bir ve varsayılan yöntemi FLIP Source düğümünü kullanmaktır. Bu, Volume Source düğümü tarafından DOPs içinde okunan bir VDB oluşturur. Bu yöntem, büyük muğlak bir şekilden kaynak oluştururken iyi çalışır; ancak simülasyon aşamasına geçmeden önce çok kaynak yoğun ve zaman alıcı olabilir.
Bunun yerine, VDB'lere dönüştürme olmaksızın doğrudan normal poligon tabanlı SOP geometrisini kullanmalısınız. Bu kaynak, POP Source düğümü tarafından FLIP solver'ının Sourcing girişine bağlı şekilde okunabilir, normal bir parçacık simülasyonu için bir kaynağı içeri aktaracağınız şekilde.
Bu yöntem daha sezgiseldir çünkü normal parçacıklarla çalışma zamanınız boyunca POP Source düğümündeki kontrollere aşina olmuşsunuzdur. Parçacıkları FLIP nesnesinin Particle Separation'ından bağımsız olarak kolayca kontrol edebilir ve izleyebilirsiniz.
2. FLIP akışkanları ile POP düğümleri kullanın

Houdini arayüzü, FLIP simülasyonunda ayrıntılı akışkan hareketi ve gürültü oluşturmak için eklenmiş bir POP Force düğümünü gösteriyor
FLIP temelde, aralarında bazı volumetrik advection adımları olan POP'ların bir serisidir. Ancak temel kendisi sadece parçacıklardır, bu da DOPs'daki tüm POP düğümlerinin FLIP akışkanları için kullanılabileceği anlamına gelir. Bu, önceki ipucunda POP Source düğümünü kullanarak kaynak oluşturabildik nedenidir.
POP Force düğümü, normal parçacıklarla çalışırken ilginç hareket oluştururken klasiktir. Yani bunu FLIP akışkanları ile de kullanabiliyoruz. Küçük bir gürültü miktarı bile eklemek için kullanılması daha çekici görünen bir akışkan oluşturabilir. Düşük frekanslı gürültüler, parçacık sayısını veya parçacık ayrılmasını artırmak zorunda kalmadan detay oluşturmak için de kullanışlıdır. (Çok fazla gürültü eklememesine dikkat edin, çünkü bu gerçekçi olmayan simülasyona neden olabilir.)
FLIP simülasyonlarında kullanışlı başka bir POP düğümü POP Speed Limit'tir. Bir POP Drag düğümü ile birleştirildiğinde, aksi takdirde kontrol dışına çıkabilecek yüksek hızlı parçacıkları kontrol etmek için harika çalışır.
3. FLIP limitlerini ayarlamak için Bounds qL kullanın

Bounds qL'deki parametreleri referans almak simülasyon limitlerini ayarlamaya yardımcı olur
Bounds qL düğümü birçok basit özelliği paketleyen çok yararlı bir araçtır. qLib adlı daha büyük açık kaynaklı Houdini araç setiyle birlikte gelir. Çoğu stüdyoda qLib varsayılan olarak kurulmuştur. Kişisel üretim ortamınızda değilse, GitHub'daki talimatlara uyarak kendiniz kurabilirsiniz.
Kevin Pinga, Bounds qL'yi öncelikle FLIP ve Pyro simülasyonları için hacim limitlerini ayarlamak için kullandığını söyler. Bu, standart Bound düğümünden bir adım ileri, çünkü canlandırılan bir girişe dayalı olarak sınırlar oluşturma seçeneğini içerir.
En yararlı özellik Output: Values checkbox'tır ve bu kutuyu işaretlediğinizde sınırlayıcı kutunun boyut ve merkez değerlerinin kilidini açar. Bu değerler daha sonra FLIP solver'ının Volume Limits sekmesindeki herhangi bir parametreye veya sınırlayıcı kutu gerektiren diğer işlemlere kopyalanabilir. Merkezileştirilmiş sınırlayıcı kutu bilgisine sahip olmak, kullanıcı hatasını önleyebilir ve daha prosedürel setupleri oluşturmaya yardımcı olur.
4. FLIP solver'ında yararlı öznitelikleri etkinleştirin

FLIP özniteliklerini etkinleştirme: Houdini'deki pek çok şey gibi, çözüm sadece birkaç onay kutusu uzakta!
FLIP solver'ında FLIP simülasyonlarınızda açmanız gereken üç ana parametre vardır: ID, age ve vorticity. Bunlar simülasyon sonrası ince ayarlamalar yapmak için kullanılabilir ve hepsi FLIP Solver'ında Behavior ve Vorticity sekmelerinde bulunabilir.
Çoğu sanatçı zaten ID özniteliğine ve ne kadar güçlü olabileceğine aşinadır. Veri boyutunuz ek bir öznitelik önbelleğe almak için küçük bir darbe alabilir, ancak bu bilgilerin mevcut olması her zaman iyi bir fikirdir.
Age özniteliğini Age Particles checkbox'u (ayrıca life özniteliğini dışarı aktarır) aracılığıyla etkinleştirerek simülasyonun zaman içinde nasıl göründüğünü kontrol edebilirsiniz. Bu, özellikle sürekli yayılan bir kaynağınız varsa yararlıdır.
Vorticity özniteliği, whitewater gibi ikincil simülasyonları kaynaklamak için kullanışlı ve gölgelemeyi değiştirmek için harikadır.
5. Başarısız simülasyonları kurtarmak için simülasyon sonrası ince ayarlamalar yapın

Nokta bulutunun yoğunluğuna dayalı parçacık boyutunu ayarlamak için basit bir VEX wrangle
Bir FLIP simülasyonunun çıktısını son sonuç olarak ağır bir şekilde kullanmaya yönelik bir eğilim vardır. Bu ideal bir iş akışı olsa da, zaman kısıtlamaları nedeniyle, sorunları düzeltmek için yeniden simüle etme lüksüne her zaman sahip değilsiniz. Böyle durumlarda, FLIP parçacıklarının kendilerine simülasyon sonrası ince ayarlamalar yapılması simülasyonu 'kurtarmaya' yardımcı olabilir.
Ayrıca, simülasyonu yeniden zamanlamak için Retime düğümünü kullanabilmeniz için ID özniteliğini eklemelisiniz.
Pinga, orta çözünürlüklü simülasyonlar çalıştırırken karşılaştığı başka bir yaygın sorundan bahseder. Bu, sıvı damlacıklarının boyutunun simülasyonun yoğun alanlarında iyi olmasıdır, ancak daha seyrek alanlarda çok büyüktür. Böyle durumlarda, pcfind: işlevini kullanan basit bir wrangle seyrek alanları işaretlemeye ve pscale değerini düşürmeye yardımcı olabilir.
Wrangle'da kullanılan kod parçacığı aşağıdadır:
int pc[] = pcfind(0,'P',@P,chf('max_dist'),chi('max_pts'));
@pscale *= float(len(pc))/ch('max_pts');
6. Yüksek çözünürlüklü çarpışma yüzeyleriyle başa çıkmak için xyzdist kullanın

xyzdist() ve primuv() kullanarak parçacıkları çarpışma yüzeyine doğru itme
Bu başka bir simülasyon sonrası ince ayarlamadır. primuv() ile birlikte, xyzdist() en yararlı olanıdır.
VEX veya VOPs bağlamında, xyzdist() bir yüzey üzerinde en yakın enterpolasyonlu noktaya olan mesafeyi hesaplar. primuv() ile birleştirildiğinde, nesnenin parametrik UV'lerinden herhangi bir özniteliği çıkarabilirsiniz!
Yukarıdaki örnek durumunda, yüksek çözünürlüklü çarpışma yüzeyinin konumunu çıkarırız ve parçacıkları yüzeye doğru itmek için kullanırız. Bazı durumlarda, bunu doğrudan örgülenmiş yüzeye de çalıştırabilirsiniz, özellikle çarpışma yüzeyinin şeffaf olduğu karelerde (örneğin, berrak bir bardağa sıvı dökülme). Mesafeyi çok küçük bir değere sıkıştırmak hesaplamaları hızlandırmaya yardımcı olacaktır.
Wrangle'da kullanılan kod parçacığı:
//initializing variables
int p_prim;
vector p_puv;
//getting the distance and the parametric position of the closest point
float dist = xyzdist(1,@P,p_prim,p_puv);
vector P2= primuv(1,"P",p_prim,p_puv);
//mixing the P of the points, influenced by a mapped distance
@P = fit(dist,chf("min_dist"),chf("max_dist"),P2,@P);
Üretimde daha pratik bir kullanım var. Simülasyon sırasında daha düşük çözünürlüklü bir çarpıştırıcı kullanırsınız ve ardından bu işlevi simülasyon sonrası wrangle'da çalıştırarak akışkanın yüksek çözünürlüklü bir çarpıştırıcıyla etkileşime giriyormuş gibi görünmesini sağlarsınız.
7. ID ile sorunlu parçacıkları silin

ID öznitelikleri aracılığıyla sorunlu parçacıkları doğru şekilde silin
Bu, simülasyonun %98'i son duruma yakın olduğu ancak kalan %2'nin parçacıklarının çalışmadığı durumlarda basit fakat etkili bir hilenin. Önceki ipuçlarında bahsedilen ID özniteliğini depoladıysanız, bunu sorunlu parçacıkları bir kenara atmak için kullanabilirsiniz. ID olmadan, nokta sayısı kareden kadreye değiştiğinde silinecek doğru parçacıkları işaretleyemezdiniz.
Bunu nokta seçim moduna giderek ve numpad'da [9] tuşuna basarak sorun giderebilirsiniz. Bu, Group Selection pane'i açar. ID'ye göre seçim yapabilmeniz için gear simgesini tıklayın ve Attributes > id'yi seçin. Şimdi viewport'ta kaldırmak istediğiniz parçacıkları seçebilir ve [Delete] tuşuna basabilirsiniz. Bir Blast düğümü otomatik olarak nokta numarası yerine nokta ID'si referans alınarak oluşturulacaktır.
8. Seyrek bölgeleri güçlendirmek için yeniden oluşturmayı kullanın

Simülasyonun seyrek alanlarını doldurmak için yüzey oversampling'ini artırın
Üretimde, bazen son render doğru görünmediği bir sorunla karşılaşacaksınız, çünkü yeterince parçacığa sahip değildir. Bu, orta çözünürlüklü FLIP sim kullanılması nedeniyle oluşur.
Böyle durumlarda, parçacık ayrılmasını değiştirmek yerine yeniden oluşturma parametrelerini artırmalısınız. Varsayılan olarak yeniden oluşturma zaten açıktır, ancak Surface Oversampling parametresini artırmak parçacıkları yayarak seyrek alanlarda parçacık sayısını artırmaya yardımcı olabilir. Bu şekilde, simülasyonunuzun genel görünümünü korurken örgülenmiş akışkanın yanlış görünmesini önlemek için yeterli parçacığa sahip olursunuz.
9. Orijinal FLIP simülasyonunu doğrudan farklı bir eleman olarak kullanın

Orijinal FLIP simülasyonunu doğrudan whitewater olarak işleme
Whitewater oluşturmanın geleneksel yolu FLIP akışkanını simüle etmek ve ardından bunun üzerine Whitewater solver'ı çalıştırmaktır. Ancak ikinci adım her zaman gerekli değildir, özellikle sıçramalar ve su jetleri (bir kırık itfaiyeci musluğu veya sıcak küvette su altında düşün) gibi hızlı hareket eden akışkanlar için. Buna ek olarak, parçacıkları örgülerken akışkanın doğru görünmesini sağlamak oldukça zor olabilir.
Ancak, FLIP simülasyonunu alabilir ve doğrudan whitewater shader'ı ile işleyebilirsiniz. Parçacıkların kendilerini işleyebilir veya bunları VDB'ye rasterize edebilir ve sonucu bir hacim olarak işleyebilirsiniz.
10. Simülasyonu ve önbellekleri optimize edin

Yüksek çözünürlüklü simülasyonlarda çalışmayı hızlandırmak için File Cache düğümünde Delay Load Geometry checkbox'unu kullanın
Yüksek çözünürlüklü FLIP simülasyonlarının yaşadığı zorlulardan biri, oluşturdukları büyük miktarda verilerle başa çıkmaktır. Yaygın bir uygulama, bir simülasyonun herhangi bir bölümünü önbelleğe almadan önce ihtiyacınız olmayan tüm öznitelikleri silmektir.
Bellek ayakiuzu azaltmaya yardımcı olmak için yapabileceğiniz başka bir şey, kameranın frustum'u dışındaki parçacıkları ayıklamaktır. Ayrıca, işleme için hazır olan geometriniz varsa, bunu önbelleğe almak ve Delay Load Geometry checkbox'unu açmak iyi bir fikirdir. Mantra geometriyi IFD dosyasına gömeceğine, bunun yerine diskteki dosyaya referans verilecektir. Bu, yükleme sürelerini azaltmaya yardımcı olacak ve ayrıca IFD oluşturma sürelerini ve dosya boyutunu önemli ölçüde azaltacaktır.
Sonuç
Yukarıdakiler Kevin Pinga'dan Houdini'nin FLIP solver'ı ile akışkanları simüle etme konusunda birkaç hilenin. Bu ipuçları ve hileler, yüksek bir kalite seviyesini korurken, zamanında akışkan sahneleri verirken akışkan simülasyonlarınızı daha verimli bir şekilde yönetmenize yardımcı olabilir.
Super Renders Farm, tamamen bulut tabanlı bir Houdini render çiftliği dir. Yazılımımız Houdini ile entegre olur ve sizi basit bir eklenti aracılığıyla çiftlikle bağlar. Ayrıca, herhangi bir sorunla karşılaştığınızda sizi destekleyecek gerçek bir insan ile 24/7 destek hizmetine sahipsiniz.
Kaynak: cgchannel.com
Ayrıca Bkz.:
- Bifrost ve USD Iyileştirmeleri ile Maya 2022.2 Yayınlandı
- Maxon Cinema 4D, Redshift, Trapcode ve Daha Fazlasını Güncelliyor
- Unity ArtEngine 2021.10 Fiyat İndirimi ile Yayınlandı
FAQ
Houdini FLIP simülasyonlarında POP Source'ın FLIP Source'dan avantajları nelerdir?
POP Source, kaynak oluştururken daha sezgisel kontrol sağlar ve VDB dönüştürme başına olmayan poligon tabanlı geometri ile çalışır. Bu, prosedürel iş akışları için daha verimlidir ve kaynak özniteliklerini parçacık ayrılmasından bağımsız olarak yönetmenize olanak tanır.
FLIP simülasyonlarında hangi POP düğümleri kullanılabilir?
Houdini'deki neredeyse tüm POP düğümleri FLIP akışkanları ile kullanılabilir. En yaygın olanları POP Force (gürültü ve detay eklemek için), POP Speed Limit (yüksek hızlı parçacıkları kontrol etmek için) ve POP Drag'dır.
Bounds qL nedir ve FLIP simülasyonlarında neden önemlidir?
Bounds qL, açık kaynaklı qLib araç setinin bir parçasıdır ve hacim limitlerini ayarlamaya yardımcı olan merkezileştirilmiş sınırlayıcı kutu bilgisi sağlar. Bu, FLIP ve Pyro simülasyonlarında prosedürel setupleri oluşturmaya ve kullanıcı hatalarını azaltmaya yardımcı olur.
ID, age ve vorticity öznitelikleri FLIP solver'ında nasıl kullanılır?
ID özniteliği simülasyon sonrası parçacık seçimi ve yeniden zamanlama için kullanılır. Age özniteliği simülasyonun zaman içinde nasıl göründüğünü kontrol eder. Vorticity özniteliği ikincil simülasyonlar (whitewater gibi) kaynaklamak ve gölgelemeyi değiştirmek için faydalıdır.
FLIP simülasyonlarında yüksek çözünürlüklü çarpışma yüzeyleriyle nasıl başa çıkılır?
Üretimde, simülasyon sırasında düşük çözünürlüklü bir çarpıştırıcı kullanın. Ardından simülasyon sonrası wrangle'da xyzdist() ve primuv() işlevlerini kullanarak parçacıkları yüksek çözünürlüklü yüzeye doğru itevezin. Bu, hesaplama maliyetini azaltırken yüksek kaliteli sonuçlar sağlar.
Simülasyondan sonra sorunlu parçacıkları nasıl hızlı bir şekilde silebilirim?
ID özniteliğini etkinleştirdiğinizde, Houdini'de nokta seçim moduna gidin (numpad [9]) ve Attributes > id'ye göre seçim yapın. Sorunlu parçacıkları seçin ve silin — Blast düğümü otomatik olarak nokta ID'si referans alınarak oluşturulacaktır.


