Unit X3DNodes

Description

Nodes and other important bulding blocks of X3D (prototypes, routes and so on).

This is the central unit for X3D processing, as X3D file is basically just a graph of nodes. We represent whole X3D file by it's root node. This is what we load, save and process in this unit.

The chapter "Reading, writing, processing VRML scene graph" in the documentation on [https://castle-engine.io/vrml_engine_doc/output/xsl/html/chapter.scene_graph.html] is almost completely devoted to documenting the design of this single unit.

Various uses of this unit:

  • Nodes can be loaded or saved from the stream in a classic or XML encoding. For classic encoding we use a lexer in CastleInternalX3DLexer unit. For XML encoding, we use standard FPC DOM unit. Loading and saving of fields (in both encodings) is inside X3DFields unit.

    When reading X3D files, we generally do not change the X3D graph. So we're able to save exactly the same X3D graph back to another file. See also [https://castle-engine.io/vrml_engine_doc/output/xsl/html/section.writing_vrml.html#section.vrml_preserving]. This allows writing various X3D processing tools, that can simply read the file, change whatever they want, and write the file back — knowing that the "untouched" parts of graph are preserved perfectly.

  • TX3DNode class offers a lot of methods to process X3D graph. See TX3DNode.Traverse, TX3DNode.EnumerateNodes and TX3DNode.FindNode. TX3DNode.Traverse is especially important, as it walks through X3D graph just as the specification says (accumulating transformation, visiting only active children of nodes like Switch or LOD), gathering some state (useful especially for VRML 1.0, but also used for various things in new X3D versions).

    When you want to render X3D graph, you can just traverse the graph and render each geometry node (TAbstractGeometryNode instance) knowing it's state (that will contain transformation and such). Alternatively, simple renderer can also use TAbstractGeometryNode.Triangulate.

  • TAbstractGeometryNode is an important descendant of TX3DNode, as it defines stuff actually visible in the 3D world. It has useful routines for calculating bounding volumes, triangulating and such.

    But note that usually it's more comfortable to load your scene to TCastleScene or TCastleSceneCore and then query the shapes list in TCastleSceneCore.Shapes — this is usually more comfortable, also TCastleSceneCore and TShape cache some results for speed.

  • This unit doesn't depend on OpenGL, or any other particular rendering method. So it's suitable also for CastleRayTracer, and every other possible renderer that will ever get implemented.

  • Your own units can define new X3D nodes, by declaring new classes descending from TX3DNode (or other, more specialized, descendant). You should register your new classes by calling NodesManager.RegisterNodeClasses.

Node class names, and inheritance:

  • Normal X3D nodes are defined by classses named like TXxxNode. These nodes can be specified inside the X3D files. See X3D specifications, and also our extensions specification, on [https://castle-engine.io/vrml_x3d.php].

    There are also abstract node classes. Their definitions are helpful for handling some functionality common to many descendants, and to declare allowed children in SFNode/MFNode fields. Abstract node classes are named like TAbstractXxxNode. Some of the abstract nodes are also defined by X3D specification, and some of them are just our own inventions.

    Finally, there are some special-purpose node classes that play important role in our X3D organization. They are not abstract, but also their exact instances are not created under normal circumstances. These are named like TX3DXxxNode, currently these are only: TX3DNode, TX3DRootNode, TX3DUnknownNode, TX3DPrototypeNode.

    All node classes descend from the base TX3DNode class.

    When X3D design needs multiple inheritance, we use TNodeFunctionality, to expose interface and have implementation that does "something", but is not tied to the inheritance. E.g. varios unrelated nodes may support TTransformFunctionality. We don't use interfaces for this – this avoids COM interface design weirdness (and in Delphi we're limited to COM interfaces), and allows to share implemetation too.

  • Optional suffix _1 or _2 at the node class name indicates that this is only for a specific X3D or VRML standard version. Suffix _1 indicates nodes specific to VRML 1.0. Suffix _2 indicates nodes specific to VRML 2.0 (aka 97), that are not available in X3D. Latest X3D nodes do not have any suffix (to not clutter the source code that simply wants to use the latest and best version of the standard).

    For example, we have TIndexedFaceSetNode_1 for VRML 1.0 and TIndexedFaceSetNode for VRML 2.0 and X3D.

VRML/X3D versions handling:

  • We handle VRML 1.0, VRML 2.0 (aka VRML 97) and X3D (aka VRML 3.x).

    Every correct VRML / X3D file in classic and XML encoding should be parsed by this unit. See [https://castle-engine.io/x3d_implementation_status.php] for much more detailed information about supported features.

  • Also many Inventor 1.0 files are correctly parsed. We handle Inventor 1.0 mostly like VRML 1.0, also some small things and nodes specific for Inventor 1.0 are implemented here, see [https://castle-engine.io/x3d_extensions.php#ext_iv_in_vrml].

  • Note that structures in this unit are not focused on either VRML 1.0 or VRML >= 2.0. On the contrary: we try to handle the sum of all VRML and X3D. When reading VRML 1.0, many VRML 2.0 constructs (that do not conflict with anything in VRML 1.0) are allowed, and the other way around too.

    Internally, we do not convert VRML 1.0-specific constructs to VRML 2.0/X3D constructs (or the other way around). See [https://castle-engine.io/vrml_engine_doc/output/xsl/html/section.vrml_1_2_sum.html] for more in-depth explanation of how, and why, we handle both old-style (Inventor, VRML 1.0) and new-style (VRML 2.0, X3D) syntax.

Uses

Overview

Classes, Interfaces, Objects and Records

Name Description
Record TTraversingInfo  
Class TVRML1State Nodes that are saved during VRML/X3D traversing.
Record TLightInstance Light source instance in the scene.
Class TLightInstancesList  
Record TClipPlane Clipping plane, along with a transformation.
Class TClipPlaneList  
Class TX3DGraphTraverseState Current state (transformation and such) when traversing VRML/X3D graph.
Class TX3DGraphTraverseStateStack Stack of TX3DGraphTraverseState.
Class TNodeDestructionNotificationList  
Class TX3DNodesCache Cache for X3D nodes.
Class TX3DFontTexturesCache Cache for font texture nodes (TPixelTextureNode that we need for each font).
Class TX3DNodeDeepCopyState Private stuff for TX3DNode.DeepCopy and friends implementation.
Class TNodeFunctionality Simple component system inside TX3DNode.
Class TX3DNode X3D node.
Class TX3DNodeList  
Class TGeneratedTextureFunctionality Functionality for all X3D nodes that represent generated textures.
Class TX3DNodeClassesList Copyright 2002-2018 Michalis Kamburelis.
Class TSFNode X3D field holding a reference to a single node.
Class TSFNodeEventHelper  
Class TMFNode VRML/X3D field holding a list of nodes.
Class TMaterialInfo Abstract class for material information, that define material properties for various lighting equations.
Class TPhongMaterialInfo Material information that defines parameters for Phong lighting equations.
Class TUnlitMaterialInfo Material information that defines parameters for unlit lighting equations.
Class TPhysicalMaterialInfo Material information that defines parameters for physical lighting equations.
Class TAbstractNode Base X3D node that can have some metadata.
Class TAbstractMetadataNode Basis for all metadata nodes.
Class TAbstractChildNode Abstract node type that indicates that the node may be used as a child of a grouping node, e.g.
Class TAbstractBindableNode Abstract base type for all bindable children nodes.
Class TAbstractInfoNode Base class for all nodes that contain only information without visual semantics.
Class TAbstractSensorNode Base abstract class for most (but not all) sensors.
Class TMetadataBooleanNode A metadata (extra, custom information at a node) with a boolean type.
Class TMetadataDoubleNode A metadata (extra, custom information at a node) with a double-precision floating point number type.
Class TMetadataFloatNode A metadata (extra, custom information at a node) with a single-precision floating point number type.
Class TMetadataIntegerNode A metadata (extra, custom information at a node) with an integer type.
Class TMetadataSetNode A metadata (extra, custom information at a node) set, to reference of collection of other metadata nodes.
Class TMetadataStringNode A metadata (extra, custom information at a node) with a string type.
Class TWorldInfoNode Information about the world.
Class TTimeDependentFunctionality Functionality of all time-dependent nodes.
Class TAbstractTimeDependentNode Abstract node from which most (but not all) time-dependent nodes are derived.
Class TTimeSensorNode Generate events as time passes.
Class TAbstractInternalGroupingNode Base node that may contain children nodes.
Class TAbstractGroupingNode Base node that contains children nodes.
Class TGroupNode Contains children nodes without introducing a new transformation.
Class TStringIntegerMap Map String->Integer.
Class TTransformFunctionality Node functionality for all X3D transformation nodes.
Class TX3DRootNode A top-level VRML/X3D node.
Class TStaticGroupNode Children nodes which cannot be modified.
Class TSwitchNode Choose only one (or none) of the child nodes for processing.
Class TTransformNode Grouping node that transforms (moves, rotates, scales) it's children.
Class TAbstractNetworkSensorNode Basis for all sensors that generate events based on network activity.
Class TUrlFunctionality Functionality used by all nodes that contain data located on the World Wide Web.
Class TAnchorNode Load the URL when the user activates (clicks) some geometry contained within the Anchor node's children.
Class TInlineNode Embed another X3D scene into the current scene.
Class TInlineLoadControlNode Embed another X3D scene into the current scene, with additional output event when they are loaded (VRML 97 version).
Class TLoadSensorNode Monitors the progress and success of downloading URL elements over a network.
Class ENotCoordinateBasedNode  
Class TAbstractGeometryNode Base node for a visible geometry in X3D.
Class TAbstractGeometricPropertyNode Base node type for all geometric property node types.
Class TAbstractColorNode Base node for color specifications.
Class TAbstractComposedGeometryNode Base node type for all composed 3D geometry.
Class TAbstractCoordinateNode Base node type for all coordinate node types.
Class TAbstractNormalNode Base node type for all normal node types.
Class TClipPlaneNode Clip the geometry with a plane.
Class TColorNode Set of RGB colours.
Class TColorRGBANode Set of RGBA colours.
Class TCoordinateNode Set of 3D coordinates to be used in the Coord field of vertex-based geometry nodes.
Class TIndexedLineSetNode Geometry formed by constructing polylines from 3D vertices.
Class TIndexedTriangleFanSetNode Triangles that form a fan shape around the first vertex.
Class TIndexedTriangleSetNode A collection of triangles.
Class TIndexedTriangleStripSetNode Strips of triangles.
Class TLineSetNode Lines.
Class TNormalNode Normal (information for lighting) node.
Class TTangentNode Tangent vectors information, for bump mapping.
Class TPointSetNode Points.
Class TTriangleFanSetNode Triangles that form a fan shape around the first vertex.
Class TTriangleSetNode A collection of triangles.
Class TTriangleStripSetNode Strips of triangles.
Class TAbstractAppearanceChildNode Base node type for the child nodes of TAbstractAppearanceNode.
Class TAbstractAppearanceNode Base node type for all Appearance nodes.
Class TAbstractMaterialNode Base node type for all Material nodes.
Class TAbstractShapeNode Base node type for all Shape nodes.
Class TAppearanceNode Visual properties of geometry.
Class TFillPropertiesNode Additional visual properties to be applied to all polygonal areas.
Class TLinePropertiesNode Additional visible properties to be applied to all line geometry.
Class TAbstractOneSidedMaterialNode  
Class TMaterialNode Material determines how the geometry looks on the screen, by providing parameters to the lighting equations.
Class TPhysicalMaterialNode  
Class TShapeNode Shape is a rendered object in the world, with an appearance and geometry.
Class TTwoSidedMaterialNode

Note: Whether the shape is visible from both sides depends on the geometry TAbstractGeometryNode.Solid field, and is independent of whether you use this or other (one-sided) material nodes.

Class TUnlitMaterialNode  
Class TBoxNode Rectangular box.
Class TConeNode Cone.
Class TCylinderNode Cylinder.
Class TElevationGridNode Uniform rectangular grid of varying height above the Y=0 plane, aka "height map".
Class TExtrusionNode 2D cross-section shape extruded along a 3D spine.
Class TIndexedFaceSetNode Mesh with faces (polygons) constructed from vertices.
Class TSphereNode Sphere.
Class TArc2DNode Circular arc in 2D.
Class TArcClose2DNode Closed circular arc in 2D.
Class TCircle2DNode Circle in 2D.
Class TDisk2DNode Disc (filled circle) in 2D.
Class TPolyline2DNode Series of line segments in 2D.
Class TPolypoint2DNode Set of vertices in 2D.
Class TRectangle2DNode Rectangle in 2D.
Class TTriangleSet2DNode Set of triangles in 2D.
Class TAbstractFontStyleNode Base node type for all font style nodes.
Class TFontStyleNode Defines the size, family, style and other properties used for TTextNode.
Class TTextNode Multiline text, visualized as a set of flat and textured polygons.
Class TAbstractSoundNode Base for all sound nodes.
Class TAbstractSoundSourceNode Base class for most (but not all) nodes that can emit audio data.
Class TAudioClipNode Buffer for sound data, which can be played by the TSoundNode.
Class TSoundNode 3D sound emitter.
Class TAbstractLightNode Base class for all the light nodes.
Class TAbstractPunctualLightNode Base class for all "punctual" light nodes (that have a position and/or direction).
Class TAbstractDirectionalLightNode Base class for all directional lights.
Class TAbstractPositionalLightNode Base class for all positional lights.
Class TAbstractPointLightNode Point light source, that shines from a given point in all directions around, for all VRML and X3D versions.
Class TDirectionalLightNode Light source that shines along a given direction, like a sun.
Class TPointLightNode Point light source, that shines from a given point in all directions around, for X3D.
Class TSpotLightNode Light source that emits light from a specific point along a specific direction constrained within a cone.
Class TEnvironmentLightNode  
Class TAbstractTextureCoordinateNode Base for all nodes which specify texture coordinates.
Class TAbstractSingleTextureCoordinateNode Base for all nodes which specify a texture coordinate, but not MultiTextureCoordinate.
Class TInternalRendererResource  
Class TAbstractTextureNode Base for all nodes which specify a texture, possibly multi-texture.
Class TAbstractSingleTextureNode Base for all nodes which specify a texture, but not multi-texture.
Class TAbstractTexture2DNode 2D texture.
Class TAbstractTextureTransformNode Base for all nodes which specify a transformation of texture coordinates.
Class TAbstractSingleTextureTransformNode Base for all nodes which specify a texture coordinate transform, but not MultiTextureTransform.
Class TImageTextureNode Texture image loaded from a file.
Class TMovieTextureNode Movie file, that can be played and displayed as a texture.
Class TMultiTextureNode Application of several individual textures on top of each other, used instead of a single texture when desired.
Class TMultiTextureCoordinateNode Multiple texture coordinates per vertex, to be used with multi-texturing by TMultiTextureNode.
Class TMultiTextureTransformNode Multiple texture transforms, to be used with multi-texturing by TMultiTextureNode.
Class TPixelTextureNode Texture specified as an explicit array of pixel values (see FdImage field).
Class TInternalReusedPixelTextureNode Internal TPixelTextureNode descendant for nodes that may be used by many scenes at once (right now this just means: FontTexture), Such nodes need special protection to not free their rendering resources too early (e.g.
Class TTextureCoordinateNode 2D texture coordinates used by vertex-based geometry nodes.
Class TTextureCoordinateGeneratorNode Automatic generation of texture coordinates.
Class TTexturePropertiesNode Adjust the texture application properties.
Class TTextureTransformNode 2D transformation that can be applied to texture coordinates (e.g.
Class TAbstractInterpolatorNode Basis for all nodes interpolating (animating) values.
Class TAbstractCommonInterpolatorNode Common base class for all implemented interpolator nodes.
Class TColorInterpolatorNode Interpolate (animate) a single color.
Class TColorSetInterpolatorNode Interpolate (animate) a set of colors, for example to animate a set of TBackgroundNode or TColorNode colors.
Class TCoordinateInterpolatorNode Interpolate (animate) a set of 3D positions, for example to animate coordinates of a mesh.
Class TCoordinateInterpolator2DNode Interpolate (animate) a set of 2D positions, for example to animate 2D texture coordinates.
Class TEaseInEaseOutNode Support controlled gradual transitions by modifying TimeSensor node fractions.
Class TNormalInterpolatorNode Interpolate (animate) a set of 3D directions, for example normal vectors.
Class TOrientationInterpolatorNode Interpolate (animate) an orientation, for example to animate TTransformNode.Rotation.
Class TPositionInterpolatorNode Interpolate (animate) a 3D position, for example to animate TTransformNode.Translation.
Class TPositionInterpolator2DNode Interpolate (animate) a 2D position.
Class TScalarInterpolatorNode Interpolate (animate) a single floating-point value, for example to animate TMaterialNode.Transparency.
Class TSplinePositionInterpolatorNode Non-linearly interpolate (animate) a 3D position.
Class TSplinePositionInterpolator2DNode Non-linearly interpolate (animate) a 2D position.
Class TSplineScalarInterpolatorNode Non-linearly interpolate (animate) a single floating-point value.
Class TSquadOrientationInterpolatorNode Non-linearly interpolate (animate) a rotation.
Class TVectorInterpolatorNode Interpolate (animate) a set of floats, for example to animate TElevationGridNode heights.
Class TAbstractCubicBezierInterpolatorNode Copyright 2002-2022 Michalis Kamburelis.
Class TCubicBezier2DOrientationInterpolatorNode Interpolate (animate) a set of 2D rotations, using cubic Bezier curve instead of linear interpolation.
Class TCubicBezierPositionInterpolatorNode Interpolate (animate) a set of 3D positions, using cubic Bezier curve instead of linear interpolation.
Class TCubicBezierCoordinateInterpolatorNode Interpolate (animate) a set of 3D vertices, using cubic Bezier curve instead of linear interpolation.
Class TPointingDeviceSensorList List of pointing device sensors.
Class TAbstractPointingDeviceSensorNode Base type for all pointing device sensors.
Class TAbstractDragSensorNode Base type for all drag-style pointing device sensors.
Class TAbstractTouchSensorNode Base type for all touch-style pointing device sensors.
Class TCylinderSensorNode Pointing device sensor to rotate objects around a constrained axis.
Class TPlaneSensorNode Pointing device sensor to move objects on a plane.
Class TSphereSensorNode Pointing device sensor to rotate objects.
Class TTouchSensorNode Sensor to catch clicks on 3D objects.
Class TAbstractKeyDeviceSensorNode Base type for all sensor node types that operate using key devices.
Class TKeySensorNode Generate events when user key presses or releases keys on the keyboard.
Class TStringSensorNode Generates events as the user inputs a longer string on the keyboard, useful for example to simulate "input fields" in 3D.
Class TAbstractEnvironmentalSensorNode Base type for all the environmental sensor nodes.
Class TProximitySensorNode Generate events when the viewer enters, exits, and/or moves within a region of 3D space.
Class TTransformSensorNode Generates events when the target object enters, exits, and moves within a region of 3D space.
Class TVisibilitySensorNode Detects visibility changes of a rectangular box as the user navigates the world.
Class TAbstractViewpointNode Base type for viewpoints in X3D, which are locations from which the user may view the scene.
Class TBillboardNode Grouping node that transforms the coordinate system of its children so that they always turn towards the viewer.
Class TCollisionNode Grouping node that specifies the collision detection properties for its children.
Class TLODNode Provides various levels of detail for a given object, only one of which will be visible at a given time.
Class TNavigationInfoNode Describe the physical characteristics of the viewer's avatar and navigation.
Class TOrthoViewpointNode Viewpoint that provides an orthographic view of the scene.
Class TViewpointNode Viewpoint that provides a perspective view of the scene.
Class TViewpointGroupNode Group of viewpoints.
Class TAbstractBackgroundNode Abstract type from which all backgrounds inherit.
Class TAbstract3DBackgroundNode Abstract type from which 3D backgrounds inherit.
Class TFogFunctionality Functionality of node that describes a fog (blend objects with a fog color).
Class TBackgroundNode 3D background of a scene, comprised of sky and ground colors (gradients) and optional six textures (skybox).
Class TFogNode Simulate atmospheric fog effects (for the whole scene) by blending with the fog colour, based on the distance from the viewer.
Class TFogCoordinateNode Provide explicit fog depths on a per-vertex basis.
Class TLocalFogNode Simulate atmospheric fog effects (for a part of the scene) by blending with the fog colour, based on the distance from the viewer.
Class TTextureBackgroundNode 3D background of a scene, comprised of sky and ground colors (gradients) and optional six textures (skybox), with flexible texture nodes.
Class THAnimDisplacerNode Alter the shape of coordinate-based geometry within parent H-Anim nodes.
Record TVertexJoints  
Class THAnimHumanoidNode Central node for moving the animated humanoid.
Class THAnimJointNode Joint of an animated humanoid.
Class THAnimSegmentNode Visible segment of an animated humanoid, always a child of a TJointNode.
Class THAnimMotionNode Motion animation of humanoid (THAnimHumanoidNode) characters.
Class THAnimSiteNode An attachment point of an animated humanoid, to attach something that held, worm or such by a humanoid.
Class TAbstractNurbsControlCurveNode Base type for nodes that provide control curve information in 2D space.
Class TAbstractParametricGeometryNode Base type for all geometry node types that are created parametrically and use control points to describe the final shape of the surface.
Class TAbstractNurbsSurfaceGeometryNode Abstract geometry type for all types of NURBS surfaces.
Class TContour2DNode Groups a set of curve segments for a composite contour, for X3D.
Class TContourPolyline2DNode Piecewise linear curve segment as a part of a trimming contour in the u, v domain of a surface.
Class TCoordinateDoubleNode 3D coordinates defines using double precision floating point values.
Class TNurbsCurveNode Visible NURBS curve in 3D.
Class TNurbsCurve2DNode Trimming segment that is expressed a NURBS curve and is part of a trimming contour in the u,v domain of the surface.
Class TNurbsOrientationInterpolatorNode Interpolate (animate) orientations as tangent vectors of the 3D NURBS curve.
Class TNurbsPatchSurfaceNode Visible NURBS 3D surface.
Class TNurbsPositionInterpolatorNode Interpolate (animate) positions along the 3D NURBS curve.
Class TNurbsSetNode Groups a set of NURBS surface nodes to a common group for rendering purposes, to ensure a common tesselation within the group.
Class TNurbsSurfaceInterpolatorNode Interpolate (animate) by sampling a position and normal at 3D NURBS surface from an input 2D surface parameters.
Class TNurbsSweptSurfaceNode Path in 2D space (that can be constructed from NURBS curves, or straight segments) extruded along a 3D NURBS curve.
Class TNurbsSwungSurfaceNode Path in 2D space (that can be constructed from NURBS curves, or straight segments) extruded along a 2D NURBS curve.
Class TNurbsTextureCoordinateNode NURBS surface existing in the parametric domain of its surface host specifying the mapping of the texture onto the surface.
Class TNurbsTrimmedSurfaceNode Visible 3D NURBS surface (like a TNurbsPatchSurfaceNode) that is trimmed by a set of trimming loops.
Class TAbstractScriptNode Abstract node type for all scripting nodes.
Class TScriptNode Program behavior in a scene using scripts.
Class TAbstractSequencerNode Base node type from which all sequencers (like TIntegerSequencerNode and TBooleanSequencerNode) are derived.
Class TAbstractTriggerNode Base type from which all trigger nodes are derived.
Class TBooleanFilterNode Filters boolean events, allowing for selective routing of TRUE or FALSE values and negation.
Class TBooleanSequencerNode Generate sequential boolean events.
Class TBooleanToggleNode Stores a boolean value for toggling on/off.
Class TBooleanTriggerNode Trigger node that generates Boolean events upon receiving time events.
Class TIntegerSequencerNode Generate sequential integer events.
Class TIntegerTriggerNode Generate an integer upon receiving any boolean value.
Class TTimeTriggerNode Generate time events upon receiving any boolean value.
Class TValueTriggerNode Generate events upon receiving a boolean TRUE value.
Class TAbstractShaderNode Base type for all node types that specify a programmable shader.
Class TAbstractVertexAttributeNode Base type for all node types that specify per-vertex attribute information to the shader.
Class TComposedShaderNode OpenGL Shading Language (GLSL) shader container, which should be composed from multiple TShaderPartNode instances.
Class TFloatVertexAttributeNode Per-vertex single-precision floating point attributes, available to shaders.
Class TMatrix3VertexAttributeNode Per-vertex 3x3 matrix attributes, available to shaders.
Class TMatrix4VertexAttributeNode Per-vertex 4x4 matrix attributes, available to shaders.
Class TPackagedShaderNode Single file that may contain a number of shaders and combined effects.
Class TProgramShaderNode Shader that can consist of one or more individually programmable, self-contained pieces in TShaderProgramNode, like a Microsoft HLSL shader.
Class TShaderPartNode OpenGL Shading Language (GLSL) shader part, used inside TComposedShaderNode.
Class TShaderProgramNode Self-container shader part used with TProgramShaderNode, for example with Microsoft HLSL shader language.
Class TAbstractProductStructureChildNode Abstract class for (most) nodes that are valid product structure children.
Class TCADAssemblyNode Holds a set of assemblies or parts grouped together.
Class TCADFaceNode Holds the geometry representing a face of a part.
Class TCADLayerNode Hierarchy of nodes used for showing layer structure for the CAD model.
Class TCADPartNode Represents the location and faces that constitute a part in the CAD model.
Class TIndexedQuadSetNode Quads.
Class TQuadSetNode Quads, not indexed.
Class TAbstractTexture3DNode Base type for all node types that specify 3D sources for texture images.
Class TComposedTexture3DNode 3D texture defined as a collection of 2D texture sources at various depths.
Class TImageTexture3DNode 3D texture loaded from a single file like DDS.
Class TPixelTexture3DNode 3D texture defined as an explicit array of pixel values inside the X3D file.
Class TTextureCoordinate3DNode 3D texture coordinates, partcularly useful with 3D textures.
Class TTextureCoordinate4DNode 4D (homogeneous 3D) texture coordinates, partcularly useful with 3D textures.
Class TTextureTransformMatrix3DNode Transformation of texture coordinates by a 4x4 matrix, particularly useful with 3D textures.
Class TTextureTransform3DNode Transformation of texture coordinates in 3D, partcularly useful with 3D textures.
Class TAbstractEnvironmentTextureNode Base type for cubic environment map textures.
Class TComposedCubeMapTextureNode Cube environment map texture defined as a six individual 2D texture nodes.
Class TGeneratedCubeMapTextureNode Cube environment map texture generated by rendering the 3D world, useful for real-time mirrors.
Class TImageCubeMapTextureNode Cube environment map texture loaded from a single file, like DDS.
Class TAbstractGeometryNode_1 Geometry node allowed only in VRML <= 1.0.
Class TAsciiTextNode_1  
Class TConeNode_1  
Class TCubeNode_1  
Class TCylinderNode_1  
Class TAbstractIndexedNode_1 Common base class for VRML 1.0 indexed nodes (IndexedFaceSet, IndexedTriangleMesh, IndexedLineSet).
Class TIndexedFacesOrTrianglesNode_1 Common base class for VRML 1.0 indexed polygon nodes (IndexedFaceSet and IndexedTriangleMesh).
Class TIndexedFaceSetNode_1  
Class TIndexedLineSetNode_1  
Class TPointSetNode_1  
Class TSphereNode_1  
Class TCoordinate3Node_1  
Class TFontStyleNode_1  
Class TInfoNode_1  
Class TLODNode_1  
Class TMaterialNode_1  
Class TMaterialBindingNode_1  
Class TNormalBindingNode_1  
Class TTexture2Node_1  
Class TTexture2TransformNode_1  
Class TTextureCoordinate2Node_1  
Class TShapeHintsNode_1  
Class TAbstractTransformationNode_1 Common base class for all VRML 1 nodes that modify the transformation.
Class TMatrixTransformNode_1 VRML 1.0 MatrixTransform node.
Class TRotationNode_1  
Class TScaleNode_1  
Class TTransformNode_1  
Class TTranslationNode_1  
Class TAbstractCameraNode_1 Common base class for all cameras in VRML 1.0.
Class TOrthographicCameraNode_1  
Class TPerspectiveCameraNode_1  
Class TDirectionalLightNode_1  
Class TPointLightNode_1  
Class TSpotLightNode_1  
Class TGroupNode_1  
Class TAbstractSeparatorNode_1 Base class for VRML 1.0 nodes that push / pop all attributes and matrices.
Class TSeparatorNode_1  
Class TSwitchNode_1  
Class TTransformSeparatorNode_1  
Class TWWWAnchorNode_1  
Class TWWWInlineNode_1 VRML 1.0 WWWInline node.
Class TIndexedTriangleMeshNode_1 IndexedTriangleMesh (from Inventor 1.0).
Class TRotationXYZNode_1 RotationXYZ node (from Inventor).
Class TDisplacerNode  
Class THumanoidNode  
Class TJointNode  
Class TSegmentNode  
Class TSiteNode  
Class TText3DNode Text with 3D depth.
Class TBlendModeNode Customize blending (partial transparency) mode.
Class TKambiAppearanceNode Appearance node with a special name KambiAppearance.
Class TKambiInlineNode Embed a scene from another file, and replace some of it's nodes.
Class TKambiNavigationInfoNode Navigation information with some Castle Game Engine extensions.
Class TGeneratedShadowMapNode Generate texture by rendering a depth (shadow) map.
Class TProjectedTextureCoordinateNode Generate texture coordinates by projection.
Class TScreenEffectNode Screen-space shader effect.
Class TMultiGeneratedTextureCoordinateNode Generated texture coordinates for multi-texturing.
Class TEffectNode Shader effect, that can be composed with other effect or standard rendering.
Class TEffectPartNode Part of a shader effect, used with TEffectNode.
Class TShaderTextureNode Procedural texture defined by shaders.
Class TViewpointMirrorNode Viewpoint for making reflections on flat objects.
Class TOrientationInterpolator2DNode Interpolate (animate) a 2D orientation, during which angle changes but axis remains constant.
Class TMatrixTransformNode Transform children by an explicit 4x4 matrix.
Class TTeapotNode Teapot geometry, useful for testing purposes.
Class TLoggerNode X3D events logging.
Class TConverterNode  
Class TRenderedTextureNode Texture with contents created by rendering the scene from a specific viewpoint.
Class TPlaneNode Alternative (deprecated) version of TRectangle2DNode, compatible with InstantReality X3D browser.
Class TTogglerNode Utility for setting and observing a boolean value in various ways.
Class TCommonSurfaceShaderNode Advanced material that can be heavily configured using textures (specular maps, normal maps and much more).
Class TImageBackgroundNode Display a 2D image as a background.
Class TEnvironmentNode Not implemented: Bindable node to setup rendering and culling parameters.
Class TX3DUnknownNode Not recognized VRML/X3D node type.
Class TX3DInterfaceDeclaration Interface declaration, used in VRML/X3D (exposed) prototypes and for nodes with dynamic fields (Script, ComposedShader).
Class TX3DInterfaceDeclarationList  
Class EX3DPrototypeInstantiateError Raised when there's a problem instantiating X3D prototype, see TX3DPrototypeNode.Instantiate.
Class TX3DPrototypeNode Node with information about X3D prototype.
Class TX3DPrototypeBase Common class to represent X3D external prototypes (referencing another file) or non-external prototypes (describing how to expand the prototype into other nodes).
Class TX3DPrototypeBaseList  
Class TX3DPrototype X3D non-external prototype (describing how to expand the prototype into other nodes).
Class TX3DExternalPrototype X3D external prototype (referencing another file).
Class TX3DRoute Route makes a connection between two X3D events, making the destination event occur when the source event happened.
Class TX3DRouteList  
Class TX3DImport Copyright 2002-2023 Michalis Kamburelis.
Class TX3DExport  
Class TX3DExportList  
Class TX3DBindableStackBasic  
Class TX3DEventsEngine Abstract class representing a scene that renders and processed events of the X3D nodes.
Class TX3DEventsEngineList  
Record TX3DNodeNameRec  
Class TX3DNodeNames List to track node names while parsing VRML/X3D file.
Class TX3DPrototypeNames  
Class TX3DImportableNames  
Class TX3DReaderNames Container tracking VRML/X3D node and prototype names during parsing.
Class ENodesManagerError  
Class ENodeClassRegisterError  
Class TNodesManager Manages X3D non-abstract node classes, that can be used in X3D files.

Functions and Procedures

function LoadX3DClassicFromString(const VRMLContents: String; const BaseUrl: String): TX3DRootNode; deprecated 'use LoadNode with TStringStream';
function LoadX3DClassic(const Url: String; const Gzipped: boolean): TX3DRootNode; deprecated 'use LoadNode';
function Save3DVersion(Node: TX3DNode): TX3DVersion;
procedure Save3D(Node: TX3DNode; const Stream: TStream; const Generator, Source: string; Version: TX3DVersion; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean = false); overload; deprecated 'use SaveNode';
procedure Save3D(Node: TX3DNode; const Url, Generator, Source: string; const Version: TX3DVersion; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean = false); overload; deprecated 'use SaveNode';
procedure Save3D(Node: TX3DNode; const Stream: TStream; const Generator, Source: string; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean = false); overload; deprecated 'use SaveNode';
procedure Save3D(Node: TX3DNode; const Url, Generator, Source: string; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean = false); overload; deprecated 'use SaveNode';
procedure Save3D(Node: TX3DNode; const Url: String; const Generator: string = ''; const Source: string = ''); overload; deprecated 'use SaveNode';
function Save3DWillConvertToX3D(Version: TX3DVersion; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean): boolean;
procedure X3DNodeList_FreeUnusedAndNil(var List: TX3DNodeList);
function KeyRange(Key: TSingleList; const Fraction: Single; out T: Single): Integer;
procedure FreeIfUnusedAndNil(var Obj);

Types

TX3DNodeClass = class of TX3DNode;
TX3DNodeProc = procedure (Node: TX3DNode) of object;
TX3DNodeSearchProc = function (Node: TX3DNode): Pointer of object;
PTraversingInfo = ˆTTraversingInfo;
TTraversingFunc = function (Node: TX3DNode; StateStack: TX3DGraphTraverseStateStack; ParentInfo: PTraversingInfo; var TraverseIntoChildren: boolean): Pointer of object;
TTraversingAfterFunc = procedure (Node: TX3DNode; StateStack: TX3DGraphTraverseStateStack; ParentInfo: PTraversingInfo) of object;
TEnumerateChildrenFunction = function (Node, Child: TX3DNode): Pointer of object;
TEnumerateReplaceNodesFunction = procedure (ParentNode: TX3DNode; var Node: TX3DNode) of object;
TX3DAccessType = (...);
TX3DAccessTypes = set of TX3DAccessType;
TNodeTransformationChange = (...);
TX3DVersion = CastleInternalX3DLexer.TX3DVersion;
TX3DEncoding = CastleInternalX3DLexer.TX3DEncoding;
TVRML1StateNode = (...);
PLightInstance = ˆTLightInstance;
PClipPlane = ˆTClipPlane;
TNodeDestructionNotification = procedure (const Node: TX3DNode) of object;
TNodeFunctionalityList = specialize TObjectList<TNodeFunctionality>;
TNodeFunctionalityClass = class of TNodeFunctionality;
TFindNodeOption = (...);
TFindNodeOptions = set of TFindNodeOption;
TTextureUpdate = (...);
TAllowedChildren = (...);
TNodeChangeEvent = procedure (const Sender: TSFNode; const NewNode: TX3DNode) of object;
TX3DMaterialInfoAbstract = TMaterialInfo deprecated 'use TMaterialInfo';
TTimeFunction = function: TFloatTime of object;
TAbstractX3DGroupingNode = TAbstractGroupingNode deprecated 'use TAbstractGroupingNode';
TGroupNode_2 = TGroupNode;
TSwitchNode_2 = TSwitchNode;
TTransformNode_2 = TTransformNode;
TCoordRangeHandler = procedure (const RangeNumber: Cardinal; BeginIndex, EndIndex: Integer) of object;
TIndexedPolygonHandler = procedure (const Indexes: array of Cardinal) of object;
TAbstractGeometryNodeClass = class of TAbstractGeometryNode;
TAbstractX3DGeometryNode = TAbstractGeometryNode deprecated 'use TAbstractGeometryNode';
TLineMode = (...);
TIndexedLineSetNode_2 = TIndexedLineSetNode;
TPointSetNode_2 = TPointSetNode;
TShading = (...);
TShapeCollision = (...);
TAlphaMode = (...);
TMaterialNode_2 = TMaterialNode;
TConeNode_2 = TConeNode;
TCylinderNode_2 = TCylinderNode;
TIndexedFaceSetNode_2 = TIndexedFaceSetNode;
TSphereNode_2 = TSphereNode;
TArcClosureType = (...);
TX3DFontFamily = (...);
TX3DFontJustify = (...);
TX3DFontStyle = (...);
TFontStyleNode_2 = TFontStyleNode deprecated 'use TFontStyleNode';
TLightScope = (...);
TDirectionalLightNode_2 = TDirectionalLightNode;
TPointLightNode_2 = TPointLightNode;
TSpotLightNode_2 = TSpotLightNode;
TAbstractX3DTexture2DNode = TAbstractTexture2DNode deprecated 'use TAbstractTexture2DNode';
TBoundaryMode = (...);
TInterpolation = (...);
TAbstractX3DViewpointNode = TAbstractViewpointNode deprecated 'use TAbstractViewpointNode';
TX3DViewpointClassNode = class of TAbstractViewpointNode;
TBackgroundSide = (...);
TFogTypeOrNone = (...);
TFogType = ftLinear..ftExponential;
PVertexJoints = ˆTVertexJoints;
TVertexJointsList = specialize TStructList<TVertexJoints>;
TNurbsCurveNode_3 = TNurbsCurveNode;
TNurbsPositionInterpolatorNode_3 = TNurbsPositionInterpolatorNode;
TShaderLanguage = (...);
TShadowMapCompareMode = (...);
TMatrixTransformNode_2 = TMatrixTransformNode;
PX3DNodeNameRec = ˆTX3DNodeNameRec;
EGzipCompressed = CastleInternalX3DLexer.EGzipCompressed;

Constants

LoadX3DClassic_FileFilters = 'All files|*|' + '*VRML (*.wrl, *.wrl.gz, *.wrz)|*.wrl;*.wrl.gz;*.wrz' deprecated 'use LoadNode and LoadScene_FileFilters';
LoadX3DXml_FileFilters = 'All files|*|' + '*X3D XML (*.x3d, *.x3dz, *.x3d.gz)|*.x3d;*.x3dz;*.x3d.gz' deprecated 'use LoadNode and LoadScene_FileFilters';
DefaultMaterial_1AmbientColor: TVector3 = (X: 0.2; Y: 0.2; Z: 0.2) deprecated 'use TPhongMaterialInfo.DefaultAmbientColor';
DefaultMaterialAmbientIntensity = 0.2 deprecated 'use TPhongMaterialInfo.DefaultAmbientIntensity';
DefaultMaterialDiffuseColor: TVector3 = (X: 0.8; Y: 0.8; Z: 0.8) deprecated 'use TPhongMaterialInfo.DefaultDiffuseColor';
DefaultMaterialSpecularColor: TVector3 = (X: 0; Y: 0; Z: 0) deprecated 'use TPhongMaterialInfo.DefaultSpecularColor';
DefaultMaterialEmissiveColor: TVector3 = (X: 0; Y: 0; Z: 0) deprecated 'use TPhongMaterialInfo.DefaultEmissiveColor';
DefaultMaterialShininess = 0.2 deprecated 'use TPhongMaterialInfo.DefaultShininess';
DefaultMaterialTransparency = 0.0 deprecated 'use TPhongMaterialInfo.DefaultTransparency';
DefaultMaterialMirror = 0.0 deprecated 'use TPhongMaterialInfo.DefaultMirror';
DefaultMaterialReflSpecularExp = 1000000 deprecated 'use TPhongMaterialInfo.DefaultReflSpecularExp';
DefaultMaterialTransSpecularExp = 1000000 deprecated 'use TPhongMaterialInfo.DefaultTransSpecularExp';
DefaultAlphaCutoff = 0.5;
BIND_DEFAULT = 0 deprecated 'use X3D instead of VRML 1 nodes';
BIND_OVERALL = 1 deprecated 'use X3D instead of VRML 1 nodes';
BIND_PER_PART = 2 deprecated 'use X3D instead of VRML 1 nodes';
BIND_PER_PART_INDEXED = 3 deprecated 'use X3D instead of VRML 1 nodes';
BIND_PER_FACE = 4 deprecated 'use X3D instead of VRML 1 nodes';
BIND_PER_FACE_INDEXED = 5 deprecated 'use X3D instead of VRML 1 nodes';
BIND_PER_VERTEX = 6 deprecated 'use X3D instead of VRML 1 nodes';
BIND_PER_VERTEX_INDEXED = 7 deprecated 'use X3D instead of VRML 1 nodes';
VERTORDER_UNKNOWN = 0 deprecated 'use X3D instead of VRML 1 nodes';
VERTORDER_CLOCKWISE = 1 deprecated 'use X3D instead of VRML 1 nodes';
VERTORDER_COUNTERCLOCKWISE = 2 deprecated 'use X3D instead of VRML 1 nodes';
SHTYPE_UNKNOWN = 0 deprecated 'use X3D instead of VRML 1 nodes';
SHTYPE_SOLID = 1 deprecated 'use X3D instead of VRML 1 nodes';
FACETYPE_UNKNOWN = 0 deprecated 'use X3D instead of VRML 1 nodes';
FACETYPE_CONVEX = 1 deprecated 'use X3D instead of VRML 1 nodes';
FSFAMILY_SERIF = 0 deprecated 'use ffSerif (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family';
FSFAMILY_SANS = 1 deprecated 'use ffSans (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family';
FSFAMILY_TYPEWRITER = 2 deprecated 'use ffTypeWriter (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family';
FSSTYLE_BOLD = 0 deprecated 'use TFontStyleNode.Bold as a simple boolean';
FSSTYLE_ITALIC = 1 deprecated 'use TFontStyleNode.Italic as a simple boolean';
CONE_PARTS_SIDES = 0 deprecated 'use X3D instead of VRML 1 nodes';
CONE_PARTS_BOTTOM = 1 deprecated 'use X3D instead of VRML 1 nodes';
CYLINDER_PARTS_SIDES = 0 deprecated 'use X3D instead of VRML 1 nodes';
CYLINDER_PARTS_TOP = 1 deprecated 'use X3D instead of VRML 1 nodes';
CYLINDER_PARTS_BOTTOM = 2 deprecated 'use X3D instead of VRML 1 nodes';
DefaultHeightMapScale = 0.01;
DefaultVRML1CreaseAngle = 0.5;
DefaultViewpointFieldOfView = TCastlePerspective.DefaultFieldOfView;
DefaultNavigationInfoHeadlight = true;
DefaultRenderedTextureWidth = 128;
DefaultRenderedTextureHeight = 128;
VRML1Version: TX3DVersion = (Major: 1; Minor: 0);
VRML2Version: TX3DVersion = (Major: 2; Minor: 0);
X3DVersion: TX3DVersion = (Major: 4; Minor: 0);
xeClassic = CastleInternalX3DLexer.xeClassic;
xeXML = CastleInternalX3DLexer.xeXML;
MinTriangulationSlices: Cardinal = 3;
MinTriangulationStacks: Cardinal = 1;
VRML1StateClasses: array [TVRML1StateNode] of TX3DNodeClass = ( TCoordinate3Node_1, TShapeHintsNode_1, TFontStyleNode_1, TMaterialNode_1, TMaterialBindingNode_1, TNormalNode, TNormalBindingNode_1, TTexture2Node_1, TTextureCoordinate2Node_1 ) deprecated 'use X3D instead of VRML 1 nodes';
BoolRepeatToBoundaryMode: array [Boolean] of TBoundaryMode = ( bmClampToEdge, bmRepeat );
ftExp = ftExponential deprecated 'use ftExponential';
DefaultAnimationPrefix = '';
AllAccessTypes = [atInputOnly, atOutputOnly, atInitializeOnly, atInputOutput];
RestrictedAccessTypes = [atInputOnly, atOutputOnly, atInitializeOnly];

Variables

NodesManager: TNodesManager;
DefaultTriangulationSlices: Cardinal = 30;
DefaultTriangulationStacks: Cardinal = 20;
AnyNodeDestructionNotifications: TNodeDestructionNotificationList;
X3DCache: TX3DFontTexturesCache;
WarnAboutAbsoluteFilenames: boolean = true;
RebaseRelativeUrlsInPrototypes: boolean = false;
DefaultFontData: array [ TX3DFontFamily, Boolean, Boolean ] of TTextureFontData;

Description

Functions and Procedures

function LoadX3DClassicFromString(const VRMLContents: String; const BaseUrl: String): TX3DRootNode; deprecated 'use LoadNode with TStringStream';

Warning: this symbol is deprecated: use LoadNode with TStringStream

Load VRML/X3D file in classic encoding from a string. Return it's root node.

Exceptions raised
EGzipCompressed
If the Stream is compressed with gzip.
function LoadX3DClassic(const Url: String; const Gzipped: boolean): TX3DRootNode; deprecated 'use LoadNode';

Warning: this symbol is deprecated: use LoadNode

Load VRML/X3D file in classic encoding, return it's root node.

Automatically handles VRML/X3D files compressed with gzip, uncompressing them on the fly.

URL without any protocol is treated as a filename (absolute or relative to current dir). We can also load network URLs using CastleDownload.

If Gzipped then we can be relatively sure that stream is gzipped. Otherwise, it can still be gzipped (.wrl files are sometimes gzipped without extension indicating it).

function Save3DVersion(Node: TX3DNode): TX3DVersion;

Which VRML/X3D version should be used to save this 3D model.

procedure Save3D(Node: TX3DNode; const Stream: TStream; const Generator, Source: string; Version: TX3DVersion; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean = false); overload; deprecated 'use SaveNode';

Warning: this symbol is deprecated: use SaveNode

Write VRML/X3D model to a file. Generates a complete file, with header lines (XML headers, or #VRML / #X3D in classic encoding) and everything.

Overloaded version that takes an URL will automatically compress the file with gzip if an extension indicating gzip compression is present (like .x3dv.gz, or .x3d.gz).

Generator and Source, if not empty, will be used to set appropriate META values of X3D root file node. This way you can indicate inside X3D file the generator (your program) name and source (original 3D model file name). If this is not an X3D root file node, we will record it inside a comment.

Conversion to X3D:

When ForceConvertingToX3D or when Encoding <> xeClassic, the node graph will be converted to X3D (if it isn't X3D already). This can be used to convert VRML 2.0 to X3D.

This should not be used if the original file version (recorded in Node) indicates that it's an old VRML 1.0 or Inventor file, as we have not implemented convertion from VRML 1.0/Inventor to X3D. So it wil result in VRML 1.0/Inventor nodes saved using the X3D (XML or classic) encoding, which is not a format supported by any X3D reader (even our own).

Note that converting VRML 2.0 to X3D will change the nodes graph in-place, possibly removing some nodes. If you use TCastleSceneCore, you should call TCastleSceneCore.BeforeNodesFree before such operation, and TCastleSceneCore.ChangedAll afterwards. (You can easily test whether they will be needed by Save3DWillConvertToX3D).

If you use Encoding=xeClassic and ForceConvertingToX3D=false, no conversion will ever happen.

Parameters
Version
Which VRML/X3D specification version should be used to encode. It should be calculated by Save3DVersion(Node). You often want to calculate it yourself, before calling Save3D, this way you can propose a sensible saved model extension for user (.wrl for VRML <= 2.0 in classic encoding, .x3dv for X3D in classic encoding).

Note that this parameter is not a mechanism to convert between various VRML/X3D versions. This procedure does not convert VRML/X3D nodes/fields inside. For example, you can't just change Version.Major value from 1 to 3 to convert VRML 1.0 to X3D. It would cause some information to be encoded in X3D style (e.g. generated file will have X3D header and PROFILE information), but the nodes would stil have VRML 1.0 names and fields. Which means that you would not generate correct X3D file.

So this should really be calculated based on model contents, usually by Save3DVersion(Node).

A limited VRML 2.0 conversion is possible by ForceConvertingToX3D = true. In this case, Version will be automatically changed to X3D anyway.

procedure Save3D(Node: TX3DNode; const Url, Generator, Source: string; const Version: TX3DVersion; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean = false); overload; deprecated 'use SaveNode';

Warning: this symbol is deprecated: use SaveNode

This item has no description.

procedure Save3D(Node: TX3DNode; const Stream: TStream; const Generator, Source: string; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean = false); overload; deprecated 'use SaveNode';

Warning: this symbol is deprecated: use SaveNode

This item has no description.

procedure Save3D(Node: TX3DNode; const Url, Generator, Source: string; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean = false); overload; deprecated 'use SaveNode';

Warning: this symbol is deprecated: use SaveNode

This item has no description.

procedure Save3D(Node: TX3DNode; const Url: String; const Generator: string = ''; const Source: string = ''); overload; deprecated 'use SaveNode';

Warning: this symbol is deprecated: use SaveNode

This item has no description.

function Save3DWillConvertToX3D(Version: TX3DVersion; const Encoding: TX3DEncoding; const ForceConvertingToX3D: boolean): boolean;

This item has no description.

procedure X3DNodeList_FreeUnusedAndNil(var List: TX3DNodeList);

Free all unused X3D nodes on the list, then free and Nil the list itself. Ignores Nil items within the list.

function KeyRange(Key: TSingleList; const Fraction: Single; out T: Single): Integer;

Find a range within "key" field corresponding to given Fraction. Returns the index of right range delimiter. So for normal ranges (between two values of "key" field) it's always between 1 and Key.Count - 1. Result 0 indicates we're before the left limit, and result equal Key.Count indicates we're after right limit.

Result is always between 0 and Key.Count.

Output T is the value between 0..1 indicating where within the range we are. It's undefined when Result is 0 or Key.Count (indicating we're outside limits).

Call this only when Key.Count > 0.

This is useful to interpreting TAbstractInterpolatorNode.KeyRange and such fields.

procedure FreeIfUnusedAndNil(var Obj);

Free TX3DNode if it is unused (see TX3DNode.FreeIfUnused), setting reference to Nil. Analogous to standard FreeAndNil, but checks if node is used first.

Types

TX3DNodeClass = class of TX3DNode;

This item has no description.

TX3DNodeProc = procedure (Node: TX3DNode) of object;

This item has no description.

TX3DNodeSearchProc = function (Node: TX3DNode): Pointer of object;

This item has no description.

PTraversingInfo = ˆTTraversingInfo;

This item has no description.

TTraversingFunc = function (Node: TX3DNode; StateStack: TX3DGraphTraverseStateStack; ParentInfo: PTraversingInfo; var TraverseIntoChildren: boolean): Pointer of object;

Used as a callback by TX3DNode.Traverse.

TTraversingAfterFunc = procedure (Node: TX3DNode; StateStack: TX3DGraphTraverseStateStack; ParentInfo: PTraversingInfo) of object;

This item has no description.

TEnumerateChildrenFunction = function (Node, Child: TX3DNode): Pointer of object;

This item has no description.

TEnumerateReplaceNodesFunction = procedure (ParentNode: TX3DNode; var Node: TX3DNode) of object;

This item has no description.

TX3DAccessType = (...);

This item has no description.

Values
  • atInputOnly
  • atOutputOnly
  • atInitializeOnly
  • atInputOutput
TX3DAccessTypes = set of TX3DAccessType;

This item has no description.

TNodeTransformationChange = (...);

This item has no description.

Values
TX3DVersion = CastleInternalX3DLexer.TX3DVersion;

This item has no description.

TX3DEncoding = CastleInternalX3DLexer.TX3DEncoding;

This item has no description.

TVRML1StateNode = (...);

Node types used with TVRML1State.

Values
  • vsCoordinate3
  • vsShapeHints
  • vsFontStyle
  • vsMaterial
  • vsMaterialBinding
  • vsNormal
  • vsNormalBinding
  • vsTexture2
  • vsTextureCoordinate2
PLightInstance = ˆTLightInstance;

This item has no description.

PClipPlane = ˆTClipPlane;

This item has no description.

TNodeDestructionNotification = procedure (const Node: TX3DNode) of object;

Copyright 2002-2018 Michalis Kamburelis.

This file is part of "Castle Game Engine".

"Castle Game Engine" is free software; see the file COPYING.txt, included in this distribution, for details about the copyright.

"Castle Game Engine" is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

—————————————————————————-

TNodeFunctionalityList = specialize TObjectList<TNodeFunctionality>;

This item has no description.

TNodeFunctionalityClass = class of TNodeFunctionality;

This item has no description.

TFindNodeOption = (...);

This item has no description.

Values
  • fnNilOnMissing
  • fnOnlyActive
TFindNodeOptions = set of TFindNodeOption;

This item has no description.

TTextureUpdate = (...);

Possible update modes for generated textures (like TGeneratedCubeMapTextureNode.Update).

Values
  • upNone
  • upNextFrameOnly
  • upAlways
TAllowedChildren = (...);

Copyright 2002-2022 Michalis Kamburelis.

This file is part of "Castle Game Engine".

"Castle Game Engine" is free software; see the file COPYING.txt, included in this distribution, for details about the copyright.

"Castle Game Engine" is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

—————————————————————————-

Values
  • acAll
  • acClasses
  • acFunctionality
TNodeChangeEvent = procedure (const Sender: TSFNode; const NewNode: TX3DNode) of object;

This item has no description.

TX3DMaterialInfoAbstract = TMaterialInfo deprecated 'use TMaterialInfo';

Warning: this symbol is deprecated: use TMaterialInfo

This item has no description.

TTimeFunction = function: TFloatTime of object;

Copyright 2008-2022 Michalis Kamburelis.

This file is part of "Castle Game Engine".

"Castle Game Engine" is free software; see the file COPYING.txt, included in this distribution, for details about the copyright.

"Castle Game Engine" is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

—————————————————————————-

TAbstractX3DGroupingNode = TAbstractGroupingNode deprecated 'use TAbstractGroupingNode';

Warning: this symbol is deprecated: use TAbstractGroupingNode

This item has no description.

TGroupNode_2 = TGroupNode;

This item has no description.

TSwitchNode_2 = TSwitchNode;

This item has no description.

TTransformNode_2 = TTransformNode;

This item has no description.

TCoordRangeHandler = procedure (const RangeNumber: Cardinal; BeginIndex, EndIndex: Integer) of object;

This item has no description.

TIndexedPolygonHandler = procedure (const Indexes: array of Cardinal) of object;

This item has no description.

TAbstractGeometryNodeClass = class of TAbstractGeometryNode;

This item has no description.

TAbstractX3DGeometryNode = TAbstractGeometryNode deprecated 'use TAbstractGeometryNode';

Warning: this symbol is deprecated: use TAbstractGeometryNode

This item has no description.

TLineMode = (...);

Mode for line primitive defined by TIndexedLineSetNode or TLineSetNode.

Values
  • lmStrip: Lines form a strip (polyline).

    In case of TIndexedLineSetNode, indexes (TIndexedLineSetNode.FdIndex) may be separated by -1 to define many strips in an TIndexedLineSetNode.

    In case of TLineSetNode, count (TIndexedLineSetNode.FdVertexCount) defines how many vertexes are for each strip.

  • lmLoop: Lines form a loop (closed polyline).

    In case of TIndexedLineSetNode, indexes (TIndexedLineSetNode.FdIndex) may be separated by -1 to define many loop in an TIndexedLineSetNode.

    In case of TLineSetNode, count (TIndexedLineSetNode.FdVertexCount) defines how many vertexes are for each loop.

  • lmPair: Each pair of vertexes forms a line. If the number of vertexes is odd, the last (unmatched) vertex is ignored.

    In case of TIndexedLineSetNode, all indexes must be >= 0.

    In case of TLineSetNode, vertexCount is ignored.

TIndexedLineSetNode_2 = TIndexedLineSetNode;

This item has no description.

TPointSetNode_2 = TPointSetNode;

This item has no description.

TShading = (...);

This item has no description.

Values
  • shDefault
  • shGouraud
  • shPhong
  • shWireframe
TShapeCollision = (...);

This item has no description.

Values
  • scDefault
  • scBox
  • scNone
TAlphaMode = (...);

Alpha mode, for TAppearanceNode.AlphaMode.

Values
  • amAuto: Automatically detect alpha treatment.
  • amOpaque: Render shape as opaque (ignore resulting alpha).
  • amMask: Render shape using alpha testing (resulting alpha < 0.5 implies a transparent shape).
  • amBlend: Render shape using blending (supports partial transparency).
TMaterialNode_2 = TMaterialNode;

This item has no description.

TConeNode_2 = TConeNode;

This item has no description.

TCylinderNode_2 = TCylinderNode;

This item has no description.

TIndexedFaceSetNode_2 = TIndexedFaceSetNode;

This item has no description.

TSphereNode_2 = TSphereNode;

This item has no description.

TArcClosureType = (...);

Type of TArcClose2DNode.ClosureType. See X3D specification about the possible arc closure types: https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry2D.html#ArcClose2D

Values
  • acPie
  • acChord
TX3DFontFamily = (...);

Font family that can be specified by a TFontStyleNode.

Values
  • ffSerif
  • ffSans
  • ffTypeWriter
TX3DFontJustify = (...);

Font justification that can be specified by a TFontStyleNode.

Values
  • fjFirst
  • fjBegin
  • fjMiddle
  • fjEnd
TX3DFontStyle = (...);

Font style that can be specified by a TFontStyleNode.Style.

Values
  • fsPlain
  • fsBold
  • fsItalic
  • fsBoldItalic
TFontStyleNode_2 = TFontStyleNode deprecated 'use TFontStyleNode';

Warning: this symbol is deprecated: use TFontStyleNode

This item has no description.

TLightScope = (...);

This item has no description.

Values
  • lsGlobal: Light shines everywhere. VRML/X3D >= 2 calls these lights global.
  • lsLocal: Light shines only within it's VRML/X3D grouping node. VRML/X3D >= 2 calls these lights not global.
  • lsLocalVRML1: Light shines only on the following shapes within it's VRML/X3D grouping node. This is used by VRML 1.0 (and Inventor) light sources.
TDirectionalLightNode_2 = TDirectionalLightNode;

This item has no description.

TPointLightNode_2 = TPointLightNode;

This item has no description.

TSpotLightNode_2 = TSpotLightNode;

This item has no description.

TAbstractX3DTexture2DNode = TAbstractTexture2DNode deprecated 'use TAbstractTexture2DNode';

Warning: this symbol is deprecated: use TAbstractTexture2DNode

This item has no description.

TBoundaryMode = (...);

Boundary modes for texture coordinates. See TTexturePropertiesNode.BoundaryModeS, TTexturePropertiesNode.BoundaryModeT, TTexturePropertiesNode.BoundaryModeR.

Values
TInterpolation = (...);

Interpolation mode, for TAbstractInterpolatorNode.Interpolation.

Values
  • inLinear: The value changes linearly from previous to next. Some interpolators have a specific algorithm for "linear change", for example colors are interpolated in HSV (LerpRgbInHsv), rotations are interpolated using Slerp.
  • inStep: The value changes immediately from previous to next, at the time of next key. Before the time of 1st key, the value is equal to the 1st value.

    E.g. key = [ 0.1, 0.2 ], keyValue = [ 1 2 ] => value is 1 when time is [0, 0.2), value is 2 when time is [0.2, ...].

    This is consistent with glTF "step" interpolation, see https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#appendix-c-interpolation .

TAbstractX3DViewpointNode = TAbstractViewpointNode deprecated 'use TAbstractViewpointNode';

Warning: this symbol is deprecated: use TAbstractViewpointNode

This item has no description.

TX3DViewpointClassNode = class of TAbstractViewpointNode;

This item has no description.

TBackgroundSide = (...);

Side of the background (skybox), used with TBackgroundNode.

Values
  • bsBack
  • bsBottom
  • bsFront
  • bsLeft
  • bsRight
  • bsTop
TFogTypeOrNone = (...);

This item has no description.

Values
  • ftLinear
  • ftExponential
  • ftNone
TFogType = ftLinear..ftExponential;

This item has no description.

PVertexJoints = ˆTVertexJoints;

This item has no description.

TVertexJointsList = specialize TStructList<TVertexJoints>;

This item has no description.

TNurbsCurveNode_3 = TNurbsCurveNode;

This item has no description.

TNurbsPositionInterpolatorNode_3 = TNurbsPositionInterpolatorNode;

This item has no description.

TShaderLanguage = (...);

Shader language used for TAbstractShaderNode.Language and TEffectNode.Language.

Values
  • slDefault
  • slCG
  • slGLSL
  • slHLSL
TShadowMapCompareMode = (...);

This item has no description.

Values
  • smCompareRLEqual
  • smCompareRGEqual
  • smNone
TMatrixTransformNode_2 = TMatrixTransformNode;

This item has no description.

PX3DNodeNameRec = ˆTX3DNodeNameRec;

This item has no description.

EGzipCompressed = CastleInternalX3DLexer.EGzipCompressed;

Raised by classic X3D loading routines when the stream is compressed with gzip.

Constants

LoadX3DClassic_FileFilters = 'All files|*|' + '*VRML (*.wrl, *.wrl.gz, *.wrz)|*.wrl;*.wrl.gz;*.wrz' deprecated 'use LoadNode and LoadScene_FileFilters';

Warning: this symbol is deprecated: use LoadNode and LoadScene_FileFilters

File filters if you want to open a file and then pass it to LoadX3DClassic. Suitable for TCastleWindow.FileDialog and such.

LoadX3DXml_FileFilters = 'All files|*|' + '*X3D XML (*.x3d, *.x3dz, *.x3d.gz)|*.x3d;*.x3dz;*.x3d.gz' deprecated 'use LoadNode and LoadScene_FileFilters';

Warning: this symbol is deprecated: use LoadNode and LoadScene_FileFilters

Global routines for parsing XML X3D encoding.

DefaultMaterial_1AmbientColor: TVector3 = (X: 0.2; Y: 0.2; Z: 0.2) deprecated 'use TPhongMaterialInfo.DefaultAmbientColor';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultAmbientColor

Copyright 2002-2023 Michalis Kamburelis.

This file is part of "Castle Game Engine".

"Castle Game Engine" is free software; see the file COPYING.txt, included in this distribution, for details about the copyright.

"Castle Game Engine" is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

—————————————————————————-

DefaultMaterialAmbientIntensity = 0.2 deprecated 'use TPhongMaterialInfo.DefaultAmbientIntensity';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultAmbientIntensity

This item has no description.

DefaultMaterialDiffuseColor: TVector3 = (X: 0.8; Y: 0.8; Z: 0.8) deprecated 'use TPhongMaterialInfo.DefaultDiffuseColor';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultDiffuseColor

This item has no description.

DefaultMaterialSpecularColor: TVector3 = (X: 0; Y: 0; Z: 0) deprecated 'use TPhongMaterialInfo.DefaultSpecularColor';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultSpecularColor

This item has no description.

DefaultMaterialEmissiveColor: TVector3 = (X: 0; Y: 0; Z: 0) deprecated 'use TPhongMaterialInfo.DefaultEmissiveColor';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultEmissiveColor

This item has no description.

DefaultMaterialShininess = 0.2 deprecated 'use TPhongMaterialInfo.DefaultShininess';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultShininess

This item has no description.

DefaultMaterialTransparency = 0.0 deprecated 'use TPhongMaterialInfo.DefaultTransparency';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultTransparency

This item has no description.

DefaultMaterialMirror = 0.0 deprecated 'use TPhongMaterialInfo.DefaultMirror';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultMirror

This item has no description.

DefaultMaterialReflSpecularExp = 1000000 deprecated 'use TPhongMaterialInfo.DefaultReflSpecularExp';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultReflSpecularExp

This item has no description.

DefaultMaterialTransSpecularExp = 1000000 deprecated 'use TPhongMaterialInfo.DefaultTransSpecularExp';

Warning: this symbol is deprecated: use TPhongMaterialInfo.DefaultTransSpecularExp

This item has no description.

DefaultAlphaCutoff = 0.5;

Default value of TAppearanceNode.AlphaCutoff.

BIND_DEFAULT = 0 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

Constants for TMaterialBindingNode_1.FdValue.Value and TNormalBindingNode_1.FdValue.Value.

BIND_OVERALL = 1 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

BIND_PER_PART = 2 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

BIND_PER_PART_INDEXED = 3 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

BIND_PER_FACE = 4 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

BIND_PER_FACE_INDEXED = 5 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

BIND_PER_VERTEX = 6 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

BIND_PER_VERTEX_INDEXED = 7 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

VERTORDER_UNKNOWN = 0 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

Constants for TShapeHintsNode_1.FdVertexOrdering.Value.

VERTORDER_CLOCKWISE = 1 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

VERTORDER_COUNTERCLOCKWISE = 2 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

SHTYPE_UNKNOWN = 0 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

Constants for TShapeHintsNode_1.FdShapeType.Value.

SHTYPE_SOLID = 1 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

FACETYPE_UNKNOWN = 0 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

Constants for TShapeHintsNode_1.FdFaceType.Value.

FACETYPE_CONVEX = 1 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

FSFAMILY_SERIF = 0 deprecated 'use ffSerif (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family';

Warning: this symbol is deprecated: use ffSerif (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family

Constants for TFontStyleNode.FdFamily.Value.

FSFAMILY_SANS = 1 deprecated 'use ffSans (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family';

Warning: this symbol is deprecated: use ffSans (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family

This item has no description.

FSFAMILY_TYPEWRITER = 2 deprecated 'use ffTypeWriter (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family';

Warning: this symbol is deprecated: use ffTypeWriter (TX3DFontFamily an enumerated type) with the properties like TFontStyleNode.Family

This item has no description.

FSSTYLE_BOLD = 0 deprecated 'use TFontStyleNode.Bold as a simple boolean';

Warning: this symbol is deprecated: use TFontStyleNode.Bold as a simple boolean

Constants for VRML 1.0 TFontStyleNode_1.FdStyle flags.

FSSTYLE_ITALIC = 1 deprecated 'use TFontStyleNode.Italic as a simple boolean';

Warning: this symbol is deprecated: use TFontStyleNode.Italic as a simple boolean

This item has no description.

CONE_PARTS_SIDES = 0 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

Constants for TConeNode.FdParts.Flags.

CONE_PARTS_BOTTOM = 1 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

CYLINDER_PARTS_SIDES = 0 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

Constants for TCylinderNode.FdParts.Flags.

CYLINDER_PARTS_TOP = 1 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

CYLINDER_PARTS_BOTTOM = 2 deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

This item has no description.

DefaultHeightMapScale = 0.01;

This item has no description.

DefaultVRML1CreaseAngle = 0.5;

This item has no description.

DefaultViewpointFieldOfView = TCastlePerspective.DefaultFieldOfView;

This item has no description.

DefaultNavigationInfoHeadlight = true;

This item has no description.

DefaultRenderedTextureWidth = 128;

This item has no description.

DefaultRenderedTextureHeight = 128;

This item has no description.

VRML1Version: TX3DVersion = (Major: 1; Minor: 0);

This item has no description.

VRML2Version: TX3DVersion = (Major: 2; Minor: 0);

This item has no description.

X3DVersion: TX3DVersion = (Major: 4; Minor: 0);

Latest X3D version supported.

xeClassic = CastleInternalX3DLexer.xeClassic;

This item has no description.

xeXML = CastleInternalX3DLexer.xeXML;

This item has no description.

MinTriangulationSlices: Cardinal = 3;

Minimal values for DefaultTriangulationSlices, DefaultTriangulationStacks.

Note that MinTriangulationSlices can be lower (2), it works, but the result isn't really sensible.

MinTriangulationStacks: Cardinal = 1;

This item has no description.

VRML1StateClasses: array [TVRML1StateNode] of TX3DNodeClass = ( TCoordinate3Node_1, TShapeHintsNode_1, TFontStyleNode_1, TMaterialNode_1, TMaterialBindingNode_1, TNormalNode, TNormalBindingNode_1, TTexture2Node_1, TTextureCoordinate2Node_1 ) deprecated 'use X3D instead of VRML 1 nodes';

Warning: this symbol is deprecated: use X3D instead of VRML 1 nodes

Classes corresponding to nodes on TVRML1State.

BoolRepeatToBoundaryMode: array [Boolean] of TBoundaryMode = ( bmClampToEdge, bmRepeat );

Convert Boolean meaning "repeat" into TBoundaryMode. Useful to convert e.g. TImageTextureNode.RepeatS value into TTexturePropertiesNode.BoundaryModeS value.

ftExp = ftExponential deprecated 'use ftExponential';

Warning: this symbol is deprecated: use ftExponential

This item has no description.

DefaultAnimationPrefix = '';

Standard prefix name for a time sensor to be recognized as a "named animation" for TCastleSceneCore.PlayAnimation and friends.

AllAccessTypes = [atInputOnly, atOutputOnly, atInitializeOnly, atInputOutput];

This item has no description.

RestrictedAccessTypes = [atInputOnly, atOutputOnly, atInitializeOnly];

This item has no description.

Variables

NodesManager: TNodesManager;

Singleton to manage X3D non-abstract node classes, that can be used in X3D files.

In normal circumstances, this is the only instance of TNodesManager class ever created. It is created / destroyed in this unit's initialization / finalization.

DefaultTriangulationSlices: Cardinal = 30;

How much to subdivide various objects (like sphere, cylinder) into triangles.

"Slices" divide the circumference of the circle, like the slices of a pizza. Must be always >= MinTriangulationSlices.

See more about triangulation.

DefaultTriangulationStacks: Cardinal = 20;

How much to subdivide various objects (like sphere, cylinder) into triangles.

"Stacks" divide the height of the object, like the stacks of a cake or tower. Must be always >= MinTriangulationStacks.

See more about triangulation.

AnyNodeDestructionNotifications: TNodeDestructionNotificationList;

Functions registered here will be called when any TX3DNode descendant will be destroyed.

X3DCache: TX3DFontTexturesCache;

Cache, for all the resources not tied with renderer context.

WarnAboutAbsoluteFilenames: boolean = true;

Should we emit a warning when loading data from an URI with an absolute filename, like file:///c:/blah/myimage.png. The warning is emitted using WritelnWarning. This is quite useful, as usually you want to avoid using such URIs, as they will probably not work on any other system than your own (and they prevent you from easily moving the files to some other system/location).

In your data (X3D, VRML, Collada, OBJ materials...), you should always use relative paths.

RebaseRelativeUrlsInPrototypes: boolean = false;

Whether to resolve relative URLs within X3D prototypes with respect to the file that instantiated the prototype (false, default, compatible with Instant Player) or to the file that defined the prototype (true, compatible with BS Contact).

This is unfortunately ambiguous in the X3D specification, and various other X3D browsers behave differently.

Consider you have an X3D file like this:

EXTENRPROTO MyObject [ field MFString urlTexture ] "textures/library.wrl#MyObject"
MyObject { urlTexture "textures/myfile.png" }
MyObject { urlTexture "myfile.png" }

And next to this file, in a subfolder, you have these files:

textures/library.wrl
textures/myfile.png

Which declaration of MyObject is correct?

  • When this is false, you should write MyObject { urlTexture "myfile.png" }. The URL is resolved with respect to the file that contains the ImageTexture node, which is "textures/library.wrl".

  • When this is true, you should write MyObject { urlTexture "textures/myfile.png" }. The URL is resolved with respect to the file that instantiates the prototype.

    Note that our implementation of this case is a bit incomplete. It works for most nodes (ImageTexture / AudioClip / ShaderPart / ...), but it does not work for the Inline node, and for URLs in recursive EXTERNPROTO. So URLs in Inline nodes, or in EXTERNPROTO, are always resolved like RebaseRelativeUrlsInPrototypes = false.

See the X3D specification http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/networking.html#RelativeURLs (unfortunately, it does not clarify this case definitively). See our testcase in https://github.com/castle-engine/demo-models/tree/master/prototypes/relative_urls_test

DefaultFontData: array [ TX3DFontFamily, Boolean, Boolean ] of TTextureFontData;

Default fonts used by Text and FontStyle nodes.


Generated by PasDoc 0.16.0-snapshot.