SoBillboard Class |
Grouping node that modifies its coordinate system so that its local Z-axis always points at the viewer.
Namespace: OIV.Inventor.Nodes
The SoBillboard type exposes the following members.
Name | Description | |
---|---|---|
SoBillboard | Constructor. | |
SoBillboard(Int32) | Constructor that takes approximate number of children. |
Name | Description | |
---|---|---|
AddChild | Adds a child as last one in group. | |
AffectsState | Returns true if a node has an effect on the state during traversal. | |
Callback | (Overrides SoSeparatorCallback(SoCallbackAction).) | |
ClearCacheList | (Inherited from SoSeparator.) | |
Copy | Calls Copy(false). (Inherited from SoNode.) | |
Copy(Boolean) | Creates and returns an exact copy of the node. | |
CopyFieldValues(SoFieldContainer) | Calls CopyFieldValues(fc, false). (Inherited from SoFieldContainer.) | |
CopyFieldValues(SoFieldContainer, Boolean) | Copies the contents of fc's fields into this object's fields. | |
Dispose |
Releases all resources used by SoDisposable.
(Inherited from SoDisposable.) | |
Distribute | (Inherited from SoNode.) | |
DoAction | (Overrides SoSeparatorDoAction(SoAction).) | |
EnableNotify | Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false). | |
Equals | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
FieldsAreEqual | Returns true if this object's fields are exactly equal to fc's fields. | |
FindChild | Finds index of given child within group. | |
Get | Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string. | |
GetAllFields | Returns a list of fields, including the eventIn's and eventOut's. | |
GetAlternateRep | This method is called by actions to allow the node to provide an "alternate representation" when appropriate (typically depending on the action type). | |
GetBoundingBox | (Overrides SoSeparatorGetBoundingBox(SoGetBoundingBoxAction).) | |
GetChild | Returns pointer the child node with the given index. | |
GetEventIn | Returns a the eventIn with the given name. | |
GetEventOut | Returns the eventOut with the given name. | |
GetField | Returns a the field of this object whose name is fieldName. | |
GetFieldName | Returns the name of the given field in the fieldName argument. | |
GetFields | Appends references to all of this object's fields to resultList, and returns the number of fields appended. | |
GetHashCode |
Overrides GetHashCode().
(Inherited from SoNetBase.) | |
GetMatrix | (Inherited from SoSeparator.) | |
GetName | Returns the name of an instance. | |
GetNumChildren | Returns number of children. | |
GetPrimitiveCount | (Inherited from SoSeparator.) | |
GetRenderEngineMode | Returns the supported Render engine mode. | |
GetRenderUnitID | (Inherited from SoNode.) | |
GetStringName | (Inherited from SoBase.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
GLRender | (Overrides SoSeparatorGLRender(SoGLRenderAction).) | |
GLRenderBelowPath | (Inherited from SoSeparator.) | |
GLRenderInPath | (Inherited from SoSeparator.) | |
GLRenderOffPath | (Inherited from SoSeparator.) | |
GrabEventsCleanup | (Inherited from SoNode.) | |
GrabEventsSetup | (Inherited from SoNode.) | |
HandleEvent | (Inherited from SoSeparator.) | |
HasDefaultValues | Returns true if all of the object's fields have their default values. | |
InsertChild | Adds a child so that it becomes the one with the given index. | |
IsBoundingBoxIgnoring | Used by BoundingBoxAction to known if bounding box computation should be ignored or not. | |
IsNotifyEnabled | Notification is the process of telling interested objects that this object has changed. | |
IsOverride | Returns the state of the override flag. | |
IsSynchronizable | Gets the ScaleViz synchronizable state of this object. | |
Pick | (Inherited from SoGroup.) | |
RayPick | (Overrides SoSeparatorRayPick(SoRayPickAction).) | |
RemoveAllChildren | Removes all children from group. | |
RemoveChild(Int32) | Removes child with given index from group. | |
RemoveChild(SoNode) | Removes first instance of given child from group. | |
ReplaceChild(Int32, SoNode) | Replaces child with given index with new child. | |
ReplaceChild(SoNode, SoNode) | Replaces first instance of given child with new child. | |
Search | (Inherited from SoSeparator.) | |
Set | Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format. | |
SetName | (Inherited from SoBase.) | |
SetOverride | Turns the override flag on or off. | |
SetSynchronizable | Sets this to be a ScaleViz synchronizable object. | |
SetToDefaults | Sets all fields in this object to their default values. | |
ToString |
Converts this SoBase structure to a human readable string.
(Inherited from SoBase.) | |
Touch | Marks an instance as modified, simulating a change to it. | |
Write | (Inherited from SoGroup.) |
Name | Description | |
---|---|---|
axisOfRotation | Specifies which axis to use to perform the rotation. | |
boundingBoxCaching | (Inherited from SoSeparator.) | |
boundingBoxIgnoring | Whether to ignore this node during bounding box traversal. | |
fastEditing | Specifies the fast edit mode of the separator node. | |
IsDisposable | ISafeDisposable interface implementation.
(Inherited from SoDisposable.) | |
pickCulling | Whether to cull during picking traversal. | |
renderCaching | Obsolete. Whether to cache during rendering traversal. | |
renderCulling | Whether to cull during rendering traversal. | |
renderUnitId | Used during the ScaleViz depth compositing process, this field specifies which render unit (OIRU) will render the sub scene graph below this separator. | |
UserData |
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.) | |
useSphereBBox | Specifies if the bounding box returned by OIV.Inventor.Nodes.SoBillboard.GetBoundingBox(OIV.Inventor.Actions.SoGetBoundingBoxAction) method should be extended to completely contain the bounding sphere of the children. |
The OIV.Inventor.Nodes.SoBillboard 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 an OIV.Inventor.Nodes.SoBillboard node may include other grouping nodes as well as shape nodes.
Performance:
OIV.Inventor.Nodes.SoBillboard nodes recompute the screen alignment transformation on every render traversal. A large number of billboard nodes will reduce performance.
The orientation of an OIV.Inventor.Nodes.SoBillboard depends on the current camera settings, so this node should not be render cached.
OIV.Inventor.Nodes.SoBillboard nodes prohibit auto-caching, so no OIV.Inventor.Nodes.SoSeparator (or other render caching node) above an OIV.Inventor.Nodes.SoBillboard 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 own OIV.Inventor.Nodes.SoSeparator below the OIV.Inventor.Nodes.SoBillboard.
We recommend leaving the OIV.Inventor.Nodes.SoBillboard.useSphereBBox field set to true. This will significantly improve performance when using billboard nodes.
Export limitations:
OIV.Inventor.Nodes.SoBillboard can be exported to PDF3D/U3D (OIV.HardCopy.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 OIV.Inventor.Nodes.SoBillboard.axisOfRotation field specifies which axis to use to perform the rotation. This axis is defined in the local coordinates of the OIV.Inventor.Nodes.SoBillboard 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 OIV.Inventor.Nodes.SoBillboard.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 OIV.Inventor.Nodes.SoBillboard.axisOfRotation to (0, 0, 0).
To rotate the OIV.Inventor.Nodes.SoBillboard to face the viewer, determine the line between the OIV.Inventor.Nodes.SoBillboard's origin and the viewer's position; call this the billboard-to-viewer line. The OIV.Inventor.Nodes.SoBillboard.axisOfRotation and the billboard-to-viewer line define a plane. The local z-axis of the OIV.Inventor.Nodes.SoBillboard is then rotated into that plane, pivoting around the OIV.Inventor.Nodes.SoBillboard.axisOfRotation.
If the OIV.Inventor.Nodes.SoBillboard.axisOfRotation and the billboard-to-viewer line are coincident (the same line), then the plane cannot be established, and the rotation results of the OIV.Inventor.Nodes.SoBillboard are undefined. For example, if the OIV.Inventor.Nodes.SoBillboard.axisOfRotation is set to (0,1,0) (Y-axis) and the viewer flies over the OIV.Inventor.Nodes.SoBillboard 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.
Billboard {
axisOfRotation | 0 1 0 |
useSphereBBox | true |
Note |
---|
Node available since Open Inventor 10.0 |