cz.cuni.jagrlib.testing
Class LambertianModel

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.testing.LambertianModel
All Implemented Interfaces:
Breakable, BSSRDF, Property, Template
Direct Known Subclasses:
CookTorranceModel, OrenNayarModel, PhongModel, SpecularReflection, SpecularTransmission

public class LambertianModel
extends Piece
implements BSSRDF

Lambertian shading model.

See Also:
LambertianModel.java

Field Summary
protected static java.lang.String CATEGORY
          Object category.
 double[] color
          Actual color of the solid surface.
static java.lang.String REFLECTIONS
           
static RegPiece reg
          Static registration instance for this class.
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.BSSRDF
COMP_ALL, COMP_DIFFUSE, COMP_GLOSSY, COMP_SPEC_REFLECTION, COMP_SPEC_REFRACTION, COMP_SPECULAR, MATERIAL_COLOR, MATERIAL_H, MATERIAL_KA, MATERIAL_KD, MATERIAL_KS, MATERIAL_KT, MATERIAL_N
 
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
LambertianModel()
          Default constructor.
 
Method Summary
 double[] colorBSSRDF(boolean worldCoords, double[] in, double[] out, double[] normal, double[] tangent, int mask, double[] result)
          Returns the requested BSSRDF sample (BSSRDF is treated as band-color).
 double[] colorBSSRDF(boolean worldCoords, MicroFacet mf, double[] in, double[] out, int mask, double[] result)
          Returns the requested BSSRDF sample (BSSRDF is treated as band-color).
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 double[] getOrigColor(double[] color)
          Retrieves the original color (defining surface color).
 double[] localToWorld(double[] normal, double[] tangent, double[] src, double[] dest)
          Transform local coordinates to world coordinates.
 double monoBSSRDF(boolean worldCoords, double[] in, double[] out, double[] normal, double[] tangent, int mask)
          Returns the requested BSSRDF sample (BSSRDF is treated as monochrome).
 double monoBSSRDF(boolean worldCoords, MicroFacet mf, double[] in, double[] out, int mask)
          Returns the requested BSSRDF sample (BSSRDF is treated as monochrome).
 double pdf(boolean worldCoords, MicroFacet mf, double[] in, double[] out)
          Returns the probability density function.
 double scatter(MicroFacet mf, double[] in, double u, double v, int mask, double[] out, double[] brdf)
          Scatter ray according to the light model.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
 void setColor(double[] color)
          Sets the actual color (for the given BSSRDF data).
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 int type()
          Returns the type of BRDF.
 double[] worldToLocal(double[] normal, double[] tangent, double[] src, double[] dest)
          Transform world coordinates to local coordinates.
 
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

color

public double[] color
Actual color of the solid surface.


REFLECTIONS

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

LambertianModel

public LambertianModel()
Default constructor.

Method Detail

monoBSSRDF

public double monoBSSRDF(boolean worldCoords,
                         double[] in,
                         double[] out,
                         double[] normal,
                         double[] tangent,
                         int mask)
Returns the requested BSSRDF sample (BSSRDF is treated as monochrome).

Specified by:
monoBSSRDF in interface BSSRDF
Parameters:
worldCoords - Should be set to true if vectors in and out are in world coordinates and to false if vectors in and out are in local coordinates.
in - Input ray direction (double[3] or double[4]).
out - Output (viewing) ray direction (double[3] or double[4]).
normal - Normal vector of a surface.
tangent - Tangent vector of a surface.
mask - Which light components are to be computed?
Returns:
BSSRDF coefficient f(in->out).
See Also:
#monoBSSRDF(MicroFacet,double[],double[],int), #colorBSSRDF(double[],double[],double[],int,double[])

monoBSSRDF

public double monoBSSRDF(boolean worldCoords,
                         MicroFacet mf,
                         double[] in,
                         double[] out,
                         int mask)
Returns the requested BSSRDF sample (BSSRDF is treated as monochrome). Computations are done relatively to the given MicroFacet (point on surface of some solid).

Specified by:
monoBSSRDF in interface BSSRDF
Parameters:
worldCoords - Should be set to true if vectors in and out are in world coordinates and to false if vectors in and out are in local coordinates.
mf - The MicroFacet (point on surface of some solid).
in - Input ray direction (double[3] or double[4]).
out - Output (viewing) ray direction (double[3] or double[4]).
mask - Which light components are to be computed?
Returns:
BSSRDF coefficient f(in->mf->out).
See Also:
#monoBSSRDF(double[],double[],double[],int), #colorBSSRDF(MicroFacet,double[],double[],int,double[])

colorBSSRDF

public double[] colorBSSRDF(boolean worldCoords,
                            double[] in,
                            double[] out,
                            double[] normal,
                            double[] tangent,
                            int mask,
                            double[] result)
Returns the requested BSSRDF sample (BSSRDF is treated as band-color).

Specified by:
colorBSSRDF in interface BSSRDF
Parameters:
worldCoords - Should be set to true if vectors in and out are in world coordinates and to false if vectors in and out are in local coordinates.
in - Input ray direction (double[3] or double[4]).
out - Output (viewing) ray direction (double[3] or double[4]).
normal - Normal vector of a surface.
tangent - Tangent vector of a surface.
mask - Which light components are to be computed?
result - Pre-allocated double[C] array to hold BRDF coefficients f(in->out) (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/). Can be null.
Returns:
Output BSSRDF spectral coefficients.
See Also:
#monoBSSRDF(double[],double[],double[],int), #colorBSSRDF(MicroFacet,double[],double[],int,double[])

colorBSSRDF

public double[] colorBSSRDF(boolean worldCoords,
                            MicroFacet mf,
                            double[] in,
                            double[] out,
                            int mask,
                            double[] result)
Returns the requested BSSRDF sample (BSSRDF is treated as band-color). Computations are done relatively to the given MicroFacet (point on surface of some solid).

Specified by:
colorBSSRDF in interface BSSRDF
Parameters:
worldCoords - Should be set to true if vectors in and out are in world coordinates and to false if vectors in and out are in local coordinates.
mf - The MicroFacet (point on surface of some solid).
in - Input ray direction (double[3] or double[4]).
out - Output (viewing) ray direction (double[3] or double[4]).
mask - Which light components are to be computed?
result - Pre-allocated double[C] array to hold BRDF coefficients f(in->mf->out) (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/). Can be null.
Returns:
Output BSSRDF spectral coefficients.
See Also:
#monoBSSRDF(MicroFacet,double[],double[],int), #colorBSSRDF(double[],double[],double[],int,double[])

getOrigColor

public double[] getOrigColor(double[] color)
Retrieves the original color (defining surface color).

Specified by:
getOrigColor in interface BSSRDF
Parameters:
color - Pre-allocated double[C] array to hold the color (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/). Can be null.
Returns:
Array containing copy of original color (can be altered).

setColor

public void setColor(double[] color)
Sets the actual color (for the given BSSRDF data). This color will be used in subsequent BSSRDF calculations. The color array won't be altered.

Specified by:
setColor in interface BSSRDF
Parameters:
color - Color definition - double[C] array (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/).

scatter

public double scatter(MicroFacet mf,
                      double[] in,
                      double u,
                      double v,
                      int mask,
                      double[] out,
                      double[] brdf)
Scatter ray according to the light model.

Specified by:
scatter in interface BSSRDF
Parameters:
mf - The MicroFacet (point on surface of some solid).
in - Input direction (should look from the hit point)..
u - Random uniform number.
v - Random uniform number.
mask - Which light components are to be computed?
out - Output direction in world coordinates.
brdf - Color definition - double[C] array (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/).
Returns:
Probability density function.

pdf

public double pdf(boolean worldCoords,
                  MicroFacet mf,
                  double[] in,
                  double[] out)
Returns the probability density function.

Specified by:
pdf in interface BSSRDF
Parameters:
worldCoords - Should be set to true if vectors in and out are in world coordinates and to false if vectors in and out are in local coordinates.
in - Input direction.
out - Output direction.
mf - The MicroFacet (point on surface of some solid).

type

public int type()
Returns the type of BRDF.

Specified by:
type in interface BSSRDF

localToWorld

public double[] localToWorld(double[] normal,
                             double[] tangent,
                             double[] src,
                             double[] dest)
Transform local coordinates to world coordinates.

Specified by:
localToWorld in interface BSSRDF

worldToLocal

public double[] worldToLocal(double[] normal,
                             double[] tangent,
                             double[] src,
                             double[] dest)
Transform world coordinates to local coordinates.

Specified by:
worldToLocal in interface BSSRDF

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.