Graphics - DocJava

almondpitterpatterAI and Robotics

Feb 23, 2014 (3 years and 6 months ago)

101 views

Computer Graphics

Sense from Symbol

Applications of Graphics

Entertainment


consumer enjoyment

Design


of physical objects to be built

Visualization


of data of any kind

Training


of reflexes for critical tasks

Entertainment

Games


interactive virtual worlds


graphics, sound, physics, AI, rules, networking

Movies


animation


totally computer generated imagery


special effects


mix of imagery of the physical and the virtual worlds

Television


cartoons
-

simple animation


advertisements
-

simple special effects

Design

Vehicles


cars, airplanes, etc.

Buildings


architecture & engineering

Appliances


Industrial Design

Electronics


integrated circuits (chips), boards

Coupled with



simulation & automated manufacturing

Visualization

Science & Engineering


simulations


mostly physics for engineering


real
-
world data


weather, oceans, astronomical, planetary

Medical


body sensing


MRI, CT, ultrasound sonograms

Data Mining


statistical analysis and decision support


economics, business, demographics, etc.

Training

Vehicle piloting


aircraft


ships, tanks


trucks, cars

Team


combat


emergency

Individual skill


soldiers


repair

Graphics Data Sources

Designed


computer aided design tool


used by artist or designer


specialized for each application

Sampled


cameras


lasers


magnetic, x
-
ray, ultra
-
sound

Algorithms


mathematical functions


e.g. sphere := x
2

+ y
2

= r
2


algorithms


e.g. fractal terrain

Graphics Systems

Sensory

Input


Cognition


Motor

Output

Human

Virtual World

Rendering


Modeling


Animation

Motion Tracking

Speech Recognition

Hand Control

Displays

Speakers

Force
-
feedback

Transducers

Geometric Modeling

Function


Represents the contents of space



the virtual world at a single moment in time

Constituents


Geometry


represents shape


Energy sources


light, sound and motion


Attributes



Appearance : properties that effect perception

Mass : properties that effect motion

Foundations

Mathematics : continuous functions

Data structures : organizing data to facilitate algorithms

Rendering

Function


Generate
perception

of a virtual world at an instant (or small
interval) of time

Form


Algorithms

that take the geometric model as input and generate
output that drives transducers


Displays, speakers, force
-
feedback


Based
-
on physics and perceptual physiology


only as needed to create perception

Motion

Function


updates state of geometric model from one
moment in time to the next

Forms


Interactive input
(possibly from a network)


Animation


designed or sampled


Physics
-

Newtonian dynamics


Behavior


Artificial Intelligence (AI)

Brain
-
> Geometry

Brain perception


pre
-
wired for perception of space
(Kant :1724
-
1804)


presumably for most, if not all, animals


perception


objects, and motion of objects


relative location/orientation

left/right of, front/behind of, above/below of

Cognition


experiential abstractions
(right brain)


extension, shape, connectedness


location, spatial relations, and movement


linguistic abstractions
(left brain)


space, time, ordering, change


geometry, topology, motion

Geometry

Foundations


space : extension


point : location


geometry : shape


dimension : spatial relation

Euclidian Geometry


points, lines, polygons


angles, length


coincidence, intersection, parallel


similarity, congruence

Geometry & Numbers

Geometry


sets of points


discrete vs. continuous


discrete means “separate and countable”


continuous means “no gaps”

Numbers


Integers


discrete


cardinals (counting) & ordinals (ordering)


Reals


continuous


integer + factional component : 3.14159


Analytic Geometry

Geometry + Numbers


introduced by Rene Descartes (1596
-
1650)


started the Northern Renaissance

Dimension


numbers : ordering <, =, >


space : left
-
of, coincident, right
-
of


multi
-
dimensional


multiple independent but simultaneous dimensions

Coordinates


tuples of values


one value per dimension : ( x,y ) or ( x,y,z )

Functions

Mappings


points
-
> points


domain
-
> range


can differ in dimension & coordinate systems

Equations


explicit : y = x*m + b


implicit : r
2

= x
2

+ y
2


parametric : P = t*P
1

+ P
0

Uses


shape :
all points that satisfy some equation


motion :
change in position as a function of time


transforms :
mapping a space onto itself, i.e. domain = range


Digital Numbers

Integers


base 2 string of binary digits : 98 = 1100010


8
-
bit (byte), 16
-
bit (short), 32
-
bit (int), 64
-
bit (long)

Reals


fixed point


5.75
-
> 101.110


floating point


scientific notation
-
> 2.25 * 10
3


fraction (mantissa) + exponent
-
> 5.75
-
> .101110 * 2
3


precision


single (float) : 32
-
bit
-
> 24
-
bit mantissa + 8
-
bit exponent


double : 64
-
bit
-
> 56
-
bit mantissa + 8
-
bit exponent

Digital Points

Coordinates


number of coordinates == dimension of space


need one number per coordinate


number can be any digital number (int, float, etc.)

Java2D Class Constructors


java.awt.Point( int x, int y )
-

discrete space


java.awt.geom.Point2D.Float( float x, float y )


java.awt.geom.Point2D.Double( double x, double y )

Digital Lines

Lines


1D, continuous, straight (not curved)


infinite length, unbounded

Line Segments


finite subset of a line


definable by two end
-
points

Java2D Class


java.awt.geom.Line2D

Line Equations

Explicit


y = mx + b, slope/y
-
intercept form

Implicit


0 = Ax + By + C, normal/distance form

Parametric


P = P
1

* (1
-
t) + t * P
2
, weighted sum form


P = O + D*t, directed ray form

Transformations

Purpose


make global geometric changes


restricted to use of linear equations in CG

Elementary Transforms


Translation
-

change in position


Rotation
-

change in orientation


Scaling
-

change in size


Shearing
-

change in perpendicularity

Combinations


any sequence of elementary transformations can be used


order of transforms matters in most cases

Classes of Transformations

Rigid Body


preserves distances and angles


translation & rotation

Affine


preserves parallel lines


all 4 elementary transformations

Projective


preserves straightness/flatness


affine + perspective

Linear


rotation, scaling and shearing

Translation

Geometry


change only in position


relative to the origin or to other shapes

Vector/Linear Algebra


is vector addition


P’ = P + T, where T is the translation vector

Properties


identity, inverse, closure, commutative

Rotation

Geometry


change in orientation


by some angle A either CCW or CW


about a some point (in 2D)

Properties


identity, inverse, closure, commutative


fixed point

Algebraic form


x’ = x * cos A
-

y * sin A


y’ = x * sin A
-

y * cos A

Scaling

Geometry


change in size


change in aspect ratio


change in handedness


projection

Algebra


x’ = x * Sx


y’ = y * Sy


Sx == Sy => symmetric scaling


Sx != Sy => asymmetric scaling


Shearing

Geometry


change in perpendicularity


introduces slant

Algebra


in X


x’ = x + y * Sh
x


y’ = x * Sh
y
+ x

Display of Motion

Create visual perception of motion


movies, TV, interactive graphics


sequence of snap shots :
frames


played back rapidly at a constant frame rate

Variety of frame rates


Film : 24 fps (frames per second)


S
-
TV: 30 fps


HD
-
TV: 60 fps


Computers : 60
-
120 fps

Interactive Animation

Demands


constant display rate


no pre
-
computed frames


all images synthesized dynamically


need fast interactive response time : < 50ms

Issues


rendering time varies per frame


depends on quantity of geometry and sophistication of rendering


display fps != rendering fps


distance moved per rendered frame should depend upon rendering
time to create illusion of constant rate motion


Interactive Animation

Solutions


Frame Buffers


holds a single frame as a digital
-
image


used to drive the display at constant frame rate


decouples rendering rate from display rate

Problems


rendering process will be visible


buffering clearing


multi
-
frame rendering times

Double Buffering

Separate Rendering from Display


use two buffers, one “on
-
screen” and one “off
-
screen”


sequence


display from on
-
screen buffer while rendering into off
-
screen
buffer


swap buffers quickly when rendering is completed

Methods


Blt
-

copy off
-
screen to on
-
screen


Flip
-

switch which buffer display processor reads

Displays

Monitors


CRT’s
-

cathode ray tube


electron beam hits phosphors


image is drawn left
-
to
-
right, top
-
to
-
bottom


LCD


light source : backlit or reflected


opacity of surface is modulated

Latest


LED
-

light emitting diode


Plasma
-

charged gas


DLP
-

laser + mirrors

Pixels

Picture Element


smallest area of digital color


displays : light emitting


cameras : light sensing


uses Red
-
Green
-
Blue color components


analogue of cones in the retina

Displays & Cameras

Resolutions


displays


SDTV : 480 x 640


HDTV : 1080 x 1920


computers : adjustable


cameras



“high res” : 1200 x 1600

Aspect ratio


height / width
OR

width / height


square pixels only


displays


SDTV : 3 / 4


HDTV : 9 / 16

Use 2D array of pixels


uniform distribution

Digital Images

2D Array of pixels


pixels are digitally represented in memory


each pixel has red
-
green
-
blue components


numbers
-
> brightness

Resolution


spatial resolution : width (X) & height (Y)


color resolution
(bits per pixel)


1
-
bit
-
> bi
-
level bitmap (white or black)


3
-
bits
-
> corners of color cube


color
-
> 3 x component
-
resolution


8
-
bit integer per component
-
> 24
-
bit RGB


32
-
bit float per component
-
> 96
-
bit RGB


Frame Buffers

Display Image


used to drive display


holds a single digital
image, i.e. a
frame


used to map logical to
physical pixels


Display Refresh

-
physical pixel output
decays rapidly

needed to see sequence of
frames


refresh rates


30
-

120 fps

Light

Photons


all light is comprised of photons


properties:
velocity, wavelength, frequency, polarization


wavelength = velocity / frequency


interact with matter :
transmitted, reflected, absorbed

Spectral Distribution


# of photons at each frequency/wavelength


visible spectrum

Visual Perception

Retina


2D array of photo receptors; 7 million


rods : low illumination, B&W (grey scale)


cones : medium
-
high illumination, color

Photo Receptors


measure light intensity (counts photons)


sensitivity is frequency dependent

Cones

Types



“red”, “green”, “blue”

Color Perception

Photo receptor activation level
-
> brightness

Combinations of cone activation

1.
one wavelength
-
> “rainbow colors”

2.
two wavelength
-
> rainbow + purples (hues)

3.
all cones at equal activation
-
> white (grey)

4.
arbitrary spectral distribution


hue


purity/saturation (complement of whiteness)


brightness/lightness/value

Hue



Hue, Saturation, Lightness/Value

Color Cone

RGB Color Cube

RGB Color Space

Magenta

Cyan

Yellow

Green

Red

Blue

Black

White

Retina

Cell Structure

Photoreceptor
Distribution

3D Graphics

3D analogues of 2D


Geometry


Transformations


Set Operations


Animation


Interaction

3D only


Viewers


Lights


Shading


Projection

3D Geometry

Coordinates


points : (x,y,z) & vectors : [ x y z]
T


X, Y, Z axes & analogous bases vectors


handedness

Shapes


interior is a solid which has volume


boundary is a surface


defined piecewise


surface algorithms more complicated than for curves


e.g. set operations, collision detection

3D Curved Surfaces

Implicits


polynomials define interior, boundary and
exterior


sphere :

x
2

+ y
2

+ z
2

= r
2

Parametrics


many Bezier curves used to define a single
surface


recursive subdivision used to create triangle
mesh approximation

Polyhedra

Boundary


piecewise linear


each piece is called a “face” or “facet”


if closed => solid


polyhedra proper are closed


polyhedral meshes may be open

Use


real
-
time graphics is all polyhedral


hardware only draws triangular meshes


can approximate any curved surface arbitrarily well


often combined with “smooth shading”

Polytopes

Dimension independent concept

3D


polyhedra

2D


polygons

1D


line segments

0D


point

Boundary : recursive definition


d
-
polytope bounded by set of (d
-
1)
-
polytope


d is the dimension, stops at d == 0

3D Transformations

Categories : same as 2D


types


rigid body, affine, projective, linear


elementary


translations, rotation, scaling, shearing

Representations


change of vector basis

P = x * [X] + y * [Y] + z * [Z] + T


matrices : 4x4

3D Translation

Change in 3D position


T = [
D
x
D
y
D
z]
T


P’ = P + T

x’ = x + T
x


1 0 0 T
x

y’ = y + T
y



0 1 0 T
y

z’ = z + T
z


0 0 1 T
z

w’ = w



0 0 0 1

3D Scaling

Analogous to 2D


change in size, aspect ratio, projection,
reflection



x’ = x * Sx


Sx 0 0 0



y’ = y * Sy


0 Sy 0 0



z’ = z * Sz


0 0 Sz 0



w’ = w



0 0 0 1

3D Rotation

Rotation as change of vector basis


preserve :


length


no change is length of each vector basis


perpendicularity


between every pair of vector bases


called orthogonal vector basis


called
orthonormal

transformation

3D Rotation

Rotation about a coordinate axis

ex: rotation about z
-
axis

x’ = x * cos
q

-

y * sin
q


cos
q

-
獩渠
q

〠†0

y’ = x * sin
q

+ y * cos
q


sin
q

捯猠
q

〠†0

z’ = z





0 0 1 0

w’ = w





0 0 0 1

similar for about x
-
axis or y
-
axis

3D Rotation

Rotation can be define about
any

line

1.
transform arbitrary line (axis of rotation) onto a coordinate axis

2.
apply desired rotation
(now about a coordinate axis)

3.
transform line back to original position : invert (1)

AxisAngle

Class in Java3D

aa = new AxisAngle4d( Vector3d axis, double angle )

m = new Matrix3d() ; m.set( aa );

Quaterions

Good for interpolation between rotations



q == [ axis * sin
q
/2, cos
q
/2 ]


q = new Quat4d(); q.set( AxisAngle aa );


3D Shearing

Shearing in Z

x’ = x + Sh
x


1 0 Sh
x

0

y’ = y + Sh
y


0 1 Sh
y

0

z’ = z



0 0 1 0

w’ = w



0 0 0 1


analogous for other axes

Order of 3D Transforms

Translations only or Scalings only


commutative

Rotations


about the same arbitrary axis


commutative


about the different axes


not commutative

Shearings


analogous to rotation

Mixed


not commutative

Scene Graphs

Provide


hierarchical organization of scene


for design and for supported features

Support


transformations


order in which to apply them to geometric primitives


animation


continuous interpolation of transformations


collision detection


interaction


control of transforms with input devices


selecting object for modification :
picking


efficiency


find subset of model relevant to current rendering

Java 3D Graphs

Group nodes


Branch


primarily for grouping together other nodes


Transform


specifies a transform to be applied to all children

Leaf nodes


Shape3D
-

Geometry & Attributes


Lights, Views, Sounds


+ specialized functions : e.g. Fog, Background


Behaviors for animation & interaction

Java 3D Execution

Definition phase


executes your code that defines the scene graph


no restrictions on what values can be set

Live phase


Java 3D engine processes scene graph for each
frame


updates values controlled by behaviors


Capability bits


protects what can be modified at runtime