Rasterizer
2D & 3D graphics design tool
Bakalářská diplomová práce, verze 1.0, 2004, © Jan Štalmach, Institut řízení procesů a aplikované informatiky, Fakulta technologická, Univerzita Tomáše Bati ve Zlíně
Témata
Rasterizer je aplikace určená pro interaktivní intuitivní modelování 2D a 3D počítačové grafiky. Software je určený pro výuku předmětu Počítačová grafika, realizovaného Kabinetem aplikované informatiky na Fakultě technologické UTB ve Zlíně. Rasterizer lze dále využít pro návrh a design výrobků, tvorbu liniové grafiky, vektorovou ilustraci, tvorbu skic, atd.
Pro modelování ve 2D lze využít základních geometrických primitiv (úsečka, kružnice, elipsa) a polynomiální parametrické křivky. Ve 3D se modeluje pomocí polynomiálních parametrických ploch.
Při modelování ve 2D i 3D lze interaktivně měnit polohu řídících bodů a docílit tak požadovaného průběhu křivky nebo plochy. Ve 2D je možné řídit kvalitu renderovaných křivek změnou hustoty ekvidistantní úsečkové aproximace těchto křivek. Ve 3D módu lze měnit hustotu polygonální sítě, plasticky stínovat objekty konstantním nebo Gouraudovým stínováním. Měnit polohu a barvu osvětlení, texturovat objekty a libovolně s nimi rotovat, posunovat a zoomovat. Lze nastavovat barvu pozadí editoru, barvu aktivních bodů, řídícího polygonu a měnit mnoho dalších uživatelských nastavení.
Rasterizer umožňuje export modelované grafiky do interního vektorového formátu RVF nebo do klasické bitmapy BMP nebo Truevision Targa TGA.
Pro modelování ve 2D lze použít následující objekty:
Pro modelování ve 3D lze použít následující objekty:
Zdrojový kód aplikace je multiplatformní a software lze použít na libovolné X-Window platformě s podporou OpenGL.
2D mód: Ovládání pomocí klávesnice |
|
ENTER | přepíná na další editovaný objekt |
INS | přidá další koncový bod u obecných křivek |
+ a – | zvětší / zmenší tloušťku čáry |
F11 | zobrazování řídících bodů neaktivních objektů |
F12 | rastrová mřížka |
CTRL+END | smaže aktivní objekt |
ESC | konec, dále potvrdit na klávesnici (A)no / (N)e |
2D mód: Ovládání pomocí myši |
|
LEVÉ | přesouvá aktivní body |
CTRL+LEVÉ | přesouvá aktivní body |
SHIFT+LEVÉ+ jeden aktivní bod | přesouvá celý objekt pomocí myši |
PROSTŘEDNÍ | zruší přidávání nových koncových bodů křivek |
PRAVÉ | aktivuje pop-up menu pro výběr nového objektu |
3D mód: Ovládání pomocí klávesnice |
|
ENTER | přepíná na další editovaný objekt |
ŠIPKA NAHORU/DOLU | posun aktivního bodu v ose y nahoru/dolu |
ŠIPKA VLEVO/VPRAVO | posun aktivního bodu v ose x |
PAGE UP/DOWN | posun aktivního bodu v ose z nahoru/dolu |
SHIFT + ŠIPKA NAHORU/DOLU+aktivní bod | posun celého řídícího polygonu v ose y nahoru/dolu |
SHIFT + ŠIPKA VLEVO/VPRAVO+aktivní bod | posun celého řídícího polygonu v ose x vlevo/vpravo |
SHIFT + PAGE UP/DOWN+aktivní bod | posun celého řídícího polygonu v ose z nahoru/dolu |
CTRL + ŠIPKA NAHORU/DOLU+aktivní bod | rotace celého řídícího polygonu kolem osy y anticlock/clock |
CTRL + ŠIPKA VLEVO/VPRAVO+aktivní bod | rotace celého řídícího polygonu kolem osy x anticlock/clock |
CTRL + PAGE UP/DOWN+aktivní bod | rotace celého řídícího polygonu kolem osy z anticlock/clock |
+ a - | zoom kamery |
1 | Pohled na rovinu X-Y |
2 | Pohled na rovinu Y-Z |
3 | Pohled na rovinu Z-X |
CTRL+END | smaže aktivní objekt |
ESC | konec, dále potvrdit na klávesnici (A)no / (N)e |
3D mód: Ovládání pomocí myši |
|
LEVÉ | výběr řídícího bodu |
SHIFT+LEVÉ | přesouvá celý objekt pomocí myši |
PROSTŘEDNÍ | rotace scénou pohybem myši podle X a Y |
PRAVÉ | aktivuje pop-up menu pro výběr nového objektu |
Spuštění programu a nahrání uloženého rvf souboru
Program se spouští ve svém adresáři příkazem rasterizace.exe. Chceme-li nahrát již existující uložený soubor zadáme jeho název jako řádkový parametr (i s příponou).
Př.
rasterizace.exe plocha.rvf - nahraje soubor plocha.rvf z aktuálního adresáře
rasterizace.exe rvf/cajník.rvf - nahraje soubor cajnik.rvf z adresáře rvf/
Program ve 3D módu umožňuje jednoduchou vizualizaci drátového modelu pomocí texturované stínované trojúhelníkové nebo čtvercové polygonální sítě. Textury, které chceme v programu použít musí být ve formátu truecolor bmp (24 bit) a jejich jméno a přístupová cesta musí být uvedena v konfiguračním souboru textur – textury.cfg. Za poslední texturou neodřádkujte na nový řádek.
Rasterizer používá pro vektorový zápis dat do souboru interní vektorový formát Rasterizer Vector File (RVF). Tento jednoduchý formát byl vyvinut speciálně pro program Rasterizer. Pomocí tohoto formátu lze jednoduše editovat vektorové skripty *.rvf, které obsahují zápis modelovaných dat.
RVF formát má pevně danou strukturu, která musí být při editaci zachována. Poznámky začínáme středníkem na počátku řádku. Každý RVF soubor musí mít alespoň na prvním řádku úvodní poznámku. Lze libovolně vynechávat řádky do té doby, než použijeme klíčové slovo pro definici objektu. Poté již nelze řádky vynechávat a je nutno dodržet pevnou strukturu - viz ukázkové zápisy. Editace skriptů je velmi snadná a pro její pochopení je nejlepší obrazit obsah souboru ukazka.rvf, který obsahuje zápis všech objektů používaných v Rasterizeru. Soubor je umístěn v hlavním adresáři Rasterizeru. Další skripty lze nalézt v adresáři /rvf.
RVF příkazy pro 2D objekty |
|
LINE_BRESENHAM | Bresenhamův lineární interpolátor |
LINE_DDA | Algoritmus DDA pro úsečku |
LINE_LINE2STEP | Algoritmus Line Two Spep pro úsečku |
CIRCLE_BRESENHAM | Bresenhamův kružnicový interpolátor |
CIRCLE_LINE_ROTATION | Algoritmus rotace úsečky |
CIRCLE_PARAMETRIC | Algoritmus rasterizace kružnice pomocí parametrického vyjádření |
ELIPSE_BRESENHAM | Bresenhamův eliptický algoritmus |
ELIPSE_PARAMETRIC | Algoritmus rasterizace elipsy pomocí parametrického vyjádření |
ELIPSE_FREE | Algoritmus rasterizace elipsy v obecné poloze |
SPLINE_BEZIER_CUBIC_ITERATIVE | Beziérova kubická křivka iterativním algoritmem |
SPLINE_BEZIER_CUBIC_RECURSIVE | Beziérova kubická křivka rekursivním deCasteljau algoritmem |
SPLINE_COONS_CUBIC | Coonsova kubická křivka |
SPLINE_FERGUSON_CUBIC | Fergusonova kubická křivka |
SPLINE_CATMULROM_CUBIC | Catmul-Rom kubická křivka |
SPLINE_BEZIER | Beziérova křivka |
SPLINE_BEZIER_RACIONAL | Racionální Beziérova křivka |
SPLINE_COONS | Coonsova křivka |
SPLINE_FERGUSON | Fergusonova křivka |
SPLINE_CATMULROM | Catmul-Rom křivka |
SPLINE_BSPLINE | B-Spline křivka |
SPLINE_NURBS | NURBS křivka |
RVF příkazy pro 3D objekty |
|
SURFACE_BEZIER_BICUBIC | Beziérova bikubická plocha |
SURFACE_BEZIER_RACIONAL_BICUBIC | Racionální Beziérova bikubická plocha |
SURFACE_COONS_BICUBIC | Coonsova bikubická plocha |
SURFACE_FERGUSON_BICUBIC | Fergusonova |bikubická plocha |
Ukázkové zápisy ve vektorovém rvf formátu:
; první řádek
souřadnice počátku úsečky, druhý řádek souřadnice konce úsečky
LINE_BRESENHAM
42 574
33 456
;
první řádek střed kružnice, druhý řádek poloměr kružnice
CIRCLE_LINE_ROTATION
357 516
50
ELIPSE_PARAMETRIC
178 339
50 100
ELIPSE_FREE
286 403
15 72
-43
; 4 udává
počet řídících bodů, u kubik vždy 4, třetí parametr je
racionální váha tohoto bodu
SPLINE_BEZIER_RACIONAL
4
252 255 1.000000
259 315 1.000000
355 316 10.000000
367 258 1.000000
SPLINE_BEZIER_CUBIC_ITERATIVE
4
273 317
287 383
342 386
368 314
;10 je počet
řídících bodů, kterým odpovídá dalších deset řádků specifikující souřadnice
těchto bodů
SPLINE_BEZIER
10
190 129
191 201
229 224
271 225
312 193
319 148
282 124
218 133
223 177
259 163
; poslední parametr
(3) udává počáteční a koncovou násobnost v uzlovém vektoru B-Splinu
SPLINE_BSPLINE
10
346 16
338 84
369 118
414 87
369 48
395 22
434 53
413 130
462 102
442 19
3
; 7 udává počet
řídících bodů, třetí parametr je racionální váha
tohoto bodu
; 10 je počet
uzlů v uzlovém vektoru a další parametry jsou neklesající hodnoty těchto uzlů
SPLINE_NURBS
7
472 72 1.000000
472 129 0.500000
569 128 0.500000
567 74 1.000000
568 21 0.500000
473 21 0.500000
471 72 1.000000
10
0.000000
0.000000
0.000000
0.250000
0.500000
0.500000
0.750000
1.000000
1.000000
1.000000
; bikubická plocha má
vždy 16 řídících bodů
; třetí parametr je
racionální váha tohoto bodu
; poslední řádek
značí RGB hodnoty barvy drátového modelu této plochy
SURFACE_BEZIER_RACIONAL_BICUBIC
16
-32 16 -3 1.000000
-37 16 -8 1.000000
-37 16 -18 1.000000
-32 16 -23 1.000000
-27 16 2 1.000000
-27 16 -8 1.000000
-30 45 -18 10.000000
-27 16 -28 1.000000
-17 16 2 1.000000
-17 16 -8 1.000000
-17 -25 -18 10.000000
-17 16 -28 1.000000
-12 16 -3 1.000000
-7 16 -8 1.000000
-7 16 -18 1.000000
-12 16 -23 1.000000
1.0 0.2 0.32
Aplikace pro svůj spolehlivý chod vyžaduje počítač s hardwarovým grafickým akcelerátorem s podporou OpenGL. Rozlišení pracovní plochy pro grafické aplikace je obecně požadováno co možná nejvyšší (min 800x600, optimum 1280x1024 a více). Doporučeno je zejména použití kvalitního grafického akcelerátoru. Aplikace nemusí korektně a spolehlivě pracovat na tzv. „on-board“ grafických kartách, které jsou součástí základní desky počítače.
Minimální konfigurace
Pentium II (Duron 600), 32 MB RAM, OpenGL grafická karta 16 MB VRAM, rozlišení SVGA 800x600x16bpp
Doporučená konfigurace
Pentium IV (Athlon XP 1600+), 256 MB RAM, OpenGL grafická karta 64 MB VRAM, rozlišení SVGA 1280x1024x32bpp a více
Datum 11.6.2004, Verze 1.0, Email: stalmachjan@volny.cz. Nejnovější verze dostupná na www.volny.cz/stalmachjan/rasterizer.zip