01. Import modelu
V tejto sérii si ukážeme prácu s jednoduchým 3D modelom, ktorému pridáme animovanú interakciu. Začneme s importom modelu do projektu. Bude to model vytvorený niekým iným a uložený spôsobom, ktorý je iný ako môže byť náš obvyklý postup. Treba s tým počítať, je to častá situácia, keď používate vo svojich projektoch hotové modely z cudzieho zdroja.
- Vytvorte nový 3D projekt
- Vytvorte v Assetoch adresár Models
- Nastavte polohu kamery na (0, 1, -2)
Stiahnite si 3D model skrinky: Cupboard.zip a rozbaľte ho do Models
(Model pochádza z Free3D.com)

V assetoch nám pribudol nový 3D modelový asset s názvom Cupboard a s ním aj adresár Textures, kde sú textúry.
Do scény vložíme 3D model z assetov jednoduchým pretiahnutím. Buď do scény alebo do hierarchie. Pribudol nám tak nový game objekt Cupboard.
- Premenujte game objekt z Cupboard na Skrinka, aby sa nám neplietol s assetom Cupboard.
- Polohu game objektu nastavte na (0,0,0)
- Skrinka je ku kamere chrbtom, nastavte jej rotáciu tak, aby bola otočená prednou stranou ku kamere.

Aktuálne je tento 3D model neotextúrovaný, napriek tomu, že textúry v adresári Textures naozaj sú:

Legenda hovorí, že do Unity sa dajú naimportovať rôzne 3D formáty aj s textúrami. Realita je taká, že pristáli sme na Mesiaci, o chvíľu pristaneme na Marse, konštruujeme kvantové počítače, ale zatiaľ sme ako ľudstvo neprišli na to, ako spoľahlivo uložiť v jednom programe 3D model tak, aby v inom vyzeral tak isto. Pokiaľ má náš naimportovaný model aspoň aký-taký vzhľad a jediné, čo mu chýba, sú textúry, tak sme na tom ešte dobre.

Pri importe 3D modelov je dobré nájsť si funkčný workflow medzi vaším 3D modelovacím nástrojom a Unity. Treba prísť na to, do ktorého formátu treba z modelovacieho nástroja exportovať a s akými nastaveniami. Pri transporte z jedného softvéru do druhého (a to nie je problém len Unity) sú najčastejšie problémy s textúrami, veľkosťou, normálami, UV súradnicami alebo otočením modelu.
Návrat textúr do modelu
Problém v našom prípade je teraz ten, že naimportovaný model síce bol vo formáte FBX (ktorý podporuje aj materiály) ale asi nebol správne vyexportovaný a materiál neobsahuje. Môžeme sa o tom presvedčiť keď si naimportovaný asset rozklikneme:

Vidno len 4 jeho pod-objekty a ku každému z nich jeho príslušný mesh. Žiaden materiál v naimportovanom assete nie je. Tým pádom ani nemáme aký materiál vyextrahovať z assetu a napárovať s priloženými textúrami. Neostáva nám nič iné, len vytvoriť úplne nový materiál.
- Vytvorte nový materiál, nazvite ho SkrinkaMat.
- Nastavte jeho Albedo farbu na červenú (aby sme videli, kde už je materiál aplikovaný a kde ešte nie).
- Pretiahnite tento materiál do scény na game objekty dvierok skrinky, zásuvky v skrinke, korpusu skrinky

Teraz už len natiahnuť z adresára Textures príslušné textúry do materiálu SkrinkaMat.
Našťastie vieme v našom prípade z názvov textúr vytušiť, ktorá kam patrí:

Obrázková textúra patrí do Albedo položky materiálu. Metallic textúra patrí do Metallic položky materiálu. Zmeňte základnú farby naspäť na bielu. Červená bola len na kontrolu, že máme materiál všade kde ho treba.

Pri tretej textúre – normálovej – sa na chvíľu pristavíme.
Import textúr
Označte si v assetoch tretiu textúru – tú zrnitú modrú. Pozrime sa do jej inšpektora:

Tu sú nastavenia pre import textúry. Textúra je na disku len súbor s obrázkom. Obrázok môže mať v Unity rôzne využitie. Môže to byť základná farba modelu (Albedo, Diffuse a tak podobne), môže to byť ikonka v UI, môže to byť maska určujúca priesvitnosť… V našom prípade táto textúra ukrýva normálovú mapu.
Ak vás to zaujíma, normálová mapa je textúra, ktorá simuluje drobné nerovnosti na povrchu. Aby nemusel počítač vykresľovať detailný polygonálny model, rozdelí sa tento detailný model na zjednodušený model a na rozdiel medzi zjednodušeným modelom a detailným originálom. Tento rozdiel sa uloží do textúry. Viac napríklad tu.
No a pri importe obrázku do assetov je potrebné nastaviť, akú funkciu má tento obrázok v Unity plniť. Štandardne sa obrázok importuje ako obrázková textúra (čiže Albedo). Ak chceme, aby textúra bola použitá ako normálová mapa, musíme jej tento import zmeniť:

Všetky zmeny, ktoré takto v importére urobíme, je treba ešte potvrdiť dole buttonom Apply:

Keď takto aplikujeme zmeny, udeje sa to, že Unity nanovo pristúpi k súboru na disku, načíta z neho dáta, a použitím nových nastavení importu modifikuje existujúci asset.
Je dôležité uvedomiť si ten rozdiel medzi obrázkom na disku a assetom v projekte. Obrázok je len obrázok. Bez nastavenia importu Unity nevie, aký typ assetu chceme z obrázku mať.
Teraz už môžeme priradiť túto normálovú mapu do materiálu SkrinkaMat:

Skrinka dostala vďaka normálovej mape členitý povrch ako mávajú staré skrinky:

Oblietanie kamery
Na záver pridáme do scény pohyb. Chceme si vo výslednej aplikácii poobzerať skrinku zo všetkých strán. V neskorších lekciách pridáme aj otváranie zásuvky a dvierok. Nateraz ale postačí rozpohybovať kameru okolo skrinky.
Stiahnite do assetov skript OrbitCamera.cs.
Tento skript robí to, že pri ťahaní myšou kamera rotuje okolo nastaveného game objektu.
Priraďte skript OrbitCamera na game objekt kamery.

V inšpektore pre Main Camera, v komponente OrbitCamera priraďte do vlastnosti Target gameobjekt Skrinka. Spustite hru a vyskúšajte, či sa kamera hýbe okolo skrinky.
Tu je hotový projekt: CupboardApp_01.zip
