X3DObject.GetBoundingBox

Introduced

v10.0 (2012)

Description

Returns the minimum and maximum coordinates for the visible bounding box of the X3DObject. If an input transform is specified, it is applied to the bounding box when it is calculated. Otherwsie, the bounding box that is returned will be in the object's local coordinate space.

If the bounding box is undefined then the minimum coordinates returned will be greater than the maximum coordinates. This could happen if the object is hidden or if the object does not contain any geometry.

Note: Only one coordinate needs to be tested to determine if the bounding box is undefined. (min X > max X)

Scripting Syntax

oArray = X3DObject.GetBoundingBox( [Transform], [Recursive] );

Return Value

1-dimensional Array containing six values: the minimum X, Y and Z coordinates followed by the maximum X, Y, and Z coordinates of the bounding box.

Parameters

Parameter Type Description
Transform SITransformation Transform to be applied when the bounding box is calculated
Recursive Boolean If true include children, otherwise return bounding box for input X3DObject only.

Default Value: False

Examples

1. JScript Example

/*
        Example using no input transform
*/
// Create and move (rotate and translate) a torus
NewScene( null, false ) ;
var oTorus = ActiveSceneRoot.AddGeometry( "Torus", "MeshSurface" ) ;
SelectObj( oTorus ) ;
Rotate(null, 45, 0, 0, siAbsolute, siPivot, siObj, siX, null, null, null, null, null, null, null, 0, null) ;
Translate(null, 3, 2, 1, siAbsolute, siPivot, siObj, siX, null, null, null, null, null, null, null, null, null, 0, null) ;
// Find the bounding box
var vba = new VBArray( oTorus.GetBoundingBox() ) ;
var jsa = vba.toArray() ;
// Report the (local) min and max
Application.LogMessage( "min:" + jsa[0] + ", " + jsa[1] + ", " + jsa[2] ) ;
Application.LogMessage( "max:" + jsa[3] + ", " + jsa[4] + ", " + jsa[5] ) ;

2. JScript Example

// Example using an input transform to preserve scaling
//
// Create and move (rotate and translate) a torus
NewScene( null, false ) ;
var oTorus = ActiveSceneRoot.AddGeometry( "Torus", "MeshSurface" ) ;
SelectObj( oTorus ) ;
Scale(null, 0.5, 0.5, 1, siAbsolute, siGlobal, siObj, siY, null, null, null, null, null, null, null, 0, null) ;
oTransform = oTorus.Kinematics.Local.Transform ;
// Find the bounding box
var vba = new VBArray( oTorus.GetBoundingBox(oTransform) ) ;
var jsa = vba.toArray() ;
// Report the min and max
Application.LogMessage( "min:" + jsa[0] + ", " + jsa[1] + ", " + jsa[2] ) ;
Application.LogMessage( "max:" + jsa[3] + ", " + jsa[4] + ", " + jsa[5] ) ;
// Build a cube that shows the bounding box
var oCube = ActiveSceneRoot.AddPrimitive("Cube") ;
oCube.length = 1 ;
oCube.PosX = (jsa[0]+jsa[3])/2 ;
oCube.PosY = (jsa[1]+jsa[4])/2 ;
oCube.PosZ = (jsa[2]+jsa[5])/2 ;
oCube.sclx = jsa[3]-jsa[0] ;
oCube.scly = jsa[4]-jsa[1] ;
oCube.sclz = jsa[5]-jsa[2] ;

See Also

Geometry.GetBoundingBox Geometry.GetBoundingSphere Geometry.GetBoundingCapsule GetBBox