org.sunflow.core
Interface PrimitiveList

All Superinterfaces:
RenderObject
All Known Implementing Classes:
Background, BanchoffSurface, Box, CornellBox, CubeGrid, Cylinder, Hair, ImageBasedLight, JuliaFractal, ParticleSurface, Plane, QuadMesh, Sphere, SphereFlake, SunSkyLight, Torus, TriangleMesh, TriangleMeshLight

public interface PrimitiveList
extends RenderObject

This class represents an object made up of many primitives.


Method Summary
 PrimitiveList getBakingPrimitives()
          Create a new PrimitiveList object suitable for baking lightmaps.
 int getNumPrimitives()
          Returns the number of individual primtives in this aggregate object.
 float getPrimitiveBound(int primID, int i)
          Retrieve the bounding box component of a particular primitive in object space.
 BoundingBox getWorldBounds(Matrix4 o2w)
          Compute a bounding box of this object in world space, using the specified object-to-world transformation matrix.
 void intersectPrimitive(Ray r, int primID, IntersectionState state)
          Intersect the specified primitive in local space.
 void prepareShadingState(ShadingState state)
          Prepare the specified ShadingState by setting all of its internal parameters.
 
Methods inherited from interface org.sunflow.core.RenderObject
update
 

Method Detail

getWorldBounds

BoundingBox getWorldBounds(Matrix4 o2w)
Compute a bounding box of this object in world space, using the specified object-to-world transformation matrix. The bounds should be as exact as possible, if they are difficult or expensive to compute exactly, you may use Matrix4.transform(BoundingBox). If the matrix is null no transformation is needed, and object space is equivalent to world space.

Parameters:
o2w - object to world transformation matrix
Returns:
object bounding box in world space

getNumPrimitives

int getNumPrimitives()
Returns the number of individual primtives in this aggregate object.

Returns:
number of primitives

getPrimitiveBound

float getPrimitiveBound(int primID,
                        int i)
Retrieve the bounding box component of a particular primitive in object space. Even indexes get minimum values, while odd indexes get the maximum values for each axis.

Parameters:
primID - primitive index
i - bounding box side index
Returns:
value of the request bound

intersectPrimitive

void intersectPrimitive(Ray r,
                        int primID,
                        IntersectionState state)
Intersect the specified primitive in local space.

Parameters:
r - ray in the object's local space
primID - primitive index to intersect
state - intersection state
See Also:
Ray.setMax(float), IntersectionState.setIntersection(int, float, float)

prepareShadingState

void prepareShadingState(ShadingState state)
Prepare the specified ShadingState by setting all of its internal parameters.

Parameters:
state - shading state to fill in

getBakingPrimitives

PrimitiveList getBakingPrimitives()
Create a new PrimitiveList object suitable for baking lightmaps. This means a set of primitives laid out in the unit square UV space. This method is optional, objects which do not support it should simply return null.

Returns:
a list of baking primitives