úloha 040: 3D morphing

Morphing sample

Ú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ý).

Náměty:

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.

BODY:

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".


[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) 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