Težave s simulacijo tekočine in zakaj je draga?

Cilj je narediti 10 sekund zelo podrobne simulacije tekočine za posnetek od blizu pri 60 slikah na sekundo.

Po približno enem dnevu eksperimentiranja in primerjanja MantaFlowa s Flip Fluisom sem izbral slednjega, saj se MantaFlow glede na ločljivost obnaša zelo nepredvidljivo.

Računal sem, da bo voda dosegla površino bazena v 50 sličicah + potrebujete 10 sekund same animacije pri 60fps, kar ima za posledico simulacijo 650 sličic z ločljivostjo 150 milijonov voxlov. Ta simulacija na Ryzen 3700x je trajala 5 dni.

Nadalje se je izkazalo, da se mešalnik zruši v upodabljanju, če je geometrija v FlipFluids preveč poligonalna. Resnično nisem želel ponoviti simulacije pri nižji ločljivosti in znova čakati več dni. Nekaj dni sem iskal rešitev problema in celo začel razmišljati o vrnitvi na MantaFlow.

Ponovno sem konfiguriral sceno iz Cycles v Octane Render, problem je ostal, zato sem se odločil vrniti v Cycles.

Blender na splošno zelo dobro obvlada veliko število poligonov, težava je v geometriji FlipFluids. Razvijalci dodatkov priznavajo težavo na svojem GitHubu in pišejo, da je na strani Blenderja, saj ne deluje dobro z geometrijo HighPoly, izdelano v Pythonu ali kaj podobnega.

Odločil sem se poskusiti izvoziti geometrijo v Alembic, da jo lahko nato uvozim nazaj, tako da z njo ne bi smelo biti težav. Poskušal sem izvoziti na različne načine, vendar se je vedno končalo s sesutjem mešalnika. En izvoz je trajal celo več kot en dan.

Potem sem na nekem ameriškem forumu našel rešitev, kjer je pisalo, da je treba v geometriji pred izvozom samo zamenjati modifikatorje in odložiti modifikator Smooth, nakar je bila FlipFluids geometrija hitro izvozena v Alembic. Delovalo je. Geometrijo sem izvozil v Alembic, originalno geometrijo FlipFluids skril pred upodabljanjem in vidnim poljem, vendar pustil mehurčke in peno ter uvozil geometrijo Alembic.

Bil sem prijetno presenečen, da je geometrija Alembic ohranila informacije o hitrosti in MotionBlur na vodi je deloval pravilno in prizor ni več sesul. Natančneje, ni vzletelo takoj, ampak malo kasneje.

Zagnal sem render, sesul se je šele naslednji dan, po približno sto sličicah. To je normalno, lahko živiš, pravkar sem ponovno zagnal upodabljanje od tam, kjer se je ustavil.

Na mestu stika curka s površino vode je tekočina videti temna. Sploh ni "modra laguna". Težava so omejitve tehnologije PathTracing. Na tem mestu je ogromno odbojev in lomov od gladine vode in mehurčkov, upodabljalnik pa prešteje največ 12 odbojev, nato pa nariše črnino. Seveda lahko nastavite ne 12, ampak 128, 1024 itd., Toda potem bomo na rezultat upodabljanja čakali mesece. Zato sem v mehurčke dodala turkizno samosijanje, v samo vodo pa 10x manj enakega samosijanja. Podboja ni več, čas upodabljanja se ni spremenil. Upodabljam od začetka. Hkrati sem se odločil, da ne začnem od okvirja 50, ampak od okvirja 100, kjer so tresljaji vidni že na površini vode. Dodal sem tudi svetlost izvorom svetlobe in malo megle vodi.

Po nekaj časa testiranja sem opazil, da se v Blenderju 3.5 scena obnaša precej bolj stabilno kot v različici 3.6, zato sem se odločil nadaljevati z delom v njej. Materiale s kartico Mix je bilo treba na novo konfigurirati, ker v različici 3.6 deluje drugače, prve okvirje pa bo treba ponovno upodobiti, ker zdaj nekateri materiali izgledajo nekoliko drugače.

Drugi dan kasneje sem pogledal prve sekunde nastale animacije in opazil, da se rastline ne zibljejo v vetru, kot sem načrtoval, na vejah ni bilo teksture in manjkala je trava. Problem je v tem, da sem projekt naredil na prenosniku, simulacijo in renderiranje pa na PC-ju, na PC-ju na verziji 3.5 pa je bila stara verzija vegetation addons. Ponovno namestil vegetacijski dodatek, ponovno konfiguriral vegetacijo. Ponovno namestil vtičnik za travo, znova konfiguriral travo. Nastavil sem ponovno upodobitev animacije.

Odkril sem program Batch Render Creator, zahvaljujoč njemu se je število zrušitev med upodabljanjem še bolj zmanjšalo.

Samosijaj iz tega kota, blizu temne razpoke, kjer teče voda, ne izgleda zelo dobro. Na žalost blender nima zemljevida distance, ki je na voljo v 3ds Maxu in Coroni, zato boste morali znova upodabljati različico brez samosvetenja in ju zmešati v AfterEffectsu, da ne bo samosijanja v območju ​vrzel, obstaja pa tudi drugje.

Težave so bile tudi druge, na primer s položajem kamere, ker sem začetek animacije premaknil s 50. na 100. del sem moral tudi renderirati. In moral sem se ukvarjati z Geometry Nodes, da sem odrezal dno blizu vode, saj nisem naredil simulacije za celotno globino bazena.

Kot odgovor morebitnim kritikom, ki še nikoli niso naredili česa takega, a verjamejo, da je pri Houdiniju ali PhoenixFD manj težav in je vse mogoče narediti hitreje, predlagam, da najprej naredite 150+ milijonov voxel simulacije in jo upodabljate na GPU skupaj z z animirano vegetacijo in premiki, nato pa napišite, koliko časa vam je vzelo in na katere nianse in nekompatibilnosti ste naleteli.

Dodaj odgovor

Vaš e-naslov ne bo objavljen. * označuje zahtevana polja