render
Class InteractiveRenderer

java.lang.Object
  |
  +--render.Geometry
        |
        +--render.InteractiveMesh
              |
              +--render.InteractiveRenderer

public class InteractiveRenderer
extends InteractiveMesh


Field Summary
protected  double currentTime
          Holds current system time.
protected  double elapsed
          Measures time elapsed from initialization.
 boolean enableLod
          Enables level of detail computation for meshes.
protected  double frameRate
          Contains current frame rate of the renderer
protected  boolean isDamage
          Flag to force a renderer refresh when true.
 int m
           
protected  int mx
          Current mouse position
protected  int my
          Current mouse position
 int n
           
 double phi
          Euler angle for camera positioning (vertical view rotation).
 Renderer renderer
          Rendererobject
protected  double startTime
          Holds actual time of initialization.
 double theta
          Euler angle for camera positioning (horizontal view rotation).
 Geometry world
          root of the scene Geometry
 
Fields inherited from class render.Geometry
Bezier, BezierInverse, BSpline, CatmullRom, child, faces, globalMatrix, Hermite, material, matrix, modified, name, noiseOrigin, pullMask, pullWeight, refVertices, verticedepth, vertices
 
Constructor Summary
InteractiveRenderer()
           
InteractiveRenderer(int m, int n, int w, int h)
           
 
Method Summary
 void addLight(double x, double y, double z, double r, double g, double b)
          Adds light source with direction (x, y, z) & color (r, g, b).
 void animate(double time)
          This animate gets called by the main renderer
 void damage()
          Forces a refresh of the renderer.
 Geometry getGeometry(int x, int y)
          Returns the Geometry of the frontmost object at the point (x, y) in the image (like a z-buffer value of geometries).
 boolean getPoint(int x, int y, double[] xyz)
          Returns the location in world space of the point (x, y) on the screen.
 void ianimate(double time)
          Override this to animate.
 void identity()
          Sets current matrix to the identity matrix.
 void init()
          Initializes the applet and internal variables.
 void initialize()
          Override this to initialize the application program.
 boolean keyUp(int key)
          KeyListener sends commands to the processKey function
 Matrix m()
          Returns the matrix at the top of the stack.
 boolean mouseDown(java.awt.Event evt, double[] xyz, Geometry g)
           
 boolean mouseDown(int x, int y)
          Listener for mouse down.
 boolean mouseDrag(java.awt.Event evt, double[] xyz)
           
 boolean mouseDrag(int x, int y)
          Dragging the mouse causes gradual view rotation in the phi and theta directions.
 boolean mouseMove(int x, int y)
          Listener for mouse movement.
 boolean mouseUp(java.awt.Event evt, double[] xyz)
           
 boolean mouseUp(int x, int y)
          Listens for mouse release and controls aspects of the renderer.
 void pause()
          prevents the renderer from redrawing the scene.
 void pop()
          Pops the top matrix from the stack.
 boolean processCommand(int key)
          Handles commands received (generally for unicode commands from the KeyListener, but also for commands from any other sources, like buttons from webpages) : various default control keys to modify render style (Use CTRL + key).
 int pull(Geometry s, double x0, double x1, double x2, double y0, double y1, double y2, double z0, double z1, double z2)
          Deforms a geometric shape according to the beginning, middle, and end parameters in each dimension.
 void push()
          Pushes a copy of the top matrix onto the stack.
 void rotate(double t, double x, double y, double z)
          Rotates the top matrix around an arbitrary axis by angle t (radians).
 void rotateX(double t)
          Rotates the top matrix around the X axis by angle t (radians).
 void rotateY(double t)
          Rotates the top matrix around the Y axis by angle t (radians).
 void rotateZ(double t)
          Rotates the top matrix around the Z axis by angle t (radians).
 void run()
          main renderer
 void scale(double x, double y, double z)
          Scales the top matrix by x, y, z in their respective dimensions.
 void setBgColor(double r, double g, double b)
          Sets the background color ( RGB values range: 0..1)
 void setFL(double value)
          Sets the camera's focal length.
 void setFOV(double value)
          Sets the field of view value.
 void transform(Geometry s)
          Applies the top transformation matrix to Geometrys.
 void translate(double[] v)
          Translates the top matrix by vector v.
 void translate(double x, double y, double z)
          Translates the top matrix by x, y, z.
 
Methods inherited from class render.InteractiveMesh
find, getXY, getXYZ, isSelected
 
Methods inherited from class render.Geometry
add, add, addImprovedNoise, addNoise, addNoise, ball, bezeledCube, child, computedMeshNormals, computeMeshNormals, computePolyhedronNormals, computeSurfaceNormals, contains, copyVertex, copyVertices, copyVertices, cube, cylinder, delete, delete, disk, displaceByImprovedNoise, extrusion, gear, gearDisk, gearTube, gearTube, getMatrix, getMeshCols, getMeshRows, getOffset, getParent, globe, globe, isDoubleSided, lathe, latheGen, makeCircle, makeCurve, makeGear, makePath, mesh, patch, pill, pill, polygon, pull, pull, recomputeMeshNormals, setDoubleSided, setMaterial, setMatrix, setOffset, sew, sew, subdivide, superquadric, superquadric, torus, transform, tube, tube, wire, wire
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

renderer

public Renderer renderer
Rendererobject


world

public Geometry world
root of the scene Geometry


enableLod

public boolean enableLod
Enables level of detail computation for meshes.


theta

public double theta
Euler angle for camera positioning (horizontal view rotation).


phi

public double phi
Euler angle for camera positioning (vertical view rotation).


n

public int n

m

public int m

mx

protected int mx
Current mouse position


my

protected int my
Current mouse position


isDamage

protected boolean isDamage
Flag to force a renderer refresh when true.


startTime

protected double startTime
Holds actual time of initialization.


currentTime

protected double currentTime
Holds current system time. Used to compute time elapsed between frames.


elapsed

protected double elapsed
Measures time elapsed from initialization.


frameRate

protected double frameRate
Contains current frame rate of the renderer

Constructor Detail

InteractiveRenderer

public InteractiveRenderer()

InteractiveRenderer

public InteractiveRenderer(int m,
                           int n,
                           int w,
                           int h)
Parameters:
m -
n -
w -
h -
Method Detail

ianimate

public void ianimate(double time)
Override this to animate.

Parameters:
time - system time

animate

public void animate(double time)
This animate gets called by the main renderer

Overrides:
animate in class InteractiveMesh
See Also:
InteractiveMesh.animate(double)

pause

public void pause()
prevents the renderer from redrawing the scene.


damage

public void damage()
Forces a refresh of the renderer. Sets isDamage true.


setFOV

public void setFOV(double value)
Sets the field of view value.

Parameters:
value -
See Also:
Renderer.setFOV(double value)

setFL

public void setFL(double value)
Sets the camera's focal length.

Parameters:
value - focal length
See Also:
Renderer.setFL(double value)

setBgColor

public void setBgColor(double r,
                       double g,
                       double b)
Sets the background color ( RGB values range: 0..1)

Parameters:
r - red component 0..1
g - green component 0..1
b - blue component 0..1

addLight

public void addLight(double x,
                     double y,
                     double z,
                     double r,
                     double g,
                     double b)
Adds light source with direction (x, y, z) & color (r, g, b). Arguments x,y,z indicate light direction. Arguments r,g,b indicate light direction.

See Also:
Renderer.addLight(double x,double y,double z, double r,double g,double b)

identity

public void identity()
Sets current matrix to the identity matrix.


m

public Matrix m()
Returns the matrix at the top of the stack.

Returns:
the top matrix on the stack

pop

public void pop()
Pops the top matrix from the stack.


push

public void push()
Pushes a copy of the top matrix onto the stack.


rotateX

public void rotateX(double t)
Rotates the top matrix around the X axis by angle t (radians).

Parameters:
t - angle in radians

rotateY

public void rotateY(double t)
Rotates the top matrix around the Y axis by angle t (radians).

Parameters:
t - angle in radians

rotateZ

public void rotateZ(double t)
Rotates the top matrix around the Z axis by angle t (radians).

Parameters:
t - angle in radians

rotate

public void rotate(double t,
                   double x,
                   double y,
                   double z)
Rotates the top matrix around an arbitrary axis by angle t (radians).

Parameters:
t - angle in radians
x -
y -
z -

scale

public void scale(double x,
                  double y,
                  double z)
Scales the top matrix by x, y, z in their respective dimensions.

Parameters:
x - x scale factor
y - y scale factor
z - z scale factor

transform

public void transform(Geometry s)
Applies the top transformation matrix to Geometrys.

Parameters:
s - Geometry object

translate

public void translate(double[] v)
Translates the top matrix by vector v.

Parameters:
v - an array of three doubles representing translations in the x,y,z directions.

translate

public void translate(double x,
                      double y,
                      double z)
Translates the top matrix by x, y, z.

Parameters:
x - - translation in the x direction.
y - - translation in the y direction.
z - - translation in the z direction.

pull

public int pull(Geometry s,
                double x0,
                double x1,
                double x2,
                double y0,
                double y1,
                double y2,
                double z0,
                double z1,
                double z2)
Deforms a geometric shape according to the beginning, middle, and end parameters in each dimension. For each dimesion the three parameters indicate the amount of deformation at each position.

0 - beginning, 1 - middle, 2 - end. To indicate infinity (a constant transformation) set two adjacent parameters to the same value. Setting all three parameters to the same value transforms the shape geometry consistently across the entire axis of the parameters.

Parameters:
s - shape object to be deformed
x0 - location of beginning of deformation along the x axis
x1 - location of beginning of deformation along the x axis
x2 - location of beginning of deformation along the x axis
y0 - location of beginning of deformation along the y axis
y1 - location of beginning of deformation along the y axis
y2 - location of beginning of deformation along the y axis
z0 - location of beginning of deformation along the z axis
z1 - location of beginning of deformation along the z axis
z2 - location of beginning of deformation along the z axis
Returns:
1 if pull operation was successful, 0 otherwise
See Also:
Geometry.pull(render.Matrix, double, double, double, double, double, double, double, double, double)

init

public void init()
Initializes the applet and internal variables. To initialize components of the application program use initialize().

See Also:
initialize()

initialize

public void initialize()
Override this to initialize the application program.


run

public void run()
main renderer


getGeometry

public Geometry getGeometry(int x,
                            int y)
Returns the Geometry of the frontmost object at the point (x, y) in the image (like a z-buffer value of geometries).

Parameters:
x - x coordinate in the image
y - y coordinate in the image
Returns:
the geometry of the foremost object at that location

getPoint

public boolean getPoint(int x,
                        int y,
                        double[] xyz)
Returns the location in world space of the point (x, y) on the screen.

Parameters:
x - x coordinate in the image
y - y coordinate in the image
Returns:
true if there is an object at x, y , false otherwise

mouseDown

public boolean mouseDown(java.awt.Event evt,
                         double[] xyz,
                         Geometry g)
Overrides:
mouseDown in class InteractiveMesh

mouseUp

public boolean mouseUp(java.awt.Event evt,
                       double[] xyz)
Overrides:
mouseUp in class InteractiveMesh

mouseDrag

public boolean mouseDrag(java.awt.Event evt,
                         double[] xyz)
Overrides:
mouseDrag in class InteractiveMesh

mouseMove

public boolean mouseMove(int x,
                         int y)
Listener for mouse movement. If mouse is placed in the lower left cornder it displays the framerate.

Returns:
true

mouseDown

public boolean mouseDown(int x,
                         int y)
Listener for mouse down. Mouse down starts a view rotation.

Returns:
true

mouseDrag

public boolean mouseDrag(int x,
                         int y)
Dragging the mouse causes gradual view rotation in the phi and theta directions.

Parameters:
x - new x coordinate
y - new y coordinate

mouseUp

public boolean mouseUp(int x,
                       int y)
Listens for mouse release and controls aspects of the renderer. A release in the upper left corner toggles Renderer.tableMode. A release in the upper right corner toggle visibility of the Material.tabledisplay. When true, the current material table is displayed in the upper left corner of the window. Position of the mouse determines current material. A release in the lower right toggles Renderer.showMesh

Parameters:
x - current x coordinate
y - current y coordinate
Returns:
true

keyUp

public boolean keyUp(int key)
KeyListener sends commands to the processKey function

See Also:
Component.keyUp(java.awt.Event, int)

processCommand

public boolean processCommand(int key)
Handles commands received (generally for unicode commands from the KeyListener, but also for commands from any other sources, like buttons from webpages) : various default control keys to modify render style (Use CTRL + key).

'e' - toggles Renderer.showMesh, that just displays the shapes as mesh wireframes
'l' - toggles Renderer.getOutline()which produces a sketch-line drawing rendition of the scene
'm' - toggles Renderer.seeMeshwhich determines mesh visibility
't' - toggles global texture manipulation method (MIP on/off) (@link Texture#useMIP)

Parameters:
key - value of the key released
Returns:
true if one of the above keys was just released, false otherwise.