úloha 056: Interaktivní ovládání kamery

Cílem je navrhnout algoritmus ovládání "avatara" pro interaktivní průlet 3D scénou - za použití myši a klávesnice.

Základem poslouží projekt 056avatar z repository grcis. Je připravena aplikace, která umí 3D scénu načíst ze souboru (Wavefront OBJ) nebo ji vygenerovat algoritmem (zde se může uplatnit Váš kód z úlohy 057). Scéna se poté zobrazí v OpenGL okně a vaším úkolem bude naprogramovat interakci uživatele tak, aby si mohl objekt (scénu) pohodlně prohlížet. Je možné okopírovat si do prostoru více instancí scény, aby bylo procházení zajímavější ("instancing").

Náměty: vždycky je příjemná trochu "fyzikálně věrná" simulace, tj. například pozvolné zastavování a rozjíždění avatara, setrvačnost v translačním i otáčecím smyslu...

Technicky: pro každý snímek (jedno zobrazení scény) budete počítat transformační matici GL_MODELVIEW, nastavuje se uvnitř metody SetCamera(). Můžete použít funkci LookAt() nebo jakoukoli jinou vhodnou knihovní funkci. Uživatelské interakce (a jiné potenciálně modifikovatelné funkce) budou zejména:

Zájemci mohou modiikovat i metodu vyvolávanou při změně rozměru okna (resize) SetupViewport(). Zde je potřeba nastavit perspektivní projekční matici GL_PROJECTION (v pilotní implementaci je nastaven zorný úhel 1 radián) a zavolat Viewport().

Pozor: aplikace 056avatar používá tzv. VBO (Vertex Buffer Objects), tedy nemusí s OBJ scénami fungovat na hodně starých GPU (staré notebooky). V takovém případě se vám nakreslí pouze jeden žlutý trojúhelník.

Poznámka: je nutné, abyste v komentářích programu nebo ve zdrojáku podrobně vysvětlili, jak se má kamera (avatar) ovládat. Bez popisu ovládání nebudu řešení úlohy akceptovat..

TERMÍN: do 1. 1. 2013

BODY: 8 až 16 bodů (více bodů za pohodlnější a intuitivnější ovládání, samozřejmě funkční)

PROJEKT: 056avatar

ZDROJOVÝ SOUBOR: Avatar.cs


[Cvičení NPGR003]  [Návody k zápočtům v C#]  [Přednášky a semináře]  [Odkazy na demonstrace]

Valid XHTML 1.1 Copyright (C) 2010-2012 J.Pelikán, last change: $Date: 2014-10-03 15:44:39 +0200 (Fri, 03 Oct 2014) $
Send comments/requests to pepca.at.cgg.mff.cuni.cz