Grouping node that modifies its coordinate system so that its local Z-axis always points at the viewer. More...
#include <Inventor/VRMLnodes/SoVRMLBillboard.h>
Public Member Functions | |
virtual SoType | getTypeId () const |
SoVRMLBillboard () | |
SoVRMLBillboard (int nChildren) | |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Public Attributes | |
SoSFVec3f | axisOfRotation |
SoSFBool | useSphereBBox |
The SoVRMLBillboard node is a grouping node which modifies its coordinate system so that the billboard node's local Z-axis turns to point at the viewer. The SoVRMLBillboard node has children which may be other grouping or leaf nodes.
NOTE: This class does not exist in Open Inventor 10.0 and later. Use SoBillboard.Performance:
Notes:
Export limitations:
This section may reference portions of the VRML97 specification that are not present in this help file. The complete VRML97 spec is available at http://www.web3d.org .
The SoVRMLBillboard node is a grouping node which modifies its coordinate system so that the billboard node's local Z-axis turns to point at the viewer. The SoVRMLBillboard node has children which may be other grouping or leaf nodes.
The axisOfRotation field specifies which axis to use to perform the rotation. This axis is defined in the local coordinates of the SoVRMLBillboard node. The default (0,1,0) is useful for objects such as images of trees and lamps positioned on a ground plane. But when an object is oriented at an angle, for example, on the incline of a mountain, then the axisOfRotation may also need to be oriented at a similar angle.
A special case of billboarding is screen-alignment -- the object rotates to always stay aligned with the viewer even when the viewer elevates, pitches and rolls. This special case is distinguished by setting the axisOfRotation to (0, 0, 0).
To rotate the SoVRMLBillboard to face the viewer, determine the line between the SoVRMLBillboard's origin and the viewer's position; call this the billboard-to-viewer line. The axisOfRotation and the billboard-to-viewer line define a plane. The local z-axis of the SoVRMLBillboard is then rotated into that plane, pivoting around the axisOfRotation.
If the axisOfRotation and the billboard-to-viewer line are coincident (the same line), then the plane cannot be established, and the rotation results of the SoVRMLBillboard are undefined. For example, if the axisOfRotation is set to (0,1,0) (Y-axis) and the viewer flies over the SoVRMLBillboard and peers directly down the Y-axis the results are undefined .
Multiple instances of SoVRMLBillboards (DEF/USE) operate as expected - each instance rotates in its unique coordinate system to face the viewer.
See the "Concepts - Grouping and Children Nodes" section for a description the children , addChildren , and removeChildren fields and eventIns.
The bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLBillboard's children. This is a hint that may be used for optimization purposes. If the specified bounding box is smaller than the actual bounding box of the children at any time, then the results are undefined. A default bboxSize value, (-1 -1 -1), implies that the bounding box is not specified and if needed must be calculated by the browser. See "Concepts - Bounding Boxes" for a description of bboxCenter and bboxSize fields.
axisOfRotation | 0 1 0 |
children | [] |
metadata | NULL |
bboxCenter | 0 0 0 |
bboxSize | -1 -1 -1 |
useSphereBBox | FALSE |
SoMFNode | addChildren |
SoMFNode | removeChildren |
SoSFVec3f | set_axisOfRotation |
SoMFNode | set_children |
SoSFNode | set_metadata |
SoSFVec3f | axisOfRotation_changed |
SoMFNode | children_changed |
SoSFNode | metadata_changed |
SoVRMLBillboard::SoVRMLBillboard | ( | ) |
Constructor.
SoVRMLBillboard::SoVRMLBillboard | ( | int | nChildren | ) |
static SoType SoVRMLBillboard::getClassTypeId | ( | ) | [static] |
Returns the type identifier for this class.
Reimplemented from SoVRMLGroup.
virtual SoType SoVRMLBillboard::getTypeId | ( | ) | const [virtual] |
Returns the type identifier for this specific instance.
Reimplemented from SoVRMLGroup.
Specifies which axis to use to perform the rotation.
Specifies if the bounding box returned by SoVRMLBillBoard::getBoundingBox() method should be extended to completely contain the bounding sphere of the children.
This hint avoids bounding box cache breaks due to rotation of the billboard geometry (which changes the default axis aligned bounding box) and provides a significant performance increase when many SoVRMLBillboard nodes are used.
LIMITATIONS: This field is not part of the X3D / VRML standard. When writing the scene graph to an X3D / VRML format file, be aware that the presence of this field will make the file invalid. By default, that is if the value of the field is not modified, the field will not be written.
Default is FALSE
NOTE: field available since Open Inventor 8.1