=============================================================================
TODO identified issues:
- Need to integrate content models with %LayeringComponent; %LayoutComponent; %RigidBodyPhysiscsComponent; %PickingSensorComponent; %FollowersComponent; %ParticleSystemsComponent;
- Stricter control of containerField values appears possible because default and allowed values can be overridden when using field/fieldValue elements
- TODO fix shader mixed-content models, see Script and corresonding X3D schemas for examples
X3D DTD update activity:
20 December 2011, polys, brutzman
- (v3.3) added VolumeRendering to list of componentNames
- (v3.3) ComposedVolumeStyle can contain multiple children
- (v3.3) added ProjectionVolumeStyle to X3DComposableVolumeRenderStyleNode list
- (v3.3) IsoSurfaceVolumeData, SegmentedVolumeData, VolumeData default containerField='children'
19 November 2011, brutzman
- (v3.2, v3.3) changed Pi value upper limits from 3.1416 to 3.141592653 for improved arithmetic correctness,
must not exceed legal value or tools may throw errors for default values
- restricted unitCategories types to not include derived types (velocity etc.)
30 September 2011, brutzman
- Scene is allowed to contain multiple Metadata nodes at top level
- Add missing MetadataBoolean in Immersive definition of Metadata nodes
5 September 2011, brutzman
- changed Pi/2 value upper limits from 1.5708 to 1.570796 for improved arithmetic correctness,
must not exceed legal value or tools may throw errors for default values
8 August 2011 SIGGRAPH, brutzman, v3.3 definitions
- Added Volume Rendering Component nodes
20 July 2011, brutzman, v3.3 definitions
- GeoOrigin is deprecated and discouraged (but nevertheless allowed)
- centerOfRotation specified by Viewpoint, OrthoViewpoint and GeoViewpoint nodes
has type SFVec3f, SFVec3f and SFVec3d respectively
- GeoViewpoint changes: added centerOfRotation and retainUserOffsets,
removed navType and headlight
19 July 2011, brutzman, v3.3 definitions
- added unit statement (similar to component statement) and MetadataBoolean
18 July 2011, brutzman, v3.3 definitions
- added references and initial version-control checkins for X3D v3.3 DTD
6 September 2010, brutzman
- ArcClose2D, Disk2D, Rectangle2D, TriangleSet2D nodes have default value
solid="false" for two-sided visibility
- HAnimDisplacer, HAnimHumanoid, HAnimJoint, HAnimSegment, HAnimSite
no longer require 'name' attribute since that cannot be present for USE nodes
6 August 2010, brutzman
- Text node has default value solid="false" for two-sided visibility
- GeoOrigin allowed as contained content in field, fieldValue, GeoLocation,
GeoLOD validation, reverting previous change to permit proper validation.
Preventing deprecated GeoOrigin from appearing at top level is less important
(and probably a questionable design in the first place).
17 March 2010, hudson brutzman
- GeoOrigin is X3DNode vice X3DChildNode, cannot appear as child of root Scene
2 January 2010, brutzman
- Update type of all 'class' attributes as NMTOKENS (name-token array type)
27 December 2009, brutzman
- v3.1, v3.2: ProgramShader does not contain field* definitions
- v3.1, v3.2: Corrected order of contained-elements content model for various shader nodes
[ComposedShader, PackagedShader, ShaderProgram] to be consistent with Script definition:
field*, IS?, MetadataNodes?, then CDATA source
26 December 2009, stewart, brutzman
- GeoMetadata allowed to contain other geospatial nodes (except for another GeoMetadata)
- GeoMetadata fix: omit 'data' field array of USE values (type IDREF)
17 December 2009, brutzman
- Change RigidBody finiteRotationAxis field default from 0 0 0 (not a valid vector) to 0 1 0 (v3.2 only)
- Rename DoubleAxisHingeJoint stopBounce1 as stop1Bounce for consistency (v3.2 only)
- Rename DoubleAxisHingeJoint stopConstantForceMix1 as stop1ConstantForceMix for consistency (v3.2 only)
- Rename DoubleAxisHingeJoint stopErrorCorrection1 as stop1ErrorCorrection for consistency (v3.2 only)
- Add SliderJoint field: SFFloat [in,out] sliderForce 0 (-inf,inf)
7 December 2009, brutzman
- Change ContourPolyline2D field point %MFVec2f; to controlPoint %MFVec2d;
6 December 2009, brutzman
- HAnim node name field default remains empty string but value is now required
- swap default values for SpotLight beamWidth, cutOffAngle
- relaxed resolution of PI/4 values from 0.785398 to 0.7854
- relaxed resolution of PI/2 values from 1.570796 to 1.5708
24 February 2009, brutzman
- component definition corrected to allow values 1-5
16 February 2009, brutzman
- added TextureProperties
-renamed Pixel3DTexture to PixelTexture3D, Composed3DTexture to ComposedTexture3D
9 January 2009, brutzman
- added DISEntityManager, DISEntityTypeMapping
26-30 December 2008, brutzman
- added RigidBodyPhysics component nodes to GroupingNodes and ProtoNodes content models
- content model optional for X3DRigidJointNode, CollidableOffset, CollisionSensor, RigidBody, RigidBodyCollection
20 August 2008, g. couch, brutzman
- added transparency to X3DBackgroundNode (Background, TextureBackground) (v3.2)
4 August 2008, yoo, brutzman
- rename TexCoordDamper to TexCoordDamper2D (v3.2)
- added follower nodes (Chaser and Damper nodes) to ProtoNodes
(Full profile) to permit validation (v3.2)
- added ProtoDeclare|ExternProtoDeclare to ChildrenNodes
21 July 2008, brutzman
- rename Image3DTexture to ImageTexture3D
18 July 2008, brutzman
- remove following illegal watchList child nodes from LoadSensor validation:
Anchor GeoMetadata Script ProtoInstance
12 July 2008, brutzman
- ViewpointGroup: added ViewpointGroup as allowed child, changed fieldOfView to size,
fixed default value for center
9 July 2008, brutzman
- added retainUserOffsets to Viewpoint
- added OrthoViewpoint and ViewpointGroup
3 July 2008, brutzman bailey
- added X3D attributes for XML digital signature, encryption
9 June 2008, brutzman
- added Contour2D, ContourPolyline2D to ENTITY % ProtoNodes for allowable field, fieldValue contents
31 May 2008, brutzman
- vertexCount field for LineSet node, name field for all HAnim nodes: #IMPLIED not #REQUIRED
so that USE nodes can validate
4 May 2008, brutzman
- changed various CDATA defaults for 'class' attribute from "" to #IMPLIED for consistency, eliminating bogus validation errors
- improved changelog header
17 April 2008, Changhua Wu, brutzman
- added missing componentNames (v3.2 only)
Followers Layering Layout RigidBodyPhysics ParticleSystems
5 March 2008, mccann
- corrected ATTLIST GeoProximitySensor
16 February 2008, brutzman
- can remove xml:space "preserve" attribute for Script and field elements,
since only expected whitespace-sensitive content is contained within a
protected CDATA text block
11 February 2008, mccann, brutzman
- added GeoTransform node
7 February 2008, mccann, puk, brutzman
- added GeoProximitySensor node
25 November 2007, puk, brutzman
- added SquadOrientationInterpolator
22 November 2007, puk
- forceOutput changed back to mustOutput
21 November 2007, hudson, brutzman
- removed SurfaceEmitter 'coordIndex' and 'set_coordIndex' fields
- removed VolumeEmitter 'internal' field
- adjusted WindPhysicsModel default speed to 0.1
- MotorJoint axis1Angle ... axis3Torque changed to %SFFloat; "0"
- added CollisionSpace enabled field
5 November 2007, brutzman
- added FollowersComponent and ParticleSystemsComponent
4 November 2007, brutzman
- added LayoutComponent, RigidBodyPhysicsComponent, PickingSensorComponent
28 October 2007, brutzman
- added LayeringComponent
7-8 October 2007, brutzman, mcdaniel
- removed ProtoInstance from MetadataNodes since it leads to nondeterministic-content errors,
but allowed %WildcardNodes; (ProtoInstance) within each of the Metadata nodes (Mantis bug 350)
- removed extraneous %WildcardNodes; from end of Shape content-model definition
- removed Contour2D, ContourPolyline2D from NurbsGeometryNodes since these are only
used internally to trim Nurbs nodes and are not used as part of the GeometryContentModel
- included Contour2D in NurbsControlCurveNodes
- v3.1, v3.2: eliminated duplicate entries for QuadSet, IndexedQuadSet in GeometryNodes content model
which fixed Shape node nondeterminism
- removed NurbsGroupingNodes since this was a flawed construct (Mantis bug 349)
- improved duplication within ProtoNodes definition but still suspect...
-
# 4 October 2007, brutzman
# - began work on version 3.2. unless otherwise noted, all changes are to all versions.
# - commented out ENTITY reference to x3d-3.2-InputOutputFields.dtd which holds the
# inputOnly/outputOnly attributes, since they are not allowed as part of valid .x3d files.
#
# 10 January 2006 grieve, brutzman
# - changed content model for Contour2D (found in NurbsControlCurveNodes) from
# [NurbsCurve|ContourPolyline2D] to [NurbsCurve2D|ContourPolyline2D]
#
# 3 January 2006 hudson, brutzman
# - changed IMPORT InlineDEF to inlineDEF
#
# 31 December 2005 brutzman
# - fixed MultiTexture content model
#
# 29-30 December 2005 brutzman
# - fixed various DTD/schema mismatches discovered by checking accessType definitions
# - FloatVertexAttribute, Matrix3VertexAttribute, Matrix4VertexAttribute:
# X3DVertexAttributeNode given containerField attrib, added to ComposedGeometryNodes
# - changed HAnimDisplacer containerField to "displacers"
# - HAnimDisplacer weight default value set to 0.0
# - GeoElevationGrid removed set_yScale
# - added shader nodes as Appearance children, and so had to finally relax the exhaustively enumerated
# & strictly ordered Appearance content model as follows:
# - Removed unnecessary AllVRML97Nodes, AllGeoSpatialTags, AllHAnimTags definitions:
#
# 27 December 2005 brutzman
# - (v3.1 only) added Texturing3D component: X3DTexture3DNode, Composed3DTexture,
# Image3DTexture, Pixel3DTexture, TextureCoordinate3D, TextureCoordinate4D,
# TextureMatrixTransform, TextureTransform3D
# - renamed TextureNodes to Texture2DNodes
# - EspduTransform removed geoCoords_changed
#
# 26 December 2005 brutzman
# - (v3.1 only) removed CADFace, CADPart from CadGroupingNodes since CAD content model is more restrictive
# (hierarchy CADLayer/CADAssembly/CADPart/CADFace)
# - (v3.1 only) componentNames: added CubeMapTexturing, Texturing3D, Shaders
# - (v3.1 only) added Shaders component: X3DProgrammableShaderObject,
# X3DShaderNode, X3DVertexAttributeNode, ComposedShader,
# FloatVertexAttribute, Matrix3VertexAttribute, Matrix4VertexAttribute,
# PackagedShader, ProgramShader, ShaderPart, ShaderProgram
# - (v3.1 only) Added CubeMapTexturing component: X3DEnvironmentTextureNode,
# ComposedCubeMapTexture, GeneratedCubeMapTexture, ImageCubeMapTexture
#
# 22 December 2005 hudson, brutzman
# - NurbsGeometryNodes modified to include Contour2D vice ContourPolyline2D
# - GeoTouchSensor: added inputOutput field description
# - (v3.1 only) LOD: added initializeOnly field forceTransitions
# - (v3.1 only) added X3dFieldTypes SFMatrix3d MFMatrix3d SFMatrix3f MFMatrix3f SFMatrix4d MFMatrix4d SFMatrix4f MFMatrix4f SFVec4d MFVec4d SFVec4f MFVec4f
#
# 21 December 2005 puk, brutzman
# - removed solid field from Circle2D since it is line-based, not polygonal
# - added enabled field to EspduTranform, ReceiverPdu, SignalPdu, TransmitterPdu
# - (v3.1 only) DirectionalLight default value for global remains true,
# PointLight and Spotlight default value for global changed to false
#
# 19 December 2005 brutzman
# - FogCoordinate default containerField value set to fogCoord
# - FogCoordinate removed from CoordinateNodes, added to GeometricPropertyNodes,
# ColorCoordinateNormalTextureCoordinateContentModel and ElevationGrid content model.
# FogCoordinate only allowed to follow Coordinate/Color/Normal/TextureCoordinate
# since any-order content model is too complex otherwise.
# - (v3.1 only) Text node: added outputOnly fields lineBounds and textBounds
# - (v3.1 only) DirectionalLight, PointLight, Spotlight: added inputOutput field global
# - (v3.1 only) LOD node: added outputOnly field level_changed
# - (v3.1 only) NavigationInfo node: added inputOutput field transitionTime, outputOnly field transitionComplete
#
# 18 December 2005 victor, brutzman
# - IndexedTriangleStripSet stripCount field removed
# - Polypoint2D points field renamed to point
# - TransmitterPdu cryptoKeyId field renamed to cryptoKeyID
# - EspduTransform articulationParameterIdPartAttachedArray field renamed to
# articulationParameterIdPartAttachedToArray
# - added NavigationInfo transitionType MFString, default "ANIMATE"
# - NurbsTextureCoordinate controlPoint type changed to MFVec2f
# - added solid field to Text, ArcClose2D, Circle2D, Disk2D, Rectangle2D, TriangleSet2D
#
# 16 December 2005 ecer, brutzman
# - BooleanSequencer keyValue type changed to MFBool
# - KeySensor keyPress, keyRelease type changed to SFString
# - GeoElevationGrid set_height type changed to MFDouble
# - GeoLOD range type changed to SFFloat
# - NurbsGroupingNodes child content model changed to
# NurbsOrientationInterpolator | NurbsPositionInterpolator | NurbsSurfaceInterpolator | NurbsSet
#
# 4 December 2005 hudson, brutzman
# - make X3D version required rather than optional
# - added EspduTransform fields collisionType, detonationLocation, detonationRelativeLocation, detonationResult,
# eventApplicationID, eventEntityID, eventNumber, eventSiteID
#
# 20 November 2005 victor, brutzman
# - EspduTransform firingRange type changed from SFInt32 to SFFloat
# - IntegerSequencer keyValue type changed from MFFloat to MFInt32
# - NurbsCurve2D knot, weight type changed from MFFloat to MFDouble
# - NurbsTrimmedSurface weight type changed from MFFloat to MFDouble
# - NurbsCurve2D controlPoint type changed from MFVec2f to MFVec2d
# - NurbsTextureCoordinate added field controlPoint MFVec2d
# - NurbsTextureCoordinate weight type changed from MFDouble to MFFloat
#
# 14 November 2005 brutzman
# - changed CAD component name to CADGeometry, matching 3.1 specification
# - added enumeration value for CADInterchange Profile, matching 3.1 specification
#
# 6 November 2005 brutzman
# - added (%MetadataNodes;)? as allowed first child under Scene
# - zero field definitions allowed for ProtoInterface
# - fixed textual differences between x3d-3.0.dtd, x3d-3.1.dtd using Altova DiffDog
#
# 21 October 2005 brutzman
# - added CAD profile: X3DProductStructureChildNode, CADAssembly, CADFace, CADLayer, CADPart,
# IndexedQuadSet, QuadSet
# - Node signature for 32.4.2 CADFace missing bbox fields and X3DBoundedObject interface, bug posted
#
# brutzman 2 October 2005
# Began work on schema corrections to better validate under XMLSpy and other tools
# Replaced GeoSpatial default-value "quote marks" with " character entities, e.g.
# geoSystem %MFString; '"GD" "WE"'
# geoSystem %MFString; '"GD" "WE"'
#
# navType %MFString; '"EXAMINE" "ANY"'
# navType %MFString; '"EXAMINE" "ANY"'
#
# brutzman 16 September 2004
# Removed comments around extension DTD invocation, and verified correct
# x3d-3.0-Web3dExtensionsPublic.dtd and
# x3d-3.0-Web3dExtensionsPrivate.dtd
# dabrowski, brutzman 16 July 2004
# Renamed Lineset field 'lineCount' to 'vertexCount'
# Added 'set_index' inputOnly field to x3d-3.0-InputOutputFields.dtd for
# nodes IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet
# brutzman 7 July 2004
# Corrected content model for GeoMetadata to include MFNode 'data' field,
# which can only refer to other GeoSpatial nodes. Specifically changed
#
# to
#
# brutzman 6 June 2004
# allow ProtoInstance in content model for MultiTexture, MultiTextureCoordinate
# brutzman 31 May 2004
# allow Sound to have zero children (as in USE nodes)
# brutzman 29 May 2004
# added SFVec2d, MFVec2d to allowed types
# brutzman 17 May 2004
# added ProtoInstance to Immersive content model for allowed Metadata nodes
# added Metadata nodes to content model for allowed ProtoNodes
# brutzman 6 March 2004
# Changed default directory path to /www.web3d.org/specifications throughout
# brutzman 29 February 2004
# Removed 'TaskGroups/' from default paths (mostly just documentation urls)
#
# ===================================================================================
#
# version 3.0.11, Final Committee Draft (FCD)
#
# brutzman 26 December 2003
# HAnimDisplacer added as legal child of HAnimJoint
# Added SFFloat weight field to HAnimDisplacer
# Changed LoadSensor field timeout to timeOut
# brutzman 12 December 2003
# Renamed appInfo fields to appinfo, matching XML Schema spelling.
# Affects ExternProtoDeclare, ProtoDeclare and field elements.
# brutzman 8 December 2003
# Removed creaseAngle from *Triangle* nodes, uses defined normal behavior instead
# brutzman 18 November 2003
# Added IndexedTriangleFanSet, IndexedTriangleSet, IndexedTriangleStripSet
# brutzman 16 November 2003
# Added constraints on componentNames, componentLevels to match X3D specification.
# Future extensibility of future component names and levels remains feasible but
# (appropriately) will require an accompanying override/update of DTD and Schema
# in the extended content to match anything new.
# brutzman 15 November 2003
# Added LineSet
# brutzman 13 October 2003
# Changed
# fillStyle (NONE|HATCHED) "NONE"
# to
# filled %SFBool; "true"
# hatched %SFBool; "true"
# brutzman 12 October 2003
# Moved LatticeXVL and created Web3dExtensionComponent for future Web3D extensions.
# Cleaned out various DTD comments, as follows:
#
# Rejected: consider building multiple DTDs corresponding to each profile,
# by creating small encapsulating DTDs that each set proper profile flags
# prior to loading the main DTD. Hazard: avoid duplication/versionitis.
#
#
#
#
# brutzman 8 October 2003
# HAnimHumanoid version: changed to SFString from enumeration (1.1|2.0)
# Removed from HAnimHumanoid:
# humanoidVersion %SFString; #IMPLIED
# authorName %SFString; #IMPLIED
# authorEmail %SFString; #IMPLIED
# copyright %SFString; #IMPLIED
# creationDate %SFString; #IMPLIED
# usageRestrictions %SFString; #IMPLIED
# age %SFString; #IMPLIED
# gender %SFString; #IMPLIED
# height %SFString; #IMPLIED
# weight %SFString; #IMPLIED
# Removed from GeoMetadata:
#
# title %SFString; #IMPLIED
# description %SFString; #IMPLIED
# coordinateSystem %SFString; #IMPLIED
# horizontalDatum %SFString; #IMPLIED
# verticalDatum %SFString; #IMPLIED
# ellipsoid %SFString; #IMPLIED
# extent %SFString; #IMPLIED
# resolution %SFString; #IMPLIED
# originator %SFString; #IMPLIED
# copyright %SFString; #IMPLIED
# date %SFString; #IMPLIED
# metadataFormat %SFString; #IMPLIED
# dataUrl %SFString; #IMPLIED
# dataFormat %SFString; #IMPLIED
# Changed geoSystem from CDATA to %MFString;
# Renamed GeoTouchSensor hitGeoCoordinate_changed to hitGeoCoord_changed
# Moved GeoTouchSensor [in] and [out] events to x3d-3.0-InputOutputFields.dtd:
# isActive, isOver, touchTime
# Removed GeoElevationGrid set_yScale since yScale is now [in out]
# Didn't add NurbsCurve solid, default value true
# NurbsPatchSurface: removed ccw, weight, closedSurface
# Added NurbsSurfaceInterpolator. Note SFVec2f type for set_fraction value.
# Added NurbsTextureCoordinate.
# Verified NURBS nodes
# brutzman davis 1 October 2003
# DIS EspduTransform/ReceiverPdu/SignalPdu/TransmitterPdu nodes - consistency changes:
# attribute typos: receiverPower -> receivedPower, cryptoSytem -> cryptoSystem
# transmitFrequencyBandwidth is SFFloat
# EspduTransform munitionSiteID, munitionApplicationID, munitionEntityID and
# fireMissionIndex changed to [in out]
# brutzman 28 September 2003
# DIS EspduTransform/ReceiverPdu/SignalPdu/TransmitterPdu nodes - consistency changes:
# rtpHeaderHeard renamed to isRtpHeaderHeard
# no outputOnly event values allowed: #FIXED "" vice #IMPLIED
# DIS EspduTransform node consistency changes:
# address default set to "localhost"
# port, multicastRelayPort default set to "0"
# siteID, applicationID, entityID, forceID defaults set to "0", "1", "0", "0"
# respectively
# entityKind, entityDomain, entityCountry, entityCategory, entitySubCategory,
# entitySpecific and entityExtra defaults set to "0"
# linearVelocity, linearAcceleration, munitionStartPoint, munitionEndPoint
# defaults set to "0 0 0"
# munitionSiteID, munitionApplicationID, munitionEntityID, fireMissionIndex
# changed to outputOnly events
# whichGeometry default set to "1"
# corrected various PDU-specific defaults, mostly #IMPLIED to "0"
# brutzman 22 September 2003
# X3DTimeDependentNode consistency changes:
# Added SFTime [out] elapsedTime to AudioClip, MovieTexture, and TimeSensor
# SFBool [out] isPaused to AudioClip, MovieTexture
# SFTime [in,out] pauseTime 0 to AudioClip, MovieTexture
# SFTime [in,out] resumeTime 0 to AudioClip, MovieTexture
# brutzman 14 September 2003
# Changed Background, TextureBackground groundColor default from "0 0 0" to IMPLIED
# (although this is questionable and has led to different browser defaults in the past)
# Changed CylinderSensor diskAngle default PI/2 from 0.262 to 0.26179167 to match Schema
# Removed excess attributes from 'component' declaration, made 'level' SFInt32 and required.
# originator CDATA #IMPLIED
# url CDATA #IMPLIED
# version CDATA #IMPLIED
# Removed unneeded comments prior content model for Collision proxy:
#
#
# KeySensor outputOnly fields keyPress, keyRelease changed from SFInt32 to SFString in x3d-3.0-InputOutputFields.dtd
# LineProperties: added 'applied', restored irregular capitalization/spelling of linetype, linewidthScaleFactor
# MultiTexture: removed obsolete fields
# materialColor %SFBool; "false"
# materialAlpha %SFBool; "false"
# transparent %SFBool; "false"
# noMipMap %SFBool; "false"
# NavigationInfo type: changed default from ["WALK" "ANY"] to ["EXAMINE" "ANY"]
# brutzman 11 August 2003
# Added outputOnly field geoCoords_changed %SFVec3d; #IMPLIED
# to x3d-3.0-InputOutputFields.dtd to support interoperability
# with GeoSpatial Profile nodes. Tooltip: "Double precision output for
# 64-bit Espdu translation, usable by georeferenced nodes."
# brutzman 10 August 2003
# ISO editors' meeting: type MFString enumeration values must all be quoted
# changed FontStyle justify field to default value (quoted) "BEGIN"
# changed FontStyle family field to default value (quoted) "SERIF"
# grahn victor williams brutzman 1 August 2003
# changed MultiTexture field values for mode, source and function to MFString.
# each internal array value corresponds to one texture in the MultiTexture.
# Thus no validation of these fields as fixed enumeration values is possible.
# brutzman 21 July 2003
# DIS EspduTransform deadReckoning signature changed to inputOutput SFInt32 "0"
# and networkMode default value changed to "standAlone".
# brutzman 3 July 2003
# Fixed content model of NURBS nodes Contour2D, NurbsCurve.
# Renamed NurbsGroup as NurbsSet.
# !! Need to unscramble NurbsTextureSurface and NurbsTrimmedSurface.
# brutzman 26 June 2003
# Added NurbsOrientationInterpolator. Corrected NurbsPositionInterpolator interface.
# Added CoordinateDouble. Removed CoordinateDeformer.
#
#
# Cleaned out old comments:
#
#
#
#
# brutzman 21 June 2003
# Made X3D profile attribute REQUIRED. Changed profile name MPEG4 to MPEG4Interactive.
# brutzman 8 June 2003
# Moved Inline from content model GroupingNodes to SceneLeafNodes
# brutzman 26 May 2003
# Added XML schema information as X3D tag attributes:
# xmlns:xsd CDATA "http://www.w3.org/2001/XMLSchema-instance"
# xsd:noNamespaceSchemaLocation CDATA "http://www.web3d.org/specifications/x3d-3.0.xsd"
# brutzman 25 May 2003
# Added MetadataDouble, MetadataFloat, MetadataInteger, MetadataSet, MetadataString.
# brutzman 6 May 2003
# Added AudioClip, LineProperties, FillProperties as valid ProtoNodes.
# adams, couch, hudson, weekley, brutzman 3 March 2003
# Removed NurbsPositionInterpolator 'dimension' field, nonsensical for curve.
# Confirmed NurbsPositionInterpolator 'keyValue' array contains control points.
# Added NurbsPositionInterpolator 'key' field, necessary for X3DInterpolator.
# Size corresponds as usual to 'keyValue' array, which contains control points.
# Renamed NurbsPositionInterpolator 'keyWeight' field as 'weight' field,
# for consistency with other NURBS. Might get renamed back, or perhaps
# renamed keyValueWeight. Further implementation/evaluation needed.
# Upcoming:
# Will likely propose NurbsPositionInterpolator tangent_changed, or else
# perhaps propose NurbsOrientationInterpolator, so that orientation works.
# Will likely propose removal of CoordinateDeformer as redundant.
# Added NurbsSurface initializeOnly SFBool closedSurface 'false' attribute,
# indicating that opposite sides of NurbsSurface are connected.
# Proposed attribute, see examples such as AnimatedNurbsSurfaceHead.x3d
# which allows full export capability from Maya and other tools.
# Again subject to further implementation/evaluation, maybe too ambiguous.
# hudson, williams, brutzman 2 March 2003
# Added file:// to transitional DTD system identifier, as follows:
#
# Changed + to ISO for final external identifier, though have not yet
# found conclusively authoritative reference, as follows:
#
# hudson, couch, brutzman 17 February 2003
# Enforcing strict quoting rules for individual tokens in enumeration-like
# MFString fields. Example:
# Other affected field defaults are geoSystem and GeoViewpoint navType.
# brutzman 25-26 January 2003
# Updated and verified DIS, GeoSpatial, H-Anim and NURBS nodes.
# Simplified content model for GeoLOD to eliminate rootNode wrapper tag.
# Added GeoElevationGrid set_yScale, set_height to x3d-3.0-InputOutputFields.dtd.
# Changed GeoElevationGrid height to MFDouble.
# Added GeoLocation, GeoLOD fields bboxCenter, bboxSize.
# Changed GeoLocation, GeoOrigin field geoCoords to SFVec3d.
# Changed GeoOrigin geoCoords to SFVec3d.
# Removed GeoTouchSensor geovalue, retained geovalue_changed.
# Added GeoViewpoint set_orientation, renamed speed as speedFactor, removed examine.
# Simplified content model for HAnimHumanoid to eliminate wrapper tags, humanoidBody.
# Utilize HAnimHumanoid containerField for joints/skeleton, segments, sites, skin,
# skinCoord, skinNormal, and viewpoints.
# Removed HAnimHumanoid containerField for humanoidBody (redundant from H-Anim 1.0)
# and replaced in H-Anim 2.0 by skeleton/skin.
# Revised several NURBS containerField values:
# Contour2D "trimmingContour" (parent TrimmedSurface),
# ContourPolyline2D "children" (parent Contour2D)
# NurbsCurve "geometry"
# NurbsCurve2D "children" (parent Contour2D - spec erratum submitted)
# NurbsSurface "surface" (parent TrimmedSurface, NurbsGroup)
# (note "surface" inconsistency with "children" for parent NurbsGroup)
# Simplified content model for NURBS CoordinateDeformer to eliminate wrapper tags
# and utilize containerField for inputCoord, outputCoord and inputTransform.
# Renamed IMPORT label exportedDEF as importedDEF for semantic consistency.
#
# Prior content models appear in x3d-dtd-changelog.txt for archive purposes.
#
# (GeoOrigin, ((children, rootNode?) | (rootNode, children?))? ) |
# (children, ((GeoOrigin, rootNode?) | (rootNode, GeoOrigin?))? ) |
# (rootNode, ((children, GeoOrigin?) | (GeoOrigin, children?))? )?
#
#
#
#
#
#
#
#
#
#
#
# williams 20 January 2003
# Removed GeoInline.
# brutzman 14 January 2003
# Added MultiTextureTransform.
# brutzman 13 January 2003
# Updated NURBS component. knot fields for CoordinateDeformer, NurbsCurve,
# NurbsCurve2D, NurbsSurface etc. are now MFDouble vice MFFloat.
# brutzman 12 January 2003
# Integrated significant changes from abstract specification into DIS component.
# brutzman 9 January 2003
# Corrected case capitalization of Polyline2D, Polypoint2D
# NURBS Polyline2D name corrected to ContourPolyline2D
# brutzman 2 January 2003
# Rename H-Anim nodes to have HAnim prefix: HAnimDisplacer, HAnimHumanoid,
# HAnimJoint, HAnimSegment, HAnimSite.
# Moved inputOnly/outputOnly (eventIn/eventOut) fields to optional file
# x3d-3.0-InputOutputFields.dtd.
# Turned off/on via parameter entity AllEventFields for use by some tools.
# Retained fields have #FIXED empty-string values, so no values allowed.
# Still a problem changing default AllEventFields to IGNORE vice INCLUDE.
# Did not change DTD default from Full profile to Immersive profile, rather kept
# all new components (DIS H-Anim GeoSpatial NURBS LatticeXvl) in one file.
# Better to keep DTD unrestrictive unless author or tool directs smaller profile.
# Eliminated unneeded declarations:
#
#
# brutzman 1 January 2003
# Merged prior X3D DTDs into x3d-3.0.dtd:
# http://www.web3D.org/TaskGroups/x3d/translation/x3d-compact.dtd
# http://www.web3D.org/TaskGroups/x3d/translation/DistributedInteractiveSimulation.dtd
# http://www.web3D.org/TaskGroups/x3d/translation/GeoSpatial-compact.dtd
# http://www.web3D.org/TaskGroups/x3d/translation/HumanoidAnimation2.0-compact.dtd
# http://www.web3D.org/TaskGroups/x3d/translation/LatticeXvl-compact.dtd
# http://www.web3D.org/TaskGroups/x3d/translation/Nurbs-compact.dtd
# Former draft X3D DTD name:
# http://www.web3D.org/TaskGroups/x3d/translation/x3d-compact.dtd
# Renumber DTD to version 3.0: Transitional doctype becomes
#
# Integrated X3D specification examples, some further work needed.
# hudson, brutzman 31 December 2002
# Alan verified all abstract specification nodes/fields included. Changes:
# Background, NavigationInfo and TouchSensor now have single DTD definition,
# Interchange profile. Some fields are optional in Interchange profile.
# Collision: rename 'collide' field as enabled, also add isActive.
# LOD, Switch: added bboxCenter, bboxSize.
# NavigationInfo type default set to 'WALK ANY'.
# Added ProximitySensor centerOfRotation_changed %SFVec3f; #FIXED ""
# Triangle*Set: removed convex field (they are always convex, duh).
# Removed TimeSensor elapsedTime.
# brutzman, couch 31 December 2002
# Profile for Triangle*Set nodes set to Interchange.
# Remaining containerField issues: removed nodeType from ExternProtoDeclare,
# default ProtoInstance containerField="children". Then added
# containerField values to all non-children ProtoInstance examples.
# brutzman, couch 30 December 2002
# Restore containerField throughout. Eliminated proxy element.
# Removed all Scene attributes for consistency with abstract specification.
#
#
# could provide simple singleton exposure of Browser class variables:
# browserName %SFString; #IMPLIED
# browserVersion %SFString; #IMPLIED
# currentFrameRate %SFFloat; #IMPLIED
# currentSpeed %SFFloat; #IMPLIED
# worldUrl %MFString; #IMPLIED
#
# deferred for reconsideration with displays in advanced SAI:
# boundBackground IDREF #IMPLIED
# boundFog IDREF #IMPLIED
# boundGeoViewpoint IDREF #IMPLIED
# boundNavigationInfo IDREF #IMPLIED
# boundViewpoint IDREF #IMPLIED
# dashboardVisible %SFBool; #IMPLIED
# pixelHeight %SFInt32; #IMPLIED
# pixelWidth %SFInt32; #IMPLIED
# aspectRatio %SFInt32; #IMPLIED
#
# not needed for exposure via Scene since only invoked from inside a Script anyway:
# description %SFString; #IMPLIED
# createVrmlFromString %SFString; #IMPLIED
# createVrmlFromX3d %SFString; #IMPLIED
# createVrmlFromUrl %SFString; #IMPLIED
#
# no:
# evaluate %SFBool; #IMPLIED
# browserResponse %SFString; #IMPLIED
# creationTargetNode IDREF #IMPLIED
# loadUrl %MFString; #IMPLIED
# loadUrlParameter %SFString; #IMPLIED
# currentTime %SFTime; #IMPLIED
# >
# brutzman, 29 December 2002
# Completed new content model for ProtoDeclare: ProtoInterface and ProtoBody.
# Content library updated, prior content no longer validates/translates.
# Allowed ProtoDeclare as first element of ProtoBody, prior to first node.
# brutzman, 27 December 2002
# Updated MultiTexture enumeration fields: mode, source, function.
# Mapped source="" to PREVIOUS and function="" to NONE, since XML
# can't use a blank field as a validatable enumeration.
# puk, 17 November 2002
# TextureCoordinateGenerator: removed 'point' field.
# MultiTexture has no 'type' field.
# brutzman, spec team issue resolutions 11 November 2002
# Added new content model for ProtoDeclare: ProtoInterface and ProtoBody.
# Implementation/evaluation in progress.
# FillProperties and LineProperties added, can only occur as first
# Appearance fields due to order limitations in XML 1.0 DTD.
# IndexedLineSet: eliminated field lineWidth, handled by LineProperties.
# Profile for Triangle*Set nodes entered as Immersive.
# Consistent support for enabled, isActive fields in all Sensor nodes.
# Added description field for X3DPointingDeviceSensorNode nodes
# CylinderSensor, PlaneSensor, SphereSensor, TouchSensor so that
# authors can describe intended action to users.
# Added Geometry2D nodes: Arc2D, ArcClose2D, Circle2D, Disk2D,
# PolyLine2D and PolyPoint2D (note capitalization different than draft),
# Rectangle2D, TriangleSet2D.
# brutzman, spec team issue resolutions 10 November 2002
# MultiTexture, MultiTextureCoordinate, TextureCoordinateGenerator added.
# ColorRGBA allowed in Interchange Profile, alpha channel may be ignored.
# StringSensor: removed extraneous fields from StringSensor, removed
# deletionCharacter/terminationCharacter, added SFBool deletionAllowed.
# TimeSensor numLoops removed.
# TextureBackground added, field names of child texture nodes are in
# alphabetic order: backTexture, bottomTexture, frontTexture,
# leftTexture, rightTexture, topTexture.
# Restored Collision and removed containerField throughout,
# reverting work noted below 14-15 May 2002 item 6.
# Restricted content to GroupingNodes, Shape and ProtoInstance.
#
# brutzman, spec team issue resolutions 9 November 2002
# PointSet: eliminated field pointSize, deferred until ParticleSet work.
# brutzman 3 November 2002
# Event utilities: verified BooleanSequencer, IntegerSequencer.
# Also added other event utilities BooleanFilter, BooleanToggle,
# BooleanTrigger, IntegerTrigger, TimeTrigger.
# Prototypes also provided for VRML97 use, see development examples.
# brutzman 2 November 2002
# Added node ColorRGBA and field types SFColorRGBA, MFColorRGBA.
# Added nodes TriangleFanSet, TriangleSet, TriangleStripSet.
# Added missing attributes to X3D DTD as follows.
# Inline:
# SFBool [in,out] load TRUE
# LoadSensor
# set timeout default value to 0
# Shape
# SFVec3f [] bboxCenter 0 0 0 (-inf,inf)
# SFVec3f [] bboxSize -1 -1 -1 (0,inf) or -1 -1 -1
# TimeSensor:
# SFFloat [in,out] numLoops 1 [0,inf)
# SFTime [in,out] pauseTime 0 (-inf,inf)
# SFTime [in,out] resumeTime 0
# SFBool [out] isPaused
# SFTime [out] elapsedTime
# couch hudson brutzman 1 November 2002
# Modified names of accessType inputOnly/outputOnly (eventIn/eventOut)
# and attribute values as empty (FIXED ""). Prevents validation of
# content, allows construction of full DTD scene graphs in DOM etc.
# - inputOnly: prepended set_
# - outputOnly: appended _changed
# Node fields not listed:
# - children: addChildren, removeChildren
# Names changed, defaults cleared to #FIXED ""
# - AudioClip duration_changed
# - Interpolators set_fraction, value_changed
# - Bindable nodes set_bind, bindTime, isaActive
# (Had to change %SFBool% to CDATA vice true/false to allow null value)
# - Collision collideTime
# - Sensors isActive, outputOnly _changed events
# - ElevationGrid set_height: inputOnly event added
# - KeySensor, StringSensor outputOnly fields
# - TouchSensor added hitNormal_changed, hitPoint_changed, hitTexCoord_changed
# - set_ methods added for Geometry node children
# brutzman 1 November 2002
# Changed IndexedFaceSet in Interchange profile from
# convex %SFBool; #FIXED "true"
# to
# convex %SFBool; #IMPLIED
# since Interchange browsers have the option to honor convex false.
#
# brutzman 1 November 2002
# Removed unneeded constructs in DTD
#
#
#
#
#
#
#
#
#
# ]]>
#
# brutzman 28 October 2002
# Upgraded all content to verify revised IS/connect tags,
# removed both IS and USE atttributes in field tag.
# brutzman 24 October 2002
# added MFImage type
# brutzman 20 October 2002
# Made field accessType REQUIRED instead of IMPLIED.
# Removed IS attribute from fieldValue.
# Moved double type definitions from GeoSpatial-compact.dtd to x3d-compact.dtd
# and added double types to allowed type choice list.
# Made Humanoid field name IMPLIED instead of REQUIRED, so that
# is legal. Note that defining the name
# attribute must be present so Humanoid can be identified at runtime.
# brutzman 19 October 2002
# Renamed ColorNode to Color.
# Renamed type enumerations:
# Boolean to SFBool
# Booleans to MFBool
# Color to SFColor
# Colors to MFColor
# Double to SFDouble
# Doubles to MFDouble
# Float to SFFloat
# Floats to MFFloat
# Image to SFImage
# Integer to SFInt32
# Integers to MFInt32
# Node to SFNode
# Nodes to MFNode
# Rotation to SFRotation
# Rotations to MFRotation
# String to SFString
# Strings to MFString
# Time to SFTime
# Times to MFTime
# Vector2Float to SFVec2f
# Vector2FloatArray to MFVec2f
# Vector3Float to SFVec3f
# Vector3FloatArray to MFVec3f
# Vector3Double to SFVec3d
# Vector3DoubleArray to MFVec3d
# brutzman 18 October 2002
# Renamed internal DTD labels for parameter-entity extension, which are used to
# switch different levels of DTD validation on/off.
# (unchanged) InterchangeProfile
# ** (needed) InteractiveProfile
# BaseProfile to ImmersiveProfile
# ** (needed) FullProfile
# DISProfile to DISComponent
# GeoSpatialProfile to GeoSpatialComponent
# HAnimProfile to HAnimComponent
# NurbsProfile to NurbsComponent
# LatticeXvlProfile to LatticeXvlComponent
# brutzman 17 October 2002
# Eliminated USE attribute on fieldValue for identifying contained content.
# Utilize child nodes with single USE attribute instead.
# Revise enumeration values for attribute accessType
# from accessType (eventIn | eventOut | field | exposedField)
# to accessType (inputOnly | outputOnly | initializeOnly | inputOutput)
# brutzman 16 October 2002
# follows definitions for Script and (nested) ProtoDeclare
# follows definitions for ProtoInstance
# Prepended optional single IS? tag to instantiable nodes in DIS, GeoSpatial,
# H-Anim2.0, NURBS and LatticeXVL components, matching all other X3D nodes.
# brutzman 12 October 2002
# eliminated tag-order ambiguity problem in HumanoidAnimation2.0-compact.dtd
# brutzman 1 October 2002
# changed default value, MovieTexture loop="false" to match specification
#
# ========================================================================
# DTD prior to winter 2001:
# http://www.web3D.org/TaskGroups/x3d/translation/x3d-compromise.dtd
# DTD prior to 15 March 2000:
# http://www.web3D.org/TaskGroups/x3d/translation/x3d-draft.dtd
# ========================================================================
#
# brutzman 29 September 2002
# IS/connect allowed as first elements of ProtoInstance, for use within a
# ProtoDeclare
# brutzman 27 September 2002
# Eliminated Eliminated optional "quote" "marks" from FontStyle default values
# family %MFString; 'SERIF'
# justify %MFString; 'BEGIN'
# brutzman, hudson 24 August 2002
# LoadSensor tooltips updated, and watchList nodes constrained to nodes with url:
# (Anchor | AudioClip | GeoInline | ImageTexture | Inline | MovieTexture | Script | ProtoInstance)*
# brutzman, 24 August 2002
# corrected names are PositionInterpolator2D, CoordinateInterpolator2D
# for Vector2FloatInterpolator, Vector2FloatArrayInterpolator
# brutzman, 14 August 2002
# added Vector2FloatInterpolator, Vector2FloatArrayInterpolator
# brutzman, 4 August 2002
# changed class attribute to #IMPLIED rather than empty string ""
# brutzman, 6 July 2002
# added BooleanSequencer, IntegerSequencer
# x3d-specification team, 3 July 2002
# added StaticGroup
# updated versioning scheme from 0.8 to 0.8.1
# x3d-specification team, 2 July 2002
# modified IS construct for use within Prototype declarations. Example:
#
#
#
#
#
# ...
#
#
# Status: implemented in DTD and tooltips only, also needed in X3D Schema,
# conversion stylesheets and exemplar content. Deprecated previous approach
# using definitions remains validatable/usable until these remaining
# changes occur.
# brutzman, 6 June 2002
# renamed IMPORT tag's inlineDEF to InlineDEF for consistent capitalization,
# renamed AS values to attribute name AS (instead of more complicated names).
# made IMPORT (InlineDEF, exportedDEF) and EXPORT (localDEF) REQUIRED, kept AS's optional.
# example use:
#
#
# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
#
#
#
# hudson, couch, x3d-specification team, 5 June 2002
# added LoadSensor which reports whether file-based children are successfully loaded
# x3d-specification team, 14-15 May 2002
# 1. component tag: require only name and level atttributes, default level="1" integer
# x3d-compact.dtd
# removed the following attributes: url originator version
# originator CDATA #IMPLIED
# url CDATA #IMPLIED
# version CDATA #IMPLIED
# x3d-compact.profile.xml
#
#
#
# x3d schema
#
#
#
# 2. IMPORT/EXPORT
# IMPORT inlineDEF.exportedDEF AS localDEF
# EXPORT localDEF AS exportedDEF
# IMPORT/EXPORT can appear anywhere a ROUTE can appear (rather than EXPORT being a child of Inline)
# 3. Viewpoint 'centerOfRotation' point is proposed addition relating to NavigationInfo EXAMINE mode.
# exposedField, default value 0 0 0, does not get affected by camera motion
# 4. 'containerField' is the field-label prefix used in VRML encodings
# when this node is a child of another node.
# Examples: geometry Box, children Group, proxy Group.
# Hint: can be overridden by author if needed.
# 5. 'class' attribute reserved for future use by XML Cascading Style Sheets (CSS), similar to HTML.
# References:
# http://www.w3.org/Style/CSS
# http://www.w3.org/TR/REC-CSS2
# This is an expected area of interaction with Web Accessibility Initiative (WAI).
# http://www.w3.org/WAI
# 6. tag removed in favor of containerField attributes throughout tagset
#
# becomes
#
# and following is removed:
#
# 7.