SoVRMLLOD Class |
Note: This API is now obsolete.
Distance-based level-of-detail switching group node.
Namespace: OIV.Inventor.VRMLnodes
The SoVRMLLOD type exposes the following members.
Name | Description | |
---|---|---|
![]() | SoVRMLLOD | Constructor. |
![]() | SoVRMLLOD(Int32) | Constructor that takes approximate number of levels/children. |
Name | Description | |
---|---|---|
![]() | AddChild | Adds a child as last one in group. |
![]() | AddLevel | Adds a level/child as last one in group. |
![]() | AffectsState | Overrides default method on SoNode. |
![]() | Callback | (Overrides SoGroupCallback(SoCallbackAction).) |
![]() | 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 SoVRMLParentDoAction(SoAction).) |
![]() | EnableNotify | Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false). |
![]() | Equals | (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. |
![]() | FindLevel | Finds index of given level/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 SoGroupGetBoundingBox(SoGetBoundingBoxAction).) |
![]() | GetChild | Returns the nth child node. |
![]() | 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.) |
![]() | GetLevel | Returns the nth level/child node. |
![]() | GetMatrix | (Inherited from SoGroup.) |
![]() | GetName | Returns the name of an instance. |
![]() | GetNumChildren | Returns number of children. |
![]() | GetNumLevels | Returns number of levels/children. |
![]() | GetPrimitiveCount | (Overrides SoVRMLParentGetPrimitiveCount(SoGetPrimitiveCountAction).) |
![]() | GetRenderUnitID | (Inherited from SoNode.) |
![]() | GetStringName | (Inherited from SoBase.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | GLRender | (Overrides SoGroupGLRender(SoGLRenderAction).) |
![]() | GLRenderBelowPath | (Overrides SoNodeGLRenderBelowPath(SoGLRenderAction).) |
![]() | GLRenderInPath | (Overrides SoNodeGLRenderInPath(SoGLRenderAction).) |
![]() | GLRenderOffPath | (Overrides SoNodeGLRenderOffPath(SoGLRenderAction).) |
![]() | GrabEventsCleanup | (Inherited from SoNode.) |
![]() | GrabEventsSetup | (Inherited from SoNode.) |
![]() | HandleEvent | (Inherited from SoGroup.) |
![]() | 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. |
![]() | InsertLevel | Adds a level/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 SoNodeRayPick(SoRayPickAction).) |
![]() | RemoveAllChildren | Removes all children from group. |
![]() | RemoveAllLevels | Removes all levels/children from group. |
![]() | RemoveChild(Int32) | Removes child with given index from group. |
![]() | RemoveChild(SoNode) | Removes first instance of given child from group. |
![]() | RemoveLevel(Int32) | Removes level/child with given index from group. |
![]() | RemoveLevel(SoNode) | Removes first instance of given level/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. |
![]() | ReplaceLevel(Int32, SoNode) | Replaces level with given index with new level/child. |
![]() | ReplaceLevel(SoNode, SoNode) | Replaces first instance of given level/child with new level/child. |
![]() | Search | (Overrides SoVRMLParentSearch(SoSearchAction).) |
![]() | 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 | (Overrides SoGroupWrite(SoWriteAction).) |
Name | Description | |
---|---|---|
![]() | bboxCenter | The bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLParent's children. |
![]() | bboxSize | The bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLParents's children. |
![]() | boundingBoxIgnoring | Whether to ignore this node during bounding box traversal. |
![]() | center | Translation offset in the local coordinate system that specifies the center of the SoVRMLLOD objects. |
![]() | children | Field that contains a list of children nodes. |
![]() | IsDisposable | ISafeDisposable interface implementation.
(Inherited from SoDisposable.) |
![]() | level | List of nodes that request the same object or objects at varying levels of detail from highest to lowest (VRML97). |
![]() | metadata | Specifies the metadata node. |
![]() | range | Specifies the ideal distances at which to switch between the levels. |
![]() | UserData |
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.) |
The SoVRMLLOD node allows applications to switch between various levels of detail or complexity for a given object, based on the distance from the user.
<font color="#0000FF">NOTE:</font> This class does not exist in Open Inventor 10.0 and later.
NOTE: This node contains three fields inherited from SoVRMLParent that are new in Open Inventor 5.0. These fields are children (replaces the level field for X3D), bboxCenter, and bboxSize. If you specify a non-default value for this field, when this node is written to an Inventor file, the file will contain this new field. Older versions of Open Inventor will not be able to read this file and will generate an Inventor read error (unknown field). NOTE 2: This field is not compatible with VRML97. If you specify a non-default value for this field, when this node is written to a VRML file, the file will contain this incompatible field and standard VRML97 file readers will not be able to read it.
The level field contains a list of nodes that represent the same object or objects at varying levels of detail, from highest to the lowest level of detail, and the range field specifies the ideal distances at which to switch between the levels.
The center field is a translation offset in the local coordinate system that specifies the center of the SoVRMLLOD object for distance calculations. In order to calculate which level to display, first the distance is calculated from the viewpoint, transformed into the local coordinate space of the SoVRMLLOD node, (including any scaling transformations), to the center point of the SoVRMLLOD. If the distance is less than the first value in the range field, then the first level of the SoVRMLLOD is drawn. If between the first and second values in the range field, the second level is drawn, and so on.
If there are N values in the range field, the SoVRMLLOD must have N+1 nodes in its level field. Specifying too few levels will result in the last level being used repeatedly for the lowest levels of detail; if more levels than ranges are specified, the extra levels will be ignored. The exception to this rule is to leave the range field empty, which is a hint to the browser that it should choose a level automatically to maintain a constant display rate. Each value in the range field should be greater than the previous value; otherwise results are undefined.
Note that the selection of which child to render depends on the current camera settings, so generally this node should not be render cached. SoVRMLLOD nodes prohibit auto-caching, so that no SoSeparator (or other render caching node) above an SoVRMLLOD in the scene graph will automatically create a render cache. This can significantly affect performance and applications should try to keep nodes that can be render cached (especially geometry nodes) under a different SoSeparator.
This section describes the expected behavior of the node in a conforming VRML97 browser application. In some cases, the application is responsible for implementing portions of the expected behavior. Open Inventor viewer classes and IVF classes implement some of the application behaviors.
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 SoVRMLLOD node specifies various levels of detail or complexity for a given object, and provides hints for browsers to automatically choose the appropriate version of the object based on the distance from the user. The level field contains a list of nodes that represent the same object or objects at varying levels of detail, from highest to the lowest level of detail, and the range field specifies the ideal distances at which to switch between the levels. See the "Concepts - Grouping and Children Nodes" section for a details on the types of nodes that are legal values for level.
The center field is a translation offset in the local coordinate system that specifies the center of the SoVRMLLOD object for distance calculations. In order to calculate which level to display, first the distance is calculated from the viewpoint, transformed into the local coordinate space of the SoVRMLLOD node, (including any scaling transformations), to the center point of the SoVRMLLOD. If the distance is less than the first value in the range field, then the first level of the SoVRMLLOD is drawn. If between the first and second values in the range field, the second level is drawn, and so on.
If there are N values in the range field, the SoVRMLLOD must have N+1 nodes in its level field. Specifying too few levels will result in the last level being used repeatedly for the lowest levels of detail; if more levels than ranges are specified, the extra levels will be ignored. The exception to this rule is to leave the range field empty, which is a hint to the browser that it should choose a level automatically to maintain a constant display rate. Each value in the range field should be greater than the previous value; otherwise results are undefined.
Authors should set SoVRMLLOD ranges so that the transitions from one level of detail to the next are smooth. Browsers may adjust which level of detail is displayed to maintain interactive frame rates, to display an already-fetched level of detail while a higher level of detail (contained in an Inline node) is fetched, or might disregard the author-specified ranges for any other implementation-dependent reason. For best results, specify ranges only where necessary, and nest SoVRMLLOD nodes with and without ranges. Browsers should try to honor the hints given by authors, and authors should try to give browsers as much freedom as they can to choose levels of detail based on performance.
SoVRMLLOD nodes are evaluated top-down in the scene graph. Only the descendants of the currently selected level are rendered and evaluated. Note that all nodes under an SoVRMLLOD node continue to receive and send events regardless of which SoVRMLLODlevel is active.
VRMLLOD {
level | [] // VRML97 only |
children | [] // X3D only |
center | 0 0 0 |
range | [] |
bboxCenter | 0 0 0 |
bboxSize | -1 -1 -1 |
metadata | NULL |
SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction, SoSearchAction, SoWriteAction
SoMFNode | set_level // VRML97 only |
SoMFNode | set_children // X3D only |
SoSFNode | set_metadata |
SoMFNode | level_changed // VRML97 only |
SoMFNode | children_changed // X3D only |
SoSFNode | metadata_changed |