Wire-frame Modeling An application of Bresenham’s line-drawing algorithm

advertisement
Wire-frame Modeling
An application of Bresenham’s
line-drawing algorithm
3D models
• Simple objects from the world around us
can be depicted as “wire-frame models”
• We make a list of the “key” points (usually
corners) on the object’s outer surface and
a list of all the lines that connect them
• The “key” points are called “vertices”
• The connecting lines are called “edges”
• We create a file that contains this “data”
Example: the basic barn
10 corner-points (“vertices”)
15 line-segments (“edges”)
3D-coordinates
Front vertices
V0=( 0.5, 0.5, 0.5 )
V2=( 0.5, -0.5, 0.5 )
V4=( -0.5, -0.5, 0.5 )
V6=( -0.5, 0.5, 0.5 )
V8=( 0.0, 1.0, 0.5 )
Back vertices
V1=( 0.5, 0.5, -0.5 )
V3=( 0.5, -0.5, -0.5 )
V5=( -0.5, -0.5, -0.5 )
V7=( -0.5, 0.5, -0.5 )
V9=( 0.0, 1.0, -0.5 )
Perspective Projection
• We imagine the computer display screen
is located between the wireframe model
and the eye of someone who’s viewing it
• Each vertex is “projected” onto the screen
• We use Bresenham’s algorithm to draw
line-segments that connect the projections
• A “demo program” will show this effect
The
projection
Y-axis
P(x,y,z)
P*(x*,y*,0)
X-axis
View-plane
Z-axis
Eye of viewer
(0,0,D)
D = distance of eye from view-plane
Similar Triangles
Corresponding sides have proportional lengths
C
c
A
a
b
B
a/A = b/B = c/C
Projection: side-view
By similar triangles:
y* / y = D / (D – z)
P(x,y,z)
So y* = y / ( 1 – z / D )
P*(x*,y*,0)
y*
Eye
Z-axis
D
z
View-plane
y
Projection: top-view
D
z
Z-axis
x*
x
P*( x*, y*, 0 )
By similar triangles:
x* / x = D / ( D – z )
So: x* = x / ( 1 – z / D )
P( x, y, z )
The projection equations
• Point P( x, y, z ) in 3D-world is “mapped”
to pixel P*( x*, y* ) in the 2D-viewplane:
x* = x / ( 1 – z / D )
y* = y / ( 1 – z / D )
• Here D is distance of eye from viewplane
Any fixups needed?
• If the projected image is too small or too
big, it can be “rescaled”:
x’ = x*(scaleX); y’ = y*(scaleY);
• If the projected image is “off-center”, it can
be “shifted” (left or right, up or down):
x” = x’+shiftX; y” = y’+shiftY;
animation
• The wire-frame model can be moved (or
the viewer’s eye can be moved) to show
an object from different viewing angles
• By redrawing a series of different views in
rapid succession, the illusion of animation
can be achieved
• But erasing and then redrawing a complex
object can produce “flickering” that spoils
the impression of smooth movements
smooth wire-frame animations
• Advanced hardware techniques can be
employed to eliminate any “flickering”
• One such technique is “page-flipping”
• It makes use of the extra graphics VRAM
• But it may require us to learn more about
the Super VGA hardware designs
• And here we must confront the issue of
graphics “standards” (or the lack thereof)
SuperVGA
The problem of “standards” for
enhanced PC graphics hardware
Limitations of VGA
•
•
•
•
•
•
•
•
VGA’s architecture was designed by IBM
It was targeted for IBM’s PC/AT machines
These used Intel’s 8086/8088/80286 cpus
Operating system was PC-DOS/MS-DOS
DOS was built to execute in “real-mode”
So address-space was limited to 1MB
VRAM was confined to 0xA0000-0xBFFFF
Graphics-mode VRAM was only 64KB
VGA Modes 18 and 19
• Design-goals of VGA mode 18:
higher screen-resolution (640x480, 4bpp)
and “square” pixels (16 colors)
• Design-goals of VGA mode 19:
higher color-depth (320x200, 8bpp)
and “linear” addressing (256 colors)
• Also “backward compatibility” with CGA/EGA:
– CGA mode 6: 640x200, 1bpp (2-colors)
– CGA mode 5: 320x200, 2bpp (4-colors)
– EGA mode 16: 640x350, 4bpp (16-colors0
IBM competitors
• Others sought a marketing advantage
• Their engineers devised ways to get more
colors and/or higher screen-resolutions
• Example: 800x600 with 4bpp (16-colors)
• Offers “square” pixels and 64K addressing
• 800x600=480000 pixels (“planar” memory)
• But every competitor did it their own way!
• So PC graphics software wasn’t “portable”
VESA
• Video Electronics Standards Association
• An industry consortium to setup standards
• Their idea: provide a uniform programming
interface for Super VGAs via the firmware
• Applications would not directly program
the incompatible graphics hardware, but
would call standard ROM-BIOS functions
supplied in firmware by each manufacturer
VESA Bios Extensions v3.0
• Copy of the standards document is online
• It defines a programming interface for the
essential and the most-needed functions
• Examples: setting various display-modes,
querying the hardware’s capabilities,
and enabling SuperVGA functionalities
• Reading assignment: study ‘vbe3.pdf’
Download