cz.cuni.jagrlib.testing
Class StaticSpotLightSource

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.DefaultLightSource
              extended by cz.cuni.jagrlib.testing.StaticSpotLightSource
All Implemented Interfaces:
Breakable, LightSource, Property, Template

public class StaticSpotLightSource
extends DefaultLightSource

Static point light source.

Since:
0.12
See Also:
StaticSpotLightSource.java

Field Summary
protected  double cosFallOffStart
          Cosinus of angle cosFallOffStart.
protected  double cosThetaMax
          Cosinus of angle totalWidth.
protected  double[] dim
          Dimming polynom coefficients: light is dimmed by the factor of dim[0] + dim[1] * D + dim[2] * D * D.
protected  double[] direction
          Light source coordinates.
static java.lang.String DIRECTION
          JGL script key: light direction.
static java.lang.String FALL_OFF_START
          JGL script key: fall off start.
protected  double[] fallOffStart
          Angle which defines inner cone.
static java.lang.String KEY_DIM
          JGL script key: dim.
static java.lang.String KEY_POSITION
          JGL script key: light position.
protected  double[] lightColor
          Color of the source: 1D for monochrome source, 3D for RGB color space, or more for complex spectrum sampled spaces.
static java.lang.String PHOTONS
          JGL script key: position of up right vertex.
protected  double[] position
          Light source coordinates.
static RegPiece reg
          Static registration instance for this class.
protected  RandomJames rnd
          Random number generator.
protected  double[] thetaMax
          Angle which defines outer cone.
static java.lang.String TOTAL_WIDTH
          JGL script key: total width.
 
Fields inherited from class cz.cuni.jagrlib.DefaultLightSource
CATEGORY, inter, KEY_LIGHT, PARAMS, plugInter, scriptName, TEMPLATE_NAME
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.LightSource
COLOR
 
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
StaticSpotLightSource()
           
 
Method Summary
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 boolean getDirection(MicroFacet mf, double[] dir)
          Returns light direction between the source and the given MicroFacet.
protected  double getFallOff(double[] dir)
          Returns fall off for given direction.
 boolean getIntensity(MicroFacet mf, double[] color)
          Returns light intensity coming from the source to the given MicroFacet.
 boolean isDeltaLight()
          Is delta light?
 boolean lights(MicroFacet mf)
          Lighting test from the source to the given MicroFacet.
 double pdf(double[] point, double[] normal, double[] dir)
          Return probability density function.
protected  void readScript()
          Read data from JGL script.
 double sample(double u1, double v1, double u2, double v2, double[] pos, double[] dir, double[] power)
          Generates one photon leaving this light source.
 boolean sample(MicroFacet mf, double u, double v, double[] color, double[] dir, double[] pdf, boolean testVisibility)
          Sample the light by one shadow ray.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
 boolean setParams(double[] pos, double[] dir, double[] color, double width, double fallOff, double[] dimming)
          Set light source parameters.
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 java.lang.String toString()
          For debugging purposes only.
protected  void transform(double[] dir)
          Transform from light space to world space.
 
Methods inherited from class cz.cuni.jagrlib.DefaultLightSource
assertInter, getDirection, getIntensity, lights, setIntersectable
 
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, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit
 

Field Detail

rnd

protected final RandomJames rnd
Random number generator.


position

protected double[] position
Light source coordinates.


direction

protected double[] direction
Light source coordinates.


lightColor

protected double[] lightColor
Color of the source: 1D for monochrome source, 3D for RGB color space, or more for complex spectrum sampled spaces.


thetaMax

protected double[] thetaMax
Angle which defines outer cone. Objects inside this are illuminated, but intensity of this illumination fall off from full intensity to no intensity.


cosThetaMax

protected double cosThetaMax
Cosinus of angle totalWidth.


fallOffStart

protected double[] fallOffStart
Angle which defines inner cone. Objects inside this cone are fully illuminated.


cosFallOffStart

protected double cosFallOffStart
Cosinus of angle cosFallOffStart.


dim

protected double[] dim
Dimming polynom coefficients: light is dimmed by the factor of dim[0] + dim[1] * D + dim[2] * D * D. Can be null for no dimming..


PHOTONS

public static final java.lang.String PHOTONS
JGL script key: position of up right vertex.

See Also:
Constant Field Values

KEY_POSITION

public static final java.lang.String KEY_POSITION
JGL script key: light position.

See Also:
Constant Field Values

DIRECTION

public static final java.lang.String DIRECTION
JGL script key: light direction.

See Also:
Constant Field Values

TOTAL_WIDTH

public static final java.lang.String TOTAL_WIDTH
JGL script key: total width.

See Also:
Constant Field Values

FALL_OFF_START

public static final java.lang.String FALL_OFF_START
JGL script key: fall off start.

See Also:
Constant Field Values

KEY_DIM

public static final java.lang.String KEY_DIM
JGL script key: dim.

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

StaticSpotLightSource

public StaticSpotLightSource()
Method Detail

setParams

public boolean setParams(double[] pos,
                         double[] dir,
                         double[] color,
                         double width,
                         double fallOff,
                         double[] dimming)
Set light source parameters.

Parameters:
pos - Source position.
color - Source color/intensity (can be either 1D /for monochrome computing/, 3D /for RGB color system/ or greater /for more complex spectral color sampling/).
dimming - Dimming polynom coefficients: light is dimmed by the factor of dim[0] + dim[1] * D + dim[2] * D * D. Can be null for no dimming..
Returns:
true if parameters were successfully set.

readScript

protected void readScript()
Read data from JGL script.


toString

public java.lang.String toString()
For debugging purposes only.

Overrides:
toString in class java.lang.Object

lights

public boolean lights(MicroFacet mf)
Lighting test from the source to the given MicroFacet.

Specified by:
lights in interface LightSource
Overrides:
lights in class DefaultLightSource
Parameters:
mf - The checked MicroFacet (point on surface of some solid).
Returns:
true if the light source lights on the given point.
See Also:
getIntensity(cz.cuni.jagrlib.MicroFacet, double[]), getDirection(cz.cuni.jagrlib.MicroFacet, double[])

getIntensity

public boolean getIntensity(MicroFacet mf,
                            double[] color)
Returns light intensity coming from the source to the given MicroFacet.

Specified by:
getIntensity in interface LightSource
Overrides:
getIntensity in class DefaultLightSource
Parameters:
mf - The MicroFacet (point on surface of some solid).
color - Pre-allocated double[C] array to hold result - light intensity coming from the source to the given point (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/).
Returns:
true if the light source can light on the given point (cannot replace the lights() call!).
See Also:
lights(cz.cuni.jagrlib.MicroFacet), getDirection(cz.cuni.jagrlib.MicroFacet, double[])

getDirection

public boolean getDirection(MicroFacet mf,
                            double[] dir)
Returns light direction between the source and the given MicroFacet.

Specified by:
getDirection in interface LightSource
Overrides:
getDirection in class DefaultLightSource
Parameters:
mf - The MicroFacet (point on surface of some solid).
dir - Pre-allocated array to hold the result - normalised direction vector from the MicroFacet to the light source.
Returns:
false if the light source is not directional (thus dir is irrelevant).
See Also:
lights(cz.cuni.jagrlib.MicroFacet), getIntensity(cz.cuni.jagrlib.MicroFacet, double[])

sample

public boolean sample(MicroFacet mf,
                      double u,
                      double v,
                      double[] color,
                      double[] dir,
                      double[] pdf,
                      boolean testVisibility)
Sample the light by one shadow ray.

Specified by:
sample in interface LightSource
Overrides:
sample in class DefaultLightSource
Parameters:
mf - The MicroFacet (point on surface of some solid).
u - Uniform random number.
v - Uniform random number.
color - Pre-allocated double[C] array to hold result - light intensity coming from the source to the given point (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/).
dir - Pre-allocated array to hold the result - normalised direction vector from the MicroFacet to the light source.
pdf - Probability density function (output variable).
Returns:
True if the light is visible.

sample

public double sample(double u1,
                     double v1,
                     double u2,
                     double v2,
                     double[] pos,
                     double[] dir,
                     double[] power)
Generates one photon leaving this light source.

Specified by:
sample in interface LightSource
Overrides:
sample in class DefaultLightSource
Parameters:
u1 - Uniform random number.
v1 - Uniform random number.
u2 - Uniform random number.
v2 - Uniform random number.
pos - Pre-allocated array which holds a point on the light source (an origin of direction).
dir - Output direction in world coordinates. Pre-allocated array.
power - Power of given light source (if you wanna get power of this photon, you have to divide this power by number of photons). Pre-allocated array.
Returns:
Weight of given ray (standart weight = 1.0).

pdf

public double pdf(double[] point,
                  double[] normal,
                  double[] dir)
Return probability density function.

Specified by:
pdf in interface LightSource
Overrides:
pdf in class DefaultLightSource
Parameters:
point - Point on the surface.
normal - Normal at this point.
dir - Direction from the point.

isDeltaLight

public boolean isDeltaLight()
Is delta light?

Specified by:
isDeltaLight in interface LightSource
Overrides:
isDeltaLight in class DefaultLightSource

getFallOff

protected double getFallOff(double[] dir)
Returns fall off for given direction.


transform

protected void transform(double[] dir)
Transform from light space to world space.


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.