cz.cuni.jagrlib.piece
Class CornellBox

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.piece.CornellBox
All Implemented Interfaces:
Breakable, Property, Trigger, Template

public class CornellBox
extends Piece
implements Trigger

Generates classical Cornell Box. Original data from Cornell University.

See Also:
CornellBox.java

Nested Class Summary
protected static class CornellBox.Interior
          Supported interiors.
 
Field Summary
protected  int attrColorF
          Actual face-color attribute.
protected  int attrColorV
          Actual vertex-color attribute.
protected  int attrEmission
          Actual face-emission attribute.
protected  int attrNormal
          Actual vertex-normal attribute.
static java.lang.String AUTOMATIC_TESS
           
protected  boolean automaticTess
          Automatic tessellation?
protected  Brep brep
          Accelerator: input B-rep database.
protected static java.lang.String CATEGORY
          Object category.
protected  int cellsUBlock
          Number of rows for block (short, tall).
protected  int cellsUBox
          Number of rows for the box.
protected  int cellsVBlock
          Number of columns for block (short, tall).
protected  int cellsVBox
          Number of columns for the box.
protected  float[][] color
          All colors in float[] format.
protected  int ctx
          Actual Brep context.
protected  java.lang.String emissionName
          Name of face-emission attribute.
protected  CornellBox.Interior interior
          Actually used number of boxes.
static java.lang.String INTERIOR
           
static java.lang.String LEFT_SURFACE_COLOR
           
protected  java.awt.Color leftSurfaceColor
          Color of the left side of the box.
static java.lang.String LIGHT_HEIGHT
           
static java.lang.String LIGHT_WIDTH
           
protected  double lightHeight
          Height of light(s).
protected  double lightWidth
          Width of light(s).
static java.lang.String MAX_SIDE_LENGTH
           
protected  double maxSideLength
          Maximal size of triangle in scene (used if automaticTess is true).
static java.lang.String NUMBER_COLS_BLOCK
           
static java.lang.String NUMBER_COLS_BOX
           
static java.lang.String NUMBER_ROWS_BLOCK
           
static java.lang.String NUMBER_ROWS_BOX
           
static java.lang.String OTHER_SURFACES_COLOR
           
protected  java.awt.Color otherSurfacesColor
          Color of all other sides.
static RegPiece reg
          Static registration instance for this class.
static java.lang.String RIGHT_SURFACE_COLOR
           
protected  java.awt.Color rightSurfaceColor
          Color of the right side of the box.
protected static java.lang.String TEMPLATE_NAME
          Object template identifier.
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.Property
LOGGING, STATISTICS, TEXT_DESCRIPTION
 
Fields inherited from interface cz.cuni.jagrlib.Template
ALL_PLUGS, C_1D, C_2D, C_3D, C_ALPHA, C_BINARY, C_BREP, C_CAMERA, C_CIRCLE, C_CLIP, C_COMPRESSION, C_CURVE, C_DATA, C_DRAW, C_EDITOR, C_ELLIPSE, C_FILL, C_FILTER, C_FLOAT, C_FUNCTION, C_IMAGE, C_INTEGER, C_IO, C_LIGHT, C_LINE, C_METRIC, C_POLYGON, C_PROJECTION, C_RADIOSITY, C_RASTER, C_RENDER, C_SAMPLE, C_SCENE, C_SET, C_SOLID, C_TEXT, C_TRANSFORM, C_VECTOR, C_VIEWER, C_WORKER, CAT_EMPTY, EMPTY, IFACE, JAGRLIB, JAGRLIB2, MANIPULATOR_COMBO, MANIPULATOR_CUSTOM, MANIPULATOR_DEFAULT, MANIPULATOR_MULTILINE, PL_ALPHAMASK, PL_BITMASK, PL_CAUSTIC, PL_CODEC, PL_COLORMAP, PL_COMPARE, PL_DATA, PL_DIRECT, PL_EDITOR, PL_FILTER, PL_FUNCTION, PL_IMAGE, PL_IMPORT, PL_INPUT, PL_INTERSECTION, PL_LIGHTSOURCE, PL_ORDER, PL_OUTPUT, PL_PALETTE, PL_PHOTON, PL_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_SHADOW, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_VOLUME, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
CornellBox()
           
 
Method Summary
protected  int autoEdges(double[] a, double[] b)
          Computes number of edges used in splitting the given segment.
protected  void box()
          Creates Cornell-box external walls.
 void createQuad(double[] ur, double[] ul, double[] ll, double[] lr, int horiz, int vert, float[] vColor, float[] fColor, float[] fEmiss)
          Creates quadrilateral with the given parameters.
 boolean fire(int type)
          Triggers the (undetermined) action.
 java.lang.Object get(java.lang.String key)
          Gets the given property.
protected  void light()
          Creates rectangular light (near the ceiling).
 void prepare(Brep data, int ctx)
          Should be called at the beginning of each Cornell-box construction.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
protected  void shortBlock()
          Creates short block inside the box.
protected  void tallBlock()
          Creates tall block inside the box.
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, init, isCompatible, isCompatible, isConnected, logError, logWarning, myInterface, newInputPlug, newOptOutputPlug, newOutputPlug, newPlug, noTemplates, propBegin, propBounds, propDefault, propEnd, propEnum, propManipulator, propManipulator, setProgressListener, setRegStrings, setTemplateDynamic, stop
 
Methods inherited from class cz.cuni.jagrlib.DefaultProperty
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, stringProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit
 
Methods inherited from interface cz.cuni.jagrlib.Breakable
setProgressListener, stop
 

Field Detail

brep

protected Brep brep
Accelerator: input B-rep database.


ctx

protected int ctx
Actual Brep context.


attrColorV

protected int attrColorV
Actual vertex-color attribute.


attrNormal

protected int attrNormal
Actual vertex-normal attribute.


attrColorF

protected int attrColorF
Actual face-color attribute.


attrEmission

protected int attrEmission
Actual face-emission attribute.


emissionName

protected java.lang.String emissionName
Name of face-emission attribute.


interior

protected CornellBox.Interior interior
Actually used number of boxes.


automaticTess

protected boolean automaticTess
Automatic tessellation?


cellsUBox

protected int cellsUBox
Number of rows for the box.


cellsVBox

protected int cellsVBox
Number of columns for the box.


cellsUBlock

protected int cellsUBlock
Number of rows for block (short, tall).


cellsVBlock

protected int cellsVBlock
Number of columns for block (short, tall).


maxSideLength

protected double maxSideLength
Maximal size of triangle in scene (used if automaticTess is true).


leftSurfaceColor

protected java.awt.Color leftSurfaceColor
Color of the left side of the box.


rightSurfaceColor

protected java.awt.Color rightSurfaceColor
Color of the right side of the box.


otherSurfacesColor

protected java.awt.Color otherSurfacesColor
Color of all other sides.


lightWidth

protected double lightWidth
Width of light(s).


lightHeight

protected double lightHeight
Height of light(s).


color

protected float[][] color
All colors in float[] format.


AUTOMATIC_TESS

public static final java.lang.String AUTOMATIC_TESS
See Also:
Constant Field Values

NUMBER_ROWS_BOX

public static final java.lang.String NUMBER_ROWS_BOX
See Also:
Constant Field Values

NUMBER_COLS_BOX

public static final java.lang.String NUMBER_COLS_BOX
See Also:
Constant Field Values

NUMBER_ROWS_BLOCK

public static final java.lang.String NUMBER_ROWS_BLOCK
See Also:
Constant Field Values

NUMBER_COLS_BLOCK

public static final java.lang.String NUMBER_COLS_BLOCK
See Also:
Constant Field Values

MAX_SIDE_LENGTH

public static final java.lang.String MAX_SIDE_LENGTH
See Also:
Constant Field Values

LEFT_SURFACE_COLOR

public static final java.lang.String LEFT_SURFACE_COLOR
See Also:
Constant Field Values

RIGHT_SURFACE_COLOR

public static final java.lang.String RIGHT_SURFACE_COLOR
See Also:
Constant Field Values

OTHER_SURFACES_COLOR

public static final java.lang.String OTHER_SURFACES_COLOR
See Also:
Constant Field Values

LIGHT_WIDTH

public static final java.lang.String LIGHT_WIDTH
See Also:
Constant Field Values

LIGHT_HEIGHT

public static final java.lang.String LIGHT_HEIGHT
See Also:
Constant Field Values

INTERIOR

public static final java.lang.String INTERIOR
See Also:
Constant Field Values

TEMPLATE_NAME

protected static final java.lang.String TEMPLATE_NAME
Object template identifier.

See Also:
Constant Field Values

CATEGORY

protected static final java.lang.String CATEGORY
Object category.

See Also:
Constant Field Values

reg

public static final RegPiece reg
Static registration instance for this class. Automatically initialized in class-loading time.

Constructor Detail

CornellBox

public CornellBox()
Method Detail

prepare

public void prepare(Brep data,
                    int ctx)
Should be called at the beginning of each Cornell-box construction.


autoEdges

protected int autoEdges(double[] a,
                        double[] b)
Computes number of edges used in splitting the given segment.

See Also:
maxSideLength

createQuad

public void createQuad(double[] ur,
                       double[] ul,
                       double[] ll,
                       double[] lr,
                       int horiz,
                       int vert,
                       float[] vColor,
                       float[] fColor,
                       float[] fEmiss)
Creates quadrilateral with the given parameters. Must be called after prepare(cz.cuni.jagrlib.iface.Brep, int).

Parameters:
ur - Coordinates of up right vertex.
ul - Coordinates of up left vertex.
ll - Coordinates of low left vertex.
lr - Coordinates of low right vertex.
horiz - Number of horizontal edges (columns).
vert - Number of vertical edges (rows).
vColor - Vertex-color.
fColor - Face-color (reflectivity).
fEmiss - Face-emission (nonzero for light sources).

box

protected void box()
Creates Cornell-box external walls.


light

protected void light()
Creates rectangular light (near the ceiling).


shortBlock

protected void shortBlock()
Creates short block inside the box.


tallBlock

protected void tallBlock()
Creates tall block inside the box.


fire

public boolean fire(int type)
Triggers the (undetermined) action.

Specified by:
fire in interface Trigger
Parameters:
type - The action type (whatever it means..).
Returns:
true if the action was successful.

set

public void set(java.lang.String key,
                java.lang.Object value)
Sets the given property.

Specified by:
set in interface Property
Overrides:
set in class DefaultProperty
Parameters:
key - Key string.
value - The new value.
See Also:
Property.commit()

get

public java.lang.Object get(java.lang.String key)
Gets the given property.

Specified by:
get in interface Property
Overrides:
get in class DefaultProperty
Parameters:
key - Key string.
Returns:
The actual value or null.

setTemplate

public static int setTemplate(Template t,
                              int ord)
General-purpose registration routine. Sets all plugs, strings, etc. to the given Template.