Úloha 072: Šumová 3D textura

Úkolem je implementovat spojitou šumovou funkci a aplikovat ji v objemové textuře napodobující vnitřní strukturu materiálu, např. dřeva nebo mramoru. To vše v prostředí paprskového zobrazovače (ray-tracing).

Texture samples

Zdroje

Viz ústní vysvětlení na přednášce a cvičení, příklady šumových funkcí a 3D textur - stránka s ukázkami, PDF prezentace obsahující informace o šumových funkcích a texturách.

Interface ITexture

Metoda Apply() modifikuje data uložená v objektu Intersection (už po zkompletování údajů metodou Intersection.Complete()). Jakákoli data můžete přepsat, zde bude asi relevantní SurfaceColor, případně Normal (pozor, normálový vektor musíte poté opět znormalizovat). Inspirace: již existující implementace textury CheckerTexture.

Determinismus

Pozor: z několika důvodů - kvůli animacím nebo protože se výpočty paralelizují - je potřeba udržet implementaci šumových funkcí a textur deterministickou. Tj. zdroje náhody odvozovat ze souřadnic v 3D prostoru pomocí vhodných hashovacích funkcí, apod. (viz přednáška). Jako souřadný prostor by se měl použít tzv. prostor souřadnic objecktu - Intersection.CoordObject, kvůli korektnosti případných animací..
Je možné použít známé šifrovací hash-funkce nebo jednoduché hashovací funkce obsažené ve třídě MathSupport.RandomStatic.

Co modifikovat

Do zdrojového souboru MonteCarloRT.cs přidejte implementace Vašich nových tříd (šumu a vlastní textury), dále modifikujte definici scény class TestScene, do které přidáte použití Vámi implementované 3D textury. Pokud budete mít více ukázkových scén, nechte je všechny funkční a do listboxu přidejte další položky, aby se dalo vše pohodlně zkoušet bez nutnosti překládat program (viz inicializační funkci InitializeScenes()).

Co odevzdat

Musíte poslat zdrojový soubor MonteCarloRT.cs. Pokud chcete, můžete připojit několik pěkných výsledných obrázků.

Termín

Odevzdat do: 22. 5. 2016.

Body

Základ: 25 bodů, další body za zajímavé nápady, pěknou scénu apod.

Projekt

Visual Studio projekt: 048rtmontecarlo

Zdrojový soubor

Modifikujte a odevzdejte soubor: MonteCarloRT.cs
Do komentáře na první řádce napište své jméno!


Copyright (C) 2013-2016 J.Pelikán, last change: 2016-04-13 11:54:06 +0200 (Wed, 13 Apr 2016)