Package 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

Modifier and Type
Method
Description
`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

### 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