cz.cuni.jagrlib.piece
Class StaticCamera

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

public class StaticCamera
extends Piece
implements RayGenerator

Static perspective camera - ray generator.

Since:
0.12
See Also:
StaticCamera.java

Field Summary
protected static java.lang.String CATEGORY
          Object category.
protected  double[] center
          Center of the projection.
protected  double[] front
          Direction vector (normal vector of the projection plane).
static java.lang.String KEY_ANGLE
          JGL script key: angle.
static java.lang.String KEY_CENTER
          JGL script key: center.
static java.lang.String KEY_FRONT
          JGL script key: front.
static java.lang.String KEY_UP
          JGL script key: up.
static java.lang.String PARAMS
           
protected  double[] ray0
          Origin of ray direction vector.
protected  double[] rayDx
          X difference vector for ray direction.
protected  double[] rayDy
          Y difference vector for ray direction.
static RegPiece reg
          Static registration instance for this class.
protected  double[] right
          Vector which points to the right in the projection plane.
protected  java.lang.String scriptName
          JGL script file-name.
protected static java.lang.String TEMPLATE_NAME
          Object template identifier.
protected  double[] up
          Vector which points up in the projection plane.
protected  double xMax
          Horizontal projection-plane bounds (from left to right).
protected  double xMin
          Horizontal projection-plane bounds (from left to right).
protected  double yMax
          Vertical projection-plane bounds (from up to bottom).
protected  double yMin
          Vertical projection-plane bounds (from up to bottom).
 
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
StaticCamera()
           
 
Method Summary
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 boolean getRay(double x, double y, double[] P0, double[] P1)
          Ray-generator method.
 boolean getRay(double x, double y, int order, int total, double[] P0, double[] P1)
          Ray-generator method.
 double[] getViewport(double[] pre)
          Returns boundary values for projection-plane coordinates (ray-coordinates).
protected  void readScript()
          Read data from JGL script.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
 void setAspectRatio(double aspect)
          Sets aspect ratio of the target image.
 boolean setParams(double[] cnt, double[] fr, double[] u, double angle)
          Set camera parameters.
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 
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_CENTER

public static final java.lang.String KEY_CENTER
JGL script key: center.

See Also:
Constant Field Values

KEY_FRONT

public static final java.lang.String KEY_FRONT
JGL script key: front.

See Also:
Constant Field Values

KEY_UP

public static final java.lang.String KEY_UP
JGL script key: up.

See Also:
Constant Field Values

KEY_ANGLE

public static final java.lang.String KEY_ANGLE
JGL script key: angle.

See Also:
Constant Field Values

scriptName

protected java.lang.String scriptName
JGL script file-name.


center

protected double[] center
Center of the projection.


front

protected double[] front
Direction vector (normal vector of the projection plane).


up

protected double[] up
Vector which points up in the projection plane.


right

protected double[] right
Vector which points to the right in the projection plane.


ray0

protected double[] ray0
Origin of ray direction vector.


rayDx

protected double[] rayDx
X difference vector for ray direction.


rayDy

protected double[] rayDy
Y difference vector for ray direction.


xMin

protected double xMin
Horizontal projection-plane bounds (from left to right).


xMax

protected double xMax
Horizontal projection-plane bounds (from left to right).


yMin

protected double yMin
Vertical projection-plane bounds (from up to bottom).


yMax

protected double yMax
Vertical projection-plane bounds (from up to bottom).


PARAMS

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

StaticCamera

public StaticCamera()
Method Detail

setParams

public boolean setParams(double[] cnt,
                         double[] fr,
                         double[] u,
                         double angle)
Set camera parameters.

Parameters:
cnt - Center of the projection (null for [0,0,0]).
fr - Viewing direction (associated with the center of projection plane).
u - Up vector (which will point up in the projection plane).
angle - Horizontal viewing angle in degrees.
Returns:
true if parameters were successfully set.

readScript

protected void readScript()
Read data from JGL script.


setAspectRatio

public void setAspectRatio(double aspect)
Sets aspect ratio of the target image. Default aspect ratio (if not set) should be 4/3.

Specified by:
setAspectRatio in interface RayGenerator
Parameters:
aspect - Aspect ratio = width / height. Uses real coordinates.

getViewport

public double[] getViewport(double[] pre)
Returns boundary values for projection-plane coordinates (ray-coordinates).

Specified by:
getViewport in interface RayGenerator
Parameters:
pre - Pre-allocated array to hold results (double[4] array). Can be null.
Returns:
X and Y coordinate bounds: result[0] .. Xmin, result[1] .. Xmax, result[2] .. Ymin, result[3] .. Ymax.
See Also:
getRay(double, double, double[], double[])

getRay

public boolean getRay(double x,
                      double y,
                      double[] P0,
                      double[] P1)
Ray-generator method.

Specified by:
getRay in interface RayGenerator
Parameters:
x - X coordinate in the projection plane.
y - Y coordinate in the projection plane.
P0 - Pre-allocated double[3] (or double[4]) array to hold coordinates of the ray origin.
P1 - Pre-allocated double[3] (or double[4]) array to hold direction vector of the ray.
Returns:
true if the ray was successfully generated.

getRay

public boolean getRay(double x,
                      double y,
                      int order,
                      int total,
                      double[] P0,
                      double[] P1)
Ray-generator method. Passes parameters for hidden sampling.

Specified by:
getRay in interface RayGenerator
Parameters:
x - X coordinate in the projection plane.
y - Y coordinate in the projection plane.
order - Order of this sample inside the actual pixel.
total - Total number of samples in the actual pixel.
P0 - Pre-allocated double[3] (or double[4]) array to hold coordinates of the ray origin.
P1 - Pre-allocated double[3] (or double[4]) array to hold direction vector of the ray.
Returns:
true if the ray was successfully generated.

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.