Sunteți pe pagina 1din 108

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/340580998

O primă carte despre Unity 3D / A first book concerning Unity 3D

Book · June 2008

CITATIONS READS
0 888

1 author:

Popa Dan
University of Bacau
36 PUBLICATIONS 205 CITATIONS

SEE PROFILE

All content following this page was uploaded by Popa Dan on 11 April 2020.

The user has requested enhancement of the downloaded file.


O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

-1-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

-2-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

-3-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

-4-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C1
O primă imagine despre Unity
Unity este un motor pentru jocuri video şi realități virtuale 3D, (dar
puteți face şi jocuri 2D cu el) însoțit de o colecție de obiecte
suficient de bogată ca să satisfacă nevoile celor care-l folosesc.
(Pentru tehnicieni aş adăuga că este format dintr-o variantă de
maşină virtuală mono, programabilă în trei limbaje, unul de clasă
Java, unul din Clasa C /C# iar altul similar Python-ului. Pune la
dispoziție efecte grafice, efecte fotografice, efecte fizice – gravitație,
alunecare, frecare, elasticitate, contact între obiecte etc.) funcție de
numărul de componente pe care le aveți la dispoziție.
Unele sunt disponibile doar în versiunea Pro. Unity permite să importați modele şi personaje
realizate de produse libere sau profesionale (Blender, Maya ş.a.m.d.).

Mediul de lucru, IDE-ul cum i se spune este, afirmă autorii lui, flexibil şi capabil să ofere
utilizatorului un grad de personalizare care să-i facă viața uşoară. Şi să-i accelereze lucrul,
adică să-i mărească productivitatea muncii.

De aici începem să studiem elementele necesare realizării unui produs, al unui joc, cu Unity.
Construcția unui joc video 3D parcurge o serie de etape, bine precizate. În joc aveți nevoie de:
– decoruri 3D de care vă veți putea eventual lovi dar rămân imobile (acestea sunt un fel de
obiecte, formează scena, au anumite proprietăți),
– personaje, de obicei create cu programe de modelare şi importate (dar poate fi şi un joc
cu maşini sau tancuri sau bile de biliard deci fără personaje)
– artefacte, obiecte, instrumente, arme etc pe care le puteți muta, folosi, articula, (există
obiecte cu articulații – ca o carte sau un laptop care se va deschide) arunca, întinde,
atinge unele de altele (nu trec unele prin altele şi sunt considerate alt fel de obiecte – ele
în Unity sunt numite assets, bunuri).

-5-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

– să adăugați în final alte elemente, cum sunt cele audio, filtrele prin care vedem toată
scena (dacă vrei de exemplu imagini cu contururi bine desenate ca în grafica benzilor
desenate)
iar la final ajungeți să vă publicați opera.

-6-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C2
Fundamentele folosirii Unity-ului
Acest subcapitol vă va deschide calea folosirii Unity-ului deoarece vă explică interfaţa,
meniurile şi sub meniurile, utilizarea bunurilor (assets îl vom transcrie fie prin bunuri fie
obiecte – şi aici pot intra şi obiecte mai abstracte cum ar fi anumite filtre foto de aplicat peste
imaginea finală). Explicăm felul cum se produce, se realizează o scenă şi cum vom împacheta
şi publica exe-urile finale.
Subcapitolele care urmează îşi propun să vă lămurească cum funcționează IDE-ul Unity, cum îl
veți folosi efectiv şi cum ambalați totul, scena, personaje, fişierele audio, filtrele etc., pentru a
obține un produs unitar, nou, jocul video.

Să învăţăm interfaţa IDE-ului Unity


Priviți cu atenție interfaţa IDE-ului Unity. Încercați să rețineți din ce este formată, ce au
elementele în comun, prin ce diferă. Fereastra principală este împarțită în mai multe arii de
conținut, numite Vederi, selectabile (exact ca fisele cărților la bibliotecă ) prin acele TAB-uri.
Fiecare astfel de vedere sau fisă are un rol aparte: Într-una vedeți scena, cu alta inspectați
obiectele, într-una vedeți catalogul ierarhic de obiecte (din care veți prelua poate obiecte
pentru a le adăuga în viitor proiectului), alta arată proiectul aşa cum e la acest moment dat.
Format din actualele sale componente. Le vom prezenta pe rând.

-7-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Documentația on-line include, ca exemplu, imaginea de mai sus. Observați bara cu instrumente
(Toolbar, Inspectorul obiectelor, Ierarhia de componente şi Proiectul).

Browser-ul proiectului
În aceasta fereastra vedeți mulțimea componentelor care formează proiectul dumneavoastră.

-8-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Partea din stânga a browserului vă prezintă proiectul structurat sub formă de listă de liste de
elemente, ca nişte directoare. Atunci când alegeți un director, un dosar din listă şi dați un click
asupra lui, el va fi deschis în partea din dreapta prezentându-i-se acolo conținutul. El poate
include alte directoare, alte foldere, alte elemente. (n.n. Utilizatorii familiarizați cu Dolphin
sau Nautilus de sub Linux vor observa asemănarea.)
Bunurile indivizibile sunt arătate sub formă de iconițe care indică tipul lor: scripturi, materiale,
dosare incluse în dosare etc.) Mărimea iconițelor -astfel ca să fie de o mărime convenabila pe
display-ul dmneavoastră – se reglează din cursorul din stânga jos. Documentația spune că dacă
mutați cursorul în extrema stângă nu mai apar iconițe ci doar o listă de denumiri. Spațiul din
stânga cursorului este folosit pentru a se scrie acolo, de către sistem, numele ultimului element
selectat, ba chiar şi calea pînă la el (de mare folos dacă ați efectuat o căutare pentru a-l găsi).
O secțiune de elemente favorite numită chiar Favorites vă ține la îndemână obiectele cele mai
des utilizate economisind astfel timpul care s-ar pierde pentru căutarea şi (re)căutarea lor.
Partea de deasupra panoului de afişare îți arată traseul, calea – şirul de directoare parcurs –
până la elementul vizat. Puteți da click pe oricare element de pe aceasta cale (este ramură în
arborele de directoare) pentru a naviga mai departe pornind de la nivelul respectiv de imbricare
al dosarelor. (ca şi cum ai sări într-un copac de la o ramură la alta.) În timpul căutării cu Search
a unui obiect, a unui bun, sistemul va arăta aici unde s-a ajuns cu căutarea la momentul curent,
dar şi numărul de obiecte gratuite şi negratuite disponibile în magazinul virtual de bunuri al
comunității, numerele fiind separate cu o bară “/”.
În meniul Preference -> General al mediului Unity există o opțiune pe care o puteți alege
pentru a dezactiva afişarea acestor căutări făcute pe internet, în magazinul virtual. E util mai
ales dacă nu doriți să se comunice pe internet ce elemente apar în viitorul dumneavoastră joc,
înainte de lansarea acestuia.

De-a lungul părții de sus a ferestrei se afla bara de instrumente a browser-ului.

În partea stângă a acestei bare cu instrumente se afla meniul Create care vă permite să adăugați
noi bunuri în colecție sau să definiți dosare în alte dosare pentru a grupa obiectele. Iar în partea
dreaptă a barei sunt instrumentele care servesc la căutarea în colecția bunurilor.
Atenție: În meniul Windows veți putea găsi o opțiune care permite să treceți la o vedere a
proiectului într-o singură coloană, fără imaginea cu iconițe din dreapta arborelui. Iconița lăcățel
de lîngă meniu, spune documentația, vă permite să înghețați ceea ce se vede (altfel conținutul
ferestrei, oferta de bunuri de exemplu, se poate modifica urmare a evenimentelor petrecute în
altă parte – la un furnizor de bunuri), într-un mod asemănător aceluia care exista la Inspectorul
obiectelor.

-9-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Căutarea
Căutarea în proiectele străine, mari sau pur şi simplu nefamiliare este dificilă. (Pe ce ramură din
arbore ar fi un anumit obiect ?) Browserul oferă un instrument automat pentru găsirea bunurilor
din cadrul proiectelor complexe, unde acestea sunt răspândite pe mai multe nivele.
Instrumentul de căutare parcurge colecția de obiecte (de fapt idexul ei) filtrând-o după
cuvintele cheie date de utilizator în caseta Search, aceea marcată cu o lupă. (n.n. Cam ca la
motorul Google Images).

Scrierea a două cuvinte succesive îngustează şi mai mult aria de căutare, de exemplu dacă
tastați: scene lacustre, (scuze, sunt din oraşul lui Bacovia), vor defila în
browser doar bunurile care au ambele cuvinte în numele lor: “lacustre” şi

“scene”. Aceasta înseamnă că cei doi termeni sunt legați printr-un AND.

-10-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Mergând la dreapta, următorul buton filtrează bunurile dupa etichetele lor (se puteau adăuga
asemenea etichete bunurilor din Inspector). Şi întrucât colecția de etichete era posibil să fie
foarte mare, meniul label are inclus propriul său instrument de căutare.

Ar fi de notat faptul că aceste filtre suplimentare funcționează adăugând câte un cuvânt în plus
interogării care a lansat căutarea. Un termen special prefixat cu “t:” ajută la filtrarea după tipul
bunului sau obiectului iar unul cu “l:” filtrează dupa etichetă. Puteți de altfel tasta aceste
prefixe direct în câmpul unde scrieți interogarea, decât să umblați prin meniu, aceasta în cazul
în care ştiți exact ce tip ori ce etichetă căutați. căutările se pot face dupa unul sau mai multe
tipuri şi una sau mai multe etichete. Adăugarea mai multor tipuri extinde căutarea în sensul că
se caută toate alternativele, adică tipurile, iar când sunt mai multe, sunt conectate implicit prin
OR, spre deosebire de etichete care atunci când sunt mai multe sunt conectate implicit prin
AND.

Butonul din extrema dreaptă vă permite să salvați interogarea adăugând-o ca pe un element


unitar în lista căutărilor favorite (Favourites) de bunuri.

Căutarea în magazinul de bunuri “Asset Store”


Cu browserul puteți de asemenea naviga şi printre bunurile oferite de Unity Asset Store, în
traducere depozitul sau mai corect magazinul de bunuri pentru Unity. Este suficient să alegeți
calea către Asset Store aşa cum ați fi ales calea către orice alt director, de la bara care vă indică
traseul, calea curentă. Odată ce ați deschis Asset Store vi se va afişa lista, numărul şi oferta de
bunuri gratuite şi de bunuri cu plată care se potrivesc căutării dumneavoastra. Căutarea lor
filtrată după tip şi etichetă se face la fel cum ați făcut-o atunci când căutați în propriul
dumneavoastră proiect Unity. Cuvintele cheie pe care le-ați inclus în cerere vor fi căutate întâi
în numele bunurilor, apoi printre numele şi denumirile pachetelor (n.n. bunurile pot fi
împachetate în pachete cu alt nume) ținând cont de ordine aşa încât acela care conține cuvintele
cheie în nume va avea poziție mai bună pe listă decât acela care conține aceleaşi cuvinte dar în
descrierea pachetului.

-11-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Dacă ați ales un bun de pe listă, detaliile despre el vor fi afişate în fereastra Inspector-ului
împreună cu opțiunile pe care le aveți pentru a-i face download sau a-l cumpăra. Unele bunuri
sunt însoțite de nişte filmulețe demonstrative sau au funcții de previzualizare care vă permit să
întoarceți bunul dorit pe toate părțile înainte de a-l cumpăra. Inspectorul vă lasă şi posibiliatea
de a vedea bunul expus în Asset Store, aşa încât să-i cercetați detaliile suplimentare accesibile.

Shortcut-uri de pe tastatură
Următoarele taste pot fi folosite atunci când browserul nu este neapărat îndreptat spre ceva
anume, iar fereastra lui nu a primit focus-ul. Observați faptul că unele au efect doar când
fereastra este în modul două coloane, (dar puteți trece de la un mod la altul folosind un meniu
care se găseste în colțul din dreapta sus – cel mai de sus.)

Tasta Semnificația
F Cadrul (frame) selectat (adică arăta bunul ales plasat în dosarul ce-l conține)
Mută punctul de interes din coloana I în cea de- a II-a. (Cu două coloane, ca
Tab
la N.C.)
Ctrl/Cmd + F Câmp de căutare după focus.
Ctrl/Cmd + A Selectează toate obiectele afişate pe listă.
Ctrl/Cmd + D Duplică obiectele selectate.
Delete Ştergere precedată de dialog de confirmare.
Delete + Shift Ştergere neprecedată de dialog de confirmare.

-12-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Tasta Semnificația
Backspace +
Ştergerere neprecedată de dialog de confirmare. (OS X)
Cmd
Enter Începerea redenumirii elementului selectat. (OS X)
Cmd + down
Deschide bunurile alese. (OS X)
arrow
Cmd + up
Înapoi în folderul/dosarul părinte (OS X, două coloane)
arrow
F2 Începe redenumirea elementului selectat (Win)
Enter Deschide bunurile alese. (Win)
Backspace Înapoi în folderul/dosarul părinte (Win, două coloane)
Expandează elementul, bunul selectat (atât în mod tree views cât şi din
Right arrow rezultatele căutării). Dacă el este deja expandat, apăsarea pe săgeata dreaptă
va selecta primul descendent.
Compactează elementul, bunul selectat (atât în mod tree views cât şi din
Left arrow rezultatele căutării). Dacă el este deja compactat, apăsarea pe săgeata stângă
va selecta elementul său părinte (predecesorul).
Alt + right Expandează elementul, bunul selectat ( în modul showing assets as previews
arrow -prezentarea bunului înainte de achiziție)
Alt + left Compactează elementul, bunul selectat (în modul showing assets as
arrow previews -prezentarea bunului înainte de achiziție)

Prin compactare am înțeles reprezentarea bunului printr-o notație minimală.

-13-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Ierarhia componentelor

Ierarhia componentelor include orice GameObject (obiect al jocului) care aparține de Scena
curentă. Unele dintre aceste obiecte sunt instanțe directe ale claselor de obiecte din fişierele
bunurilor, de exemplu modelele 3D ale personajelor sau ale unor decoruri. Altele sunt
instanțele claselor unor Prefabricate (eng. Prefabs), obiecte create de utilizator special pentru
proiectul aflat în lucru şi care sunt piesele majoritare ale jocului dvs. Puteți selecta orice obiecte
de pe ierarhie şi puteți să le trageți cu mouse-ul unele peste altele pentru a le îmbogăți
proprietățile, pentru a beneficia de moştenire. Notați că îndată ce obiectele sunt retrase din
scena curentă, ele vor dispărea şi din Ierararhia conceptelor acesteia. (n.n. Care se dovedeşte o
ierarhie a obiectelor din scena curentă.)

Moştenirea
Unity foloseste şi el o variantă de moştenire de comportamente. Pentru a face dintr-un
GameObject un derivat al altuia, trageți cu mouse-ul obiectul dorit până la părintele (de la care
va moşteni mişcarea) necesar de pe ierarhie. Un obiect derivat (din clasa fiilor) va moşteni
mişcările şi rotațiile pe care le poate face, le ştie, părintele său. Le veți avea la dispoziție. Puteți
folosi acea mini săgeată de desfăşurare pentru a întinde sau strânge lista copiilor, după
necesități.

-14-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

(În figurile precedente sunt două obiecte fără părinți respectiv două în relația de moştenire.)
Ceva mai multe despre moştenire discutam în paragraful despre Componentele folosite la
Transformări (Geometrice).

Bara cu instrumente
Bara cu instrumente conține cinci seturi de comenzi fundamentale. Vom vedea ca ele corespund
unor părți diferite din editorul jocului.

Fereastra scenei

-15-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Fereastra Scenei este locul dumneavoastră interactiv de lucru, … sau de joacă. O veți folosi
pentru a pune în cadru decorurile, jucătorul – de fapt imaginea lui – inamicii şi toate celelalte
obiect din joc care toate fac parte din clasa GameObjects. Manevrarea obiectelor din scena
jocului este activitatea de bază atunci când lucrați la un proiect cu Unity, aşa că este foarte
important să vă antrenați să faceți aceste manevre cât mai repede. Pentru a vă ajuta, Unity vă
oferă combinații de taste gata definite pentru toate operațiile frecvent utilizate.

Navigarea / Deplasarea prin fereastra scenei


Documentația produsului Unity include o listă completă de moduri de a umbla de-a lungul şi
de-a latul scenei. Aici rezumăm esențialul:
• Apăsați butonul din dreapta al mouse-ului (sau touch-pad-ului) pentru a trece în modul
numit Flythrough (eng. Zbor prin scenă). Acum puteți folosi mouse-ul şi cunoscutele
taste WASD (plus Q şi E pentru sus şi jos) pentru a zbura prin scenă, ca şi cum ați
privi-o cu ochii jucătorului.
• Selectați un obiect oarecare dintre cele din clasa GameObject şi apoi apăsați tasta F .
Scena va fi centrată pe acel obiect şi veți putea să pivotați în jurul acestuia, pentru a-l
examina din toate unghiurile.
• Folosiți tastele cu săgeți pentru a vă deplasa în planul XOZ.
• Cu o mişcare de drag (cu butonul stâng al mouse-ului apăsat şi mouse-ul târâit) în timp
ce țineți tasta Alt apăsată - rotiți camera în jurul punctului curent de pivotare.
• Iar dacă folosiți butonul din mijloc se roteste tot ce se vede în fereastra Scene View.
• În schimb, dacă folosiți butonul din drept împreună cu alt Alt (n.n. Sau CTRL,
verificați!) la miscarea drag veți realiza un zoom prin fereastra scenei. Acelaşi efect îl
obțineți mai uşor rotind de rotița mouse-ului.
Unealta numită Hand Tool (unealtă de mână – se obține apăsând tasta Q) vă este de folos dacă
aveți un mouse cu un singur buton (utilizatorii de Mac-uri ştiu ce şi cum.) În acest mod de
lucru:
Cu o mişcare Click-drag plimbați camera foto de jur împrejur.
Cu Alt şi gestul click-drag învârtiți camera în jurul punctului de pivotare
curent.
Folosind Control şi gestul click-drag; reglați zoom-ul camerei video.

În colțul din dreapta sus al ferestrei Scenei există un artefact numit Scene Gizmo. Acesta vă
afişează orientarea camerei de la momentul actual şi permite o modificare rapidă a unghiului
din care priviți scena.

-16-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Fiecare din cele trei brațe colorate ale artefactului reprezintă câte una dintre
axele despre care ați învățat la geometriea în spațiu. Puteți da câte un click pe
oricare dintre ele ceea ce va comuta sistemul într-un mod numit proeicție
ortogonală (unii traduc ortographic prin ortografic dar este la fel de greşit ca şi
library - librărie). Axa aleasă indică direcția de privire a scenei.
Atunci când dați click pe textul de sub figurină, se comută modul de vedere
trecând de la perspectivă la o proiecție izometrică – în care sferele apar drept
sfere nu drept elipsoizi. În modul vedere izometrică puteți folosi: right-click
drag (orbit) şi Alt + middle-click drag (pan).
Observați că artefactul Scene Gizmo este ascuns atunci când vizionăm scene în 2D, deoarece în
acest caz axa centrală a camerei este îndreptată direct spre planul XOY.

Așezarea în scenă a obiectelor din clasa GameObjects

Documentația include un întreg subcapitol despre aîezarea obiectelor în scenă. Iată un scurt
rezumat al chestiunilor esențiale:

Atunci când realizați


propriile dumneavoastră
jocuri plasați o mulțime
de obiecte în diverse
poziții din lumea virtuală
a jocului. Acest lucru se
face (n.n. Cam după
principiile din OpenGL.)
compunând o serie de
transformări geometrice
care ne plasează în acel punct şi cu orientarea dorită, cu o scalare corespunzătoare a obiectului.
(De exemplu, dacă primitiva cub vrem să apară ca un paralelipiped.) Exista pe Toolbar, bara cu
instrumente, un grup de unelte numit Transform Tools pe care le vom folosi la translații,
rotații şi scalări ale obiectelor individuale din clasa GameObjects.
Fiecare obiect are câte un artefact de poziționare (Gizmo) dar care este desenat doar în jurul
ultimului obiect selecționat. Se poate folosi mouse-ul pentru a manipula orice artefact de
poziționare şi schimba componenta Transform Component a obiectelor de clasa GameObject,
sau puteți tasta valori direct în câmpurile numerice ale componentei Transform Component

-17-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

afişate de către Inspectorul obiectelor.

Bara de control a ferestrei scenei

Acestă bară de control vă permite să alegeți diferite efecte aplicabile modului de vizionare a
scenei. Puteți porni sau opri fluxul audio, iluminatul sau vizonarea 2D (stil hartă) şi puteți
controla cum obiectele, efectele fotografice aplicate şi înseşi bunurile (şi personajele) vor fi
afişate. Consultați şi capitolul despre modurile de vizionare a scenelor (eng. View modes.)

-18-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C3
Fereastra jocului
Imaginea jocului din fereastra The Game View este produsă prin randare de una sau mai multe
dintre Camerele Video plasate în joc. Ea va reprezinta şi va da tuşa finală a jocului scos în
lume, prezentat publicului. În general vorbind o să aveți nevoie de una sau mai multe camere
video pentru a genera (pe porțiuni) imaginea finală pe care o vede jucătorul (n.n. veți vedea că
panoul de control este de obicei văzut de o altă cameră decât scena principală, ca să luăm un
exemplu). Pentru a întelege în detaliu cum se utilizează în proiect camerele video, vă rog să
consultați şi (sub)capitolul despre camere video.

Modul Play
Folosiți aceste butoane de pe Toolbar pentru a-i activa editorului modul de
lucru care simulează rularea jocului – mod de lucru numit Editor Play Mode. Şi astfel veți
vedea în avans cum urmează să arate jocul final. Cat sunteți cu proiectul în acest Play mode,
toate schimbările care le faceți obiectelor sunt temporare şi vor dispărea când ieşiți din modul
Play. Iar interfaţa editorului va apărea întunecată pentru a va reaminti în permanență de acest
lucru.

Bara de control Game View

Primul set de opțiuni derulant de pe bara de control Game View este destinat controlului
coeficienților Aspect-ului pixelului. De aici se reglează factorul aspect rațio al ferestrei Game
View la diferite valori – potrivite diverselor display-uri cu pixeli de diferite dimensiuni. (n.n.
Dacă pixelii sunt dreptunghiulari, un cerc va apare ca o elipsă iar coeficientul aspect rațio
tocmai acest lucru îl va regla. ) Astfel puteți testa cum ar putea arăta jocul dumneavoastră pe
monitoare de diferite tipuri, cu diferiți factori aspect rațio.
În extrema dreaptă găsiți comutatorul Maximize on Play. Dacă îl comutați în poziția pornit,

-19-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

fereastra Game View se va redimensiona maximizându-se şi ajungând la o dimensiune de


100% din spațiul ferestrei Editor Window aşa că veți putea testa jocul în Play mode pe tot
ecranul.
Mergând mai la dreapta găsiți butonul eichetat cu Stats – de la statistici. El va arăta o serie de
statistici privind activitatea motorului de randare, ceea ce vă este util ca să urmăriți consumul
de resurse vis a vis de performanțele plăcii grafice şi funcționalitatea jocului (vedeți şi pagina

de documentație sau subcapitolul despre optimizarea performanței grafice a jocului ).


Ultimul buton este comutatorul meniului derulant numit Gizmos. Dacă îl activați, toate acele
elemente - Gizmos care apar în fereastra de proiectare a scenei (Scene View) vor fi desenate şi
în fereastra Game View (n.n. deşi cel puțin pe unele jucătorul n-ar trebui să le vadă). Aici se
include şi toată grafica desenată de funcțiile, de metodele din clasa Gizmo. Lângă butonul
Gizmos în meniul derulant se pot vedea diferitele componente de acest tip care sunt folosite în
joc.

-20-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Observați că lângă numele fiecărei componente există setările pentru iconița şi gizmo-ul care-i
sunt associate.
Iar sub numele de Icon se ascunde un alt meniu derulant care vă dă voie să alegeți una dintre
iconițele presetate – ca reprezentare – sau chiar să definiți una nouă făcută dintr-o textură.

Setările Gizmo vă permit să activați sau să dezactivați


desenarea acestor componente (Gizmos), una câte una
după nevoi.
Setările 3D Gizmos settings din partea de sus a
meniului se referă toate la aceste iconițe Gizmo.
Dacă activați această opțiune iconițele se vor arăta din
perspectiva camerei 3D (adică, iconițele pentru cele
mai apropiate obiecte vor arăta mai mari decât ale
obiectelor de la distanță), în caz contrar toate iconițele
fiind arătate de aceeaşi mărime, indiferent de distanța
până la obiect.
Potențiometrul liniar – butonul deplasabil – de lângă
bifa (checkbox) vă permite să schimbați dimensiunea
iconițelor ceea ce reduce suprapunerea şi aglomerația
atunci când pe ecran sunt foarte multe astfel de iconițe -
gizmo vizibile.

-21-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Inspectorul obiectelor
Jocurile scrise în Unity sunt construite dintr-o
mulțime de entități din clasa GameObjects care (la
rândul lor) conțin modele, programe numite script-
uri, sunete sau alte elemente grafice cum sunt sursele
de lumină. Inspectorul va permite să vedeți în detaliu
un anumit GameObject, selectat, distingându-i toate
componentele ataşate şi toate proprietățile. De aici se
modifică funcționarea obiectelor din scenă (n.n. De
exemplu modificând atribute sau introducând script-
uri). Există în documentație un subcapitol dedicat
relațiilor care se stabilesc între un GameObject şi
componentele sale, relație pe care este recomandat s-
o întelegeți bine. (n.n. V-ar plăcea o maşină care să
plece din loc lăsându-şi roțile în parcare ? Sau una
care ar frâna cu o forță aleatoare ori inadecvată ?)
Fiecare dintre proprietățile, atributele, afişate de către
Inspectorul Obiectelor poate fi modificată pe loc.

Chiar şi variabilele (de fapt valorile lor) folosite de


scripturi pot fi modificate şi aceasta fără a modifica
scriptul însuşi. Puteți folosi variabilele pentru a
schimba, folosind Inspectorul, valorile lor chiar din
timpul jocului – văzând imediat ce l-ar face atractiv,
sau dimpotriva plictisitor.

-22-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Atunci când lucrați la un script şi declarați o variabilă de un tip obiect (cum sunt GameObject
sau Transform), puteți în mod vizual să trageți cu mouse-ul şi să puneți acolo, în căsuța
inspectorului de obiecte, un GameObject sau un Prefab(ricat) pentru a atribui acea valoare
variabilei obiect.
Dând click pe un anumit semn de întrebare “?” care apare sub numele unei componente
vizionate de către Inspector sunteți trimis la pagina de documentație a componentei respective.
(eng. Component Reference page.)

Dacă dați un click pe iconița în forma de roată


dințată (ori un right-click pe Component name)
căpătați acces la un meniu (numit contextual)
specific acelei componente.

-23-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Inspectorul vă va prezenta şi celelalte


atribute care provin din setările făcute
cu ocazia importului unui anumit
fişier, import care a stat la originea
unuui anumit obiect din joc.

Folosiți Layer drop-down pentru a


defini un strat destinat rendering-
ului acestui GameObject.

Folosiți Tag drop-down pentru a


atribui un Tag acestui GameObject,
selectat.

-24-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Prefab(ricate)
Atunci când aveți un Prefab(ricat) în centru atenției, selectat, vor apărea butoane suplimentare
în fereastra Inspector. Documentația mediului Unity include şi o pagină de manual cu explicații
despre aceste Prefab(ricate). Căutați-o .

Iconiţele
Atunci când inspectăm un obiect din Unity obiectului i se poate observa o iconiță specifică în
colțul din dreapta sus, exact lângă nume. (Utilă mai ales pentru obiectele transparente şi cele
active din scenă.) Notați că pentru un GameObject sau un Prefab(ricat) puteți seta o iconiță
anume care să marcheze obiectul pe scenă. Iar când veți da click pe ea, apare un meniu pentru
selecție:

Iconițele prelungi din partea de sus sunt cele care vor însoți obiectele din Fereastra Scenei. (n.n.
revedeți imaginea cu farfuria zburătoare şi lemmingşii) .

Minuscula iconiță din partea de jos a meniului nu numai că vă va arăta numele obiectului ci îi
va arăta o anumită formă (aleasă dinainte) şi o anumită culoare. Butonul Other din partea de jos
a meniului vă dă acces la o listă din care puteți alege orice textură / imagine care va servi la a
identifica obiectul. (n.n. Ca atunci când alegi o iconiță pentru un fişier.)

-25-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Etichete
Unity permite bunurilor să fie marcate cu etichete pentru a le găsi şi a le categorisi mai uşor.
Ultimul element din partea de jos a Inspectorului de obiecte este panoul cu etichete: Asset
Labels .

Pe rândul de jos al acestui panou exista un buton cu semnul elipsei pe el (“…”) . Dacă dați
click pe acest buton obțineți un întreg meniu format din etichetele existente în acel moment.

Se pot alege ori una ori chiar mai multe dintre aceste etichete pentru a eticheta un bun cu ele.
(De altfel ele apar şi pe panoul Labels – etichete). Dacă mai dați încă un click, al doilea, pe o
astfel de etichetă – numită etichetă activă – ea va fi dezlipită, scoasă de pe respectivul bun.

-26-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Meniul posedă şi un text-box care îți permite să defineşti un filtru pentru reducerea numărului
de etichete afişate. Dacă tastați aici un nume care nu există printre etichete şi apăsați Enter,
noua etichetă va fi automat adaugată pe listă şi lipită, atribuită, obiectului, bunului curent. Iar
dacă o etichetă definită de dumneavoastră este rând pe rând ştearsă, scoasă de pe toate obiectele
din proiect unde o lipiserăți, ea va dispare şi de pe lista cu etichete.
Imediat ce ați aplicat etichete pe bunurile dumneavoastră puteți beneficia de prezenta lor pentru
a rafina căutările pe care le faceți din Browser-ul Proiectului. De asemenea, din scripturi puteți
accesa baza de date cu etichete cu ajutorul metodelor clasei AssetDatabase.

-27-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Alte Ferestre
Ferestrele enumerate pe această pagină acoperă toata gama de ferestre ale IDE-ului Unity. Ceea
ce nu apare aici este descris în alt subcapitol. Le enumerăm şi le precizăm rolul:

• Consola prezintă lista mesajelor, erorilor, avertismentelor care vă sunt aduse la


cunoştință, centralizat.

• Fereastra Animation-View serveşte la a pregăti animațiile objectelor din scenă.

• Profiler-ul este instrumentul cu care urmăriți performanțele tehnice ale jocului şi-l veți
folosi pentru a găsi situațiile şi locurile unde jocul se mişcă foarte încet (eng.
performance bottle-necks – s-ar putea numi loc de reducere a performanței, gâtuitură de
performanță)

• Dacă folosiți un server Unity’s Asset Server (n.n. oarecum similar CVS-ului) pentru a
gestiona variantele succesive prin care trece proiectul, utilizați fereastra Asset Server
View pentru a comunica cu acesta.

-28-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

• Fereastra Lightmapping View se foloseşte pentru a gestiona iluminatul scenelor.

• Iar instrumentul Occlusion Culling View vă ajută să îmbunatățiți performanțele jocului


degrevându-l de sarcina desenării (procesării) obiectelor invizibile deja.

-29-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Aranjarea spaţiului de lucru


Puteți să vă amenajați după preferințe spațiul de lucru ancorând oricare dintre ferestre pe
oricare dintre laturile spațiului de lucru. Este suficient să le luați cu mouse-ul de TAB-ul
superior (acele porțiuni notate cu nume ca Project, Game etc) şi să le mişcați prin click-drag.
Dacă lăsați să se oprească şi să cadă o fereastră în aria de TAB-uri a altei ferestre, ceea ce ați
adus cu mouse-ul se adaugă la lista TAB-urilor existente. Dacă în schimb le lăsați să cadă într-
una din acele Dock Zone ele vor apărea ca ferestre noi.
Aceste TAB-uri cu tot conținutul fişei respective pot fi detaşate de pe marginea ferestrei
editorului principal şi grupate în alte ferestre de tip Editor (Windows).

Conținutul acestora nu are restricții, se supune aceloraşi reguli ca fereastra principală de


editare. Puteți grupa câte TAB-uri şi vederi doriți. (n.n. Cei care au folosit Gedit sub Linux
ştiu ce şi cum).

-30-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Atunci când ați creat un aranjament, un layout, îl puteți salva folosind Save şi-l puteți reface
ulterior. Aveți o listă derulantă de layout-uri , Layout drop-down (plasată pe bara - Toolbar) şi
în locul unui Layout predefinit puteți alege de pe lista Save Layout…. pentru a-l salva pe cel
nou. Dați un nume sugestiv noului aranjament, salvați-l şi refaceți-l pur şi simplu alegându-l de
pe lista Layout drop-down.

-31-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

În orice moment al lucrului un simplu click-dreapta pe un TAB oarecare va dezvăluie o listă de


opțiuni suplimentare printre care este şi cea pentru maximizare Maximize sau acea de adăugare
a unui nou tab în aceeaşi fereastră.

-32-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C4
Gestionarea bunurilor modelate
Acum vom explica cum se realizează unul din acele obiecte – bunuri pe care le găsiți în jocurile
video, astfel încât să înțelegeți cum le folosim în Unity. Etapele sunt cam aceleaşi întotdeauna
iar aici sunt prezentate cele esențiale. Ca exemplu este folosit un obiect cu contururi din sârmă
– care arată ca o plasă – şi este numit din acest motiv 3D mesh.

Crearea versiunii primare a bunului


Folosiți un program de modelare compatibil cu Unity pentru a creea o primă versiune a
obiectului dorit. Profesioniştii cu dare de mână folosesc software scump cum este programul
Maya. În programul de modelare se lucrează asupra formei obiectului pâna când sunteți gata s-
o salvați. Unity este de altfel însoțit de o pagină de documentație pe care figurează lista
actualizată a aplicațiilor de modelare şi formatelor de fişier cu care el este compatibil şi a căror
formate de modele le importă cu succes.

Importul
Atunci când salvați prima dată modelul unui bun salvați-l în dosarul Assets al proiectului
dumneavoastră. Astfel, când veți deschide proiectul din Unity, modelul bunului va fi recunoscut
şi importat, adaugându-se la proiect.
Atunci când vă uitați în fereastra Project View va trebui să găsiți modelul, pe care l-ați salvat,
acolo. Notați faptul că Unity foloseste convertorul de format FBX inclus în software-ul de
modelare folosit de dumneavoastră, pentru a converti modelele la/de la formatul FBX. (!!) Aşa
că va trebui să aveți pus acest modul de export/import la dispoziția programului Unity. Ca
alternativă, puteți exporta FBX -urile direct din aplicația de modelare punându-le în dosarul de
proiecte Projects al Unity-ului. Documentația IDE-ului Unity include o listă de programe de
modelare cu care acesta este compatibil şi explicații cum se importă modelele bunurilor.

-33-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Reglaje pentru Import


Dacă ați selectat un astfel de model de bun în fereastra Project View, atributele care-i corespund
vor deveni vizibile în Inspector. Ceea ce apare depinde de tipul de bun care este ales pentru
import.

Adăugarea bunurilor modelate în Scenă


Pur şi simplu transferați prin tragere cu mouse-ul (drag) modelul bunului din cadrul Project
View în fereastra unde aveți Hierarchy – iearhia bunurilor jocului – sau în aceea numita Scene
View.
Atunci când trageți un astfel de model din plasă de sârmă pe scenă produceți de fapt un
GameObject care conține printre altele o metodă, numită Mesh Render, necesară la afişarea
modelului.
Dacă adăugați o textură sau un sunet ele nu pot deveni singure obiecte din joc; aveți nevoie de
un GameObject existent deja pe scenă sau în proiect la care să le adăugati.

Punerea bunurilor laolaltă


Aveți mai jos o descriere succinta a relaţiilor dintre cele mai comune obiecte sau bunuri.
• O Textură este aplicată pe un Material
• Un Material este aplicat pe suprafaţa unui GameObject (având o componentă Mesh
Renderer)
• O Animație este adăugată unui GameObject (având o componentă Animation)
• Sunetul dintr-un fişier este adăugat unui GameObject (având o componentă Audio
Source)

Crearea unui Prefab(ricat)


Un prefabricat este o structură compusă continând unul sau mai multe GameObjects având
componentele necesarea deja ataşate şi atributele (pre)setate. Prefabricatele sunt şi ele o clasă
de bunuri chiar dacă nu apar în scenă ca nişte entități individuale. Sunt mai curând nişte
şabloane care ne permit să producem instanțe ale lor, adică grupuri de obiecte plasate pe scenă.
Fiecare instanță este o copie distinctă a prefabricatului originar. (n.n. Imaginați-vă prefabricatul
ca un fel de formă pentru biscuiții iepuraş de Paşte, care are deja prevăzute toate detaliile,
incluzând ambele urechi, coada etc.) Exemplul tipic este să creați un prefabricat pentru un
copac şi după forma lui să produceți toți copacii dintr-un peisaj forestier sau dintr-un parc.
Automat, modificările făcute unui prefabricat se propagă asupra tuturor instanțelor (unii zic
instanțierilor) acestuia. Aşa că folosirea prefabricatelor este o metodă bună de a menține un set

-34-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

de obiecte consistent (n.n. De exemplu toate maşinile dintr-o țară au volanul pe dreapta sau
respectiv pe stânga.) Totuşi la nevoie se poate sparge legătura strictă între prefabricat şi instanța
sa, lucru necesar atunci când este nevoie să producem variante speciale. ( Eroul care vine cu o
maşină străină, ar fi un exemplu.) Este posibilă şi propagarea inversă a modificărilor:
modificări făcute unei instanțe (n.n. Care ne convin !) pot fi salvate sub forma unor modificări
ale prefabricatului din care ea provine: (meniul: GameObject -> Apply Changes to Prefab).
Pentru a multiplica obiecte puteți realiza un Prefab(ricat) dintr-un GameObject aflat pe scenă
în lucru, pur şi simplu, în mod vizual, ducând cu mouse-ul obiectul din scenă în fereastra
Project View a categoriilor de obiecte ale proiectului. Mai este ceva de făcut: Câmpul cu
numele prefabricatului devine activ – îl veți putea edita – astfel atribuiți noilor clase numele
dorite. Pentru mai multe informații căutați subcapitolul Prefab(ricate) în manualele ori website-
ul Unity sau în documentația mediului.

Modificarea modelelor
La început ați importat modele, ați instanţiat prefabricate şi în final ați salvat obiectul produs
drept un alt prefabricat complex. Acum, dacă mai doriți să-l modificați dați un dublu click pe el
în fereastra Project View. Va porni programul corespunzător de editare a modelului din fişier şi
veți putea face modificările pe care le doriţi. Când terminați, salvați modelul. Apoi când vă
întoarceți în Unity, update-ul va fi detectat şi modelul re-importat. Chiar şi prefabricatele în
care apare acel model vor fi automat actualizate. Atâta este suficient de ştiut despre
modificarea modelelor: deschideţi-le, reeditaţi-le şi salvaţi-le !

-35-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Cum se importă modele din alte modelatoare


3D?
Pentru a importa un model 3D în Unity trageți pur şi simplu fişierul în fereastra proiectului. La
rândul lui, Inspector-ul, dacă dați click pe TAB-ul Inspector -> Model. El vă permite
importarea de modele produse de cele mai cunoscute aplicații de editare 3D.

Formate 3D
Importarea acestor modele – de sârmă - în Unity se face folosindu-se două formate de fişiere:
1. Acele fişiere în formatul pentru export 3D , cum sunt .FBX sau .OBJ
2. Acele fişiere 3D în formatul proprietar al aplicației, cum sunt fişierele .MAX şi
respectiv .BLEND de la 3D Studio Max respectiv Blender .
Ambele permit să importați modelele de sârmă în Unity, dar sunt câteva lucruri la care trebuie
să fiți atenți:

Fişiere pentru export 3D


Unity poate citi fiere .FBX , .dae (produse de software-ul Collada), .3DS, .dxf şi .obj -uri.
Module de program, plugin-uri pentru exportul în format .FBX găsiți la pagina web
http://autodesk.com/fbx şi există furnizori şi pentru modulele de export în formatele .obj
sau .Collada aşa încât multe aplicații pot fi înzestrate cu posibilitatea de a exporta în aceste
formate – confirmă autorii Unity.
Este avantajos:
• Să exporți doar datele de care ai nevoie
• Să verifici datele (re-importându-le în software-ul 3D înainte de a le folosi în Unity)
• Să lucrezi cu fişiere mai mici dar mai multe.
• Să promovezi un stil de lucru modular - de exemplu să ai separate diferite
componente, pentru simularea colizunilor şi a interactivității
• Să poți folosi modele în alte formate proprietare – via un export în formatele de mai sus
– chiar dacă Unity nu acceptă direct acele formate proprietare.
Dezavantaje:
• Succesiunea etapelor necesare refacerii, testării şi modernizării proiectului, cu multe
sălvări şi exportări poate fi uneori incomod de lentă.
• Atenție deoarece există riscul pierderii legăturilor între versiunile modelelor originale şi
datele din joc (fişierele .FBX sunt un exemplu). Documentați evoluția proiectului şi

-36-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

versiunile fişierelor folosite în fiecare etapă de dezvoltare.

Fişiere cu formate proprietare 3D utilizabile indirect


În Unity puteți folosi, nu direct ci via unei conversii de formate, fişierele produse de: Blender
(devenit free !!), Cinema4D, Max, Maya, Modo, Lightwave şi Cheetah3D , printre care
sunt şi formatele .MAX, .MB, .MA ş.a.m.d.
Avantaje:
• Iterațiile, versiunile succesive ale proiectului se succed destul de repede (salvați fişierul
sursă iar Unity îl va reîncărca)
• Puteți începe lucrul la proiect cu un prototip, cu ceva simplu.
• Blender-ul este acum sub o licență liberă.
Dezavantaje:
• Cu excepția Blender-ului aveți nevoie şi de o licență pentru software-ul proprietar, una
pentru fiecare computer care foloseşte produsul împreună cu Unity.
• Unele fişiere proprietare se pot lungi enorm în urma reeditării, încărcând date inutile.
• Fişierele mari îl încetinesc pe Unity.
• Formatele proprietare sunt mai greu de supus verificărilor. Mai puține verificări
înseamnă mai multe bug-uri.
Documentația şi manualele Unity includ şi pagini cu explicații despre folosirea altor soft-uri
proprietare:
• Blender, (între timp devenit software liber), apoi
• Cinema 4D,
• 3D Studio Max,
• Cheetah3D,
• Modo,
• Maya,
• Lightwave.

Texturi
Stocăm texturile într-un folder numit “Textures” lângă modelul de sârmă exportat şi
inclus în proiectul Unity .
Acest lucru îi va permite lui Unity să găsească fiecare textură şi s-o aplice materialului

-37-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

generat cu ea. Un capitol întreg din documentația, site-ul sau manualul mediului Unity
se ocupă de texturi, fie ele 2D sau 3D, fie ele randate (numai în Unity Pro, sau clasice,
predefinite).

-38-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Modele
Fişierele cu modele care sunt plasate în dosarul cu bunuri ”Assets” în proiectul dumneavoastră
sunt automat importate şi stocate ca entități, obiecte, bunuri Unity.
Fişierul care conține un model 3D poate descrie un personaj, o clădire sau o piesă de mobilier.
(n.n. ş.a.m.d. am zice.) Modelul importat poate servi la crearea mai multor bunuri. În fereastra
Project view, ceea ce rezultă din importul unui model este etichetat ca fiind Model Prefab –
adică un Prefabricat conform modelului. În practică mai multe obiecte Mesh pot contribui
împreună la formarea unui Model Prefab(ricat).
Un fişier 3D cu un model poate să includă şi animație (poate doar a unor porțiuni sau vârfuri)
care serveşte la a anima acel model sau alte modele. Datele care descriu animația sunt
importate sub forma unuia sau mai multe “filmulețe” Animation Clips.
La desenarea modelului pe ecran mai contribuie modulele soft Mesh Filter (filtre pentru model)
care filtrează ceea ce produce componenta Mesh Renderer (desenatorul modelului) – acela care
face ca modelul să apară efectiv pe ecran.

Reglaje importante pentru modelele Mesh


Paleta de reglaje aplicabile unui fişier conținând un model va fi afişată pe TAB-ul Model al
importatorului FBX al Inspectorului, atunci când ați selectat modelul.
Modificările posibile afectează modelul de sârmă (mesh), normalele sale la suprafaţă
(normals) şi materiale (materials). Modificările sunt făcute asupra fişierului de pe disc deci
dacă aveți nevoie de bunuri cu setări diferite va trebui să porniți de la fişiere duplicate. (n.n.
Copiați fişierul modelului în mai multe exemplare sub nume diferite şi faceți setări separate
pentru fiecare dintre ele.)
Chiar dacă setările inițiale sunt utilizabile fără modificări la majoritatea proiectelor, vă prinde
bine să examinați lista de mai jos, întrucât vă lamureste ce setări puteți aplica unui obiect
provenit prin import dintr-un fişier.
Câteva ajustări care pot fi avute în vedere întotdeauna le aveți pe lista de mai jos:
• Scalarea - Acest factor de scală poate fi folosit pentru a compensa diferența de unitate
de măsură dintre Unity şi programul de modelare 3D. Scalarea suplimentară se aplică
întregului fişier. În mod normal factorul acesta ar trebui pus să aibă valoarea 1. Să nu
uitați că motorul de efecte fizice al Unity este calibrat ca şi cum o unitate ar fi de 1 m şi
gravitația ar avea 9.8 m/s2.
• Este important de ştiut că dacă doriți să aveți printre efecte o comportare corectă a
obiectului din punctul de vedere a fizicii, trebuie să aveți modelul corect scalat încă din
aplicația de modelare 3D. Dacă nu puteți asigura aceasta sau nu aveți cum să controlați

-39-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

şi să modificați modelul atunci locul de unde scalați modelul în ansamblul său este aici.
• Generați suprafețele de contact numite colliders – obtineți astfel o suprafaţă (mesh) de
coliziune care permite ca modelul dumneavoastră să interacționeze cu obiectele vecine
sau prea apropiate lui. Ajută la modelarea şi calculul coliziunilor.
• Dați nume materialelor implicate; acestea se vor indexa automat şi puteți să le şi căutați
texturile după nume, la nevoie.

-40-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietățile: Funcționalitatea:
Mesh
Motorul de efecte fizice al Unity-ului este calibrat ca un metru din
lumea jocului să fie egal cu o unitate din dimensiunea din lumea
modelelor. Dacă optați să folosiți modelul la altă scară, (n.n. Cam ca în
ScaleFactor
filmul “Dragă, am mărit copilul.”) puteți compensa alegerea prin
(Factor de scalare)
schimbarea acestei valori. Implicit, fişierele .fbx, .max, .jas şi .c4d au
o scală cu unitatea 0.01, fişierele .mb, .ma, .lxo, .dxf, .blend şi .dae au
o scală de 1.0 iar cele .3ds au o scală de 0.1.
Mărimea acestei valori va reduce dimensiunea modelului dar poate să
şi introducă neregularități de suprafaţă. Alegeți o valoare cât mai mare
Mesh Compression dar pentru care modelul nu arată prea diferit faţă de versiunea
necomprimată.
Ajută la reducerea dimensiunii jocului finit.
Permite ca modelului să fie rescris, salvat, modificat în timpul
funcționării aplicației. (n.n. Deci Unity permite să scrieți şi un program
de modelare !!) Activarea opțiunii creează o copie a modelului în
memorie. Dacă această opțiune este dezactivată economisiți memorie
deoarece Unity are permisiunea să descarce modelul (mesh) din
Read/Write Enabled memorie, încă din timpul desfăşurării jocului sau rulării aplicației.
(Citirea şi scrirea Totuşi daca scalați sau instanțiați modele din mers (la runtime) la scară
modelelor - Activata) neuniformă, vă este necesar să activați aceasta opțiune “Read/Write
Enable” aplicată fişierului cu modelul. Motivul este acela că scalarea
neuniformă obligă sistemul la păstrarea modelelor în memorie. În mod
normal acest lucru ar fi verificat la construcția produsului finit, dar
atunci când modelele sunt scalate şi rescalate din mers, aveți nevoie de
această setare. Altfel nu vor fi desenate corect în joc.
Optimize Mesh Opțiunea modifică ordinea în care sunt plasate pe suprafaţă triungiurile.
(Optimizarea ordinii) (n.n. uneori aceasta poate strica aspecul obiectului, verificați.)
Dacă o activați, Unity va importa acele contururi - BlendShapes -
Import BlendShapes
împreună cu modelul.
Generate Colliders Dacă este activată modelele vor fi importate şi pentru fiecare se vor
(generarea genera suprafețele de coliziune, automat. (n.n. Notați că la personaje şi
suprafețelor de obiecte mobile – imaginați-vă un arici sau o bicicletă, pentru ele se
coliziune) folosesc coconi de coliziune care NU urmăresc forma exactă a
suprafețelor obiectului. Dar la decoruri vaste, clădiri, munți, sau
interioare – dulapuri, containere - forma coconului de coliziune este

-41-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietățile: Funcționalitatea:
chiar forma obiectelor.)
Această opțiune este bine să fie activată pentru a se genera suprafețele
de coliziune ( Mesh Colliders ) asociate decorului automat.
Este avantajos să procedați aşa la gestionarea coliziunilor cu mediul
înconjurător. Evitați această generare automată pentru obiectele aflate
în mişcare. (n.n. Au şi foarte multe poligoane comparativ cu piesele din
decor şi consumă şi multă putere de calcul la calculul coliziunilor.)
Swap UVs
Folosiți această opțiune dacă după importul obiectelor însoțite de o
(Interschimba
hartă lightmap constatați că cele două coordonate UV sunt
canalele UV la
interschimbate. Opțiunea doar permută valorile UV înlocuindu-le
obiectele cu
unele cu altele.
lightmap)
Generarea datelor
Folosiți această opțiune pentru a crea şi ataşa obiectului un al doilea
Lightmap (Generate
canal UV (coordonate de textură). Util pentru Lightmapping.
Lightmap)
Opțiuni avansate Opțiuni avansate pentru Lightmapping. Consultați capitolul
(Advanced Options) corespunzător din documentația tehnică a mediului de programare.
Normale şi Tangente
Ştabileşte când şi cum trebuiesc calculate normalele la suprafețe.
Normalele
Contribuie la reducerea dimensiuni produsului final.
Opțiunea implicită este Normal – Import, adică să se încarce din fişier
Import / Importă
şi normalele precalculate de software-ul de modelare.
Calculează normalele pe baza unghiului de Smoothing. Dacă este
Calculate /
selectată, opțiunea privind unghiul Smoothing Angle devine şi ea
Calculează
activă .
Dezactivează normalele. Folosiți această opțiune dacă suprafaţa
modelată nu are nevoie de calculul sau prezenta normalelor şi nu este
None afectată de iluminatul în timp real. (n.n. O lampă luminată puternic de
lumina interioară, ar putea să nu aibă nevoie de calculul sau prezența
normalelor.)
Stabileşte când şi cum trebuiesc calculate tangentele şi binormalele.
Tangents / Tangente
Contribuie la reducerea dimensiuni jocului, a produsului final.
Importă tangentele şi binormalele din fişier. Această opțiune este
Import / Importă disponibilă doar pentru fişierele .FBX, Maya şi 3dsMax şi numai
atunci când normalele sunt în fişier.

-42-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietățile: Funcționalitatea:
Opțiunea implicită. Calculează tangentele şi binormalele.
Calculate /
(Opțiunea poate fi folosită, doar când normalele sunt necunoscute fiind
Calculează
ori importate ori calculate).
Dezactivează tangentele şi binormalele. Ca efect, suprafețele modelelor
nu vor avea tangente şi nu vor putea funcționa cu acele filtre normal-
mapped shaders care se bazează pe tangente sau binormale. (n.n.
None
Anumite filtre de texturare de exemplu – cum sunt cele de texturare
prin perturbarea orientării normalei nu pot funcționa fără calculul
normalelor.)
Smoothing Angle Parametru care spune sistemului cât de ascuțită trebuie să fie muchia
/ Unghiul de rotunjire încât să fie tratată ca o muchie fundamenală (hard edge). Are şi alte
- ascuțire utilizări interne,vezi: split normal map tangents.
Activați această opțiune dacă harta de lumini (normal map lighting) are
Split Tangents probleme, are defecte în raport cu suprafaţa modelului.
Aveți nevoie, de obicei, ca această opțiune sa fie activată la personaje.
Materiale /
Materials
Import Materials Dezactivați dacă doriți ca la import să nu se genereze materiale noi în
/ proiect. Sistemul va atribui materialul difuz implicit (Default-Diffuse)
Importul materialelor tuturor modelelor importate.
Material Naming
/ Schimbă felul cum sunt denumite materialele în Unity:
Numirea materialelor
Numele texturii difuze ( diffuse texture ) a materialului importat care va
By Base Texture fi folosit pentru a denumi acest material în Unity.
Name Atunci când nu este atribuită materialului nici o textură difuză, Unity
va folosi numele materialului aşa cum a fost importat.
From Model’s Numele materialului, aşa cum a fost preluat prin import din fişierul
Material modelului este folosit aşa şi în Unity.
Numele fişierului cu modelul împreună cu numele materialului
importat din fişier va fi folosit de Unity. (n.n. sunt un fel de nume
Model Name +
calificate, utile în cazul în care două fişiere model furnizează materiale
Model’s Material
distincte dar cu acelaşi nume, care nu vor trebui să se confunde în
proiectul final.)
Texture Name or Numele texturii difuze care însoțeşte materialul importat va fi folosit
Model Name + pentru a denumi materialul în Unity. Atunci când materialul nu are

-43-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietățile: Funcționalitatea:
atribuită o textură difuză ori o are (ca nume) dar ea nu poate fi găsită în
niciunul din dosarele cu texturi atunci materialul va fi denumit printr-
un nume format din numele modelului concatenat cu numele
materialului modelului (stringurile concatenate sunt Model Name şi
Model’s Material Model’s Material).
(Obsolete) Această opțiune este similară comportamentului implicit al Unity 3.4
(şi al versiunilor anterioare), fiind oferită pentru a asigura
compatibilitatea “înapoi”. Vă recomandăm să folosiți opțiunea By Base
texture Name, deoarece este cea mai putin complicată şi se comportă
convenabil.
Material Search / Specifică unde va căuta Unity descrierile materialelor pe baza
Căutarea denumirilor alese conform convenției Material Naming (de mai sus):
materialelor:
Unity va încerca să găsească materialele numai în dosarele Materials
Local locale adică în dosarele Materials prezente în dosarul care poartă
numele modelului .
Unity va încerca să găsească materialele în toate dosarele Materials şi
Recursive-Up
în dosarele lor părinte mergând pâna la dosarul Assets folder.
Unity va încerca să găsească materialele în oricare dintre folderele
Everywhere
proiectului Unity.

Sfaturi pentru exportul FBX -urilor


Unity suportă fişiere .FBX generate de o serie de aplicații 3D mai cunoscute. Urmăriți această
serie de etape de lucru care vă va conduce spre obținerea celor mai bune rezultate practice.
Select / Selectează -> Prepare / Pregăteste -> Check Settings / Verifică setările -> Export /
Exportă -> Verify / Verifică -> Import / Importă

Ce-ați dori să exportați ?


Ar trebui să ştiți ce se exportă şi ce nu, atunci când ansamblul conține mai multe feluri de
elemente, dintre care de unele nu este nevoie în Unity; cel puțin nu în forma în care le-ar salva
unele modelatoare 3D: meshes, cameras, lights, animation rigs, etc. Toate s-ar putea teoretic
exporta dar în practică de care aveți totuşi nevoie ?
• Aplicațiile de obicei vă permit să alegeți ce exportați, anumite obiecte (selected objects)

-44-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

ori întreaga scenă (whole scene)


• Asigurați-vă că exportati dintr-o anume scenă numai acele obiecte pe care doriți să le
folosiți fie că folosiți exportul selectiv al obiectelor, fie că ştergeți pur şi simplu din
scenă obiectele care nu vă sunt de folos şi abia apoi exportați.
• O metodă care s-a dovedit bună în practică: păstrați un fisier de lucru având toate
luminile şi toate celelalte elemente (control rigs etc.) dar la export lucrați cu exportul
selectiv sau chiar cu un exportator de scene specializat – programat special pentru acest
proiect.

Ce-ar fi nevoie să includem ?


Pregătiți-vă bunurile pentru un export fără probleme:
• Modelul de sârmă (Mesh) va fi pregătit astfel: Ştergeți istoricul construcției sale, (nu vă
trebuie); apoi Nurbs, Nurms, Subdiv surfaces … totul trebuie convertit la poligoane - fie
prin triangulare şi producere de triunghiuri fie producând patrulatere.
• Verificați elementele care definesc animațiile – Alegeți o valoare corectă pentru
parametrul rig, verificați frecvența cadrelor, lungimea animației, s.a.m.d.
• Când folosiți Blend Shapes / Morphing – Asigurați-vă că felul cum ați definit aceste
Blendshapes (în Maya) ori destinațiile Morph-ingului (în 3DS Max) sunt configurate
astfel încât structura mesh să fie exportată corect, conform nevoilor de a o folosi.
• Texturi – Asigurati-vă că texturile sunt puse deja la dispoziția mediului Unity copiindu-
le într-un folder numit \textures din dosarul proiectului.
• Smoothing – Verificați dacă doriți să folosiți aşa ceva: ați optat pentru smoothing groups
sau pentru smooth mesh ?

Cum să includ aceste elemente alese?


Verificați setările parametrilor care modifică exportul în format .FBX .
• Fii atenți la setările din fereastra de dialog care precede exportul, ca să ştiți ce exportați,
cu ce parametri şi dacă se va potrivi cu setările .FBX aşteptate de Unity. (n.n. Dacă un
.FBX salvat cu anumiți parametri se încarcă fără probleme în Unity, merită să notați acei
parametri sau să salvați o imagine a lor din fereastra de la export, am zice noi.)
• Bifați şi verificați: Animation / Deformations / Skins / Morphs după cum este cazul.
• Atenție: Vârfurile, markerii transformările lor pot fi toate exportate
• Camerele şi luminile din scena 3D nu sunt deocamdată importate de către Unity, chiar
dacă există. (n.n. Interesează să importăm modelul nu ambianța.)

Ce versiune de .FBX să folosim?


Folosiți ultima versiune de fişier .FBX acolo unde este posibil. (n.n. Noi v-am sfătui să faceți

-45-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

şi nişte copii de rezervă în alte formate de fişiere sau alte versiuni de .FBX)
• Autodesk(TM) modifică şi modernizează .FBX-urile periodic şi se pot obtine diverse
rezultate cu versiuni diferite ale soft-ului lor sau cu versiuni diferite ale aplicațiilor 3D
de la terți.
• Examinați opțiunile oferite de meniul Advanced Options -> FBX file format
• Dacă dați de necazuri reveniți la versiunea 2012.2 despre care cel putin ştim că este una
de calitate. Plugin-urile se găsesc la adresa:
http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=18817399

Va funcţiona cum ne aşteptăm ?


Verificați cum arată fişierul exportat
• Controlați mărimea fişierului, ea trebuie să treacă nişte teste evidente (de exemplu: Este
mai mare decât 10kB ?)
• Re-importați noul .FBX într-un alt cadru folosind produsul 3D care a servit la generarea
lui – obțineți ceea ce v-ați fi aşteptat ?

Importaţi !
• Importați rezultatul exportului în Unity, din nou, ca o ultimă verificare.
• Verificați cum s-a importat .FBX-ul examinând cu inspectorul: texturile, animațiile,
smoothing-ul, etc.
Iată mai jos cum arată dialogul de la exportul fişierelor .FBX din Maya:

-46-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

-47-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Importarea obiectelor din Blender


Unity importă direct fişierele produse de Blender. Acestea sunt produse de Blender FBX
exporter, care a fost adăugat la Blender de la versiunea 2.45. Din acest motiv, trebuie să
upgrad-ați Blenderul la versiunea 2.45 sau la una ulterioară (Citiți şi paragraful despre cerințele
hardware şi software din final.)
Pentru a începe lucrul salvați fişierul dumneavoastră cu modelul în format .blend în dosarul de
bunuri, “Assets”, al proiectului realizat cu Unity. Atunci când vă veți întoarce la Unity, fişierul
nou găsit va fi importat automat şi veți regăsi modelul în fereastra Project View.
Pentru a vedea cum îi stă modelului pe Scena proiectului Unity, trageți-l cu mouse-ul din
Project View în fereastra Scene View. Dacă veți modifica fişierul .blend , Unity îl va reîncărca
automat de fiecare dată când salvați din Blender o nouă versiune cu acelaşi nume. (n.n. Dar nu
cu Save As.)

Unity actualmente importă:


1. Toate vârfurile cu poziția, rotația şi scalarea fiecăruia. Punctele pivot şi numele sunt de
asemenea importate.
2. Modelele de sârmă (mesh) cu tot cu vârfuri, poligoane, triunghiuri, UV şi normalele la
suprafețe.
3. Osatura / Scheletul.
4. Modele texturate, acoperite cu o suprafaţă (ca o piele): Skinned Meshes (!!)
5. Animațiile.
Capitolul despre folosirea Blender-ului şi a produsului Rigify explică în detaliu cum se importă
personaje animate cu osatură în Unity pentru a fi folosite de componenta software de animație
numită: Mecanim.

Cerinţe
• Aveți nevoie de programul de modelare Blender versiunea 2.60 sau de una ulterioară
(deoarece pe la versiunea aceasta şi la cele anterioare ei exportul în format FBX nu
mergea bine).
• Texturile modelului şi culorile lui difuze nu sunt transferate automat. Asa că va trebui
să atribuiți dumneavoastra modelului, din Unity, aceste texturi, printr-o simplă
intervenție manuală: trageți cu mouse-ul textura dorită peste modelul de sârmă - mesh -
din Scene View .

-48-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C5
Crearea Scenelor
Scenele sunt compuse din obiectele (n.n. Unele obiecte provin din prefabricate.) pe care le
întâlniți în joc. Obiectele pot fi folosite inclusiv pentru a crea în joc şi meniul principal şi
nivelele (n.n. Care pot fi prefabricate.) precum şi orice altceva. Gândiți-vă totuşi la fiecare
scenă ca şi cum ar fi un singur nivel din joc. În fiecare scenă veți plasa decorurile dorite,
obstacolele artefactele, decorurile şi decorațiunile (texturi, tablouri, semne de circulație etc.)
astfel construind jocul pas cu pas.

Instanţierea Prefab(ricatelor)
Folosiți metoda descrisă în textul anterior pentru a crea un Prefab(ricat). Detalii suplimentare
gasiți în pagina de manual a mediului Unity destinată prefabricatelor. Îndată ce ați făcut un
Prefab(ricat) puteți repede crea copii ale acestuia numite instanțe. Pentru crearea unei instanțe
este de ajuns să luați cu mouse-ul prefabricatul din fereastra Project View a componentelor
proiectului şi să-l mutați în Hierarchy ori mai bine în fereastra Scene View. Astfel căpătați o
noua instanță a prefabricatului pe care o puteți pozitiona şi dota cu atributele dorite. (n.n. Cei
care au programat în asa-zisele medii vizuale -Visual TCL de exemplu – şi au pus cu mouse-ul
butoane pe o forma ştiu ce şi cum.)

Adăugarea de componente şi script-uri


Atunci când un Prefab(ricat) sau un GameObject este selectat şi evidenţiat îi puteți adăuga alte
funcționalități ataşându-i componente: Components. Scripturile sunt un tip particular al acestor
componente. Pentru a-i adăuga o componentă, marcați GameObject-ul dorit şi selectați o
componentă din meniul Component. Veți vedea cum componenta apare în Inspectorul
obiectelor ca un GameObject.
Script-urile sunt din start incluse în meniul Component.
Iar dacă adăugarea unei componente strică legătura GameObject-ului cu prefabricatul (Prefab)
din care provenea, puteți întotdeauna folosi opțiunea de meniu GameObject->Apply Changes
to Prefab pentru a restabili coerența actualizând prefabricatul, deci şi toate instanțele. (n.n. Să

-49-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

zicem că ați mutat volanul unei maşini pe dreapta – dacă actualizați prefabricatul toate maşinile
vor avea de acum volanul pe dreapta.)

Plasarea obiectelor din clasa GameObjects


Odată ce ați plasat – fie şi provizoriu – un obiect în scenă puteți recurge la Transform Tools
pentru a-l muta acolo unde doriti. Mai mult, puteți folosi acele Transform values (valori ale
transformării geometrice) accesibile din Inspector pentru a face reglaje fine ale poziției şi
unghiurilor de rotație. Consultați paragraful despre componentele care implementează
transformările geometrice pentru a afla mai multe informații despre pozitionarea şi rotirea
acestor GameObjects.

Aranjarea camerelor video


Camerele video sunt practic ochii prin care este văzut universul din joc. Orice vede jucătorul
vede prin una sau prin mai multe dintre aceste camere. Puteți aseza în scenă, roti, muta,
translata, plimba camerele ca pe orice alt GameObject. (n.n. Într-un joc de pilotaj, fie că
pilotezi o maşină de curse sau o navă spațială, poți pune o cameră să urmeze vehicolul, în timp
ce altele ar putea fi fixe.)
O cameră este pur şi simplu un GameObject având o componentă specială numita: Camera
Component. Prin urmare poate face tot ceea ce face un GameObject plus câteva acțiuni
specifice camerelor video. Aveți la dispoziție şi câteva scripturi dedicate camerelor dar
trebuiesc instalate incărcând pachetul Scripts package. Acest pachet de scripturi (n.n. mici
programele ajutătoare ) pot fi incluse de la inceputul creării proiectului, sau puteți folosi meniul
Assets->Import Package pentru a le încărca. Script-urile pe care le-ați putea folosi se găsesc în
meniul: Components->Camera-Control. Mai există câteva particularități ale camerelor video
cu care ar trebui să vă familiarizati. Un subcapitol din documentația despre Unity este de obicei
dedicat acestor obiecte aparte: Camerele video.

Luminile
Cu excepția unor rare cazuri, întotdeauna va trebui să adăugați surse de lumină sau alte feluri
de lumini în scenă. Există (n.n. de la apariția OpenGL-ului încoace.) trei tipuri diferite de
lumini (n.n. difuză, ambientală, speculară) fiecare având alt comportament decât celelalte.
Rețineți ca alegerea judicioasă a lor adaugă atmosferă şi magie jocului. Realizarea diferitelor
feluri de iluminat ale unei scene este un capitol care merită studiat separat. În manualele şi în
documentația Unity există o pagină specială sau un subcapitol dedicat tipurilor de iluminat.

-50-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Prefabricate
Deşi este practic să construieşti un GameObject într-o scenă adăugându-i componente şi
stabilind valori ale proprietăților acestora, totuşi …
Acest mod de lucru ar putea creea probleme atunci când ați avea în joc sau în mediul virtual un
obiect portabil şi modificabil, cum ar fi un laptop, un notebook sau orice piesă de recuzită care
este plimbată prin mai multe scene şi îşi modifică starea. Simpla copiere a obiectului ar
produce duplicate (unul pentru fiecare scenă) dar ele ar fi editabile independent.
În general se doreşte ca toate aparițiile unui obiect particular să aibă aceleaşi proprietăți, aşa că
atunci când plasați un obiect în scene în mai multe locuri să nu fiți în postura de a retuşa toate
copiile.
Din fericire Unity vă oferă o categorie de artefacte, bunuri generice, numite Prefab(ricate) care
va permit să definiți şi să stocați câte un GameObject complet cu tot cu componentele şi
proprietățile sale. Prefabricatul funcționează ca un şablon după care puteți crea prin instanțiere
mai multe obiecte de pe o scenă. (n.n. Amintiți-vă de containerele cubice sau paralelipipedice
din F.P.S-urile clasice. Sau gandiți-vă la masinile de formla 1, identice ca formă, dintr-un joc de
curse auto.) Orice schimbare operată asupra prefab(ricatului) acționează imediat, reflectîndu-
se în toate instanțele acestuia. Dar nu puteți suprascrie atribute ale unui obiect-instanță
individual de la acest nivel – al prefabricatului.
Nota: Atunci când trageți cu mouse-ul un bun (de exemplu un model - Mesh - provenit dintr-
un fişier) în scenă, se va crea o nouă instanță a obiectului şi toate aceste instanțe se vor
modifica automat când obiectul inițial se schimba. Deşi acest comportament este similar cu al
unui prefabricat, totuşi bunul care a fost astfel copiat NU este un prefabricat – în ciuda
similaritătii – şi nu veți putea să-i adăugați componente sau să faceți uz de alte facilități pe care
vi le oferă prefabricatele şi sunt descrise în continuare.

Folosirea Prefab(ricatelor)
Puteți realiza explicit un prefabricat selectând Asset -> Create Prefab din meniu şi tragând cu
mouse-ul (dragg) un obiect din scenă în zona goală a ferestrei prefabricatelor. Din acest
moment simpla aducere (dragg and drop) a prefabricatului pe scenă va produce o instanță a
obiectului conform acelui sablon care este prefabricatul. Obiectele create prin instanțierea unor
prefab(ricate) vor fi evidenţiate pe ierarhia proiectului cu un text scris cu albastru (obiectele
normale, unicate, sunt notate cu negru).
Aşa cum am menționat mai devreme, asemenea schimbări ale şablonului prefabricat se vor
reflecta în toate instanțele dar puteți de asemenea modifica instanțele ulterior, separat. Acest
lucru ar fi util, de exemplu atunci când creați NPC-uri similare (sau alte obiecte de serie
personalizate) şi introduceți mici variații pentru un grad mai mare de realism. Pentru a se

-51-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

distinge când o proprietate (n.n. moştenită) a fost suprascrisă, ea este arătată de către inspector
cu numele scris în bold, adică îngroşat.

(Atunci când o componentă complet nouă este adăugată la instanța unui prefab(ricat), toate
proprietățile ei vor fi arătate îngroşat.)
Puteți de asemenea să instanțiați copii ale unui prefabricat prin program, la rulare. (Ex: cutiile
de cola expulzate dintr-un automat, gloanțele sau rachetele expulzate de o armă, scheletul în
care se transformă un vrăjitor învins etc.)

Editarea unui prefabricat construit prin instanțiere


Inspectorul obiectelor are trei butoane în plus atunci când editați un prefabricat: Select, Revert
şi Apply.
Butonul Select selectează, alege, permite să indici, sablonul prefabricat din care provine
instanța curent editată a bunului. (n.n. Cumva indică schema bunului vizat, aşa cum este
schema pentru un radio.)
Modificând la acest nivel general, aveți posibilitatea să schimbați sablonul tuturor, (i se mai
spune prefabricatul principal, prefabricatul originar) deci să modificați dintr-o dată toate
instanțele, toate bunurile realizate conform acelei scheme originare.
Atenție: Puteți salva şi astfel suprascrie, valorile din instanță în locul valorilor din prefabricatul
originar prin apăsarea butonului Apply dar transformarile geometrice de poziție şi rotație sunt
excluse din motive evidente. (n.n. Toate instanțele ar ajunge suprapuse.)
Această manieră de lucru vă permite să editați toate instanțele unui obiect lucrând asupra uneia
singure şi este un mod convenabil de a face schimbări de anvergură.
Iar dacă faceți exprimente de modificare a proprietătilor unui obiect instanță (a unui
prefabricat) şi decideți că erau mai bune valorile dinainte (Cui nu i s-a întâmplat ?) folosiți
butonul Revert pentru a sincroniza instanța greşit modificată cu prefabricatul originar, cel din
care ea provine prin instanțiere.

-52-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Transformări geometrice
Componenta numită Transform(are) determină poziția, gradul de rotație şi factorul de scalare
(pe fiecare axă) la care sunt supuse obiectele din scenă.

Proprietăţi
Proprietatea: Rolul, funcționalitatea:
Position Transformarea schimbă poziția pe axele decoordonate X, Y, şi Z .
Rotation Transformarea face o rotație în jurul axelor X, Y, şi Z masurata în grade.
Transformarea include scalarea obiectului, diferită pe axele X, Y, şi Z.
Scale Valoarea “1” păstrează mărimea originară (cu care obiectul a fost importat).
(n.n. Scalarea cu factori 1 este elementul neutru al compunerii scalărilor.)

Translația într-o poziție, rotația şi scalarea produse de un astfel de set de transformări sunt
compuse cu (sunt măsurate relativ la) transformarea părinte (produsul matricelor de
transformare anterior aplicate, care au dus reperul acolo unde este, ca în OpenGL). Dacă
transformarea este prima transformare aplicată, nu are părinte, transformarea din imagine este
aplicată în raport cu spațiul scenei, altfel spus modificările sunt măsurate în raport cu reperul de
bază al scenei lumii virtuale.

-53-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Camera video
Camerele video sunt dispozitivele din unghiul şi din poziția cărora este prezentată lumea
virtuală jucătorului. Reglând şi mişcând camerele video puteți face ca jocul să ofere privitorului
imagini deosebite. Şi puteți să aveți un număr oricât de mare de camere video în scenă ! Ele pot
fi programate să prezinte imagini în orice ordine, din orice locuri ale scenei şi eventual numai
anumite părți ale scenei. (n.n. Imaginați-vă situația când personajul din scenă găseşte şi citeşte
o carte sau un pergament. Camera care înainte îl vedea de la distanță e înlocuită de o cameră
aflată în fruntea personajului.)

Atribute, proprietăți:
Proprietatea: Funcționalitatea, utilizarea:
Determină care din părtile scenei vor fi sterse şi care vor fi afişate
Clear Flags
de această cameră. Te ajută atunci când foloseşti camere diferit
/ Biții de ştergere
reglate pentru a produce părți ale imaginii finale – de pe ecran.
Este culoarea de fundal cu care se umple restul scenei după ce
Background / Fundal toate elementele vizibile au fost desenate şi nu există nici skybox –
cutia exerioară cu textura cerului pe fețe.
Incluzi sau omiți cu ajutorul ei întregi folii, straturi de obiecte din
Culling Mask / Masca
mulțimea celor randate, desenate, văzute de o anumită cameră.
bitilor de alegere a foliilor
Cere să fi atribuit fiecărui obiect un strat anume, din Inspector.

-54-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietatea: Funcționalitatea, utilizarea:


Stabileşte dacă această cameră va produce efect de perspectivă –
Projection / Proiecția
proiecție perspectivă – sau dimpotrivă – proiecție ortogonală.
Perspective Camera va randa obiectele respectând legile perspectivei.
Camera va randa obiectele uniform, ortonormat, fără efect de
Orthographic
perspectivă.
Size / Dimensiunea (doar Mărimea dreptunghiului – eng. viewport size – imaginii pe care o
pentru setarea desenează camera cu parametrul proiecție setat pe Orthographic.
Orthographic) La asemenea jocuri de obicei imaginea nu ocupă tot ecranul.
Field of view / Unghiul
Lărgimea unghiului de vedere al obiectivului camerei , pe axa Y -
de vedere (pentru
zice manualul.
opțiunea Perspective )
Nu tot spațiul 3D este văzut de cameră ci doar cel cuprins între
aceste plane perpendiculare pe direcția de privire. Obiectele
Clipping Planes / Planele
plasate înaintea sau după aceste distanțe (minimă şi maximă), nu
de decupare
mai sunt randate, văzute de cameră. Indică minimul şi maximul
adâncimii de câmp vizual.
Indică distanța celui mai apropiat punct de cameră care va fi încă
Near / Aproape
desenat – adâncimea minimă de câmp.
Indică distanța celui mai îndepărtat punct de cameră care va fi încă
Far / Departe
desenat – adâncimea maximă de câmp.
… adica exprimat în coordonate ale ecranului. Sunt patru valori
Normalized View Port
care ne indică dreptunghiul de pe ecran în care apare imaginea
Rectangle / Dreptunghiul
produsă de cameră, date în fracțiuni din dimensiunea ecranului.
de vedere normalizat
(valori între 0 –1).
Poziția pe axa X de la care începe desenarea a ceea ce vede
X
camera.
Poziția pe axa Y de la care începe desenarea a ceea ce vede
Y
camera.
Dimensiunea măsurată pe orizontală a imaginii produse de cameră,
W (Lățimea)
pe ecran.
Dimensiunea măsurată pe verticală a imaginii produse de cameră,
H (Înălțimea)
pe ecran.
Depth / Indicele de Indicele de adâncime al camerei, în ordinea de desenare. Imaginea
adâncime de la camera cu număr mai mare va fi desenată peste imaginea
camerei cu numărul imediat mai mic. Aşa se desenează panoul de

-55-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietatea: Funcționalitatea, utilizarea:


control al jocului.
Rendering Path / Mod de Opțiune care determină ce metodă de randare va fi folosită de
randare această cameră.
Use Player Settings / Această cameră va folosi oricare din metodele de randare (eng.
Cum se specifică pentru Rendering Path ) care este specificată de setările jucătorului:
jucător Player Settings.
Toate obiectele randate de această cameră vor fi procesate ca
Vertex Lit
obiecte Vertex-Lit.
Toate obiectele randate de această cameră vor fi randate într-un
Forward
singur pas pentru fiecare material.
Toate obiectele randate de această cameră vor fi desenate întâi în
Deferred Lighting
lipsa luminii apoi iluminatul tuturor va fi randat în ansamblu ca
(Unity Profesional )
ultimul obiect din coada de lucru.
Indică o textură ca fiind destinația imaginilor randate de această
Target Texture (doar la
cameră. Indicând o astfel de textură (dinamică) fireşte că obligăm
vers. Profesională Unity)
această cameră să nu mai facă randarea pentru afişare pe ecran.
Activează opțiunea derendering High Dynamic Range pentru
HDR
această cameră.

Detalii
Poziția camerelor dictează detaliile văzute de jucător în timpul jocului. Ea poate fi reglată,
modificată, programată – ele pot face mişcări, pot fi ataşate de obiecte părinte (n.n. Casca
minerului este un bun exemplu, dacă vă imaginați o cameră lângă lampă.) Pe scurt puteți obține
orice efect imaginabil, programabil. La un joc de puzzle sau de şah camera poate fi fixă pentru
a avea o vedere statică a tablei de joc. Un F.P.S. va ataşa camera de un acel obiect părinte care
este personajul, într-o poziție aflată la nivelul ochilor acestuia. (n.n. La altă înalțime la girafă şi
la alta la broasca testoasă.) Iar la un joc de curse v-ar plăcea să aveți o cameră care urmăreşte
de aproape vehicolul jucătorului.
Puteți crea mai multe camere şi atribui fiecareia un număr de nivel de adâncime ( Depth ).
Imaginile camerelor sunt desenate în ordinea adâncimilor acestora de la numărul ( Depth ) mai
mic la numărul mai mare. Cu alte cuvinte imaginea unei camere cotate cu Depth = 2 va fi
desenată peste imaginea unei camere cotate cu Depth = 1. (n.n. Ideea este cam la fel ca la Z-
buffer.) Puteți ajusta valoarea parametrilor care caracterizează Normalized ViewPort Rectangle
pentru a poziționa şi redimensiona cadrul în care va furniza imagine acea cameră, pe ecran.
Puteți crea nişte mini imagini în miscare (dinamice, televizate) cum sunt camerele de pe
rachete, imagini aeriene pe post de hartă, imagini văzute în oglinzi sau prin camere

-56-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

retrovizoare, etc. (Doar licențele Unity Pro permit... aşa ceva.)

Render Path – Feluri de randare


Unity permite să folosiți mai multe feluri de randare (numite Rendering Paths – textual Căi sau
metode de Randare). Veți folosi, veți alege una dintre ele în funcție de conținutul afişat de joc şi
de platforma hardware şi sistemul de operare pentru care dezvoltați proiectul. Performanțele şi
caracteristicile diferă şi cel mai des vor fi afectate, la schimbarea acestei opțiuni, luminile şi
umbrele (eng. Lights and Shadows). Opțiunea se va alege din meniul cu reglajele jucătorului:
Player Settings. Mai mult decât atât, o puteți redefini pentru fiecare Camera – în cazul în care
doriți neapărat ca unele camere să arate anumite feluri de imagini. (n.n. De exemplu o cameră
cu infraroşu urmează să dea imagini verzui, cețoase.) Manualele de Unity sau documentația
programului includ o anexă cu mai multe detalii tehnice. (n.n. Oricum, odată selectată opțiunea
procesul este automat.)

Fanioane de control a ştergerii


Fiecare cameră procesează şi stochează informații despre culori şi adâncimile din cadru atunci
când randează imaginile. Porțiunile din imagine pe care nu ajunge să fie desenat nici un obiect
sunt vide – un vid care trebuie reprezentat – şi acolo se va afişa textura sau culoarea cubului de
cer: skybox. Atunci când camerele funcționează, în memoriile alocate lor se acumulează
informație redundantă despre culori şi adâncime (n.n. Fanii Open GL au auzit de depth buffer).
Îndată ce o cameră îşi face treaba puteți acționa un comutator pentru a-i cere să şteargă datele
din buffer, eliberând astfel memorie prețioasă. Mai exact sunt patru astfel de comutatoare,
patru opțiuni care şterg diferite feluri de informații produse în timpul randării imaginilor cu
acea cameră.

Skybox
Aceasta este o textură implicită (n.n. Ca norii de pe cer – cerul fiind un cub enorm exterior a tot
ce e în scenă - sau tapetul de pe peretele încăperii.) Dacă această cameră curentă nu are nici o
definiție skybox pregatită, se va folosi automat ca înlocuitor acea textură de rezervă skybox
aleasă şi indicată de setul de parametri de la randare ( Render Settings ). O găsiți în meniu
Edit->Render Settings. Altfel, în lipsa ei, se va folosi pentru desenarea zonelor unde nu se vede
nimic doar culoarea de fundal prescrisă: the Background Color.
Ca variantă şi mod posibil de lucru, fiecare cameră poate avea o componenta skybox proprie,
(n.n. Deci printr-o cameră ai putea vedea cerul şi constelațiile de noaptea iar prin alta cel de
furtună sau clar de zi.) Pentru Unity skybox-ul este o textură formând cele şase fețe ale unui cub
enorm în care este inclusă scena. Consultați paragraful sau subcapitolul despre crearea acestui
cub: skybox.

-57-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Culoarea de Fundal
Orice porțiune vidă de pe ecran, în care nu apare desenat nimic, va avea totuşi o culoare
automat atribuită: aceea care este aleasă drept culoarea de fundal de la camera video curentă:
current Camera’s Background Color.

“Depth Only”
Dacă doriți să desenați arma unui jucător fără ca ea să producă clipping la marginea spațiului
(nu uitați că arma iese din cadru !!) setați pentru o cameră adâncimea Depth = 0 şi astfel
desenați decorul iar pentru o altă cameră puneți Depth = 1 pentru a desena doar arma singură.
Pentru o cameră care vede doar arma, parametrul Camera’s Clear Flag trebuie setat pe depth
only.

Această setare va face să fie afişat pe ecran tot mediul înconjurător dar va omite informațiile de
poziționare ale obiectelor în spațiul 3D. (!!) Astfel atunci când se desenează arma, părțile ei
opace vor acoperi complet tot ce este desenat, indiferent cat ar fi arma de aproape de un zid, de
exemplu. (n.n. Asa că nu vă veți trezi cu țeava armei pe jumătate infiptă în “gelatina” zidului.)

-58-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Parametrul “Don’t Clear”


În acest mod de lucru nu se şterg nici culoarea nici bufferul de adâncime. Rezultatul este că
fiecare cadru este desenat peste informațiile celuilalt (din care unele rămân vizibile) rezultând
un efect de curgere: a smear-looking effect. De obiei nu este folosit în jocuri (n.n. Poate doar
dacă vreți să sugerați stările de conştiintă modificată ale personajului) şi se implementează cel
mai bine prin shading programing, programaea shaderelor – implementând un filtru utilizator
( a custom shader).

Planele extreme - Clip Planes


Planul apropiat şi planul îndepărtat (eng. Near and Far Clip Plane) determină de unde pană
unde vede camera bucată vizibilă a lumii virtuale. Planele sunt perpendiculare pe direcția de
privire a camerei şi sunt date prin distanță până la aceasta – atât primul cât şi ultimul.
Bineînțeles, planul apropiat este primul în care se văd obiecte fiind îmediat lângă camera, iar
cel îndepărtat este ultimul.
Plasarea acestor plane de clipping influențează felul cum se memorează informațiile despre
scenă din buffer-ul de adâncime. Ca regulă generală, rezultate mai bune se obțin dacă reuşiți să
țineți planul apropiat cât mai departe puteți de cameră (!!).
Rețineți că spațiul dintre planele de clipping, cel de aproape şi de departe înpreună cu planele
care limitează unghiurile de vedere delimitează ceea ce este cunoscut (de programatori) sub
numele de frustum. Unity se asigură (n.n. de fapt Open GL-ul face aceasta ) că atunci când se
face desenul imaginii, obiectele care se află înafara acestui frustum nu sunt afişate. Operația
este denumită Frustum Culling. Frustum Culling se aplică indiferent dacă folosiți sau nu
Occlusion Culling în jocul dumneavoastră.
Din motive de viteză a aplicației, doriți probabil ca micile obiecte din perspectivă îndepărtată să
dispară puțin mai repede. (n.n. Într-un deşert pietros, texturat, bolovanii care fiind în prim plan
erau vizibili – ajunşi mai aproape de orizont sunt mulți, mici, dar consumatori de putere de
calcul şi pot să fie retraşi din peisaj. La o distribuție uniformă numărul lor creşte cu pătratul
distanței la observator !). De exemplu mici bolovani şi resturile, fragmentele de tot felul au o
distanță la observator de la care dispar oricum din imagine (şi din motive de dimensiune
unghiulară) mai mică decât clădirile înalte. (n.n. Puteți vedea de la distanță turnul de
televiziune dar nu şi mormanul de pietriş lăsat de constructori la baza lui – iar acesta conține
mult mai multe poligoane desenate inutil de mici.) Cum faceți acest lucru: Puneți obiectele
mărunte pe un layer (folie de animație) separat şi reglați dispariția acestor obiecte la
îndepărtare per-layer folosind funcția Camera.layerCullDistance, dintr-un script.

Masca de Culling
Opțiunile de la Culling Mask se folosesc pentru a programa randarea obiectelor din scenă pe
grupuri, după nevoi. Obiectele grupate sunt strânse în aşa numitele Layers – straturi, folii de

-59-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

animație. Manualele şi documentația Unity-ului contin ambele câte un subcapitol despre


crearea acestor starturi de obiecte. În practică se obişnuieste să se pună interfaţa jocului (n.n. În
alte IDE-uri de jocuri se numeau Panels – şi erau în planul ecranului) pe un strat de obiecte
separat şi i se face randarea cu o camera tot separată dedicată vederii acestui panou de control.
Pentru ca aceasta interfaţă să se vadă desenată peste toate imaginile din joc – fără a interfera cu
ele – va trebui să-i reglați parametrul Clear Flags to Depth only şi să vă asigurați că imaginea
produsă de această cameră are indicele de adâncime Depth mai mare decât al celorlalte camere
– care produc imaginea din joc (n.n. Este ca şi cum ați avea un ochi care se uita la televizor – el
este prima cameră, este mai aproape şi vede şi carcasa acestuia - iar în imaginea transmisă de
altă cameră se vede spatiul virtual unde se petrece actiunea).

Normalized Viewport Rectangle – Dreptunghiul de vedere normalizat


Conceptul din titlu este inventat pentru a permite să precizezi în ce dreptunghi de pe ecran se va
desena cee ce vede camera curentă. Astfel puteți afişa o hartă văzută de sus într-un colt al
ecranului sau ceea ce vede o rachetă în mişcare în alt colț. Cu un pic de imaginație, folosind şi
Viewport Rectangle puteți realiza interfețe deosebite şi efecte unice.
Ca exemplu: Este uşor de realizat un ecran împărțit în două, pentru doi jucători folosind
Normalized Viewport Rectangle. După ce ați definit, creat, cele două camere schimbați-le
ambelor valoarea H la H = 0.5 apoi setați pentru camera jucătorului numărul unu atributul Y =
0.5, iar pentru numărul al doilea, Y = 0. Astfel imaginea dată de camera jucătorului unu va
apare în jumătatea de sus a ecranului iar cea de la camera jucătorului doi, în jumătatea de jos.

-60-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Camere video cu proiecţie ortogonală


Marcarea unei camere video ca fiind cu proiecție ortogonală (eng. Orthographic) elimină
efectele de perspectivă din imaginea furnizată de acea cameră. Acest lucru este util în special

când prezentăm proiecte în stil ingineresc – în maniera izometrică folosita la CAD – sau la
realizarea unor jocuri 2D a căror tablă este privită din unghi.

Atenție la faptul că – neexistând nici o perspectivă – ceaţa din lumea 3D va fi reprezentată

-61-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

uniform de către o cameră cu proiecție ortogonală şi s-ar putea să nu arate aşa cum vă aşteptați.
Citiți vă rugăm şi subcapitolul sau paragrafele despre reglajele care afecteză procesul de
randare al ceții.

Randare într-o textură


Această facilitate este oferită doar posesorilor de licente Unity Advanced. Ea plasează imaginea
oferită de o cameră într-o textură care poate fi apoi aplicată pe alt obiect. Acest lucru vă permite
să realizați acele ecrane de proiecție de pe stadioane, ecranele de cinema din săli, monitoarele
video şi televizoarele din vitrine, sistemele de supraveghere în jocurile cu infractori şi sedii
păzite, reflexiile din oglinzi şi suprafețele metalizate, etc.

Idei
• Camerele pot fi instanţiate, moştenite, procesate exact ca orice alt GameObject.

• Pentru a accentua senzația de viteză într-un joc de curse folosiți o valoare mai mare a
parametrului Field of View – adâncime de câmp .

• Camerele pot participa la efectele fizice, (n.n. Pot fi lovite de mingi, sparte în cioburi,
pot cădea de la înălțime etc.) dacă le adăugați o componentă Rigidbody .

-62-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

• Nu există nici o limită pentru numărul de camere pe care le puteți plasa într-o scenă.

• Camerele cu proiecție ortogonală (Orthographic cameras) sunt recomandate atunci când


proiectați interfețe utilizator cu grafica în 3D. (n.n. Un bord de nava spațială de ex.)

• Dacă procesarea generează artefacte de adâncime (suprafețe vecine cu efect de pîlpîire –


flickering) încercați să setați parametrul Near Plane la o valoare mai mare.

• Camerele nu pot lucra simultan şi în mod rendering Game Screen şi Rendering Texture
în acelaşi timp; hotărâți la ce veți folosi o cameră anume.

• Dacă aveți o licență Pro a produsului Unity atunci aveți activată şi opțiunea ca imaginea
randată din punctul de vedere al unei camere să se vadă ca o textură – se numeşte
Render-to-Texture, ceea ce produce acel efect unic, suplimentând setul efectelor Pro.
(n.n. O textură cu conținutul furnizat de o cameră apare în joc ca un ecran de televizor.)

• Unity vine din start cu nişte programe, numite scripturi, pre-instalate, accesibile din
meniul Components ->Camera Control. Încercați-le pentru a avea o primă imagine a
ceea ce se poate face cu jonglând cu camerele video.

-63-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

-64-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C6
Lumina, luminile
Luminile aduc o parte din personalitatea şi unicitatea unui joc. Le folosim ca să iluminăm scena
sau obiectele şi pentru a produce o atmosferă de neuitat. Luminile se pot folosi pentru a simula
lumina soarelui, aprinderea unui chibrit în întuneric, blitzurile, focurile de armă la gura țevii,
luminile exploziilor şi artificiilor, farurile automobilelor şi aşa mai departe.

Există patru (n.n. nu trei ca în OpenGL) feluri de lumini în mediul Uniy:


• Lumina paralelă, dintr-o singură direcție, cu toate razele sub acelaşi unghi, venită de la o
sursă de la infinit, cam aşa cum cade lumina soarelui în natură.
• Luminile punctuale care luminează dintr-un singur focar simultan şi egal în toate
direcțiile – cam ca un bec electric minuscul.
• Spoturile care iradiază dintr-un singur punct într-o anume direcție spre care sunt

-65-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

îndreptate şi luminează obiectele aflate într-un con – cam ca farurile unui automobil.
• Panourile luminoase zonale, (definibile numai sub formă de zone pe harta lightmap )
strălucesc în toate direcțiile din interiorul unei zone plane dreptunghiulare.
Luminile pot de asemenea genera şi umbră. (n.n. Iar lumina ambientală maronie închis care
scaldă pe dedesubt toate obiectele este lumina care dă culoarea zonelor de umbră).
Proprietățile fiecărei lumini se ajustează la nivelul obiectului sursă al acesteia.

Proprietăţile
Proprietatea: Funcționalitatea, utilizarea:
Type Tipul de obiect luminos care poate fi:
O lumină care vine de foarte foarte departe, teoretic de la infinit, cu razele
Directional
paralele. Ea luminează tot ce se găseste pe scenă.
O lumină care îşi împrăştie strălucirea în mod egal în toate direcțiile
Point începând din punctul de origine până la o anumită distanța Range (n.n. după
care este prea slabă ca să mai fie observată).
O lumină care luminează orice pică în interiorul unui con definit de un
Spot unghi la vârf şi o distanță la sursă Spot Angle respectiv Range. Doar
obiectele din această regiune conica sunt atinse de lumină.
O lumină care străluceste în toate direcțiile venind din punctele unei
suprafețe plane dreptunghiulare. (n.n. ca suprafaţa unui tub flourescent).
Parametrii Width and Height îi definesc dimensiunile, lungimea sau lățimea
Area şi înălțimea.
Aceste zone luminoase se pot predefini doar la crearea hărții de iluminat
(operația se numeste lightmap baking) şi nu au efecte asupra obiectelor la
execuția aplicației.
Cât de departe ajunge lumina proiectată din centrul obiectului sursă. Doar
Range
pentru sursele punctuale şi pentru spoturi.
Spot Angle Unghiul conului, masurat în grade. Doar pentru lumina spoturilor.
Color Culoarea luminii emise.
Strălucirea luminii punctuale şi a spotului ori a unei zone de lumina este
Intensity dată de numărul 1. Iar valoarea implicita pentru lumina paralelă,
direcțională, este 0.5.
Cookie Canalul alpha (conținând factorii de transparență) ai acestei texturi este
folosit ca o mască pentru a determina cât de strălucitoare să fie lumina în
diferitele locuri în care ajunge. Atunci când sursa este un spot sau o sursă
de la infinit, cu lumina paralelă, această textură este neapărat o textură 2D.

-66-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietatea: Funcționalitatea, utilizarea:


Dacă sursa de lumină este punctuală, textura va fi un Cubemap.
Factor de scalare folosit la proiecția unei texturi Cookie. Doar pentru
Cookie Size
lumina paralelă, direcțională .
Valori: Nimic/No, Hard sau Soft pentru umbrele care vor fi proiectate de
Shadow Type
această sursă de lumină. Umbrele Soft(ware) care, de altfel, nu sunt posibile
(Pro only)
pe dispozitivele mobile sunt şi computațional mult mai scumpe.
Strength Întunecimea umbrelor. Valorile sunt între 0 şi 1.
Resolution Gradul de finețe al detaliilor umbrelor.
Offset, prag, constantă folosită la compararea informației pixelului din
spațiul iluminării (light space) cu aceea din harta de adâncime a umbrelor
Bias
shadow map. (n.n. făcută din alt unghi). Vedeți: Shadow Mapping şi
paragraful despre coeficientul, pragul Bias de mai jos.
Factor de scalare pentru regiunea de penumbră (este de fapt coeficientul
Softness
utilizat de filtrul blur). Numai pentru lumina paralelă, direcțională.
Finețea reprezentării umbrei calculată pe baza distanței pină la cameră – ca
Softness
să dea cam acelaşi efect vizual în toate părțile scenei. Numai pentru lumina
Fade
paralelă, direcțională.
Dacă setați acest parametru, va fi desenat un halou sferic de lumină ca aceea
a sursei, având raza egală cu valoarea atributului Range.
Draw Halo
Pentru mai multe detalii tehnice consultați subcapitolele documentației
(anexate) privitoare la efectul de Halo şi reglajele randării .
Referință opțională la o componentă – textură - Flare care va fi plasată în
Flare
aceeasi poziție cu sursa de lumină.
Modul de procesarea al acestei lumini. Alegerea unuia poate modifica
Render Mode fidelitatea reprezentării şi calitatea, vezi paragraful Considerații privind
performanța, de mai jos. Opțiunile includ:
Metoda de randare a acestei lumini va fi aleasă la execuție în funcție de
Auto strălucirea luminilor vecine şi setările curente referitoare la calitate: acele
Quality Settins.
Această lumină importantă va fi totdeauna randată într-un mod de calitate:
Important per-pixel. A se folosi numai pentru efectele cele mai importante (ex.
Farurile maşinii jucătorului).
Not Aceasta lumină secundară ca importanță va fi totdeauna randată într-un mod
Important rapid: vertex/object light mode.

-67-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietatea: Funcționalitatea, utilizarea:


Masca de biți folosită pentru a programa excluderea unor grupuri de
Culling Mask
obiecte de la a fi afectate de lumină. Vezi folosirea straturilor : Layers.
Modul de lucru pentru Lightmapping: în timp real = RealtimeOnly,
Lightmapping Auto(reglat) sau predefinit = BakedOnly; studiați şi documentația despre
lightmappings – folosirea hărtilor de iluminat.
Width (Doar pentru zone de lumină.) Lățimea unei zone de lumină.
Height (Doar pentru zone de lumină.) Înălțimea unei zone de lumină.

Detalii
Exista patru feluri de lumini în Unity. Fiecare poate fi reglată încât să corespundă nevoilor pe
care le aveți.
De exemplu: Ați putea crea o textură care conține pe lingă culori şi un canal alpha, adică o
imagine cu zone colorate şi zone transparente şi să o utilizați drept atribut Cookie al unei
lumini. Acest veritabil diapozitiv va fi proiectat în spațiu şi pe obiecte de către o sursă de
lumină. Componenta de pe canalul alpha va modula intensitatea luminii rezultând zone
iluminate şi zone întunecate pe suprafețele care altfel ar fi fost egal iluminate. Este o metodă
extraordinară de a adăuga dinamism şi mister unei scene.
Toate filtrele predefinite care procesează imagini prin gl-shading (n.n. acele built-in shaders )
în Unity funcționează şi procesează bine orice fel de lumină. Totuşi nu puteți afişa nici efectele
şabloanelor Cookies nici umbre (complexe) dacă folosiți metodele de procesare la nivel de
vârf: VertexLit.
În varianta Unity Pro toate luminile pot să fie înzestrate cu umbre Acest lucru se face selectând
valoarea Hard Shadows (umbriri dure: alv versus negru) sau valoarea Soft Shadows (umbriri cu
tranziție lentă, gradată) pentru atributul Shadow Type pe care îl are fiecare sursă de lumină.
Pentru mai multe informații tehnice despre umbre căutați subcapitolul sau pagina web
Shadows.

Lumini punctuale

-68-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Luminile punctuale, punctele luminoase, strălucesc iluminând în toate direcțiile. Sunt cele mai
întâlnite lumini în jocurile video, fiind folosite la explozii, la crearea becurilor etc. Din punct de
vedere al consumului de resurse ale procesoarelor grafice sunt încadrate în categoria medie.
Totuşi umbrele precise produse de ele necesită o putere de calcul mare !

Punctele luminoase pot fi realizate folosind aşa numitele cookies – texturi tridimensionale de
tip Cubemap dotate cu un canal - de culoare - alpha. Componenta Alpha este transparența
texturii. Această hartă de iluminat pe care v-o puteți imagina plasată pe cubul din jurul
punctului luminos este proiectată în spațiu, simultan, în toate direcțiile. Noi am spune că ea este
ideală pentru realizarea de felinare suspendate pe stîlpi şi alte lumini de exterior închise în
carcase metalice sau de fier forjat, al căror design se va vedea foarte bine, proiectat fiind pe
obiectele înconjurătoare.

-69-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Spoturi de lumină

Spoturile luminoase iradiază lumina într-o direcție preferențială, sub forma unui con având
acea direcție a propagării luminii drept axă. Sunt indicate a fi folosite drept lumini de blitz-uri,
faruri de automobil sau anumite lămpi plasate pe un perete. Sunt cele mai scumpe în termenii
puterii grafice consumate la calculul efectelor de lumini si umbre.

-70-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Spoturile pot fi înzestrate şi ele cu o mască, o textură cookie – textură care se proiectează în
josul conului de lumină. Închipuiți-vă efectul luminii care cade printr-o fereastră acoperită de o
perdea. Aveți grijă ca textura să fie netransparență, neagră la margini, să aibă activată opțiunea
Border Mipmaps iar parametrul wrapping mode (eng. textual, mod de înfăşurare) să fie setat la
valoarea Clamp. Consultați şi subcapitolul despre texturi (eng. Textures.)

-71-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Directional Light – Lumina direcțională, paralelă

Lumina paralelă sau direcțională este folosită la realizarea scenelor de exterior, cu soare sau la
lumina lunii – ambele, luna si soarele, fiind surse foarte îndepărtate. Aceasta lumină apare pe

-72-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

toate obiectele din scenă. Şi este cea mai uşor de calculat – în termenii puterii de calcul
solicitate plăcii grafice. Realizarea umbrelor produse în lumina direcțională de platforme care
lasă umbre trebuie însă explicată separat.

Atunci când lumina paralelă are ataşată o textură cookie, aceasta va fi proiectată doar în jos, de-
a lungul axei Z a sursei de lumină. (Oricum, niciodată nu veți vedea lumina de la soare sau de
la lună venind de jos în sus, nu-i aşa ?) Dimensiunea şablonului-textură folosit este
modificabilă, schimbând pentru aceasta atributul Cookie Size. Nu uitați să setați atributul
Texture’s wrapping mode (adică modul de repetare al texturii) la valoarea Repeat, din
Inspector.

O textură cookie este un mod bun de a adăuga rapid detalii unei scene de exterior, altfel banale.
Puteți chiar să mişcați încet sursa de lumină de-a lungul scenei, dând impresia unor nori purtați
de vânt.

-73-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Notați faptul că umbrele sunt dezactivate atunci când utilizați lumină direcțională împreună cu
şabloane de textură - cookies – şi randați în modul forward rendering. Este totuşi posibil să
scrieți propriile programe: shaderele-utilizator (în GLSL de exemplu) caz în care trebuie să
activați opțiunea fullforwardshadows.

Dreptunghiuri de lumină (Area Lights)


Sunt zone (n.n. Ca nişte panouri publicitare iluminate dinăuntru) care emit lumina de pe o
singura faţă a unei suprafețe plane dreptunghiulare.

-74-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Lumina este distribuită pe toate obiectele din vecinătate. Dimensiunile dreptunghiului sunt
determinate de atributele Width şi Height iar orientarea este indicată de direcția normalei la
planul luminos (adică aceasta indică faţa luminoasă şi direcţia în care se vor lumina obiectele
scenei), aceasta fiind totodată direcţia axei Z din reperul ataşat sursei de lumină. Lumina este
emisă de întreaga suprafaţă a dreptunghiului şi ca urmare umbrele şi penumbrele generate de
obiecte sunt mult mai vagi şi mai neclare decât cele produse de obiecte expuse surselor de
lumină punctuale sau luminii paralele, direcţionale (n.n. solare).
Deoarece calculul iluminării de la astfel de surse consmă foarte multă putere de calcul, aceste
iluminări nu sunt calculabile din mers, la rulare, ci doar precalculate şi incluse în memorie în
hărţile de iluminat predefinite, acele lightmaps.

Luaţi în considerare performanţele


Luminile pot fi randate în două moduri esențial diferite: vertex lighting şi pixel lighting. Vertex
lighting calculează iluminarea doar în vârfurile retelei de poligoane ale modelelor din joc şi
interpolează pe baza acestor valori cantitatea de lumină care cade în alte puncte de pe acele
poligoane ale modelului. Cu metoda Pixel lighting iluminatul pixelilor se calculează pentru
fiecare pixel al scenei în parte şi este deci mult mai mare consumator de putere de calcul. Unele
plăci grafice vechi funcționează numai în modul vertex lighting, neputând calcula direct

iluminatul în fiecare punct. Chiar dacă modul de lucru pixel lighting măreşte timpul de randare,
el permite obținerea unor efecte speciale care nu s-ar fi obținut prin tehnica vertex lighting.

-75-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Normal-mapping, light cookies şi realtime shadows (umbre în timp real) sunt numele efectelor
care se pot obține doar cu metoda pixel lighting de calcul a iluminării în fiecare punct.
Conurile spoturilor de lumină şi punctele luminoase (luminile punctuale, led-rile etc.) vor arăta
mult mai bine dacă sunt randate în maniera pixel mode, pixel cu pixel. Pe când în modul vertex
light dacă sunt randate, cele trei feluri de lumini descrise mai sus vor arăta ca în imaginea
următoare (cu punctele de lumină randate în modul vertex mode) :

-76-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Luminile au o mare influență asupra vitezei cu care se miscă jocul – aşa ca va trebui să faceți
un compromis între calitatea iluminatului din scene şi viteza aplicației. Deoarece calculul la

-77-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

nivel de pixel este mult mai dificil – şi mai scump chiar – decât interpolarea după vârfuri,
algoritmii din Unity vor alege să randeze numai cele mai strălucitoare lumini (capabile a da
multe nivele intermediare de lumină şi umbră) în maniera şi la calitatea pixel lights. Cât de
multe lumini vor fi randate astfel puteți regla schimbând un parameru aflat în lista setărilor de
calitate atât pentru jocurile destinate web-ului cât şi pentru cele care rulează local.
Puteți explicit selecționa dacă lumina va fi randată în tehnica vertex (cu interpolare între
vârfuri) sau aceea numită pixel light (calcule punct cu punct), modificând proprietatea Render
Mode a sursei. În lipsa altor specificații Unity clasifică automat luminile după numărul de
obiecte atinse de acele lumini. Alegerea dacă o anumită lumină, într-un anumit context, va fi
randată cu metoda pixel lights se face analizând obiectele scenei concrete, date spre randare.
Consultați şi subcapitolul de manual sau din documentație dedicat optimizării performanţei
graficii, pentru a afla mai multe detalii despre impactul asupra vitezei.

Crearea spoturilor luminoase – cu textură - cookie


Sunt folosite pentru a realiza lumini puternice, venite de afară de obicei. Căutați pe web
documentul Tutorial on how to create a Spot light cookie.

-78-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Umbre în lumină paralelă


Acest (sub)capitol explică felul cum se realizează luminile şi umbrele în scenele de exterior,
acele scene luminate cu lumina paralelă, direcțională. De notat: atunci când lucrăm pe
dispozitive mobile umbrele în timp real produse in lumina direcțională sunt întotdeauna
compuse printr-o singură umbrire în cascadă şi sunt umbre “dure” (Hard Shadows).
Luminile direcționale constituie de obicei lumina de bază din scenă – fie că este o scenă cu
soare ori cu lună – în acele jocurile care se desfăsoară în decoruri din exterior. Spațiul vizibil al
scenei poate să fie enorm, mai ales dacă este un joc la persoana întâi sau la a treia aşa că
umbrele au adesea nevoie de reglaje care constituie un compromis între calitate şi viteza de
desenare adecvată situației. Să începem prin a examina cum arată o scenă cu nişte reglaje bine
făcute în ceea ce priveşte parametrii umbrelor. Jocul oferă perspectiva unei a treia persoane
care priveşte scena:

Aici, distanța de vizibilitate, (după care nu se mai desenează nimic până la orizont) este de
circa 50 de unități. Prin urmare parametrul Shadow Distance din setul reglajelor de calitate
(Quality Settings) a fost de asemenea reglat la valoarea 50. Apoi, parametrul Shadow

-79-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Cascades a fost stabilit la valoarea 4, Shadow Resolution a fost ales mare, (High), iar
iluminatul cu umbre este reglat în modul Soft Shadows. Să explicăm ce înseamnă:

Hard shadows versus Soft shadows


Chiar în aceleaşi condiții de iluminat, dacă schimbăm parametrul numit tipul umbrei (Shadow
Type) la valoarea Hard Shadows, tranziția de la regiunile luminoase la regiunile umbrite este
“dură” (ca umbrele de pe lună) adică ceva este ori 100% în umbră, or 100% luminat. Aceste
umbre dure sunt mai repede desenate de computer (n.n. şi se potrivesc bine în jocurile din
spațiul extraterestru) dar în scenele terestre, cu atmosfera şi difracția luminii, să nu le folosiți
fiindcă nu prea arată realist.

Contorul umbririlor în cascade - Shadow Cascade counter


Umbririle în cascade se folosesc înpreună cu luminile paralele, direcționale, (Directional lights)
din Unity şi sunt uneori numite Cascaded Shadow Maps ceea ce s-ar traduce prin hărți de
umbrire cascadate (alteori fiind numite “Parallel Split Shadow Maps” - hărți de umbră

-80-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

distribuite paralel) şi ca efect oferă o foarte bună reprezentare calitativă a umbrelor – mai ales
când sunt implicate distanțe mari. Problema pe care o rezolvă provine din faptul că umbrele
mai apropiate au nevoie de un număr mai mare de detalii care ar fi inutile umbrelor de la
distanță. Umbrele în cascade sunt realizate prin împărțirea scenei vizionate în mai multe
porțiuni vizibile, din ce în ce mai largi (pe măsură ce ne îndepărtăm) dar pentru care se
foloseste aceeaşi memorie şi dimensiune a hărții de umbre – shadow map. Ca efect, obiectele
mai apropiate de privitor capătă mai mulți pixeli pe harta de umbre decât obiectele din zonele
mai îndepărtate. Pentru a vedea mai bine deosebirile, în imaginile următoare sunt folosite
umbrele dure, ai căror pixeli umbriți sunt mai uşor de distins. Dacă nu s-ar folosi umbrirea în
cascade atunci întreaga distanță pe care apar umbrele (acele 50 de unități din cazul nostru) ar fi
acoperită de umbre uniforme ca textură (prea pixelate, prea zimţate în apropiere). Aşa ar arăta
aceste umbre făra efectul de cascade:

-81-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Pătratele zonei umbrite au aceeaşi dimensiune în tot spațiul şi deşi arată bine când privim de la
distanță, calitatea nu-i deloc strălucitoare în ceea ce priveste obiectele apropiate. Textura
umbrei acoperă întreaga scenă vizibilă şi dacă am separa-o ca s-o examinăm aparte ar arăta
astfel:

Atunci când se lucrează cu ceea ce am numi două zone în cascadă, întreaga distanță pe care vor
apare umbrele va fi înpărțită în două: o mică porțiune aproape de camera privitorului şi una mai
mare, îndepărtată. Umbririle dure ar arăta cam asa atunci când se folosesc două zone (two
cascades):

Şi astfel, cu pretul unei pierderi de performantă grafică – la distanță - obținem o umbrire mai
bună în primul plan, cu o rezoluție mai bună, fără a produce un consum major de resurse de
calcul în toată scena.
Dacă în cele din urmă optăm pentru umbre în cascadă pe patru zone, distanța pe care vor apare

-82-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

umbrele este împarțită acum în patru porțiuni din ce in ce mai largi. Umbrirea dură pe patru
zone distincte din punct de vedere al “granulației” arată ca în imaginea următoare:

Distanța pe care apar umbrele, un fel de adâncime de umbrire, este foarte important să fie bine
aleasă atunci când lucrăm la o scenă plasată sub lumină paralelă, direcțională, deoarece
reglajele neinspirate ar afecta atât performanta cât şi calitatea umbririlor rezultate. La fel ca şi
contorul care număra zonele in cascadă, distanța de umbrire poate fi reglată din setul de
parametri Quality Settings şi vă va permite să alegeți niste reglaje adecvate chiar hardware-ului
cu performante mai slabe.
Desenarea umbrelor încetează dincolo de această distanță maximă a efectelor de umbrire.
Dincolo de distanța stabilită obiectele nu vor mai avea umbrele desenate. (Dar ce contează
umbrele copacilor din pădure dacă cei de pe marginea ei au umbră – atunci când vezi pădurea
de la distanță.) În majoritatea situațiilor din jocuri, faptul că obiectele din planurile îndepărtate,

-83-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

ascunse dupa alte decoruri sau parțial vizibile nu au umbre, trece absolut neobservat !
Dacă renuntăm la umbririle în cascade, folosim umbrele dure şi distanța de umbrire limitată la
20 de unități rezultatele randării scenei de mai sus vor arăta ca în imaginea următoare.
Observați că în general umbrele se pierd în depărtare, iar calitatea umbririi în cascade chiar cu
distanță mica (20 de unități) este mai bună decât fără cascade şi cu distanță mai mare (50 de
unități).

Pe de altă parte, dacă stabilim adâncimea în cadru până la care apar umbrele – asa-zisa distanță
de umbrire – la o valoare mult prea mare, n-o să fie bine de loc. De exemplu, stabilirea unei
distanțe de 100 va duce atât la descreşterea calității cât şi la descreşterea performantelor (Unity
va scana un spațiu mai mare din scenă căutând obiecte care să facă umbre şi calculând inutil)
deoarece nici un obiect din scenă nu este mai departe de 50 de unități!
Rețineți faptul ca umbririle în cascade se adaptează mai bine creşterilor de distanțe din scene.
De exemplu un număr de patru cascade acoperind un total de 300 de unități de distanță vizibile

-84-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

în adâncime, în fata camerei conduc la o imagine cum este aceea care urmează.
S-ar putea spune că este puțin mai slabă calitativ decât imaginea cu care am început acest
subcapitol dar este un compromis calitate performantă perfect utilizabil şi până la urmă foarte
bun daca ne gândim că distanța pe care se fac umbririle a crescut acum de 6 ori ! (Este adevărat
că la această scenă cresterea distanței de umbrire nu impresionează mai prin nimic şi poate unii
programatori n-ar mări-o aşa.)

Implementarea umbrelor (cu Shadow Mapping) şi factorul Bias


Umbrele sunt implementate folosind o tehnologie cunoscută sub numele shadow mapping.
Aceasta este asemănătoare cu tehnica depth mapping folosită de o cameră atunci când
determină care suprafețe sunt ascunse, acoperite de altele. Transparent, intern, întreaga scenă
este randată din punctul de vedere al unei camere aflată pe poziția sursei de lumină pentru a
crea o hartă a adâncimilor în cadru la care se văd, se află, diversele obiecte dacă ar fi iluminate
de acea lumină. (n.n. Intensitatea luminii în acele puncte este invers proporțională cu pătratul

-85-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

distanței până la sursă.) Acest fel de hartă ascunsă este denumită shadow map – harta
umbrelor, harta de umbrire – produsă de o sursă de lumină. Atunci când scena este randată din
punctul de vedere din care o vede camera principală, fiecare punct procesat este căutat şi în
spațiul luminii (unde are alt grad de umbrire şi de distanță la camera-sursă de lumină), astfel ca
i se poate stabili distanța la sursa de iluminat deci intensitatea cu care ajunge lumina în acel
punct, folosindu-se harta de umbrire shadow map. Iar dacă pixelul care ne interesează are o
distanță până la sursa de iluminat mai mare decât cea indicată de harta umbrelor (shadow map)
înseamnă că fie punctul este în interiorul obiectului iluminat fie aparține altui obiect, ascuns de
predecesorul său din direcția sursei, aşa că un astfel de punct nu va primi nici un pic de lumină.

Atenție: O suprafaţă iluminată direct de o lumină poate apărea uneori vărgată , brazdată de mici
dungi , pete, sau cu mici porţiuni mai întunecate. Aceasta se întâmplă deoarece pixelii nu sunt
în realitatea virtuală exact la distanța specificată de harta shadow map, ci uneori sunt mai
departe (ceea ce este o consecință a economiei de memorie făcute prin alegerea unei rezoluții
mai mici pentru hartă.) Ca efect se obțin grupuri aparent arbitrare de pixeli mai întunecați
acolo unde ei n-ar trebui să fie, dând spectatorului impresia vizuală de “shadow acne” - noi i-
am zice în glumă: “umbrire pistruiată”.

Pentru a preveni apariția acestui fel de umbre “zimțate” poate fi adăugat un factor de prag la

-86-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

harta de umbre pentru a ne asigură că pixelii de pe marginea umbrei vor trece comparația aşa
cum trebuie (şi nu vor aparea greşit, iluminați). Stabiliți această valoare atribuind-o
parametrului Bias al unei lumini care are efectele de umbra activate (deci care produce umbre).
Este totuşi o greşeală să puneți acolo o valoare prea mare deoarece astfel zone de umbra de
linga obiect vor aparea incorect, iluminate. Efectul este cunoscut sub numele (n.n. amuzant) de
“Peter Panning” (explicabil prin faptul ca umbra separată de obiect care apare astfel desenată
ne dă senzația ca obiectul zboară pe deasupra suprafeței exact ca eroul cunoscut: Peter Pan –
care-i dă numele).

Coeficientul de prag (bias) asociat unei lumini are nevoie de un reglaj fin pentru a fi siguri că
nu apare nici efectul neplacut de shadow acne nici cel numit Peter Panning. Este în general
mai uşor să-l stabiliți prin încercări decât să faceți un calcul teoretic din care să rezulte valoarea
lui.

Idei de reținut

• Sursele de lumină sub formă de spot, realizate prin metoda cookies sunt indicate pentru
a imita lumina care bate de afară, printr-o fereastră.

• Sursele punctuale de lumină sunt recomandate pentru a oferi adâncime scenei.

• Pentru o viteză maximă a jocului folosiți doar tehnica de randare Vertex Lit.
Acest filtru (shader) calculează iluminatul doar în vârfurile poligoanelor astfel încărcând
mult mai puțin placile grafice mai vechi şi putând funcționa bine şi cu ele.

• Farurile automobilelor produc umbre dinamice peste obiectele iluminate conform hărții
(lightmap) fără să fie nevoie să adăugați (n.n.pe ea) iluminat suplimentar. Ca acest efect

-87-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

să vă reuşească activați opțiunea Auto lights atunci când lucrați la harta de lumini
predefinite Lightmap. Altfel, ele vor fi randate ca lumini calculate în timp real (eng.).

-88-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C7
Reglajele randării
Reglajele randării sunt un set de valori (n.n. Grupate într-un obiect, fireşte.) care
parametrizează funcționarea unor elemente vizuale din scenă cum sunt luminile (eng. Lights) şi
porțiunile de cer (eng. Skyboxes). Pentru a examina şi modifica aceşti parametri alegeți Edit
->Render Settings din bara de meniu.

Proprietăți
Proprietatea: Funcționalitatea, utilizarea:

Fog / Ceaţă Dacă este activată, un voal de ceaţă va cădea peste întreaga scenă.

-89-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietatea: Funcționalitatea, utilizarea:

Fog Color / Culoarea


Culoarea ceții.
ceții

Ca în Open GL, ceaţa poate fi: Liniară, Exponențială (Exp) sau


Fog Mode / Modul
exponențial - pătratică (Exp2). Parametrul controlează felul cum
încețoşării
variază densitatea ceții cu distanța.

Fog Density /Densitatea


Densitatea ceții; folosită la modurile de încețoşare Exp şi Exp2.
ceții

Linear Fog Start/End – Inceputul şi sfârşitul zonei de ceaţă, date prin distanța până la
Inceputul şi sfârşitul cameră. Se folosesc, se precizează, numai pentru ceața liniară
zonei de ceaţă (Linear Fog).

Ambient Light / Lumina


Culoarea luminii ambientale de pe scenă (n.n. Şi de la umbră !!).
ambientală

Skybox Material / Dacă o cameră nu are ataşată nici o textură Skybox, se va folosi
Material pt. Skybox-uri aceasta, implicită.

Halo Strength / Dimensiunea haloului luminos aflată într-o anumită proximitate


Intensitatea hallo-ului (eng. Range).

Flare Strength /
Intensitatea flame-urilor, Intensitatea flame-urilor,a flăcărilor care izbucnesc pe scenă.
flăcărilor

Flare Fade Speed / Timpul alocat flame-lor, flăcărilor care izbucnesc pe scenă, până se
Iuţeală sting.

Halo Texture / Textura Indică o textură care va străluci ca un halo în jurul luminilor.
haloului (Vedeți subcapitolul despre texturile 2D.)

-90-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietatea: Funcționalitatea, utilizarea:

Spot Cookie / Masca Indică o textură 2D care va apărea ca mască în faţa unui spot
unui spot luminos (eng. Spot light).

Detalii
Reglajele scenei vă permit să faceți câteva modificări vizuale de ansamblu ale scenelor din
proiectul dumneavoastră. De exemplu atunci când aveți acelaşi mediu 3D de prezentat şi ziua şi
noaptea, caz în care puteți folosi exact aceleaşi prefabricate la compunerea scenei şi veți
schimba ziua în noapte, puteți modifica lumina ambientală (Ambient Light) pentru a fi mai
strălucitoare ziua şi mai slabă noaptea.

Ceaţa
Activarea efectului de ceaţă duce a obținerea unei imagini prăfuite a întregii scene. Fireşte, va
trebui să reglați densitatea şi culoarea ceții modificând parametrii Fog Density şi Fog Color
după nevoi.

-91-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Adaugarea ceții este adesea folosită ca parte a unui efect de optimizare care constă în a ne
asigura că obiectele îndepărtate sunt invizibile - fiind în ceață – şi atunci nu le vom ma desena.
Notați că ceața în sine nu este suficientă pentru a realiza acest efect de optimizare. Trebuie în
plus să ajustați un parametru al camerei, adâncimea planului de decupare, Camera's Far Clip
Plane, aşa încât corpurile aflate la o distanță de observator mai mare decât cea stabilită să nu
mai fie desenate. Se recomandă întâi să reglați parametrii ceții ca ea să ascundă obiectele (de
departe) dorite şi apoi să reglați adâncimea de câmp astfel ca ele – invizibile deja- să nu mai fie
desenate. Modificați, variați distanța până la adâncimea de clipping, adică până aproape de
nivelul la care ultimele obiecte vizibile în scenă dispar, fiind decupate.

-92-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Remarcați faptul că ceaţa este randată şi afişată uniform atunci când folosiți o cameră ce
prezintă scena în perspectivă ortogonală. Cauza constă în faptul că în programele filtrelor (n.n.
GL-shaders ) implementate am asimilat coordonata de adâncime a perspectivei Z cu factorul
furnizor de densitate a ceţii. Dar dacă folosim camere cu proiecție ortogonală, coordonata Z nu
mai are legătură cu densitatea ceţii. De ce am procedat astfel ? Era rapid (n.n. Jocurile trebuie
să randeze imaginile în timp real !) şi nu cerea putere de calcul în plus. Notați şi că utilizarea
camerelor cu proiecție ortogonală va face ca timpul de procesare consumat de shadere să fie
puțin mai mai mare.

Idei de reţinut
• Nu subestimaţi plusul de calitate şi impactul vizual al scenelor jocului realizate cu
reglaje de randare bine alese !
• Reglajele de randare sunt ( Render Settings ) definite la nivel de scenă. Fiecare scenă
din joc poate avea alte reglaje !

-93-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C8
Detectectarea coliziunilor – metoda bazată pe
straturi de obiecte
Încă de la versiunea Unity 3.x a fost introdus un sistem de coliziuni funcționând pe foliile (sau
straturile de animație), conceput să se poată defini care dintre acele Game Objects va fi capabil
a se va lovi cu un alt Game Object chiar dacă ele erau aşezate pe folii diferite. (Într-un joc tip
Arcade elefantul care intră în magazinul de sticlărie izbeşte şi vasele de pe rafturi şi chiar
rafturile, nu numai ceea ce întâlneşte pe coridorul dintre ele, nu-i aşa ?)

În imaginea de mai sus puteți vedea 6 entități din clasa GameObjects, (3 planuri, 3 cuburi)
precum şi matricea posibilităților lor de coliziune (eng. the “Collision Matrix”) aflată în dreapta
care indică ce obiecte sunt capabile sa se izbească de entitățile de pe un strat (Layer) sau altul,

-94-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

sau mai multe – şi în acest caz de pe care straturi. În acest exemplu, am reglat acea “Collision
Matrix” bifând de aşa natură încât afirmăm că obiectele unui strat se pot izbi numai de
obiectele aceluiaşi strat. Layer 1 cu Layer 1 , Layer 2 cu Layer 2 ş.a.m.d.

Pregătirea obiectelor GameObjects pentru


detectarea coliziunilor - bazată pe straturi.
1. Alegeți întâi un strat (layer) pe care se vor afla obiectele de clasă Game Objects care vă
interesează, recurgând la Inspector

2. Reluați pasul 1 cu fiecare obiect din clasa Game Object până când ați sfârşit de aşezat
obiectele pe nivele.
3. Deschideți panoul de control al efectelor fizice (eng. the Physics Preference Panel) dând
click pe Edit->Project Settings->Physics.
4. Alegeți dacă un strat (folie, layer) specificat în Collision Matrix va interacționa sau nu
cu altul, bifând caseta corespunzatoare.

-95-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C9
Moduri de randare
Unity permite să specificați mai multe moduri de randare pentru jocul dumneavoastră. (eng. Rendering
Paths). Veți putea alege unul dintre ele în conformitate cu ceea ce conține şi desenează jocul
dumneavoastră şi cu platforma hardware/software căreia îi este destinat. Opțiunea exprimată
aici influențează aspectul şi performanțele produsului, diferența văzându-se mai ales la lumini
şi umbre.
Puteți specifica felul cum să fie randat proiectul modificând atributele ataşate jucătorului:
Player Settings. În plus puteți specifica reglaje locale ataşate fiecărei camere video.
Dacă hardware-ul grafic nu poate procesa grafica în maniera specificată, Unity va comuta
automat într-un mod de lucru cu fidelitate mai mică. De exemplu dacă GPU nu se descurcă să
folosească tehnica Deferred Lighting sistemul va comuta în modul Forward Rendering. Dacă
nici modul Forward Rendering nu este posibil se trece la modul Vertex Lit .

Deferred Lighting
Deferred Lighting este modalitatea de randare care asigură - cu cel mai mare cost de putere de
calcul GPU consumată – cea mai fidelă reprezentare a luminilor şi a umbrelor. Funcționează
bine şi cu un număr mare de lumini în mişcare randate în timp real. Hardware-ul grafic trebuie
să fie pe măsură … iar opțiunea este oricum rezervată numai profesioniştilor care cumpără
Unity Pro. Site-ul Unity include o pagină despre Deferred Lighting.

Forward Rendering
Forward rendering (randarea prin înaintare – i-am zice) este o metodă de randare care se
bazează mult pe shadere. Permite, ca urmare, o procesare a iluminatului per-pixel (folosind
atât hărțile de iluminat obişnuite cât şi acele texturi luminoase numite Cookies) împreună cu
umbre în timp real produse sub o lumină paralelă, direcțională.
Cu setările inițiale doar un număr limitat de surse strălucitoare de lumină (n.n. ca la Open GL

-96-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

unde acel număr era o putere a lui 2: 4,6,8...), vor fi randate în costisitorul per-pixel lighting
mode.
Pentru celelalte, calculele se fac la nivel de vârfuri de poligoane (eng. object vertices).

Vertex Lit
Vertex Lit este o metodă de randare cu cea mai mică fidelitate de reprezentare a luminilor şi a
umbrelor dar şi cu cel mai mic consum de putere de calcul. Nu permite randarea luminilor şi
umbrelor produse în timp real. A se folosi numai pe computerele mai vechi şi pe dispozitivele
mobile.

Comparaţie între posibilităţile de randare


Metoda de randare -> Deferred Lighting Forward Rendering Vertex Lit
Elemente de calitate
Iluminat Per-pixel (normal
Da Da -
maps, light cookies)
O lumină paralelă,
Umbre în timp real Da -
direcțională
Dual Lightmaps Da - -
Cu paşi suplimentari de
Depth & Normals Buffers Da -
randare
Particule prin soft Da - -
Semitransparența obiectelor - Da Da
Anti-Aliasing - Da Da
Masca Light Culling Limitat Da Da
Totul calculat per- Doar în unele locuri calculat Totul calculat
Fidelitatea iluminatului
pixel per-pixel per-vertex
Performanța
Numărul de pixeli luminoşi
Numărul de pixeli
Cost of a per-pixel Light x numărul de obiecte care -
luminoşi
sunt iluminate.
Sistem / Platforma
Shader Model
PC (Windows/Mac) Shader Model 2.0+ Oricare altul
3.0+

-97-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Metoda de randare -> Deferred Lighting Forward Rendering Vertex Lit


OpenGL ES
Mobil (iOS/Android) OpenGL ES 2.0 OpenGL ES 2.0
2.0 & 1.1
Console 360, PS3 360, PS3 -

-98-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C10
Crearea scenelor, crearea
cerului
Acest Skybox este un cub format din 6 fețe pătrate
care sunt desenate înaintea tuturor componentelor
de pe scena jocului. Iată etapele realizării unui
Skybox:
1. Pregătiți 6 texturi care corespund fiecăreia
din 6 fete ale skybox-ului şi stocați-le în
dosarul de artefacte (Assets) al proiectului.
2. Pentru fiecare dintre texturi va trebui să
schimbați modul de înfăşurare, de tapetare,
de la Repeat la valoarea Clamp. (n.n. A
văzut cineva, în natură nori care se repetă
ca plăcile de faianță?) Setarea este necesară
pentru a “topi” unele în altele porțiunile
vecine având culori nepotrivite, care altfel
nu s-ar potrivi:
3. Creați un nou Material alegând Assets->
Create-> Material din meniu.
4. Din partea de sus a ferestrei Inspector
alegeți the shader drop-down, apoi activați
dintre efectele speciale opțiunea RenderFX
-> Skybox.
5. Plasați cele 6 texturi în cele 6 sloturi
corespunzătoare ale materialului. Se pot
lua cu mouse-ul din fereastra Project View
şi le duceți apoi în locurile corespunzătoare
– rezervate texturilor.

-99-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Pentru a pune cerul peste scena la care lucrați:


1. Alegeți Edit->Render Settings din meniu.
2. Trageți cu mouse-ul noul Skybox Material în slotul Skybox Material din fereastra
Inspector.
Şi nu uitați că setul de bunuri şi componente Standard Assets conține din start câteva ceruri
gata de folosire imediată.

-100-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C11
Cum se foloseşte apa ?
Pentru editarea scenelor Unity oferă prefabricate utilizabile drept apă (incluzând shader-ele
gata programate, scripturile şi partea grafică, artistică a apei), toate incluse în setul de bunuri
standard. Versiunea simplă de Unity include doar o singură formă de apă, în timp ce
cumpărătorii versiunii Unity Pro au la dispoziție apă cu reflexie şi refracție calculată în timp
real iar ambele sunt disponibile ca prefabricate în alte două variante: apa văzută ziua şi apa
văzută noaptea.

-101-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Aranjarea apei în scenă


Cel mai adesea este de ajuns să luați prefabricatul dorit al apei din lista de bunuri şi să-l puneți
în scenă (dar asigurați-vă că Unity are deja setul standard de bunuri instalat, la dispoziție –
consultați şi subcapitolul despre instalarea seturilor de bunuri):
• La Unity găsiți Daylight Simple Water şi Nighttime Simple Water în Standard Assets
->Water.
• La Unity Pro găsiți Daylight Water şi Nighttime Water în Pro Standard Assets->Water
(dar atenție, fiecare are nevoie şi de nişte componente din setul Standard Assets->Water
totodată). Felul de apă (Simple, Reflective, Refractive) poate fi reglat, modificat, din
Inspector.
Prefabricatul standard al apei foloseşte un model reţea de formă rotundă pentru suprafaţa apei –
cam ca un bazin oval. Dacă doriți un alt model poligonal al apei schimbați pur şi simplu
atributul Mesh Filter al obiectului apă:

-102-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

-103-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

-104-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

C12
Crearea apei de la zero (pentru avansați)
Cea mai simplă apă se face în Unity adaugând un program (n.n. de animație) la modelul unei
suprafețe plane şi utilizând filtrul water shader:
1. Se începe cu suprafaţa (mesh) a viitoarei ape. Aceasta ar trebui să fie o suprafaţă plană,
orizontală. Coordonatele de textură - UV nu-i sunt necesare. Obiectul GameObject care
va fi apa trebuie să folosească aşa numitul Water layer, pe care îl găsiți şi-l puteți regla
din Inspectorul obiectelor.
2. Adăugați obiectului scriptul numit WaterSimple (din setul standard de bunuri -
Standard Assets/Water/Sources) la acest obiect.
3. Folosiți shaderul, filtrul, FX/Water (simple) asupra acestui material, sau unul dintre mai
complexele dar reglabilele materiale pentru ape (Daylight Simple Water sau Nighttime
Simple Water).
Apa cu reflexii şi refracții în mediul Unity Pro solicită o serie similară de paşi pentru a fi
realizată de la zero:
1. Tot la fel se începe cu suprafaţa (mesh) a viitoarei ape. Aceasta ar trebui să fie o
suprafaţa plană, orizontală. Coordonatele de textură - UV nu-i sunt necesare. Obiectul
GameObject care va fi apa trebuie să folosească aşa-numitul Water layer, pe care îl
găsiți şi-l puteți regla din Inspectorul obiectelor.
2. Adăugați obiectului scriptul Water (din setul Pro Standard Assets/Water/Sources) .
• Modul de randare al apei poate fi reglat din Inspector: Simple, Reflective sau
Refractive.
3. Folosiți shaderul de efecte , FX/Water asupra acestui material, sau reglați cu finețe
parametrii unuia dintre materialele pentru realizarea apei (Daylight Simple Water sau
Nighttime Simple Water) ales de dumneavoastră. Gata.

Proprietăți ale materialelor din componența apei


Proprietățile, atributele de mai jos sunt folosite la crerea unei ape care refractă şi reflectă
lumină (eng. Reflective & Refractive water) – definite la nivelul shader-elor. Cele mai multe

-105-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

dintre aceste atribute sunt folosite şi la realizarea celei mai simple ape – aceea pentru vechile
plăci grafice.
Proprietate: Funcționalitate:
Wave scale / Factor de scalare pentru harta normalelor. Cu cat este mai mică valoarea
Scalarea valurilor cu atât mai ample vor fi valurile.
Reflection/
refraction distort //
Cât de mult este deformat efectul reflexiei sau refracției de miscarea
Distorsiunea la
valurilor. (dată de harta normalelor).
reflexie sau
refracție
Refraction color //
Culoarea pentru Nuanța adițională, adăugată imaginii refractate.
refracție
Environment
reflection/
refraction Se vor randa texturile pentru a se calcula reflexiile şi refracțiile în timp
// Reflexii şi real.
refracții cf.
mediului
Defineşte forma crestelor valurilor. Mişcarea care dă aspectul final al
valurilor provine din combinarea a două astfel de profile fiecare
deplasându-se în altă direcție, cu altă viteză şi la alta scală. A doua dintre
Normal map
aceste hărți (forme de şabloane) are jumătate din mărimea primeia (n.n.
reuşind doar s-o deformeze pe prima nu s-o anihileze – astfel se obțin
valuri similare cu mici variații, nu combinații haotice).
Viteza de deplasare, de scroll, pentru prima hartă (primul şablon de valuri)
Wave speed /
indicată de primele două numere şi cea pentru al doilea profil (şablon,
Viteza valurilor
formă) de valuri indicată de al 3-lea şi de al 4-lea număr.
O textură cu transparentă indicată de canalul alpha (textura trebuie să aibă
canal alpha) de la care canalul alpha determină amplorea efectului Fresnel
Fresnel
- măsurând cat de multa reflexie combinată cu cat de multă refracție se
mixează în funcție de unghiul de privire, pentru obținerea imaginii finale.

Restul atributelor nu sunt folosite de shaderele utilizate la crearea apei simultan refractante şi
reflectante dar trebuie să fie precizate pentru cazul în care hardware-ul clientului nu suportă
acest mod superior de lucru şi este obligat să lucreze în modul străvechi: simpler shader:

-106-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)

Proprietate: Funcționalitate:
Reflective color/cube O textură care defineste culoarea (RGB) şi efectul Fresnel (A) în
and fresnel funcție de unghiul de privire.
Horizon color // Culoarea apei pe linia orizontului . (Folosită doar la cel mai simplu
Culoarea orizontului model al apei – cel mai simplu shader)
Fallback texture // Textură folosită pentru a reprezenta apa pe cele mai vechi plăci
Textura de ultimă grafice, dacă nici unul dintre programele (shaderele) noi nu poate rula
instanță pe o asemenea placă.

Hardware necesar
• Apa înzestrată cu reflexii şi refracții se poate afişa numai de către placile grafice aliniate
la standardul Pixel shader 2.0 (GeForce FX şi următoarele, Radeon 9500 şi
următoarele, Intel 9xx). Pentru celelalte plăci grafice trebuie utilizată doar apa înzestrată
cu reflexii (şi fără refracție).
• Apa cu reflexie (eng. Reflective water) se poate utiliza când există o placă grafică
compatibilă cu standardul Pixel shader 1.4 (GeForce FX şi următoarele, Radeon 8500
şi următoarele, Intel 9xx). Dacă se dispune de un alt fel de placă grafică, mai veche, tot
ce puteți folosi este apa cea mai Simplă, Simple water – fără efecte de refracție şi fără
reflexii.
• Scriptul care produce şi animă această apă, Simple water, funcționează practic pe orice
hardware grafic, doar detaliile obținute fiind influențate de puterea acestuia.

-107-

View publication stats

S-ar putea să vă placă și