Hlavní obsah
Kurz: V zákulisí studia Pixar > Kapitola 4
Lekce 2: Naprogramuj si vlastní simulaci- Začínáme s částicemi
- Krok 1 (reakce částice na gravitaci)
- Soustava pružiny a závaží v jednom směru
- Krok 2 (soustava pružiny a závaží)
- Tlumení
- Krok 3 (utlumená soustava pružiny a závaží)
- Soustava pružiny a závaží ve dvou směrech
- Krok 4 (soustava pružin a závaží ve dvou směrech)
- Soustava více pružin a závaží
- Krok 5 (soustava více pružin a závaží)
Začínáme s částicemi
Nejdříve si ukážeme, jak jedna částice reaguje na vliv gravitace. Kliknutím zde se podíváš na lekci Efekty.
Chceš se zapojit do diskuze?
Zatím žádné příspěvky.
Transkript
V poslední lekci jsme pracovali s modelem,
který imitoval chování kudrnatých vlasů. Tento efekt tvoří závaží,
která jsou připevněna k pružinám. Cílem této lekce je napsat počítačový kód,
který simulaci rozpohybuje. Nejprve je třeba zvážit, že použijeme
některé Newtonovy vzorečky, abychom naanimovali simulace. Jejich funkcí jsme se zabývali
v lekci o efektech. Začneme simulací velmi jednoduchého
modelu: částicí, na kterou působí pouze gravitace a která padá
z nějakého místa na obrazovce. Můj program bude simulovat tuto situaci
a bude rozdělen na dvě části. Nahoře bude výchozí nastavení systému, například výchozí pozice a gravitace, a dole použijeme funkci "draw"
pro animování. Nejprve stanovíme výchozí nastavení. Chceme řídit gravitaci, takže si určíme
proměnnou s názvem "gravity" a nastavíme ji například na hodnotu 10,
později ji můžeme měnit. Další proměnná udává závaží částice,
"mass", nastavím ji na hodnotu 30. Další proměnná bude výška, ze které
částice padá, tu pojmenuji "positionY". Musíme také nastavit počáteční rychlost
částice, tu pojmenuji "velocityY". Její hodnotu nastavím na 0,
na začátku se animace nehýbe. Potřebujeme něco, čím budeme ovládat
rychlost simulace. To uděláme pomocí
proměnné s názvem "timeStep", tu si představte jako čas, který uběhne
mezi jednotlivými fázemi animace. Vyšší hodnota znamená,
že částice mezi snímky zrychlí, nižší hodnota znamená zpomalení. Teď se zaměříme na funkci "draw". Když program spustíme,
počítač jednou vykoná výchozí nastavení a poté několikrát za sekundu
provede funkci draw. To znamená, že během jednoho snímku
je funkce draw provedena hned několikrát. Nejprve vypočítám síly,
které působí na částici. Momentálně na ni působí pouze gravitace,
která směřuje dolů. Tuto sílu směřující dolů
označím jako proměnnou "forceY". Newtonův druhý pohybový zákon říká, že velikost této síly bude
hmotnost krát gravitace (mass * gravity) Dále pomocí této síly určím, jak moc bude částice
při pádu zrychlovat. Tuto hodnotu označím jako novou proměnnou,
kterou pojmenuji "accelerationY". Tuto hodnotu získám
přeskládáním vzorečku f=m*a na a=f/m, čili "accelerationY = forceY/mass" Všimněte si, že hodnotu forceY
jsme vypočítali v předchozím kroku. Už známe hodnotu zrychlování částice
a její rychlost můžeme upravit na rovnici "velocityY = velocityY
+ accelerationY * timeStep". Více o této rovnici se dozvíte
v naší lekci o efektech. Nezapomeňte, že proměnná rychlosti
na pravé straně vzorečku nejdříve značí
původní hodnotu rychlosti. Po vykonání tohoto řádku proměnná velocityY na levé straně vzorečku
značí novou hodnotu rychlosti. Tuto rychlost můžeme použít
k přesunutí částice na jiné místo pomocí vzorečku "positionY = positionY
+ velocityY * timeStep" Pravá strana vzorečku opět značí
původní hodnotu rychlosti. Po vykonání tohoto řádku proměnná positionY na levé straně vzorečku
značí novou hodnotu výšky. Všimněte si, že každý krok kódu
pracuje s výsledkem předchozího kroku. Výpočet síly je použit
pro výpočet zrychlení. Zrychlení je použito
pro výpočet rychlosti. Rychlost je použita
pro výpočet výšky. A teď přijde ta zábavná část:
umístíme částici. To uděláme tak, že nakreslíme kruh - jeho
velikost je hodnota proměnné positionY. Kreslím kruh pomocí funkce "ellipse",
výška a šířka jsou stejné. Podíváme se, co se stane,
když spustíme program. Jejda! Budu chtít mazat všechny
předchozí kruhy, ať to nevypadá jako had. To udělám tak, že pokaždé, když se objeví
nový kruh, smažu, nebo přemaluju pozadí. Tak to zkusme. To vypadá hezky! Když zvětším gravitaci,
částice bude padat rychleji. To jsou Newtonovy pohybové zákony v praxi. Tady si dáme přestávku,
abyste si zvykli na tento kód.