Tutoriál: 3D Studio MAX - Float Expression 2.díl - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Poptávka práce
Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se narodil známý fotograf František Drtikol?

V dnešní soutěži hrajeme o:



3D grafika

Tutoriál: 3D Studio MAX - Float Expression 2.díl

21. června 2002, 00.00 | Dokončení tutoriálu na tvorbu simulace funkčního modelu zjednodušené přední nápravy s využitím vazeb mezi objekty na úrovni matematických rovnic.

V minulém díle jsme si transformacemi připravili scénu pro stěžejní část celé tvroby scény popisující závislosti volantu a kol tak, aby při otáčení volantem docházelo k patřičnému natáčení kol.

Nyní si otevřeme okno "Track View" - viz. obr.

V Okně Track View jsou objekty zobrazeny tak, že nás donutí brát v potaz vztahy mezi objekty. Postupným rozbalováním se propracujeme až k jednomu z držáků os kola a otevřeme jeho zásobník se se seznamem použitých modifikátorů (to je trošku nepřesný výraz, ale nenapadá mě lepší). Budeme si všímat položky "Transform". Ta po rozbalení nabídne položky "Position", "Rotation" a "Scale" - v pravé části okna Track View pak lze tvořit a modifikovat klíčové body.

Označíme položku "Rotation" a použijeme (na obrázku zvýrazněné) tlačítko "Assign Controller". To slouží k přiřazení funkce, která bude danou transformaci (v našem případě rotaci) ovlivňovat.

V okně s výběrem funkcí, které se nám objeví, zvolíme položku Euler XYZ. Ta "rozloží" položku "Rotation" na položky 3 - X Rotation, Y Rotation a Z Rotation. Tuto stejnou změnu funkce u rotace provedeme u obou držáků os kol a také u volantu - u konkrétního objektu, kterým později chceme ovládat natočení předních kol.

Následující obrázek ukazuje, jak po této změně vypadají v Track View položky "Rotation" u příslušných objektů.

U tohoto pohledu na Track View se na chvíli zastavíme - na řadu totiž přichází zohlednění orientace lokálních trojosí dotyčných objektů - držáků os kol a volantu.

Díky tomu, že máme položku rotace rozdělenou na tři nezávislé části, můžeme s nimi podle toho i nakládat. V praxi to znamená, že hodnotu rotace (podle některé z os) můžeme ukládat do proměnné a tu pak využívat například pro výpočet hodnoty rotace jiného objektu podle jiné osy.

V této scéně půjde konkrétně o to, že budeme získávat hodnotu natočení volantu podle osy Z a tuto hodnotu budeme (po menších úpravách, resp. přepočtech) přiřazovat natočení držáku os kol podle osy Y.

Zde musím upozornit ještě na jednu veledůležitou věc. Je třeba zjistit si, v jakém stavu natočení (podle os, které nás zajímají) se na počátku nachází volant a držáky os. Hodnotu daného parametru lze přečíst v Track View vpravo od příslušné položky.

V mém případě (jak lze vidět na obrázku) je osa Z volantu natočena o -90° a osy Y držáků os jsou pootočeny o 0° - natočení držáků os nám tedy starosti dělat nebude. Před zohledněním pootočení volantu však bude třeba provést ještě pár kroků.

V Track View nyní označíme položku představující natočení držáku osy kola kolem požadované osy - v mém případě Y - a opět použijeme tlačítko "Assign Controller".

Z nabídky nyní vybereme položku "Float Expression" (viz. obrázek). Float Expression je funkce, která funguje tak, že parametr, kterému je přiřazena, získává hodnotu kterou mu přiřadíme nebo necháme vypočítat v nastavení ("Properties") této funkce.

Tady si dovolím ještě poznámku k jedné chybičce 3D Studia - k properties se lze dostat tak (pominu ikonu v Track View), že označíme příslušný parametr a pak zvolíme položku "Properties" v menu, které se objeví po kliknutí pravým tlačítkem myši - někdy zůstane položka "Properties" neaktivní (zšedlá). Klikněte proto na jiný parametr a pak zpět na ten, kterému se chcete věnovat - položka "Properties" by měla být nyní, po stisknutí pravého tlačítka myši, aktivní.

V okně, které se vám následně zobrazí, budeme zadávat matematický výraz pro výpočet hodnoty editovaného parametru. Jako ve většině programovacích jazyků, i v tomto (jedná se vlastně o takový jednoduchý programovací jazyk) je třeba nejdříve založit a definovat proměnnou (nám bude stačit jedna proměnná). U proměnných je třeba rozlišovat, jestli se jedná o skalár nebo vektor. V našem případě skalár - v oblasti označené "Create Variables" napíšeme do položky "Name" jméno, kterým pak budeme volat hodnotu natočení volantu a pomocí ní vypočítávat natočení držáku osy kola. Jak je ostatně vidět na obrázku, pojmenoval jsem tuto proměnnou jako "natocenivlnt", ponechal typ proměnné na "Scalar". Klikněte nyní na tlačítko "Create".

Proměnná reprezentovaná svým jménem je zobrazená v tabulce "Scalars". Pokud není v této tabulce naše proměnná černě podsvícená, klikněte na ní (podsvítí se) a následně na tlačítko "Assign to Controller" (viz. obrázek).

V okně pro výběr hodnoty (resp. sledovaného parametru) pro proměnnou "natocenivlnt" zvolíme rotaci volantu kolem osy Z (jestli si ještě pamatujete - volant je v mé scéně pootočen kolem osy Z o -90°).

Do pole "Expression" se zadává výraz, podle kterého bude docházet k výpočtu hodnoty natočení držáku os kol kolem osy Y. Momentálně se v tomto poli nachází nějaké číslo (v mém případě 0) které udává pootočení držáku osy kola. K tomuto číslu budeme přičítat (nebo odečítat - závisí na orientaci lokální souřadné soustavy držáku osy kola) hodnotu pootočení volantu. Budeme také kompenzovat původní pootočení volantu (to je těch -90°). Hodnoty úhlů se zadávají v radiánech - a 90° je polovina Pí, tzn. přibližně 1,5708.

Po zadání odpovídajícího výrazu stiskněte tlačítko "Evaluate". Pokud jste se někde dopustili chybné syntaxe, budete na to upozorněni. Pokud neproběhne žádné hlášení, je vše v pořádku. (Přehled funkcí použitelných ve výpočtu si můžete zobrazit pomocí tlačítka "Function List".)

Nyní se podívejte do některého z Viewportů a zkuste otáčet volantem kolem příslušné lokální osy. Bude docházet k natáčení držáku osy kola i jeho dětí - tzn. kola jako celku. Zde zjistíte, jestli je třeba hodnotu natočení volantu odečítat nebo přičítat k původní hodnotě natočení držáku osy kola - eventuelně tedy výraz upravte tak, aby se kolo chovalo tak jak potřebujete.

Celý proces (od přiřazení "Float Expression" funkce) zopakujte s patřičnými modifikacemi i pro druhý držák osy kola - budou se tedy natáčet obě přední kola.

Pokud trváte i na pohybu ozubené části přiléhající k ozubení tyče volantu, použijte na "Position" parametr ozubeného držáku tlačítko "Assign Controller".

Z nabízeného výběru zvolte "Position XYZ" - dojde opět k rozložení pozice ozubeného držáku na nezávislé hodnoty pro X, Y a Z osy.

Na parametr pozice ozubeného držáku podle patřičné osy (předpokládám, že pohyb ozubeného držáku způsobený otáčením volantu je zcela zjevný) aplikujeme opět controller "Float Expression".

Ještě taková poznámka - ozubený držák se sice pohybuje ve směru dvou os, ale v jednom z těchto směrů můžeme pohyb klidně zanedbat...

Opět nadefinujeme proměnnou, která bude obsahovat (použijeme "Assign to Controller" tlačítko) hodnotu natočení volantu kolem osy Z.

V okně "Expression" je prováděn výpočet, který musí kompenzovat původní polohu ozubeného držáku (to je oněch 174,09) od které odečítáme (přičítáme) upravenou hodnotu pootočení volantu. Tato hodnota je upravena opět pomocí přičtení poloviny Pí a zároveň (na základě konfrontace s Viewportem - kolo nastavíme pomocí volantu do mezní polohy natočení) je prováděn poměrný přepočet tak, aby mohly být radiány považovány za souřadnice - není zde problém s typem hodnoty, ale s velikostí. Je proto potřeba hodnotu radiánů uloženou v závorce (rotacevolantu+1,5708) vynásobit nebo vydělit tak, aby se ozubený držák "neodpojoval" od držáků os kol. Nyní "Evaluate", a je to...

Zkuste si nyní ve viewportu otáčet volantem... pokud jste vše nastavili správně, bude se vám výsledek automatizace pohybu určitě líbit.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » 3dscena  

 » Rubriky  » Go verze  

 » Rubriky  » 3D grafika  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: