Core component

This component defines the basic functionality of VRML/X3D. Some basic abstract nodes, also nodes to provide information (metadata) about the model.

See also X3D specification of the Core component.

We support everything from this component. Notes:

  • WorldInfo(Pascal API: TWorldInfoNode)

    WorldInfo.title, if set, is displayed by view3dscene on window's caption.

  • UNIT statement (see X3D specification about UNIT) is handled. In both classic and XML encoding. Angle and length conversion is actually done.

    Working examples of using it are inside demo_models/x3d/units* in our VRML/X3D demo models. In short, you can declare them like this in X3D XML encoding:

    <X3D version="3.3" profile="..."  ... >
    <head>
      <unit category="angle" name="degrees" conversionFactor="0.017453293" /> <!-- pi / 180 -->
      <unit category="length" name="km" conversionFactor="1000" />
    </head>
    

    Or in X3D classic encoding:

    #X3D V3.3 utf8
    PROFILE ....
    UNIT angle degrees 0.017453293 # pi / 180
    UNIT length km 1000
    

    Above example snippet shows how you can express angles in degrees. This affects interpretation of these fields:

    • all SFRotation, MFRotation
    • all creaseAngle
    • TextureTransform.rotation
    • Background.skyAngle,groundAngle
    • Arc2D.startAngle,endAngle
    • ArcClose2D.startAngle,endAngle

    Length conversion is also possible. This is less useful IMHO — you can as well just wrap your model in a Transform with some scale. Actually, that's exactly our implementation of "UNIT length" for now — we simply add appropriate scale (calculated looking at length unit of inlined model (inner), and looking at length unit of inlining model (outer)).

  • We support "metadata" nodes for passing additional, custom data in the X3D graph.

    Our engine does not do anything with this data. You can use these nodes in your own applications to "carry" some information between the software that generates your X3D files to your final application.

    Note that we have a more comfortable API to get and set X3D metadata in Pascal. See examples/short_api_samples/metadata/ and TAbstractNode.MetadataString and friends.