Documente Academic
Documente Profesional
Documente Cultură
net/publication/340580998
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.
-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.
-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.
Î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.
-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)
-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.
Î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.
Documentația include un întreg subcapitol despre aîezarea obiectelor în scenă. Iată un scurt
rezumat al chestiunilor esențiale:
-17-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
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.
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.)
-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ă.
-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.
-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.)
-23-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
-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:
• 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.)
-29-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
-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.)
-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.
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.)
-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.)
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:
-36-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
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.
-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.
-44-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
-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
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.)
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.)
-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.)
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.)
-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.)
-55-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
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.)
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.)
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.)
-60-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
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.
-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.
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 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.
-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.)
-67-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
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.)
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.
-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.
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.
-78-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
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ă:
-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.)
-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ă.
• 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.)
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).
Skybox Material / Dacă o cameră nu are ataşată nici o textură Skybox, se va folosi
Material pt. Skybox-uri aceasta, implicită.
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.)
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.
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.
-97-
O primă carte despre Unity 3D Vers. v07 pt. corectură, nu se distribuie! Dan Popa (trad.)
-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.)
-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.)
-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.
-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-