|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Objectde.grogra.persistence.ShareableBase
de.grogra.imp3d.objects.LightBase
de.grogra.imp3d.objects.PointLight
de.grogra.imp3d.objects.PhysicalLight
public class PhysicalLight
| Nested Class Summary | |
|---|---|
static class |
PhysicalLight.Type
|
| Field Summary | |
|---|---|
static PhysicalLight.Type |
$TYPE
|
static SCOType.Field |
distribution$FIELD
|
| Fields inherited from class de.grogra.imp3d.objects.PointLight |
|---|
attenuationDistance$FIELD, attenuationExponent$FIELD, power$FIELD |
| Fields inherited from class de.grogra.imp3d.objects.LightBase |
|---|
color$FIELD, shadowless$FIELD |
| Fields inherited from interface de.grogra.ray.physics.Light |
|---|
AMBIENT, AREA, DIRECTIONAL, NO_LIGHT, POINT, SKY |
| Fields inherited from interface de.grogra.ray.physics.Scattering |
|---|
DELTA_FACTOR, IS_NON_OPAQUE, MIN_UNUSED_FLAG, NEEDS_NORMAL, NEEDS_POINT, NEEDS_TANGENTS, NEEDS_TRANSFORMATION, NEEDS_UV, RANDOM_RAYS_GENERATE_ORIGINS |
| Constructor Summary | |
|---|---|
PhysicalLight()
physical light constructor |
|
PhysicalLight(double[][] distribution)
physical light constructor |
|
PhysicalLight(LightDistribution distribution)
physical light constructor |
|
| Method Summary | |
|---|---|
void |
generateRandomRays(Environment env,
Vector3f out,
Spectrum specOut,
RayList rays,
boolean adjoint,
java.util.Random rnd)
Pseudorandomly generates, for the given input, a set of scattered rays. |
protected float |
getDensityAt(Vector3f direction)
|
LightDistribution |
getDistribution()
|
ManageableType |
getManageableType()
|
void |
setDistribution(double[][] distribution)
sets the light emission dsitribution |
void |
setDistribution(Light light)
sets the light emission dsitribution by discretizing the emission distribution of an existing light source |
void |
setDistribution(LightDistribution value)
|
| Methods inherited from class de.grogra.imp3d.objects.PointLight |
|---|
accept, computeBSDF, computeExitance, createRaytracerLeaf, generateRandomOrigins, getAttenuationDistance, getAttenuationExponent, getLightType, getPower, getTotalPower, setAttenuationDistance, setAttenuationExponent, setPower |
| Methods inherited from class de.grogra.imp3d.objects.LightBase |
|---|
completeRay, draw, getAverageColor, getColor, getFlags, isIgnoredWhenHit, isShadowless, setShadowless |
| Methods inherited from class de.grogra.persistence.ShareableBase |
|---|
addReference, appendReferencesTo, fieldModified, getProvider, getStamp, initProvider, manageableReadResolve, manageableWriteReplace, removeReference |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final PhysicalLight.Type $TYPE
public static final SCOType.Field distribution$FIELD
| Constructor Detail |
|---|
public PhysicalLight()
public PhysicalLight(double[][] distribution)
distribution - is the 2D discretized light emission distribution over the unit spherepublic PhysicalLight(LightDistribution distribution)
distribution - is the light emission distribution over the unit sphere| Method Detail |
|---|
public void generateRandomRays(Environment env,
Vector3f out,
Spectrum specOut,
RayList rays,
boolean adjoint,
java.util.Random rnd)
Scatteringadjoint is false,
out = ωo describes
the direction of an outgoing light ray.
In this case, the integration is with respect to ωi.
Let g(ω, ν; out, μ)
= BSDF(ω, ν; out, μ)
adjoint is true. In this case,
out = ωi describes
the direction of an outgoing importance ray (an inverse light ray).
Now the integration is with respect to ωo.
Let g(ω, ν; out, μ)
= BSDF(out, μ; ω, ν)
rays.size). Then, for every
frequency ν the sum
out, μ)
specOut(μ) dμ dω
If this Scattering instance is in fact a
Light source, adjoint is true,
and the BSDF is defined as BSDF(out, μ; ω, ν)
= L1(ω, ν) δ(μ - ν),
i.e., the directional distribution
of the emitted radiance at env.point, see Emitter.
In this case, out is not used.
If this Scattering instance is in fact a
Sensor, adjoint is false,
and the BSDF is defined as BSDF(ω, ν; out, μ)
= W1(ω, ν) δ(μ - ν),
i.e., the directional distribution
of the emitted importance at env.point, see Emitter.
In this case, out is not used.
Let pω be the probability density
used for the ray direction (measured with respect to
solid angle ω),
then the field directionDensity of the ray i
is set to pω(di).
For ideal specular reflection or transmission, or for directional
lights or sensors, pω is not
a regular function, the value directionDensity will
be set to a multiple of Scattering.DELTA_FACTOR.
The ray properties which are not mentioned in the given formulas are neither used nor modified. These are the origin and its density.
generateRandomRays in interface ScatteringgenerateRandomRays in class PointLightenv - the environment for scatteringout - the direction unit vector of the outgoing ray
(i.e., pointing away from the surface)specOut - the spectrum of the outgoing rayrays - the rays to be generatedadjoint - represents out a light ray or an importance ray?rnd - pseudorandom generatorScattering.computeBSDF(de.grogra.ray.physics.Environment, javax.vecmath.Vector3f, de.grogra.ray.physics.Spectrum, javax.vecmath.Vector3f, boolean, de.grogra.ray.physics.Spectrum)protected float getDensityAt(Vector3f direction)
getDensityAt in class PointLightpublic LightDistribution getDistribution()
public ManageableType getManageableType()
getManageableType in interface ManageablegetManageableType in class PointLightpublic void setDistribution(double[][] distribution)
distribution - is the 2D discretized light emission distribution over the unit spherepublic void setDistribution(Light light)
light - is used to construct a discretized emission distributionpublic void setDistribution(LightDistribution value)
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||