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

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

contains(vol: BoundingVolume) → int

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

extendBy(vol: BoundingVolume) → bool

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

static getClassType() → TypeHandle
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.

makeCopy() → BoundingVolume
Return type


output(out: ostream) → None
setInfinite() → None

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

write(out: ostream, indent_level: int) → None