x3d-traverse
v1.0.22
Published
Traverse X3D nodes and scenes to filter, process and analyze nodes.
Maintainers
Readme
x3d-traverse
Traverse X3D nodes and scenes to filter, process and analyze nodes.
Installation
Node
npm i x3d-traverseBrowser
import traverse from "https://cdn.jsdelivr.net/npm/x3d-traverse@latest/dist/x3d-traverse.mjs";Usage
The package can be used with CJS require or with ES6 import statement:
import X3D from "x_ite";
import traverse from "x3d-traverse";
const Traverse = traverse (X3D);
const canvas = X3D .createBrowser ();
const browser = canvas .browser;
const scene = await browser .createX3DFromURL (new X3D .MFString ("https://create3000.github.io/media/examples/Geometry3D/Box/Box.x3d"));
// Traverse all root nodes and its successors.
for (const node of scene .rootNodes .traverse ())
console .log (node .getNodeTypeName ());Flags
Traverse.NONETraverse.EXTERNPROTO_DECLARATIONSTraverse.PROTO_DECLARATIONSTraverse.ROOT_NODESTraverse.IMPORTED_NODESTraverse.IMPORTED_ROOT_NODESTraverse.EXTERNPROTO_DECLARATION_SCENETraverse.PROTO_DECLARATION_BODYTraverse.PROTOTYPE_INSTANCESTraverse.INLINE_SCENETraverse.ALL
Traverse
There is a method traverse on some classes listed here:
X3DScene.prototype.traverseX3DExecutionContext.prototype.traverseX3DExternProtoDeclaration.prototype.traverseX3DProtoDeclaration.prototype.traverseNamedNodesArray.prototype.traverseExternProtoDeclarationArray.prototype.traverseProtoDeclarationArray.prototype.traverseSFNode.prototype.traverseMFNode.prototype.traverse
traverse (flags?: number): Iterable <TraversedObjects>
Traverse all objects and its successors. Returns every node on its way through the scene graph tree.
The flags parameter is a number ored, for instance like this: Traverse .ROOT_NODES | Traverse .PROTO_DECLARATIONS.
The return value is an iterator with all traversed object, which can be of type:
X3DSceneX3DExecutionContextX3DExternProtoDeclarationX3DProtoDeclarationSFNode
Traverse.traverse (object: TraverseObjects, flags?: number): Iterable <TraversedObjects>
There is also a method Traverse.traverse with an additional first argument object, which can be of type:
X3DSceneX3DExecutionContextX3DExternProtoDeclarationX3DProtoDeclarationNamedNodesArrayExternProtoDeclarationArrayProtoDeclarationArrayMFNodeArray <SFNode | X3DExternProtoDeclaration | X3DProtoDeclaration>SFNode
Find
There is a method find on some classes listed here:
X3DScene.prototype.findX3DExecutionContext.prototype.find
find (object: FindObjects | Array <FindObjects>, flags?: number): Iterable <Array <FoundObjects>>
Traverse all objects and its successors. Returns an array of all paths of the object to be found.
The parameter *object can be of type:
X3DSceneX3DExecutionContextX3DExternProtoDeclarationX3DProtoDeclarationX3DImportedNodeX3DFieldSFNode
The flags parameter is a number ored, for instance like this: Traverse .ROOT_NODES | Traverse .PROTO_DECLARATIONS.
The array of found objects contains a list with the X3DExecutionContext, the X3DField name, maybe the index in the X3DArrayField, the SFNode, and then everything repeats with the X3DField name.
Traverse.find (scene: X3DScene, object: FindObjects | Array <FindObjects>, flags?: number): Iterable <Array <FoundObjects>>
There is also a method Traverse.find with an additional first argument scene, which can be of type:
X3DSceneX3DExecutionContext
See Also
- X_ITE - X3D Browser
