vrijdag 1 mei 2009

Marching Cubes

Terwijl Daniel verder werkt aan de koppeling tussen het heightfield en de particles heb ik eens snel naar een render techniek gekeken. Met Marching Cubes samplen we het density veld van onze simulatie op de hoekpunten van een kubus. Ofwel valt een hoekpunt binnen het watervolume ofwel niet. Afhankelijk van de configuratie van de verkregen kubus berekenen we triangles en normalen volgens volgende tabel:



Een CUDA GPU implementatie van dit algoritme was reeds beschikbaar in de CUDA SDK. Ik heb deze geïntegreerd in ons particle systeem om het resultaat eens te bekijken. Een simulatie van 6000 particles en een 32x32x32 Marching Cubes grid draait nu aan 15 FPS. Meer particles nemen heeft niet veel effect, maar dan is er wel een groter grid nodig zodat het oppervlak niet te ruw wordt. De gridgrootte van het Marching Cubes algoritme is duidelijk de bottleneck.

Geen opmerkingen: