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

O aplikaci
Ovládání
Spuštění programu a nahrání uloženého rvf souboru
Konfigurace textur
Popis vektorového formátu RVF
Hardwarové požadavky


O aplikaci

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.


Ovládání

Pro ovládání programu pomocí klávesnice je nutné umístit kurzor do modelovacího prostoru, při kurzoru umístěném na panelu nemůžete ovládat program pomocí klávesnice. Rasterizer se ovládá pomocí rozbalovacích panelů, pop-up menu, klávesnice a myši. Pro ovládání spinnerů na panelu lze nastavovat hodnoty tažením myší.

 

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/


Konfigurace textur

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.


Popis vektorového formátu RVF

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

; první řádek střed elipsy, druhý řádek délky poloos a,b
ELIPSE_PARAMETRIC
178 339
50 100

; -43 udává úhel natočení elipsy od osy x
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

 


Hardwarové požadavky

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