vrijdag 20 maart 2009

Statistieken generen


De implementatie van ons algoritme is zo goed als afgewerkt. Nu is het natuurlijk de bedoeling om het uitgebreid te testen. Een eerste stap die ons daarbij helpt is het bekomen van de juiste informatie. Vanaf nu genereert elke run van ons algoritme een file met daarin de rendertijd, het aantal ray castings en het aantal shadow ray castings. Verder hebben we ook een aantal tools geïmplementeerd die het verschil tussen een referentie en een gerendert beeldje bepalen alsook een waarde geven voor de fout (L2 norm van het verschil). Met behulp van deze informatie kunnen we de efficiëntie van ons algoritme vergelijken met bijvoorbeeld dat van een standaard path tracer.

Om de sterke punten en/of beperkingen van ons algoritme te bepalen zijn we bezig met het aanmaken van een aantal interessantere scenes. Een eerste voorbeeld hiervan is hieronder te zien. Deze scene bevat onder meer caustics, textures, spiegelende materialen en sterke indirecte belichting. De komende dagen zullen we nog een aantal andere scenes toevoegen om zo een zo volledig mogelijk beeld van de capaciteiten van ons algoritme te krijgen.


Room scene: referentie met Path tracer

Een andere interessante scene is de deur scene van Metropolis. Deze scene toont een kamer die enkel belicht word door de kier van een openstaande deur. Wij hebben een dergelijke scene gemodeleerd. We tonen een referentie gerendert met een pathtracer.

"Deur"scene, referentie met Path tracer(1024x1024)



donderdag 12 maart 2009

Bidirectioneel paden aanmaken

Onze implementatie van ERPT gebruikt voorlopig een path tracer om de initiële paden aan te maken. Het gebruiken van een Bidirectionele path tracer (waarbij paden zowel vanuit het oog als vanuit de lichtbron aangemaakt worden) zou in bepaalde belichtingssituaties voordelen kunnen opleveren. Klassieke voorbeelden zijn onrechtstreekse belichting en caustics. Vorig semester merkten we reeds dat caustic paden minder werden gekozen. Daarom hebben we een nieuwe path sampler geïmplementeerd die op een bidirectionele manier paden zal aanmaken.

Onze nieuwe methode is gebaseerd op de Bidirectionele Path tracer van Veach (Hoofdstuk 10) waarbij paden worden gewogen met Multiple Importance sampling. In plaats van alle mogelijke bijdragen op te tellen, kiezen we er een uit, die dan als initiëel sample aan het ERPT-algoritme wordt gegeven. Deze methode moet waarschijnlijk nog wat aangepast worden en moet nog grondig worden getest. Verder moeten we nagaan of ze daadwerkelijk betere resultaten geeft.

Enkele nieuwe Materialen


Om de robuustheid van ons algoritme te testen (en om betere scenes te maken) hebben we enkele nieuwe materialen getest. Het eerste is een Plastic materiaal gebaseerd op het Blinn-brdf model. Dit materiaal is niet puur diffuus en ook niet puur speculair. Een referentie afbeelding gegenereerd met een path tracer is hieronder weergegeven.


Plastieken bol (1024 x 1024 spp)

Het tweede materiaal is half diffuus en half spiegelend. Bij elke intersectie wordt een van de twee brdf's gekozen. Een voorbeeldafbeelding is hieronder te zien.


halfspiegelende vloer (1024 x 1024 spp)

We moeten nog grondig testen of ERPT ook op de juiste manier deze materialen behandelt.

woensdag 4 maart 2009

Verslag deze week

Deze week hebben we ons vooral bezig gehouden met een aantal kleinere (maar niet minder belangrijke) zaken.
  • Om te beginnen hebben we al onze referenties herrenderd in hdr formaat. Dankzij het gebruik van de cluster heeft dit in plaats van een aantal weken slechts een tweetal dagen geduurd.
  • Dankzij deze referentie hebben we een aantal fouten in ons algoritme gevonden. Deze fouten bevonden zich vooral in fel belichte stukken, waar de fouten werden verdoezeld doordat er voordien werd geclampt (bijvoorbeeld bij lichtbronnen).
  • Buiten deze fouten hebben we nog een aantal kleine bugs gevonden in onze path sampler die ervoor zorgden dat de afbeelding een aantal promilles te helder was.
  • Verder zijn we ook bezig met het aanmaken en perfectioneren van een bidirectionele path sampler, die er voor zou moeten zorgen dat lastige paden (zoals caustics paden) vaker worden gesampled. Een van de problemen die we hadden was dat er een factor moest worden berekend wanneer bepaalde deelpaden met de camera werden verbonden. We hebben nu pas gevonden hoe deze factor exact berekend kan worden, wat belangrijk was voor een correcte implementatie van een bidirectionele path sampler. Er is echter nog werk aan de winkel om de sampler af en juist te krijgen.
  • Een ander interessant punt is dat we onze nieuwe mutatie (die in een van de vorige blogposts werd gedemonstreerd) hebben uitgebreid om toegepast te kunnen worden op meerdere soorten paden. Dit werk is nog niet volledig klaar (er zit nog ergens een foutje in), maar het grote werk is al klaar.