Úvod: morphing mezi dvěma bitmapovými obrázky je celkem běžnou operací. O něco
složitejší je morphing mezi trojrozměrnými objekty v povrchové reprezentaci.
Aby mohl být tvar jednoduše interpolován, je nutné, aby zdrojový a cílový objekt mely
stejnou topologii (o to se zde nebudete muset starat). Pokud tomu tak není, vytváří
se pro každý objekt nová reprezentace se shodným tvarem jako původní objekt a jednotnou
(unifikovanou) topologií pro oba, což dle složitosti geometrie nemusí být snadné.
Interpolace sama také není bez problémů - u prímočarých přístupů dochází
k řadě nehezkých jevů jako je sebeprotínání objektů nebo velké změny objemu v mezikrocích.
Zadání: navrhněte a implementujte interpolační algoritmus pro morphing trojúhelníkových sítí. Mel by adresovat co nejlépe problémy sebeprotínání a nepřirozených deformací (minimalizace energie nutné k přeměně jednoho objektu na druhý).
Implementace: jako kostru aplikace použijte projekt 040morph3d
z repository grcis. Zajímat vás bude hlavně
soubor Morph.cs a v něm metody AssignObjects() a
Interpolate().
Metoda AssignObjects() je určena k předzpracování vstupních dat a metoda
Interpolate() aktualizuje geometrii morfovaného objektu vzhledem k aktuálnímu
kroku.
Odevzdání: jako řešení úlohy posílejte mailem modifikované soubory - zejména soubor Morph.cs. Postupy a nápady, na které jste pyšní a chcete za ně bonusové body, řádně popište.
TERMÍN: do 26. 2. 2012
PROJEKT: 040morph3d
ZDROJOVÝ SOUBOR: Morph.cs, případně i další
DATA: přímo v repository v adresáři data jsou dva soubory: monkey1.obj a monkey2.obj. K čajníčku si můžete stáhnout alternativní orientaci teapot2.obj.
ŘEŠENÍ POSÍLEJTE Honzovi Kolomazníkovi, do předmětu připište "040morph3d".
Copyright (C) 2011-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