donderdag 26 maart 2009

Status

Vorige semester bestudeerden we 3D particle based fluid simulations voor interactieve toepassingen. Hiertoe gebruikten we de grafische kaart als performante rekeneenheid. Dit semester gingen we opzoek naar een koppeling tussen 3D en 2D fluid simulation technieken.

2D technieken
Deze zijn beperkt maar kunnen wel op een efficiƫnte manier wateroppervlaktes simuleren. Om te beginnen zochten we een goede 2D representatie. We onderzochten volgende alternatieven:
  • Wave Particles: hier worden ook particles gebruikt wat de interactie tussen onze particles wel eenvoudig kon maken. Maar de golven die hiermee gemodelleerd worden zijn niet het type naarwaar wij opzoek waren en boden weinig flexibiliteit.
  • Heightmap: deze structuur is heel eenvoudig te implementeren. Het water wordt voorgesteld uit kolommen, waar makkelijk water aan toegevoegd kan worden, of uit weggenomen kan worden.
  • Deep water: hierbij modelleren we golven. De interactie met particles is niet vanzelfsprekend.
  • Shallow Water: een techniek gelijkaardig aan de heightmap, alleen is deze meer fysisch correct en wordt er ook rekening gehouden met de zeebodem. We opteerden voor deze techniek
Shallow Water
De Navier-Stokes vergelijkingen worden voor Shallow Water vereenvoudigd met de volgende veronderstellingen:
  • Het water kan voorgesteld worden door een heightfield (dus geen splash of overhellende golven)
  • De verticale snelheidscomponent van de watermoleculen kan genegeerd worden.
  • De horizontale snelheidscomponent is in een verticale kolom overal gelijk
Om de bekomen vergelijkingen op de GPU op te lossen kunnen we Jacobi Iteration gebruiken.

2D-3D koppeling
Om toch kleinschaligere effecten te bereiken zullen we het wateroppervlakte van onze heighfield representatie samplen met SPH particles. Deze zorgen voor overhellende golven en splash. De particles liggen als het ware op het heightfield. Wanneer er veel water aanwezig is worden de particles geabsorbeerd door het heightfield. Zo zal de simulatie geen performantie verliezen bij grote volumes water.



Enkele mogelijkheden die deze koppeling zou bieden:
  • Het vullen van een groot volume water
  • Het simuleren van een rondvarende boot, met realistische golven en toch kleinschalige effecten zoals splash
  • Breaking waves op een strand
Op het ogenblik zijn we de koppeling tussen beide technieken aan het uitwerken. Hiervoor moeten we nog twee belangrijke dingen realiseren:
  • Particles opnemen in het heightfield wanneer er teveel zijn of wanneer ze praktisch stil liggen op het oppervlak
  • Een vaste band van particles voorzien rond het heightfield

Geen opmerkingen: