Desenarea 3D

Informatiile necesare construirii imaginii unui corp 3D se afla stocate in baza de date. Aceste informatii sunt multimi de puncte ce vor fi proiectate pe ecran, si ordinea in care anumite puncte trebuie unite intre ele. Punctele sunt organizate sub forma de liste de vertexuri (ca la polilinii). Un vertex este un punct de pe suprafata unui model in care se intalnesc doua sau mai multe linii folosite in reprezentarea corpului respectiv. In AutoCAD, lista de vertexuri este delimitata de doua liste: la inceput lista care ne da tipul entitatii (3DMESH, POLYLINE, PFACE - de fapt, numele entitatii va fi "POLYLINE", diferenta dintre ele facandu-se prin coduri - vezi Anexa), iar la sfarsit o lista de tip "SEQEND". Intre aceste doua liste se afla listele corespunzatoare vertexurilor, care contin in principal coordonatele nodurilor respective: ( ... (0 . "VERTEX") (8 . "0") (10 x y z) ... ) Un obiect 3D poate fi construit din linii (reprezentare de tip "wireframe") sau din fatete (portiuni de suprafata), adica prin comanda EXPLODE vom obtine entitati de tip LINE sau 3DFACE. Manipularea si modificarea obiectelor 3D se pot reduce la transformarea coordonatelor unei multimi de puncte (vertexurile). Pentru a vizualiza un obiect in diverse pozitii, la diferite distante fata de observator si a-l modifica dupa o anumita lege, se folosesc transformari globale 3D: translatia, rotatia, marirea sau micsorarea la scara, simetria etc. In general, comenzile AutoCAD de desenare sau editare 2D se pot extinde si la 3D, eventual cu schimbarea sistemului de coordonate (UCS). De exemplu, prin MOVE se poate deplasa un obiect atat in plan, cat si in spatiu; in schimb, o comanda de tipul FILLET, OFFSET sau TRIM nu lucreaza decat in plan, iar pentru a schimba planul de lucru se va folosi comanda UCS.

Crearea obiectelor 3D
Crearea unui corp 3D presupune introducerea listei de vertexuri (explicit sau pe baza unor reguli si eventual a unor obiecte existente). In cazul entitatilor simple (linii si polilinii), introducerea datelor se face la fel ca la desenarea in plan. Comenzile sunt LINE (inainte exista LINE si 3DLINE; acum LINE accepta si puncte 2D, si puncte 3D) si 3DPOLY, iar sintaxa lor este asemanatoare cu cea de la LINE (in 2D) si PLINE. O retea de linii se creeaza cu comanda 3DMESH, iar entitatea rezultata va fi de tip POLYLINE (putem sa spunem ca este de tip 3DMESH, pentru ca exista diferente intre ea si poliliniile obisnuite). Sintaxa comenzii este: Command: 3DMESH Mesh M size: 3 (3 linii) Mesh N size: 2 (2 coloane) Vertex (0,1): punct Vertex (1,1): punct Vertex (1,0): punct

Vertex (1,1): punct Vertex (2,0): punct Vertex (2,1): punct Rezultatul va fi o suprafata de tip 3DMESH (arata ca o plasa de sarma), totdeauna deschisa. Pentru a o inchide, se poate folosi comanda PEDIT, optiunile Mclose si Nclose. In baza de date apare o entitate de tip POLYLINE, care se deosebeste de poliliniile obisnuite prin listele 71 si 72. Lista 71 contine valoarea lui M, iar 72 pe a lui N: (... (0 . "POLYLINE") ... (10 0.0 0.0 0.0) ... (71 . 3) (72 . 2) ...) - urmeaza listele vertexurilor, iar la sfarsit o lista de tip SEQEND. O entitate de tip 3DMESH poate fi privita ca o matrice, ale carei elemente sunt vertexurile. M reprezinta numarul de linii, iar N numarul de coloane. Comanda 3DMESH este incomoda cand se introduc toate punctele direct, de la tastatura, dar este usor de utilizat prin programe AutoLISP. De exemplu, fisierul FPLOT.LSP, din pachetul AutoCAD; iata o portiune din el: (defun fplot (fcn xrange yrange res / ce stepx stepy i j x y) (setq x (car xrange) stepx (/ (- (cadr xrange) x) (float res)) stepy (/ (- (cadr yrange) (car yrange)) (float res)) i 0) (setq ce (getvar "cmdecho")) (setvar "cmdecho" 0) (command "3Dmesh" res res) (while (< i res) (setq j 0 y (car yrange)) (while (< j res) (setq j (1+ j) y (+ y stepy)) (command (list x y (apply fcn (list x y)))) ) (setq i (1+ i) x (+ x stepx)) ) (setvar "cmdecho" ce) ) Suprafata obtinuta cu 3DMESH este alcatuita din elemente de tip 3DFACE . 3DFACE este echivalentul 3D al comenzii (si tipului de entitate) SOLID. Colturile ei sunt tot vertexuri, unite intre ele prin linii, dar spatiul dintre linii este considerat opac. Poate fi umplut folosind comanda SHADE. Daca am fi desenat o suprafata din linii, am fi obtinut o retea de tip wireframe, asupra careia nu se pot aplica comenzile HIDE si SHADE. O suprafata alcatuita din 3DFACE poate fi obtinuta si cu comanda PFACE, care are sintaxa

asemanatoare cu 3DMESH, adica trebuie specificat fiecare vertex, dar nu mai trebuie introduse valori pentru M si N, deoarece fatetele (3DFACE) pot fi asezate arbitrar. Fiecare element al suprafetei poate avea culoarea si stratul diferite de ale celorlalte elemente. Numarul de vertexuri nu este limitat. Pentru fiecare vertex introdus, se vor cere legaturile cu celelalte vertexuri, pentru a forma o fateta. Numarul de laturi ale acesteia nu este limitat decat de numarul vertexurilor. Sintaxa: Command: PFACE Vertex 1: punct Vertex 2: punct ................... Vertex n: Enter Face 1, vertex 1: (nr. intreg) Face 1, vertex 2: Enter Face 2, vertex 1: ........ In baza de date apare tot o entitate de tip POLYLINE, care in listele 71 si 72 va contine numarul de vertexuri si respectiv numarul de fatete pe care acestea le determina. Listele vertexurilor sunt de doua tipuri: intai cele ale vertexurilor introduse, apoi pentru fiecare dintre acestea, mai apare o lista care contine legaturile cu celelalte vertexuri (listele 71, 72, 73 si 74). Numerele care apar in listele de legaturi sunt numerele de ordine ale vertexurilor introduse, aflate la inceputul succesiunii de liste de vertexuri. Daca sunt mai mult de patru laturi, apar in listele 71...74 si numere negative, care reprezinta legatura cu lista vertexului urmator sau precedent. Ca si 3DMESH, PFACE este o comanda usor de apelat din programe AutoLISP. Alte comenzi cu care se pot genera suprafete: - Edgesurf - o suprafata marginita de patru curbe - Revsurf - suprafata obtinuta prin rotatia unui obiect in jurul unei axe - Rulesurf - suprafata obtinuta prin deplasarea unei linii (generatoare) cu capetele asezate pe doua contururi inchise sau deschise - Tabsurf - suprafata obtinuta prin deplasarea unui contur intr-o directie specificata. Lista care, in baza de date, este asociata unei linii 3D este aceeasi cu cea asociata unei linii 2D (la care aveam coordonata Z nula). Pentru 3DFACE, intalnim liste de forma: (... (0 . "3DFACE") (8 . "0") (10 x1 y1 z1) (11 x2 y2 z2) (12 x3 y3 z3) (13 x3 y3 z3) ... (70 . n) ...) unde 10, 11, 12 si 13 sunt constructorii listelor colturilor fatetei, iar lista 70 contine numarul laturii invizibile (poate fi 0, daca toate sunt vizibile): 1 - prima latura invizibila 2 - a doua latura invizibila 4 - a treia latura invizibila 8 - a patra latura invizibila.

Afisarea desenelor 3D
Chiar cand desenam un obiect tridimensional, ecranul monitorului este tot plan (aproximativ), deci desenul de pe ecran va fi o proiectie a obiectului nostru. In general, proiectiile sunt aplicatii care duc puncte din spatii cu n dimensiuni in spatii cu mai putine dimensiuni. Proiectia unei imagini pe ecran este o transformare prin care punctele din spatiul tridimensional sunt duse intr-un spatiu cu 2 dimensiuni. In AutoCAD se folosesc doua tipuri de proiectii: proiectia paralela si proiectia perspectiva. Exista doua tipuri de proiectii paralele: - proiectia ortogonala paralela, pentru care directia de proiectie coincide cu normala la planul de proiectie; - proiectia oblica, pentru care directia de proiectie difera de normala la planul de proiectie. Proiectia ortogonala paralela (ortografica) este folosita atunci cand se reprezinta obiectele in elevatie, plan sau profil (cele 3 vederi folosite in desenul tehnic). In aceste cazuri, planul de proiectie este perpendicular pe una din axele sistemului de referinta. Se pastreaza distantele si unghiurile. In AutoCAD, aceste vederi sunt obtinute privind desenul dintr-unul din punctele (0,0,1), (0,1,0) sau (1,0,0); adica observatorul priveste in lungul unei axe. Definirea punctului din care este privit obiectul se face cu comanda VPOINT (View POINT). Alte tipuri particulare de proiectii ortogonale sunt proiectiile axonometrice, pentru care planul de proiectie nu mai este perpendicular pe o axa a sistemului de referinta. Un exemplu este proiectia axonometrica izometrica, pentru care directia de proiectie face unghiuri egale cu cele 3 axe ale sistemului de referinta. Se pastreaza paralelismul liniilor, dar se denatureaza unghiurile. Proiectia axonometrica izometrica poate fi obtinuta privind obiectul (sau obiectele) din punctul (1,1,1) (la VPOINT) sau folosind comanda ISOPLANE. Modificand punctul de observare, se pot obtine si alte tipuri de proiectii paralele; se pot da orice coordonate pentru punctul de observare. Sintaxa comenzii VPOINT: Command: VPOINT Rotate/ <View point> (0,0,1): Punctul de observare implicit (la inceperea unui desen nou) este (0,0,1). Proiectia perspectiva creeaza imagini similare celor obtinute prin fotografiere, mai realiste decat cele obtinute prin proiectia paralela. In proiectia perspectiva, liniile paralele intre ele si neparalele cu planul de proiectie par sa convearga intr-un punct numit "punct de fuga". Daca observatorul este fix, atunci se pot observa toate obiectele situate in interiorul unui "con de vedere". In aplicatiile pe calculator se inlocuieste conul de vedere cu o piramida de vedere. Ecranul este o directoare a piramidei de vedere care impreuna cu pozitia observatorului determina complet aceasta piramida. Exista doua metode de obtinere a proiectiei perspective a unui corp 3D: - prin proiectarea fiecarui punct 3D pe planul ecranului, pastrandu-se in memorie atat punctul rezultat, cat si originalul;

- prin aplicarea unei transformari 3D (transformare perspectiva) care deformeaza corpul astfel incat proiectia paralela a corpului obtinut sa coincida cu proiectia perspectiva a celui initial. In memorie, imaginea va fi stocata doar prin coordonatele punctelor care alcatuiesc corpul transformat. In AutoCAD, proiectia perspectiva a unui corp poate fi obtinuta prin comanda DVIEW (Dynamic VIEW). Prin aceasta comanda se poate obtine si proiectia paralela, fiind mai expresiva decat VPOINT (dar mai lenta). Pentru alegerea dinamica a punctului de observare (cand apare cererea "Select objects:") se va selecta un grup de entitati care vor fi rotite in functie de pozitia observatorului (CAmera) si a punctului observat (TArget). Daca la "Select objects:" se raspunde cu Enter, AutoCAD va desena pe ecran o casuta, care va fi rotita in locul obiectelor desenate de utilizator. Pentru a se trece in proiectie perspectiva este suficient sa se aleaga o distanta nenula (optiunea "Distance"). Revenirea din proiectie perspectiva in proiectie paralela se face cu "Off". Lista completa a optiunilor comenzii DVIEW: CAmera/ TArget/ Distance/ POints/ PAn / Zoom/ TWist/ CLip/ Hide/ Off/ Undo/ <eXit>: Acest prompter va fi repetat pana cand se va opta pentru parasirea comenzii (eXit). Celelalte optiuni vor fi amintite in lista completa a comenzilor AutoCAD. Pentru a afisa mai multe vederi ale unui corp pe ecran, se foloseste comanda VPORTS. Fiecare din ferestrele obtinute va putea contine o vedere a corpului desenat (o proiectie). O modificare facuta intr-una din ferestre va afecta si celelalte vederi, pentru ca toate vederile sunt create pornind de la aceeasi baza de date, deci modificarea bazei de date duce la modificarea tuturor vederilor. Comenzile de afisare (DISPLAY) aplicate unui VPORT nu le afecteaza neaparat si pe celelalte (doar REDRAWALL si REGENALL afecteaza toate VPORTurile). In cazul corpurilor 3D care au si suprafete opace, o reprezentare mai realista poate fi obtinuta stergand liniile "ascunse" (adica liniile aflate dupa o suprafata opaca). Aceasta se face prin comanda HIDE, sau optiunea HIDE a comenzii DVIEW (exista o asemenea optiune si la plotare - comenzile PLOT si PRPLOT). Comanda HIDE este mare consumatoare de timp; reducerea timpului se poate face printr-una din urmatoarele cai: - "inghetarea" (freeze) straturilor care nu contin informatii necesare - reprezentarea desenului intr-o fereastra cat mai mica (ZOOM WINDOW) si regenerarea lui (REGEN) - utilizarea unui calculator mai puternic. Asemanatoare comenzii HIDE este comanda SHADE, care produce un fel de umbre (depinde si de tipul monitorului). Aceasta, precum si celelalte comenzi care se refera la lucrul cu obiecte 3D (desenare, editare, afisare) vor fi amintite in sectiunea care cuprinde lista tuturor comenzilor AutoCAD.