Poročilo o nalogi pri predmetu Računalniško podprto konstruiranje

14.1
Skodelica z ročajem

(Izris 3D modela z OpenGL-om)

CoffeeCup with handle

(Visualization of a 3D model in OpenGL)

Damijan Andrejka
Šolsko leto: 2001/2002


Definicija | Vnos parametrov | Izris modela | Interaktivnost | Senčenje | Rezultat | Zaključek | Literatura

Abstract
This report describes the writing of a program in the OpenGL graphics library for the visualization of a coffeecup. The C programming language is used. First the subroutine for reading the user defined parameters is needed, because the user must be able to define thickness, radius and height of the cup. To view the cup from all angles the mouse can be used. Also two lights and shading are used.

Definicija
Izdelati je potrebno program s poljubnim programskim jezikom, ki bo uporabljal grafično knjižnico OpenGL. Ta program naj prek knjižnice GLUT izriše skodelico za belo kavo z ročajem. Objekt mora biti površinski in ne žični. Omogočeno mora biti, da uporabnik lahko spreminja sledeče parametre: višina, premer in debelina stene. Zaželjena je interaktivnost programa (uporaba miške in tipk).

Vnos parametrov
Vnos treh spremenljivih parametrov poteka prek podprograma VnosParametrov, ki pred inicializacijo GLUT okna od uporabnika zahteva numerične vrednosti (Slika 1), ki jih dodeli spremenljivkam. Območja vrednosti, ki jih lahko izberemo za spremenljivke so omejena, ker bi drugače v nekaterih primerih lahko prišlo do napake, če vrednosti nebi bile smiselne.

Sl. 1 Vnos podatkov

Izris modela
Skodelico sestavimo iz 10-ih elementov, ki jih vidimo na sliki 2. Iz teh lahko prepoznamo dva tipa, ki se ponavljata. Prvi tip so elementi, ki imajo obliko površine valja (elementi 1, 3, 5, 7 in 9), drugi tip elementov so polkrožnega preseka, ki je rotiran za 360 stopinj (elementi 2, 4, 6, 8 in 10). Primer teh dveh tipov v programu je tukaj. Definirana je spremenljivka delitev, ki podaja število delov kroga in s tem 'finost' okroglih površin.

Sl. 2 Presek skodelice in sestavni elementi

Primer narisanih elementov 1 in 2 lahko vidimo na sliki 3. Ta elementa potem lahko samo še množimo in prestavljamo v prostoru z manjšimi popravki in dobimo elemente za celoten lonček.

Sl. 3 Element 1 in 2 izrisana v GLUT oknu



Interaktivnost
Zaradi lažjega pogleda na skodelico z vseh strani, jo je možno z miško rotirati. Rotacija poteka okrog osi x in y, kar lahko vidimo v podprogramih, ki omogočajo rotacijo.

Senčenje
Da bi bil sam model bolje viden in nazoren sta bile dodane še dve luči in omogočeno je bilo senčenje v glavnem programu.

Rezultat
Rezultat naloge in izris v GLUT oknu je viden na sliki 4 in sliki 5. Program je pisan v programskem jeziku C++. Lahko si ogledate program in izvorno kodo ali samo izvorno kodo.

Sl. 4 in 5 Rezultat naloge

Zaključek
Namen naloge je bil seznanjenje z grafično knjižnico OpenGL, ki se uporablja v vseh tehničnih aplikacijah za vizualizacijo. Za to knjižnico lahko programiramo znotraj veliko programskih jezikov (C, C++, Delphi, Fortran,..), zato je zelo primerna za hitro učenje. Osnovnih gradnikov za prikaz grafike je zelo malo, zato je potrebno za prikaz zahtevnejše grafike veliko truda. Dokler so oblike ravne, pravokotne, simetrične,.. je izdelava objekta relativno enostavna, pri kakšnih dodatnih krivuljah v prostoru pa je zahtevnost popisa mnogo večja. Opazno je tudi, da se je pri zahtevnih oblikah potrebno sprijazniti z napakami, saj npr. zaokrožitve, ni možno 100% natančno popisati, ker so osnovni gradniki samo ravne črte. Vendar pa so koti tako majhni, da nenatančnosti s prostim očesom ni možno opaziti. Tukaj pa se pričnejo tudi omejitve grafične kartice in procesorja. Prednost pa je velika razširjenost, saj lahko OpenGL lahko uporabljamo na kateremkoli operacijskem sistemu.

Literatura

1. Leon Kos, Računalniška grafika, Fakulteta za strojništvo, 2002