Ú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 - ukázky (stará 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 objektu - 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 CustomScene.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()). Konstrukční funkci se předává textový parametr Param: z formuláře.

Pokud byste chtěli využít možnosti definovat scénu CS-scriptem, použijte projekt 048rtmontecarlo-script a popis scény vložte do nového .cs souboru (inspirace viz vestavěné scény z adresáře data/rtscenes/ a návod ke skriptování). I do skriptu je předáván textový parametr Param: z formuláře.

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ů.
Případný script definující scénu přiložte jako další soubor.

Termín

Odevzdat do: 13. 5. 2018.

Body

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

Projekt

Visual Studio projekt: 048rtmontecarlo nebo 048rtmontecarlo-script

Zdrojový soubor

Modifikujte a odevzdejte soubor: MonteCarloRT.cs
Do funkce InitializeScenes() zadejte své vlastní jméno!


Copyright (C) 2013-2018 J.Pelikán, last change: 2018-04-11 15:12:10 +0200 (Wed, 11 Apr 2018)