cz.cuni.jagrlib.piece
Class StaticCSGScene

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.piece.StaticCSGScene
All Implemented Interfaces:
Breakable, Intersectable, Property, RTScene, TimeDependent, Template

public class StaticCSGScene
extends Piece
implements RTScene

CSG representation of 3D scenes for Ray-tracing rendering methods. Static scene object (no time-variable is implemented).

Since:
0.12
See Also:
StaticCSGScene.java

Field Summary
protected  double[] background
          Actual background color.
protected  RayGenerator camera
          Static camera.
protected static java.lang.String CATEGORY
          Object category.
protected  boolean dirty
          Does scene object need to be read from JGL script?
protected  java.lang.String fileName
          Scene definition: JGL script file name.
static java.lang.String KEY_BACKGROUND
          JGL script key: background.
static java.lang.String KEY_BREP
          JGL script key: Brep scene.
static java.lang.String KEY_CAMERA
          JGL script key: camera.
static java.lang.String KEY_LIGHTS
          JGL script key: lights.
static java.lang.String KEY_OBJ
          JGL script key: OBJ import filter scene.
static java.lang.String KEY_SCENE
          JGL script key: CSG scene.
protected  LightSource[] lights
          Static array of light sources in the scene.
protected  int nextId
          Next assigned object id#.
static RegPiece reg
          Static registration instance for this class.
protected  SceneNode root
          Root node of the CSG-tree.
static java.lang.String SCENE
           
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
StaticCSGScene()
           
 
Method Summary
protected  void assertScene()
          All scene components have be usable.
protected  void defaultBackground()
          Initializes default background color.
protected  void defaultCamera()
          Sets default camera.
protected  void defaultLights()
          Sets default light sources (one point and one ambient).
protected  void defaultScene()
          Initializes CSG scene to the default state (4 ellipsoids).
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 double[] getBackground()
          Retrieves background color (used when a ray doesn't hit anything).
 RayGenerator getCamera()
          Retrieves the actual camera (ray-generator).
 LightSource[] getLights()
          Retrieves all light sources from the scene.
 LightSource[] getLightsToMicroFacet(MicroFacet mf, int order, int total)
          Retrieves light sources which light up the given micro-facet.
 double getTime()
          Returns the actual time value for the scene (used in animations).
 double[] getTimeInterval(double[] pre)
          Retrieve the valid bounds for time variable.
 MicroFacet intersection(double[] P0, double[] P1)
          Computes the nearest intersection of the given ray with scene surface.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
 void setCamera(RayGenerator camera)
          Sets the camera object (ray-generator) for the scene.
 void setLights(LightSource[] l)
          Sets all the light sources from the given array.
 void setRoot(SceneNode root)
          Sets root node (assumes hierarchical scene representation based on SceneNode).
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 void setTime(double time)
          Sets the actual time value for the scene (used in animations).
 
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
 

Field Detail

KEY_SCENE

public static final java.lang.String KEY_SCENE
JGL script key: CSG scene.

See Also:
Constant Field Values

KEY_CAMERA

public static final java.lang.String KEY_CAMERA
JGL script key: camera.

See Also:
Constant Field Values

KEY_LIGHTS

public static final java.lang.String KEY_LIGHTS
JGL script key: lights.

See Also:
Constant Field Values

KEY_BACKGROUND

public static final java.lang.String KEY_BACKGROUND
JGL script key: background.

See Also:
Constant Field Values

KEY_BREP

public static final java.lang.String KEY_BREP
JGL script key: Brep scene.

See Also:
Constant Field Values

KEY_OBJ

public static final java.lang.String KEY_OBJ
JGL script key: OBJ import filter scene.

See Also:
Constant Field Values

fileName

protected java.lang.String fileName
Scene definition: JGL script file name.


dirty

protected boolean dirty
Does scene object need to be read from JGL script?


root

protected SceneNode root
Root node of the CSG-tree.


camera

protected RayGenerator camera
Static camera.


lights

protected LightSource[] lights
Static array of light sources in the scene.


background

protected double[] background
Actual background color.


nextId

protected int nextId
Next assigned object id#.


SCENE

public static final java.lang.String SCENE
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

StaticCSGScene

public StaticCSGScene()
Method Detail

defaultLights

protected void defaultLights()
Sets default light sources (one point and one ambient).


defaultCamera

protected void defaultCamera()
Sets default camera.


defaultScene

protected void defaultScene()
Initializes CSG scene to the default state (4 ellipsoids).


defaultBackground

protected void defaultBackground()
Initializes default background color.


assertScene

protected void assertScene()
All scene components have be usable.


intersection

public MicroFacet intersection(double[] P0,
                               double[] P1)
Computes the nearest intersection of the given ray with scene surface.

Specified by:
intersection in interface Intersectable
Parameters:
P0 - Ray origin (double[3] or double[4]).
P1 - Direction vector of the ray (double[3] or double[4]).
Returns:
The nearest intersection point or null.
See Also:
MicroFacet

getTimeInterval

public double[] getTimeInterval(double[] pre)
Retrieve the valid bounds for time variable.

Specified by:
getTimeInterval in interface TimeDependent
Parameters:
pre - Pre-allocated double[2] array to hold the result (can be null).
Returns:
result[0] .. minimum time value, result[1] .. maximum time value.
See Also:
getTime(), setTime(double)

getTime

public double getTime()
Returns the actual time value for the scene (used in animations).

Specified by:
getTime in interface TimeDependent
Returns:
Actual time (in seconds).
See Also:
setTime(double)

setTime

public void setTime(double time)
Sets the actual time value for the scene (used in animations).

Specified by:
setTime in interface TimeDependent
Parameters:
time - New scene time (in seconds).
See Also:
getTime(), getTimeInterval(double[])

setRoot

public void setRoot(SceneNode root)
Sets root node (assumes hierarchical scene representation based on SceneNode).

Specified by:
setRoot in interface RTScene

setCamera

public void setCamera(RayGenerator camera)
Sets the camera object (ray-generator) for the scene.

Specified by:
setCamera in interface RTScene

getCamera

public RayGenerator getCamera()
Retrieves the actual camera (ray-generator).

Specified by:
getCamera in interface RTScene
Returns:
RayGenerator object.

setLights

public void setLights(LightSource[] l)
Sets all the light sources from the given array.

Specified by:
setLights in interface RTScene

getLights

public LightSource[] getLights()
Retrieves all light sources from the scene.

Specified by:
getLights in interface RTScene
Returns:
Array of light sources.
See Also:
getLightsToMicroFacet(cz.cuni.jagrlib.MicroFacet, int, int)

getLightsToMicroFacet

public LightSource[] getLightsToMicroFacet(MicroFacet mf,
                                           int order,
                                           int total)
Retrieves light sources which light up the given micro-facet.

Specified by:
getLightsToMicroFacet in interface RTScene
Parameters:
mf - Micro-facet which is to be lighted.
order - Order of this sample inside the actual pixel.
total - Total number of samples in the actual pixel.
Returns:
Array of light sources (null marks end of data).
See Also:
getLights()

getBackground

public double[] getBackground()
Retrieves background color (used when a ray doesn't hit anything).

Specified by:
getBackground in interface RTScene

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.