Muška jenom zlatá, druhý díl

1.4.2008· Autor: Pavel Zoch, Ph.D.· Počet komentářů: 1

V putování po automatických křidýlkách jsme dospěli do stavu, kdy máme docela pěkně nastavenou vazbu komplexní animace křídla založenou na čase animace. Jenže nemáme ještě připravené křídlo druhé a také jsme si slíbili nějakou tu variantu založenou na hodnotě vibrace. Dnešní téma je tedy dané...

Zrcadlo

Máme tu máme ještě jeden aspekt, který bychom mohli využít. A to aspekt „zrcadlové“ kopie rotace.

Takže co pro to potřebujeme? Další vstupní data, jak jinak Ta budou následující:

Second wind > Odkaz
Second wind activator > bool operace
H neg. > bool operace
P neg. > bool operace
B neg. > bool operace

První pole bude sloužit načtení objektu, který má „rotovat v zrcadle. Druhý celé toto chování aktivuje (ve výchozím stavu je hodnota vypnutá) a pak jen zde máme přepínače negace hodnoty rotace, řízení zda hodnota „+“ má být převedena na „-“, protože ne vždy se tak musí stát.

06

Přejdeme opět do XPressa, můžeme si vytvořit nový uzel Osy. Připravíme si to jako separátní systém (jen pro přehlednost, protože jinak by to byl obrázek příliš vysoký, ale pokud chcete, připravte si vše v jednom „hlavním“ uzlu).

V prvním uzlu si vytvoříme porty Second wind, Second wind activator, H neg. Rotace.H, P neg., Rotace.P, B neg., Rotace.B. Opět si to nadále předvedeme na jednom příkladu a zbylé dva budou stejné. Pravdou ale je, že vlastně ne, první příklad „přesahuje“ i do dvou zbývajících, takže naopak, zbylé dva budou podstatně snazší.

Vezmeme si uzel Nový uzel > XPresso > Hlavní > Objekt. V tomto uzlu si vytvoříme vstupní modré porty Objekt, Zapnuto a Rotace. H, P. B.

Propojíme port Second wind do portu Objekt nového uzlu. Pak ještě Second wind activation do portu zapnuto. Tím budeme definovat a také zapínat druhé křídlo. Poté co, no můžeme tam poslat hodnotu Rotace.H do Rotace.H. Ale tak jednoduché to nebude. Většinou by měla být tato hodnota negativní. Takže vytvoříme uzel Nový uzel > XPresso > Počítat > Negace, do tohoto uzlu napojíme výstup Rotace.H a výstup Negace do vstupu Rotace.H. A nebo ne? Co když nebudeme chtít tuto danou osu negovat, co pak? Nic, bude to snadné…

Máme tedy dva stavy, buďto budeme hodnotu negovat, nebo ne. Takže potřebujeme nějaký přepínač. Vytvoříme tedy uzel Nový uzel > XPresso > Logický > Podmínka. Hodnota portu Přepínač je vlastně ono Ne/Ano) napojíme sem tedy hodnotu bool aktivátoru H neg. Vstup1 bude hodnota Rotace.H (tedy nezměněná), Vstup 2 (Ano) bude hodnota změněná, tedy hodnota Negace. Výsledek napojíme do portu Rotace.H. To je vše.

07

Ostatní hodnoty rotace budeme řídit naprosto stejně. Není to nic složitého…

A to je tedy všechno. Všechno? Ano, nyní stačí jen animovat. Pravdou však je, že zejména zpomalování není úplně bez potíží a tak by se možná dalo vše řešit jinak. Vše je přeci závislé na původní vstupní hodnotě. Možná by bylo lepší, pokud bychom celé řízení svěřili něčemu, co již ve svém principu „vibruje“ a není tak omezené oním nepříjemným skokem řekněme 0>30, 0>30 a tak dále, ale naopak, tedy 0>30>0>30 a tak dále.

Varianta s vibrací

Jak na to? Situace bude snazší, dostaneme skvělé řízení, jenže ani to není bez omezení. Zejména v rovině toho, že budeme poněkud omezeni v řízení rotací. Budeme mít k dispozici jen jeden průběh na oba směry, jak nahoru, tak dolů a to je škoda. Je to dáno oním „vracením se“. Cena kterou musíme zaplatit.

Délka článku nám nedovoluje se tomuto tématu věnovat tak podrobně, jako předchozí simulaci. Ale přesto si to uvedeme alespoň ideologicky a také si uvedeme výsledné řešení. Co můžeme smazat a co nebudeme potřebovat. Nebudeme potřebovat hodnoty startovních pozic (ve snímcích). Zrušíme parametr Cycle lenght, také nebude potřeba. Přejmenujeme parametr Multiplication na Speed a necháme jej v procentech. Jsme skoro připravení.

Pod náš objekt Wing přidáme další objekt Osy a u tohoto objektu (který bude v lokálních souřadnicích 0,0,0) vytvoříme vlastnost Vibrace. Už každému asi svítá, že…

Ve vlastnosti vibrace aktivujeme volbu Pravidelné pulsy, a Pozici. Definovat budeme jen polohu X a můžeme sem zadat například 20. Je to zcela bezpředmětné, prostě jen, aby tu nějaká hodnota byla.

08

Přejdeme do XPressa. V hlavním zdrojovém uzlu odstraníme všechny porty, které jsme si odstranili pomocí uživatelských dat (viz výše) a které jsou popsané jako „nedefinované“.

Přetáhneme si do XPressa objekt, který má vlastnost Vibrace a také samotnou vlastnost Vibrace!

Jaká je hlavní vstupní informace analyzovaných dat? Jedná se o akutní polohu objektu Osy, avšak tato poloha nabývá jak kladných, tak záporných hodnot. Co s tím? Nic moc, je to snadné. Sečteme aktuální polohu objektu s definovanou velikostí amplitudy a dostaneme vždy kladnou hodnotu. Vytvoříme si tedy uzel Mat:Sečíst a do něj napojíme Poloha.X objektu Osy a také parametr Amplituda.Pozice.X vlastnosti – uzlu Vibrace. Výsledek tohoto součtu napojíme do všech portů Vstup všech tří překladačů rozsahu.

Upravit také musíme Horní vstup (také hodnota, která zůstala osiřená. Řekněme, že původně byla hodnota amplitudy 20 jednotek. To znamená, že se objekt pohyboval v rozsahu -20 <> 20. Pokud jsme k uvedené hodnotě přičetli hodnotu amplitudy, což jsme udělali za chvíli, získali jsme hodnotu pohybující se v rozsahu 0 <> 40. Hodnota 40 je tedy také hodnotou Horního vstupu. Získáme ji jednoduše tak, že vynásobíme hodnotu amplitudy hodnotou „2“. Vytvoříme tedy uzel Mat:Násobení a do tohoto uzlu napojíme jak hodnotu amplitudy, tak konstantu 2 a výsledek pošleme do všech tří uzlů Překladač rozsahu, portů Horní vstup.

09

10

To je takřka všechno. Vytvoříme si v našem uzlu Vibrace vstupní port Frekvence a do tohoto portu napojíme náš uzel řízení rychlosti. A to už všechno skutečně je. Nyní máme tuto verzi řízení dokončenou.

Závěrem

Co jsme si chtěli tímto poměrně dlouhým popisem jednoduchého XPressa ukázat? Zejména to, jak lze různě řídit poměrně zajímavý efekt – animaci. Jaké výhody a nevýhody mohou mít různé systémy a že, což je hlavní, možností je vždy více a která je ta správná závisí jen na Vás.

Obě verze ke stažení

Pavel Zoch, Ph.D. Úplnej a naprostej .....

E-mail: pzdm(zavinac)digitalmedia.cz | Web: www.3dsoftware.cz | ICQ: 248707187 |

Motto: "Co ve věčnosti leží, mrtvé není, v záhadě věků i smrt se ve smrt změní." (H.P.L.)

Komentáře k článku  
"rady nad zlato" szury | 2.4.2008 16:59

Přihlášení uživatele