Úkolem je implementovat alternativní generátor paprsků (kameru, interface ICamera) do našeho paprskového zobrazovače. Kameru začleňte do ukázkové scény a vyzkoušejte, můžete pro lepší demostraci vyrobit vlastní bohatší scénu.
Jako základ poslouží projekt 048rtmontecarlo nebo 048rtmontecarlo-script
z repository grcis.
Je připravena aplikace, která v jednoduchém okně zobrazuje obrázek spočítaný
ray-tracingem. Definice scény je v kódu, tu budete muset pro testování
Vaší nové kamery upravit (minimálně vyměnit tu kameru).
Pro doplnění Vaší implementace použijte zdrojový soubor
MonteCarloRT.cs, do něj budete psát Váš nový kód a nakonec mi jej odevzdáte.
I definici scény (CustomScene.TestScene()) tam najdete. Této konstrukční
funkci se předává též textový parametr Param: z formuláře.
Pokud byste chtěli využít možnosti definovat scénu 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/).
I do skriptu je předán textový parametr
Param: z formuláře.
Názorný přehled relevantních komponent objektového návrhu našeho ray-traceru najdete také v této prezentaci.
Rybí oko - nelineární objektiv s velmi
širokým zorným polem (pozor, zde budete asi muset využít možnosti vrátit hodnotu false z API
funkce GetRay() - pro ty body v průmětně, pro které neexistuje zobrazovací paprsek..).
Válcová perspektiva - přímý výpočet
širokoúhlého (panoramatického) obrázku, místo roviny se promítá do části pláště válce, v extrémním
případě do celého 360° okolí kolem "fotoaparátu".
360°/180° "equirectangular" panorama -
panorama obsahující kompletní pohled do 3D světa z místa pozorovatele.
Pro použití v realtime/HDR počítačové grafice se používá jednoduché mapování [azimut,výška].
Všesměrová fotografie -
existuje mnoho specíálních objektivů a snímacích systémů, můžete se některým inspirovat..
Musíte poslat upravený zdrojový soubor MonteCarloRT.cs. Zajímavá nastavení a polohy kamery začleňte do nových definic scén přístupných přes list-box v naší aplikaci. Připojte pár komentářů popisujících Váš přístup, čím jste se inspirovali, apod.
Pokud chcete, můžete Vaši scénu odevzdat ve formě CS-scriptu (viz projekt 048rtmontecarlo-script), tento script přiložte jako druhý soubor. Formát scriptu: viz vestavěné scény z adresáře data/rtscenes/.
Odevzdat do: 15. 4. 2018
Základ: 18 bodů (fungující generátor paprsků, minimálně jedna vlastní testovací scéna),
dalších až 8 bodů: bonus za zajímavost kamery nebo její implementace, parametrizace
kamery
Bunusové body za zajímavost scény budu udělovat v rámci
úlohy 061, musí však být scéna zadána pomocí scriptu!
V průvodním mailu mne upozorněte na to, že byste chtěli přidělit bonus za scénu.
Visual Studio projekt: 048rtmontecarlo nebo 048rtmontecarlo-script
Modifikujte a odevzdejte soubor: MonteCarloRT.cs
Do funkce InitializeScenes() zadejte své vlastní jméno!
Copyright (C) 2011-2018 J.Pelikán, last change: 2020-05-16 23:04:24 +0200 (Sat, 16 May 2020)