Class SoBillboard
- java.lang.Object
-
- All Implemented Interfaces:
SafeDisposable
public class SoBillboard extends SoSeparator
Grouping node that modifies its coordinate system so that its local Z-axis always points at the viewer. TheSoBillboard
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 children of anSoBillboard
node may include other grouping nodes as well as shape nodes.Performance:
SoBillboard
nodes recompute the screen alignment transformation on every render traversal. A large number of billboard nodes will reduce performance.- The orientation of an
SoBillboard
depends on the current camera settings, so this node should not be render cached. SoBillboard
nodes prohibit auto-caching, so noSoSeparator
(or other render caching node) above anSoBillboard
in the scene graph will automatically create a render cache. This can significantly reduce performance and applications should put nodes that can be render cached (especially geometry nodes) under their ownSoSeparator
below theSoBillboard
.- We recommend leaving the
useSphereBBox
field set to true.
This will significantly improve performance when using billboard nodes.
Export limitations:
SoBillboard
can be exported to PDF3D/U3D (SoToPDFAction
) as a group node, but due to limitations of that file format, it will not act as a billboard. In other words, the geometry will not be "screen locked".
The
axisOfRotation
field specifies which axis to use to perform the rotation. This axis is defined in the local coordinates of theSoBillboard
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 theaxisOfRotation
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
SoBillboard
to face the viewer, determine the line between theSoBillboard
's origin and the viewer's position; call this the billboard-to-viewer line. TheaxisOfRotation
and the billboard-to-viewer line define a plane. The local z-axis of theSoBillboard
is then rotated into that plane, pivoting around theaxisOfRotation
.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 theSoBillboard
are undefined. For example, if theaxisOfRotation
is set to (0,1,0) (Y-axis) and the viewer flies over theSoBillboard
and peers directly down the Y-axis the results are undefined .Multiple instances of SoBillboards (DEF/USE) operate as expected - each instance rotates in its unique coordinate system to face the viewer.
File format/default:
Billboard {
axisOfRotation 0 1 0 useSphereBBox true - Since:
- Open Inventor 10.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoSeparator
SoSeparator.Cachings, SoSeparator.FastEditings, SoSeparator.RenderUnitIds
-
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoNode
SoNode.RenderModes
-
Nested classes/interfaces inherited from class com.openinventor.inventor.Inventor
Inventor.ConstructorCommand
-
-
Field Summary
Fields Modifier and Type Field Description SoSFVec3f
axisOfRotation
Specifies which axis to use to perform the rotation.SoSFBool
useSphereBBox
Specifies if the bounding box returned by SoBillboard.getBoundingBox() method should be extended to completely contain the bounding sphere of the children.-
Fields inherited from class com.openinventor.inventor.nodes.SoSeparator
boundingBoxCaching, fastEditing, pickCulling, renderCaching, renderCulling, renderUnitId
-
Fields inherited from class com.openinventor.inventor.nodes.SoGroup
boundingBoxIgnoring
-
Fields inherited from class com.openinventor.inventor.Inventor
VERBOSE_LEVEL, ZeroHandle
-
-
Constructor Summary
Constructors Constructor Description SoBillboard()
Constructor.SoBillboard(int nChildren)
Constructor that takes approximate number of children.
-
Method Summary
-
Methods inherited from class com.openinventor.inventor.nodes.SoGroup
addChild, findChild, getChild, getNumChildren, insertChild, removeAllChildren, removeChild, removeChild, replaceChild, replaceChild
-
Methods inherited from class com.openinventor.inventor.nodes.SoNode
affectsState, callback, copy, copy, distribute, doAction, getAlternateRep, getBoundingBox, getByName, getMatrix, getPrimitiveCount, getRenderEngineMode, getRenderUnitID, GLRender, GLRenderBelowPath, GLRenderInPath, GLRenderOffPath, grabEventsCleanup, grabEventsSetup, handleEvent, isBoundingBoxIgnoring, isOverride, pick, rayPick, search, setOverride, touch, write
-
Methods inherited from class com.openinventor.inventor.fields.SoFieldContainer
copyFieldValues, copyFieldValues, enableNotify, fieldsAreEqual, get, getAllFields, getEventIn, getEventOut, getField, getFieldName, hasDefaultValues, isNotifyEnabled, set, setToDefaults
-
Methods inherited from class com.openinventor.inventor.misc.SoBase
dispose, getName, isDisposable, isSynchronizable, setName, setSynchronizable
-
Methods inherited from class com.openinventor.inventor.Inventor
getNativeResourceHandle
-
-
-
-
Field Detail
-
axisOfRotation
public final SoSFVec3f axisOfRotation
Specifies which axis to use to perform the rotation.
-
useSphereBBox
public final SoSFBool useSphereBBox
Specifies if the bounding box returned by SoBillboard.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 manySoBillboard
nodes are used.Default is true
-
-