class BoundingVolume

Bases: TypedReferenceCount

This is an abstract class for any volume in any sense which can be said to define the locality of reference of a node in a graph, along with all of its descendants. It is not necessarily a geometric volume (although see GeometricBoundingVolume); this is simply an abstract interface for bounds of any sort.

Inheritance diagram

Inheritance diagram of BoundingVolume

makeCopy() → BoundingVolume
Return type


isEmpty() → bool

Any kind of volume might be empty. This is a degenerate volume that contains no points; it’s not the same as, for instance, a sphere with radius zero, since that contains one point (the center). It intersects with no other volumes.

isInfinite() → bool

The other side of the empty coin is an infinite volume. This is a degenerate state of a normally finite volume that contains all points. (Note that some kinds of infinite bounding volumes, like binary separating planes, do not contain all points and thus correctly return isInfinite() == false, even though they are technically infinite. This is a special case of the word ‘infinite’ meaning the volume covers all points in space.)

It completely intersects with all other volumes except empty volumes.

setInfinite() → None

Marks the volume as infinite, even if it is normally finite. You can think of this as an infinite extendBy() operation.

extendBy(vol: BoundingVolume) → bool

Increases the size of the volume to include the given volume.

contains(vol: BoundingVolume) → int

Returns the appropriate set of IntersectionFlags to indicate the amount of intersection with the indicated volume.

output(out: ostream) → None
write(out: ostream, indent_level: int) → None
static getClassType() → TypeHandle
Return type


enum IntersectionFlags

The contains() functions return the union of one or more of these bits.

enumerator IF_no_intersection = 0

If no bits are set, it is known that there is no intersection.

enumerator IF_possible = 1

IF_possible is set if there might be an intersection.

enumerator IF_some = 2

IF_some is set if there is definitely an intersection. In this case, IF_possible will also be set.

enumerator IF_all = 4

When IF_all is set, both IF_possible and IF_some will also be set.

enumerator IF_dont_understand = 8

IF_dont_understand is set if the particular volumevolume intersection test has not been implemented.

enum BoundsType

This enum is used to control the automatic generation of bounding volumes.

enumerator BT_default = 0
enumerator BT_best = 1
enumerator BT_sphere = 2
enumerator BT_box = 3
enumerator BT_fastest = 4