public class SoVRMLCollision extends SoVRMLGroup
See the VRML97 Specification, below.
<font color="#0000FF">NOTE:</font> This class does not exist in Open Inventor 10.0 and later.
Note: This node is partially implemented. It functions correctly as a grouping node, but does not currently implement the collision detection feature.
IV_SEPARATOR_MAX_CACHES specifies the maximum number of render caches. To disable caching entirely, set it to 0. (This can reduce memory requirements at the cost of degraded performance.) See SoSeparator
for additional information on caching in general, and SoVRMLGroup
for information on the CacheEnabled enum values.
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
By default, all objects in the scene are collidable . The browser must detect geometric collisions between the user's avatar (see SoVRMLNavigationInfo
) and the scene's geometry, and prevent the avatar from 'entering' the geometry. The SoVRMLCollision
node is a grouping node that may turn off collision detection for its descendants, specify alternative objects to use for collision detection, and send events signalling that a collision has occurred between the user's avatar and the SoVRMLCollision
group's geometry or alternate. If there are no SoVRMLCollision
nodes specified in a scene, browsers must detect collision with all objects during navigation.
See the "Concepts - Grouping and Children Nodes" section for a description the children , addChildren , and removeChildren fields and eventIns.
The SoVRMLCollision
node's collide
field enables and disables collision detection. If collide
is set to false, the children and all descendants of the SoVRMLCollision
node will not be checked for collision, even though they are drawn. This includes any descendant SoVRMLCollision
nodes that have collide
set to true - (i.e., setting collide
to false turns it off for every node below it).
SoVRMLCollision
nodes with the collide
field set to true detect the nearest collision with their descendant geometry (or proxies). Note that not all geometry is collidable - see each geometry node's sections for details. When the nearest collision is detected, the collided SoVRMLCollision
node sends the time of the collision through its collideTime
eventOut. This behavior is recursive - if an SoVRMLCollision
node contains a child, descendant, or proxy (see below) that is an SoVRMLCollision
node, and both SoVRMLCollisions detect that a collision has occurred, then both send a collideTime
event out at the same time, and so on.
The bboxCenter and bboxSize fields specify a bounding box that encloses the SoVRMLCollision
'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 the bboxCenter and bboxSize fields.
The collision proxy, defined in the proxy
field, is a legal child node, (see "Concepts - Grouping and Children Nodes"), that is used as a substitute for the SoVRMLCollision
's children during collision detection. The proxy is used strictly for collision detection - it is not drawn.
If the value of the collide
field is false, then collision detection is not performed with the children or proxy descendant nodes. If the root node of a scene is an SoVRMLCollision
node with the collide
field set to false, then collision detection is disabled for the entire scene, regardless of whether descendant SoVRMLCollision
nodes have set collide
true.
If the value of the collide
field is true and the proxy
field is non-NULL, then the proxy
field defines the scene which collision detection is performed. If the proxy
value is NULL, the children of the collision node are collided against.
If proxy
is specified, then any descendant children of the SoVRMLCollision
node are ignored during collision detection. If children is empty, collide
is true and proxy
is specified, then collision detection is done against the proxy but nothing is displayed (i.e., invisible collision objects).
The collideTime
eventOut generates an event specifying the time when the user's avatar (see SoVRMLNavigationInfo
) intersects the collidable children or proxy of the SoVRMLCollision
node. An ideal implementation computes the exact time of intersection. Implementations may approximate the ideal by sampling the positions of collidable objects and the user. Refer to the SoVRMLNavigationInfo
node for parameters that control the user's size.
Browsers are responsible for defining the navigation behavior when collisions occur. For example, when the user comes sufficiently close to an object to trigger a collision, the browser may have the user bounce off the object, come to a stop, or glide along the surface.
File format/default:
VRMLCollision {
children | [] |
collide | true // VRML97 only |
enabled | true // X3D only |
bboxCenter | 0 0 0 |
bboxSize | -1 -1 -1 |
proxy | NULL (Note: Not implemented) |
metadata | NULL |
renderCaching | AUTO |
boundingBoxCaching | AUTO |
renderCulling | AUTO |
pickCulling | AUTO |
SoMFNode | addChildren |
SoMFNode | removeChildren |
SoMFNode | set_children |
SoSFBool | set_collide // VRML97 only (Note: Not implemented) |
SoSFBool | set_enabled // X3D only (Note: Not implemented) |
SoSFNode | set_metadata |
SoSFTime | collideTime (Note: Not implemented) |
SoMFNode | children_changed |
SoSFBool | collide_changed // VRML97 only (Note: Not implemented) |
SoSFBool | enabled_changed // X3D only (Note: Not implemented) |
SoSFNode | metadata_changed |
Action behavior:
Sets: SoCacheElementDeprecated since Open Inventor 9500
The VRML API is no longer supported. See section
SoVRMLGroup.Cachings
Inventor.ConstructorCommand
Modifier and Type | Field and Description |
---|---|
SoSFBool |
collide
Deprecated.
(Note: Not implemented) Enables (true) or disables (false) collision detection.
|
SoSFTime |
collideTime
Deprecated.
Output event on collide time changes.
|
SoSFBool |
enabled
Deprecated.
(Note: Not implemented) Enables (true) or disables (false) collision detection.
|
SoSFBool |
isActive
Deprecated.
Output event if active.
|
SoSFNode |
proxy
Deprecated.
(Note: Not implemented) Child node that is used as a substitute for the
SoVRMLCollision 's children during collision detection. |
AUTO, boundingBoxCaching, directVizCaching, OFF, ON, pickCulling, renderCaching, renderCulling, renderUnitId
bboxCenter, bboxSize, children, metadata
boundingBoxIgnoring
VERBOSE_LEVEL, ZeroHandle
Constructor and Description |
---|
SoVRMLCollision()
Deprecated.
Constructor.
|
SoVRMLCollision(int nChildren)
Deprecated.
Constructor that takes approximate number of children.
|
getNumRenderCaches, setNumRenderCaches
addChild, findChild, getChild, getNumChildren, insertChild, removeAllChildren, removeChild, removeChild, replaceChild, replaceChild
affectsState, callback, copy, copy, distribute, doAction, getAlternateRep, getBoundingBox, getByName, getMatrix, getPrimitiveCount, getRenderUnitID, GLRender, GLRenderBelowPath, GLRenderInPath, GLRenderOffPath, grabEventsCleanup, grabEventsSetup, handleEvent, isBoundingBoxIgnoring, isOverride, pick, rayPick, search, setOverride, touch, write
copyFieldValues, copyFieldValues, enableNotify, fieldsAreEqual, get, getAllFields, getEventIn, getEventOut, getField, getFieldName, hasDefaultValues, isNotifyEnabled, set, setToDefaults
dispose, getEXTERNPROTO, getName, getPROTO, isDisposable, isSynchronizable, setName, setSynchronizable
getAddress, getNativeResourceHandle, startInternalThreads, stopInternalThreads
public final SoSFBool collide
public final SoSFBool enabled
public final SoSFNode proxy
SoVRMLCollision
's children during collision detection.public final SoSFTime collideTime
public final SoSFBool isActive
Generated on January 23, 2025, Copyright © Thermo Fisher Scientific. All rights reserved. http://www.openinventor.com