org.sunflow.core

Interface PrimitiveList

All Superinterfaces:
RenderObject
Known Implementing Classes:
Background, BanchoffSurface, BezierMesh, Box, CornellBox, CubeGrid, Gumbo, Hair, ImageBasedLight, JuliaFractal, ParticleSurface, Plane, QuadMesh, Sphere, SunSkyLight, Teapot, 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 Details

getBakingPrimitives

public 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

getNumPrimitives

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

getPrimitiveBound

public 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

getWorldBounds

public 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

intersectPrimitive

public 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

prepareShadingState

public void prepareShadingState(ShadingState state)
Prepare the specified ShadingState by setting all of its internal parameters.
Parameters:
state - shading state to fill in