============================================================================= Maintainers: Don Brutzman and Roy Walmsley, X3D Working Group cochairs Contributors: Henry Boccon-Gibod, Don Brutzman, John Carlson, Justin Couch, Leonard Daly, Rick Goldberg, Alan Hudson, Michalis Kamburelis, HyoKwang Lee, Myeong Wong Lee, Rick Lentz, Vince Marchetti, Mike McCann, Christophe Mouton, Terry Norbraten, Marc Petit, Andreas Plesch, Nicholas Polys, Dick Puk, Peter Ryan, Holger Seelig, Keith Victor, Roy Walmsley, Joe D. Williams, Changhua Wu, Byounghyun Yoo, Kwan Hee Yoo, and members of the X3D Working Group. ============================================================================= TODO identified issues: - Need to integrate content models with %LayeringComponent; %LayoutComponent; %RigidBodyPhysicsComponent; %PickingSensorComponent; %FollowersComponent; %ParticleSystemsComponent; - TODO fix shader mixed-content models, see Script and corresponding X3D schemas for examples - allow other values for ShadedVolumeStyle phaseFunction Specification issues, clarifications and change resolutions are maintained by the X3D Working Group in the Web3D Consortium's Mantis issue tracking system. Feedback and improvements are always welcome. https://www.web3d.org/x3d/content/examples/X3dResources.html#Feedback ============================================================================= X3D DTD update activity: https://www.web3d.org/specifications/x3d-dtd-changelog.txt 10 DEC 2024, brutzman - (4.0) errata: upVector now part of TextureProjector and TextureProjectorParallel consistently with default 0 1 0 4 JUL 2024, brutzman - meta name attribute is #REQUIRED (matching schema requirement) 17 DEC 2023, brutzman - (4.0) capitalization of WaveShaper oversample allowed parameters (NONE|2X|4X) 20 NOV 2023, seelig, brutzman - ArcClose2D Disk2D Rectangle2D TriangleSet2D field solid has default value false - HAnimMotion field enabled has default value true 5 NOV 2023, seelig, brutzman - (4.0) added ComposedCubeMapTexture textureProperties, must follow other textures - ElevationGrid default values xDimension 0, zDimension 0, height is empty array - GeoElevationGrid default values xDimension 0, zDimension 0, height is [0 0] with difference noted as X3D 4.1 erratum in issue tracker under Mantis 1447. - note fieldOfView default values set to 0.7854 rather than spec value 0.785398 in order to avoid false-positive validation errors, also avoid roundoff errors in tools - (4.0) OrthoViewpoint fieldOfView has type MFFloat even though SFVec3f is more correct to prevent modeling errors, deficiency recorded as Mantis 1398 - SurfaceEmitter has no coordIndex field, removed - CylinderSensor, PlaneSensor field axisRotation default value 0 0 1 0 - (4.0) added TextureTransform3D, TextureTransformMatrix3D mapping field 2 JUL 2023, brutzman - (4.0) HAnimMotion skeletalConfiguration removed, not supported in final version of X3D 4.0 Architecture - (4.0) HAnimMotion frameCount is outputOnly and not a legal value in an X3D model, also removed prior spelling totalFrameCount - (4.0) HAnimMotion default containerField is motions 23 APR 2023, brutzman - consistent use of https (only http within schema references to support tools) 30 MAR 2023, brutzman, puk - (4.0) Mantis 1435, fixed duration field DynamicsCompressor attack: SFTime vice SFFloat - (4.0) Mantis 1410, included IndexedLineSet as one of numerous possible nodes for HAnimHumanoid skin 31 JAN 2023, norbraten, brutzman - add XML Security namespaces for digital signature and encryption: allow XML Signature ds:Signature after X3D head Scene. note namespace values fixed. https://stackoverflow.com/questions/2096505/document-type-declaration-and-namespaces 29 JAN 2023, carlson, williams brutzman - HAnimJoint can contain HAnimDisplacer nodes 13 JAN 2023, brutzman, puk, myeong won lee, ryan - (X3D 4.0 Architecture DIS ISO Editor review) - (v4.0) add TextureProjection component - (v4.0) add CollisionCollection description field - (v4.0) HAnimMotion rename frameCount to totalFrameCount, accessType inputOutput - (v4.0) HAnimMotion allow skeletalConfiguration in order to allow compatibility testing with HAnimHumanoid node pending final acceptance in HAnim2.1 and X3D4.1 specifications, Mantis 1415 - (v4.0) Mantis 1398, OrthoViewpoint fieldOfView remains type SFVec4f for strict validation though X3D4 specification allows MFFloat for legacy tools - (v4.0) Mantis 1411 capitalize Web Audio enumerations, also change hyphens to underscores, in order to match X3D naming conventions - (v4.0) TODO Mantis 1420: Missing 5 enumeration sets (and likely fields) from Web Audio interfaces: AudioContextState, AudioContextLatencyCategory, AutomationRate, PanningModelType, DistanceModelType. 29 DEC 2022, brutzman - (v4.0) allowed HAnimMotion containerField values: children, motions - (v4.0) allowed Switch, LOD containerField values: children, skin (Mantis 1410) - (v4.0) corrected list of allowed nodes for HAnimHumanoid SFNode skin field - (v4.0) confirmed HAnimMotion frameCount field change from outputOnly to inputOutput 4 JUL 2022, carlson seelig brutzman - (v4.0) Mantis 1398, OrthoViewpoint fieldOfView needs type SFVec4f 12 JUN 2022, brutzman - (v4.0) Mantis 641, HAnim version 1.0 not allowed since incompatible with HAnim 2.0. 21 APR 2022, kamburelis polys puk brutzman - (v4.0) Mantis 1336, defer EnvironmentLight to X3D4.1 14 APR 2022, brutzman puk - (v4.0) Mantis 1255, fix fields for TextureProjector, TextureProjectorParallel - (v4.0) Mantis 1347, UnlitMaterial emissiveColor default is 1 1 1 - (v4.0) Mantis 1393, remove PointProperties markertype, deferred to X3D4.1 2 APR 2022, brutzman puk - (v4.0) Mantis 1393 add PointProperties markertype field 19 MAR 2022, brutzman puk - (v4.0) Mantis 799 allow GeoCoordinate as coord field for Nurbs nodes, also PolylineEmitter and VolumeEmitter - (v4.0) Mantis 491, include description field in all 4 DIS PDU nodes 14 MAR 2022, brutzman - Mantis 655, HAnimJoint cannot contain HAnimSite or HAnimDisplacer 4 MAR 2022, brutzman - (v4.0) SpotLight default value beamWidth = pi * 3 / 16 = 0.589049 - (v4.0) Add 'on' field to all nodes implementing X3DParticleEmitterNode - (v4.0) OscillatorSource frequency default value 440.0 - (v4.0) Add ParticleSystem field castShadow 3 FEB 2022, brutzman puk - Added X3DBoundedObject to RigidBody, RigidBodyCollection since they contained bounded child nodes (similar to NurbsSet, CollisionCollection, Mantis 1275) - Changed/confirmed default values for axis fields in DoubleAxisHingeJoint, MotorJoint, RigidBody, SingleAxisHingeJoint, SliderJoint, UniversalJoint 7 JAN 2022, X3D Working group - types remain unchanged for HAnimJoint ulimit llimit stiffness fields as MFFloat, each field has default value 0 0 0, only empty or 3-tuple arrays are valid, less restrictive typing maintained for backwards compatibility with X3D3 despite mismatch with HAnim 2.0 design patterns. 27 NOV 2021, brutzman - (v4.0) change enableDoppler to dopplerEnabled, matching X3D4 Architecture - (v4.0) default containerField=value for Metadata* nodes to reduce verboseness, this is a difference with respect to X3D3 XML validation defaults - (v4.0) consistent definition of HTML5-related attributes: "class NMTOKENS #IMPLIED", "id NMTOKEN #IMPLIED", "style %SFString; #IMPLIED" 30 OCT 2021, lakka brutzman - (v4.0) add AudioGraphNodes to SceneLeafNodes, matching schema 29 SEP 2021, lentz kamburelis brutzman - (v4.0) add enumerations for containerFieldChoicesX3DUrlObjectTexture and containerFieldChoicesX3DTexture2DNode: baseTexture, emissiveTexture, metallicRoughnessTexture, normalTexture, occlusionTexture 25 SEP 2021, brutzman - (v3.1-v4.0) MultiTexture texture field has type X3DSingleTextureNode and can include ComposedCubeMapTexture, GeneratedCubeMapTexture, ImageCubeMapTexture, ComposedTexture3D, ImageTexture3D, PixelTexture3D 2 AUG 2021, brutzman lentz polys puk - (v4.0) mediaDeviceID is inputOutput field, assignable by author (X3DSoundDestinationNode, AudioDestination, StreamAudioDestination) - MultiTexture texture field has type X3DSingleTextureNode and can include ComposedCubeMapTexture, GeneratedCubeMapTexture, ImageCubeMapTexture, ComposedTexture3D, ImageTexture3D, PixelTexture3D - (v4.0) X3D statements include attributes id, class and style. These globalAttributes can appear on any X3D4 element but are only functional when included as XML within HTML5 page. See Annex L of X3D4 specification. 16 MAY 2021, brutzman - (v4.0) StreamAudioDestination, StreamAudioSource: added streamIdentifier field, removed mediaStream field - (v4.0) added EnvironmentLight to Full Profile ChildrenNodes 7 MAY 2021, brutzman - HAnimJoint stiffness default 0 0 0 20 APR 2021, brutzman - (v4.0) add AudioClip, MovieTexture, Sound, SpatialSound to AudioGraphNodes 13 MAR 2021, brutzman - (v4.0) add PointProperties to AppearanceChildNodes 21 FEB 2021, brutzman - (v4.0) EnvironmentLight complete signature 4 FEB 2021, brutzman puk - (v4.0) HAnim motion startFrame, endFrame fields - (v4.0) Inline global field controls external scoping of included lights, default false - (v4.0) HAnimHumanoid SFNode field names skinBindingCoord, skinBindingNormal now singular for clarity, Mantis 1314 - (v4.0) EnvironmentLight initial signature, TODO add contained node fields 28 JAN 2021, kamburelis brutzman - (v4.0) Appearance alphaMode with choices "AUTO" "OPAQUE" "MASK" "BLEND" with default "AUTO" - (v4.0) Appearance alphaCutoff for threshold associated with alphaMode 19 DEC 2020, brutzman - (v4.0) ComposedCubeMapTexture fields now match TextureBackground: backTexture bottomTexture frontTexture leftTexture rightTexture topTexture (Mantis 1331) - (v4.0) DISEntityManager mapping field renamed as children (Mantis 1331) - (v4.0) LoadSensor watchList field renamed as children (Mantis 1331) - (v4.0) ParticleSystem colorRamp field renamed as color (Mantis 1331) and is MFNode vice SFNode, also texCoordRamp renamed as texCoord - (v4.0) ParticleSystem can contain TextureCoordinateGenerator in addition to TextureCoordinate (Mantis 1332) - (v4.0) add style attribute to all elements (can override FontStyle, ScreenFontStyle) FontStyle/ScreenFontStyle style->glyphStyle renaming rejected, instead can accept any kind of value for style field, Mantis 1335 6 DEC 2020, puk, brutzman - (v4.0) rename X3DUrlObject refresh as autoRefresh, add autoRefreshTimeLimit 7 NOV 2020, brutzman, puk, malamos, lakka - (v4.0) BufferAudioSource url load refresh fields - (v4.0) SpatialSound, ListenerPointSource add field enableDoppler default false - (v4.0) X3DSoundNode refactoring, PeriodicWave description and enabled fields, remove gain field from Sound, retain gain field in SpatialSound - (v4.0) rename AudioBufferSource to BufferAudioSource for clarity, similar to StreamAudioSource - (v4.0) rename ListenerPoint as ListenerPointSource for clarity, consistency - (v4.0) rename ChannelSelector field channelNumber as channelSelection for clarity - (v4.0) AudioBufferSource includes boolean field 'loop' - pitch field missing from MovieTexture, corrected 1 NOV 2020, brutzman, puk, kamburelis, plesch - (v4.0) X3DLightNode shadowIntensity, shadows (enabled); X3DShapeNode castShadow - (v4.0) TextureProjectorPerspective renamed as TextureProjector, TextureProjectorParallel remains as originally named - (v4.0) Sound component audio graphs: all node types and nodes - (v4.0) Shape component audio graphs: AcousticProperties - (v4.0) PointProperties pointSizeAttenuation -> attenuation, type SFVec3f - (v4.0) PointProperties omit colorMode - (v4.0) corrected refresh field as SFTime (not SFFloat) - (v4.0) remove incorrect fields metallic and roughness from Material - (v4.0) revise default values for nearDistance/farDistance 13 OCT 2020, brutzman - (v4.0) update documentation urls to X3D4 WD2 - (v4.0) add ProjectiveTextureMapping (PTM) component: TextureProjectorParallel and TextureProjectorPerspective, further changes under consideration - (v4.0) X3DViewpointNode near/farClippingPlane renamed as nearDistance/farDistance 28 SEP 2020, kamburelis tolk puk brutzman - (v4.0) add Physically Based Rendering (PBR) Material, PhysicalMaterial, and Non-photorealistic (NPR) UnlitMaterial - (v4.0) add mapping field to TextureCoordinate, TextureCoordinateGenerator, TextureTransform 20 SEP 2020, brutzman - (v4.0) add description, enabled fields to X3DTimeDependentNode, TimeSensor (Mantis 1323) - (v4.0) add description, load, refresh to X3DUrlOject nodes (Mantis 1262) 2 JUL 2020, brutzman - (v4.0) add description field to HAnim nodes 6 JUN 2020, brutzman - (v4.0) add nearClippingPlane farClippingPlane to Viewpoint, OrthoViewpoint, GeoViewpoint (Mantis 1320) - (v4.0) add bboxDisplay, visible to RigidBody, RigidBodyCollection (Mantis 1275) 14 JUN 2020, brutzman - (v4.0) add viewAll, navigationInfo field to X3DViewpointNode (Mantis 1194, 1305) - (v4.0) add Normal to LineSet, IndexedLineSet, PointSet (Mantis 1252) 25 MAY 2020, brutzman - HAnimHumanoid version default is 2.0 for X3D4 and 1.0 for X3D3 - bboxDisplay implemented as consistent field name rather than displayBBox (Mantis 1277) - only allow HAnim versions 1.0 and 2.0 (not 1.1 draft) - allow either enumeration value for HAnim component: HAnim or H-Anim - (v4.0) HAnimMotion allowed as valid content for X3DChildNode and HAnimHumanoid - (v4.0) HAnimMotion frameCount is accessType inputOutput 7 APR 2020, brutzman - (v4.0) add displayBBox field to X3DBoundedObject, Mantis 1277 - (v4.0) rename isPickable as pickable for naming consistency, Mantis 1287 - (v4.0) X3DLayerNode, Layer, LayoutLayer implements X3DPickableObject with fields objectType pickable and visible, Mantis 1287 18 JAN 2020, brutzman - fix content model for GeoOrigin (which is X3DNode, not X3DChildNode) - (v4.0) add visible field to X3DBoundedObject, Mantis 1271 https://www.web3d.org/member-only/mantis/view.php?id=1271 (no longer named 'hidden') - ((v3.2+) CollisionCollection contains nodes with X3DBoundedObject interfaces, so TODO CollisionCollection needs to be marked in specification as X3DBoundedObject as well. - TODO (v4.0) PointSet, LineSet, IndexedLineSet implement X3DComposedGeometryNode similar to other geometry nodes, allowing Normal and texture coordinate children 12 JAN 2020, brutzman - (v4.0) Enumeration, component name "HAnim" added, "H-Anim" remains an allowed value for backwards validation of X3Dv3 HAnimv1 models. 11 JAN 2020, brutzman - added containerFieldChoicesX3DCoordinateNode and containerFieldChoicesX3DNormalNode also (v4.0) adding new HAnim v2 skinBinding fields for HAnimHumanoid - (v3.0-3.3) HAnimHumanoid only includes 1 Coordinate, 1 Normal (skinCoord, skinNormal) - (v4.0) HAnimHumanoid now includes 2 Coordinate, 2 Normal (skinCoord/SkinBindingCoords, skinNormal/skinBindingNormals) - (v4.0) TODO PointProperties inconsistent camel-case spelling, should be lineType and lineWidthScaleFactor: Mantis 1252 13 JUL 2019, brutzman - change documentation links http://www.web3d.org to https://www.web3d.org but leave schema, DTD reference links unchanged 4 MAY 2019, marchetti puk brutzman - (v4.0) added PointProperties 10 FEB 2019, brutzman williams - HAnim joint name humanoidroot corrected as humanoid_root - (v4.0) TODO Update simpleType jointNameValues, segmentNameValues, featurePointNameValues to match HAnim 2.0 FDIS specification - HAnimJoint ulimit, llimit, stiffness changed to SFVec3f rather than MFFloat as part of HAnim 2.0 review, reapplied missing correction from 27 SEP 2018 27 SEP 2018, brutzman - Match v4.0 improvements for containerField choice types and LoadSensor watchlist nodes in v3.0 through v3.3 schemas 16 AUG 2018, brutzman - humanoid_root is lower case (as are all HAnim names) 8 JUL 2018, brutzman - (v4.0) added rootNode (for parent GeoLOD) to containerFieldChoicesGroupLODShapeTransform - (v4.0) (v3.2+) ParticleSystem: add containerFieldChoicesColor for Color, ColorRGBA - (v4.0) (v3.2+) ParticleSystem: add containerFieldChoicesTextureCoordinate for TextureCoordinate, TextureCoordinateGenerator 4 JUL 2018, brutzman - (v4.0) add containerFieldChoicesX3DTexture3DNode (texture|gradients|segmentIdentifiers|surfaceNormals|voxels|watchList)) - (v4.0) rename containerFieldChoicesTexture as containerFieldChoicesX3DTexture2DNode - (v4.0) rename containerFieldChoicesUrlObjectTexture as containerFieldChoicesX3DUrlObjectTexture - (v4.0) fixed syntax error in Group containerField substitution 29 JUN 2018, brutzman - added url field to PackagedShader - (v4.0) added various non-default containerFieldChoices - (v4.0) corrected HAnimMotion default containerField to motions 27 MAY 2018 brutzman, puk, lee, HAnim working group review - (v4.0) added HAnimHumanoid fields for motions, motionsEnabled - (v4.0) added/revised HAnimMotion fields for frameIncrement, frameIndex, loop, startFrame, endFrame (plus outputOnly fields cycleTime, elapsedTime) - (v3.0-v3.3) HAnimHumanoid correct choices for version values (1.0 1.1 2.0) 13 MAY 2018 brutzman, puk, lee, HAnim working group review - (v4.0) HAnimMotion added startFrame/endFrame fields, current draft set of fields include frameCount, frameDuration, frameIndex 3 MAY 2018 brutzman, HAnim working group - (v4.0) HAnimMotion frameTime (original BVH name) renamed as frameDuration, added enabled field (default false), renamed frameTime as frameNumber 26 APR 2018 brutzman, puk - (v4.0) Change HAnimJoint ulimit and llimit to type MFVec3F (vice MFFloat), see Mantis 774 - (v4.0) HAnimHumanoid fields loa, motions, motionsEnabled fields added - (v4.0) HAnimMotion node added 6 JAN 2018 brutzman - Allow HAnimHumanoid skin field to contain Group|Transform|Shape|IndexedFaceSet 30 DEC 2017 brutzman - HAnimJoint can also contain HAnimSite in children field - HAnimHumanoid can only contain IndexedFaceSet in skin field, not X3DChildNode (TODO allow other indexed meshes once HAnim and mantis reviews are complete) 7 September 2017 brutzman walmsley puk - ProtoInstance name field not required, in order to support USE instance without name. Note that initial ProtoInstance (with optional DEF) must include name field regardless. 24 July 2017 seelig walmsley brutzman - Layout size is MFFloat with default array value "1 1" - (v3.2+) Add quotes to default MFString values for forceOutput %MFString; ""NONE"" (BallJoint, DoubleAxisHingeJoint, MotorJoint, SingleAxisHingeJoint, SliderJoint, UniversalJoint) appliedParameters %MFString; ""BOUNCE"" (CollisionCollection, Contact) objectType %MFString; ""ALL"" (LinePickSensor, PickableGroup, PointPickSensor, PrimitivePickSensor, VolumePickSensor, ) 15 June 2017 seelig walmsley brutzman puk - (v3.2+) fixed inconsistencies in anchorPoint default value, all now equal 0 0 0 - (v3.2+) fixed default ScreenFontStyle pointSize 12 29 May 2017 brutzman walmsley - name attribute not required for Metadata* and *VertexAttribute (v3.1+) nodes, since cannot REQUIRE @name field or else USE nodes fail to validate - changed *VertexAttribute name fields to NMTOKEN for stricter name checks 23 April 2017 brutzman walmsley puk - name attribute required for Metadata* and *VertexAttribute (v3.1+) nodes (but see 29 May 2017) - Metadata* and LayerSet nodes allowed as top-level children of Scene and ProtoBody - LayerSet (v3.2+) can only appear at root of Scene, thus removed from ChildContentModelFull - ProtoBody must have at least one element (rather than permitting zero) 4 April 2017 brutzman - GeoElevationGrid creaseAngle is type SFDouble (see Mantis issue 264) 1 March 2017, danek, brutzman, walmsley - include pickingTarget %ShapeNodes% as part of content model for *PickSensor nodes 26 December 2016, brutzman, walmsley - HAnimDisplacer, HAnimHumanoid, HAnimJoint, HAnimSegment, HAnimSite names match NMTOKEN, enumeration list values not required - HAnimJoint stiffness default value set to [1 1 1] to better support inverse kinematics (IK) 19 October 2016, sanden, brutzman, walmsley, polys - (v3.3+) BlendedVolumeStyle weightFunction enumeration constants for ALPHA0/ALPHA1 corrected to ALPHA1/ALPHA2 24 September 2016, brutzman - (v3.1+) allow CDATA content for script source code within ShaderPart, ShaderProgram - (v3.0) allow MultiTexture in AppearanceChildNodes 28 August 2016, walmsley brutzman - Attempted to define strict justifyValues enumeration list to only allow correct values for FontStyle/ScreenFontStyle justify attribute. However, they failed validation and are not included in the DTD. - Entity declaration for MFString enumerations won't work, according to XML Recommendation, because " is not a NameStartChar https://www.w3.org/TR/REC-xml/#sec-entity-decl https://www.w3.org/TR/REC-xml/#NT-Name https://www.w3.org/TR/REC-xml/#NT-NameStartChar Example definition matching schema follows. - Corrected names for r_thelion/l_thelion (omitting "bustpoint") 9 July 2016, brutzman - Remove extraneous . character in HAnim enumeration names 1 April 2016, marchetti walmsley brutzman - (v3.1+) CADAssembly content model is now permissive: X3DChildNode. This is consistent with CADLayer. Restrictive content rules go in CAD profiles instead. 3 March 2016, walmsley, brutzman - Fix extension syntax for AppearanceNodes/AppearanceNodeExtensions within Shape 25 February 2016, walmsley, brutzman - ShaderPart, ShaderProgram: default value is type="VERTEX" - MetadataNodes now allows ProtoInstance 27 January 2015, brutzman - GeoOrigin allowed in ChildrenNodes, matching X3D Schema. GeoLocation, GeoLOD, GeoTransform content model simplified to match. - (v3.2+) TextureProperties borderWidth type changed to SFInt32, anticipating specification change 13 January 2015, walmsley, brutzman - (v3.2+) GeneratedCubeMapTexture, ImageCubeMapTexture: added SFNode TextureProperties as contained content - (v3.2+) Contact node default containerField="contacts" - (v3.3+) Added class attribute to MetadataBoolean and VolumeRendering component nodes - (v3.3+) Remove duplicate enabled attribute from ShadedVolumeStyle - insertion of comments to indicate which version of X3D includes addition of new elements/attributes, in order to facilitate diffing and maintenance of successive DTD versions 28 December 2015, seelig, walmsley, brutzman - (v3.2+) LayoutLayer containerField corrected as "layers" 23 December 2015, walmsley, puk, daly, brutzman - ElevationGrid/GeoElevationGrid defaults for xDimension/zDimension set to 2, height array set to [0 0 0 0] showing unit grid as default node. 7 December 2015, walmsley, brutzman - (v3.2+) added matchCriterion field to LinePickSensor PointPickSensor PrimitivePickSensor VolumePickSensor 31 October 2015, brutzman - updated version and revision information - X3D version 3.4 no longer planned, going straight to version 4.0 19 October 2015, walmsley brutzman - ProtoInstance now includes child metadata node 15 August 2015, walmsley, brutzman - Allow ProtoInstance nodes as texture children for ComposedTexture3D (v3.1+), ComposedCubeMapTexture (v3.1+) and TextureBackground (v3.0+). 3 August 2015, walmsley, brutzman - (v3.2+) X3DColorDamper nodes: default value for order field is 3, not 0 - Noted in comments that, unlike Schema, the DTD content model for Script node is not ordered 27 July 2015, walmsley brutzman - MovieTexture: add description field - HAnimJoint content model: add HAnimDisplacer node (but not HAnimSite, see Mantis Issue 655) - NurbsTextureCoordinate removed from TextureCoordinateNodes 8 June 2015, walmsley brutzman - corrected MultiTexture not part of Texture2DNodes, instead part of AppearanceChildNodes etc. - (v3.3+) corrected content model for VolumeStyle nodes, omitting MultiTexture - (v3.2+) CollisionCollection default containerField="collider" - Added MedicalInterchange profile 27 May 2015, walmsley brutzman - (v3.1+) Added axisRotation to CylinderSensor and PlaneSensor. - Note that CADAssembly children ViewpointGroup and OrthoViewpoint require Navigation component level 3, which is higher than CADInterchange profile - removed SquadOrientationInterpolator closed field, erroneous; added normalizeVelocity field - various DIS *applicationID defaults now 0 (meaning no value specified) in order to match IEEE DIS defaults. - NurbsCurve2D is not a renderable geometry node, removed from content model. - PointPickSensor contains PointSet - Added missing fields: SurfaceEmitter coordIndex, VolumeEmitter internal - BoundaryEnhancementVolumeStyle content model fixed/simplified 15 May 2015, walmsley brutzman - (v3.2+) X3DRigidJointNode corrected field naming from mustOutput to forceOutput 17 March, walmsley, brutzman - (v3.2+) add ParticleSystems and Picking to component names 2 February 2015, kwan hee yoo, brutzman - (v3.4) add jointNames, segmentNames for improved LOA4 Humanoid Animation (H-Anim) hands, feet 27 January 2015, brutzman - commenced work on experimental X3D v3.4 files, created as a direct copy of all v3.3 constructs. these will be maintained consistently with corresponding versions 3.3, 3.2, 3.1 and 3.0. 18 January 2015, walmsley, brutzman - FogCoordinate depth field as type MFFloat - Metadata*, HAnim* nodes: cannot require @name field or else USE nodes fail to validate 13 December 2014, brutzman - consistent definition of class attribute throughout: class NMTOKENS #IMPLIED 1 December 2014, norbraten daly brutzman - entitySubCategory recapitalized as entitySubcategory to match capitalization of subcategory 27 May 2014, brutzman - Metadata containerField choices are (metadata|value) with default remaining "metadata" to match X3D specification 12 April 2014, brutzman - (v3.0) changed Appearance child nodes content model to match design pattern used in versions 3.1-3.3 Reference: Mantis issue 675, https://www.web3d.org/realtime-3d/member-only/mantis/view.php?id=675 3 February 2014, brutzman puk - removed ComposedVolumeStyle "ordered" field to match X3D v3.3 Web3D/ISO review 31 January 2014, brutzman - BoundaryEnhancementVolumeStyle default attribute values corrected: boundaryOpacity 0.9, opacityFactor 2, retainedOpacity 0.2 1 January 2014, brutzman - NavigationInfo transitionType default value is "LINEAR" 19 August 2013, brutzman, williams - HAnimSite name fields can also include name="somelocation_view" and so SiteNames validation is turned off by default 15 July 2013, brutzman, williams - HAnimJoint can only contain HAnimJoint or HAnimSegment as direct children, not HAnimSite 25 April 2013, brutzman - HAnimJoint allowed content model further restricted to match X3D specification (only displacers HAnimDisplacer, children HAnimJoint HAnimSegment HAnimSite) 25 April 2013, Hyokwang Lee, brutzman - (v3.1+) CADPart is an allowed child node as part of CadGroupingNodes 24 April 2013, brutzman williams - Corrected overzealous validation in HAnim nodes: name and version fields cannot be required since they do not appear in USE copies 6 April 2013, brutzman williams - HAnimHumanoid version restricted to 2.0, matching authoritative ISO specifications for H-ANIM and X3D - HAnimDisplacer, HAnimHumanoid, HAnimJoint, HAnimSegment, HAnimSite: name field is required - Prior list of jointNames from http://ecetemp.uwaterloo.ca/~h-anim/spec1.1/#hierarchy replaced by joints list for HAnimJoint node from https://www.web3d.org/x3d/specifications/ISO-IEC-19774-HumanoidAnimation/HAnim/concepts.html#Hierarchy - Added enumeration list for segmentNames for HAnimSegment node as shown in https://www.web3d.org/x3d/specifications/ISO-IEC-19774-HumanoidAnimation/HAnim/concepts.html#Hierarchy - Added feature points as allowed values for HAnimDisplacer nodes as shown in https://www.web3d.org/x3d/specifications/ISO-IEC-19774-HumanoidAnimation/HAnim/FeaturePoints.html#FeaturePoints - Added site names as allowed values for HAnimSite nodes (matching LOA 3 plus l_hand_tip, r_hand_tip) as shown in https://www.web3d.org/x3d/specifications/ISO-IEC-19774-HumanoidAnimation/HAnim/BodyDimensionsAndLOAs.html#LOA3DefaultSiteTranslations - Additional enumeration tables extracted from H-Anim specification available at https://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/tables 25 October 2012, brutzman - (v3.1) Fix ComposedShader content model to match v3.2, v3.3 (field precedes IS, ShaderPart) 29 September 2012, brutzman - (v3.2+) ScreenFontStyle added to FontStyleNodes - (v3.2+) LayoutLayer is allowed within the LayerSet content model 23 September 2012, brutzman (corrections to changes previously reported 9, 16 September 2012) - (v3.3 only) ColorChaser CoordinateChaser ScalarDamper TexCoordChaser2D removed from v3.2 - (v3.3 only) moved SquadOrientationInterpolator to FullProfile, normalizeVelocity field removed since no keyVelocity field is present 16 September 2012, brutzman - (v3.2+) added EaseInEaseOut node to FullProfile - (v3.2+) added PointPickSensor node - (v3.2+) added to FullProfile: LinePickSensor, PickableGroup, PointPickSensor, PrimitivePickSensor, VolumePickSensor, LayerSet - (v3.2+) added SplinePositionInterpolator, SplinePositionInterpolator2D, SplineScalarInterpolator nodes - (v3.2+) moved SquadOrientationInterpolator to FullProfile, added field normalizeVelocity - (v3.2+) ParticleSystem can also contain ConeEmitter, ExplosionEmitter - (v3.2+) ParticleSystem has containerField "children" - (v3.2+) LayerSet has containerField "children" - (v3.2+) single child Viewport node is optional for Layer, LayoutGroup, LayoutLayer 12 September 2012, brutzman - (v3.2+) ViewpointGroup content model modified to also allow ProtoInstance children, matching X3D Schema 9 September 2012, brutzman - (v3.2+) X3DChaserNode duration default set to 1 (second) matching implementing nodes, spec comment submitted - (v3.2+) X3DDamperNode and implementing nodes: tau default set to 0.3, order default set to 3, matching X3D specification - (v3.2+) added missing definitions for ColorChaser, CoordinateChaser, ScalerDamper, TexCoordChaser2D nodes 8 September 2012, brutzman - (v3.2+) Added missing ClipPlane and TransformSensor node definitions, included as part of Full Profile - (v3.1+) Node name correction: TextureMatrixTransform renamed to TextureTransformMatrix3D to match specification 5 September 2012, brutzman - (v3.2+) Add enumerations for stricter validation of TextureProperties fields, matching X3D Schema - Add enumerations for more consistent validation of DIS networkMode fields, matching X3D Schema 4 September 2012, brutzman - (v3.2+) Allow further uses of ProtoInstance as ParticleSystems child nodes for colorRamp, texCoordRamp, emitter, physics 30 August 2012, brutzman - (v3.3) ShadedVolumeStyle phaseFunction values restricted to (NONE|Henyey-Greenstein), matching X3D Schema 25 August 2012, brutzman - meta tag name attribute is optional to match HTML, since http-equiv attribute might be used instead 23 August 2012, brutzman, puk - DIS nodes EspduTransform, SignalPdu, ReceiverPdu, TransmitterPdu are geospatial, fields added for geoSystem, geoCoords (support X3D v3.3 specification change) 17 August 2012, brutzman - (v3.1+) CADAssembly content model now matches restricted CAD product structure as defined for X3D Schema. - (v3.1+) Note that parent CADLayer does not have similar restrictions and can contain any X3DGroupingNode. 11 August 2012, Hyokwang Lee, brutzman - (v3.1+) CADAssembly is not allowed to include CADFace as an immediate child since that does not match CAD product structure as defined in X3D specification clause 32.4.1 24 June 2012, marchetti, brutzman - (v3.1+) CADAssembly can only contain multiple GroupingNodes, CADAssembly (subassembly), CADPart, CADFace or ProtoInstance nodes - (v3.1+) CADFace can only contain single Shape|LOD|Transform|ProtoInstance - (v3.1+) CADPart can only contain multiple CADFace or ProtoInstance nodes - (v3.2+) ViewpointGroup is not one of GroupingNodes, rather one of ChildrenNodes 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. element no longer allowed, due to lack of type checking on # node and attribute values, as well as redundant functionality. # Utilize @USE attributes instead, for example # # # # brutzman, 14 May 2002 # removed commented/unused MultiTexture fragments, copied here for # archival purposes # # # # # # # # # # # # # # # # # --> # # # # # # # # # brutzman, 18 February 2002 # eliminated Browser attributes [evaluate browserResponse creationTargetNode] from Scene # brutzman, 16 February 2002 # renamed CoreProfile to InterchangeProfile # added Extensibility to allowed profile names, work under discussion # jablonski, brutzman, 2 February 2002 # fixed LatticeXvl XvlShell attributes as Booleans/SFBool # brutzman, 2 February 2002 # removed experimental readOnly attribute from # jablonski, brutzman, 26 January 2002 # fully integrated LatticeXvl XvlShell, LatticeXvl-compact.dtd and many examples # tested satisfactorily under Cortona and CosmoPlayer # requires CLASSPATH modification to run, see readme.txt in examples/LatticeXvl # brutzman, 22 January 2002 # completed attribute value validation checks in X3dToVrml97.xsl !! # fixed variety of previously undetected (!) errors throughout examples # changed default filename extension, renamed all example files .xml => .x3d # propagated through all examples # GeoVrml => GeoSpatial profile # DIS profile => DistributedInteractiveSimulation profile # brutzman, 21 January 2002 # vrml97Hint => accessType # ExternProtoDeclare nodeTypeHint => nodeType, changing allowed values from CDATA to # enumerated names matching all VRML 97 nodes and instantiable node types. # local DOCTYPE DTD address: removed file:///c: for cross-platform flexibility # modified all example scenes to remove optional quotes from enumerations, so that # # becomes # etc. # Similarly for FontStyle justify/family and Fog type attributes. # This silences messages from improved X3dToVrml97.xsl enumerations validation. # brutzman, 4 November 2001 # no children allowed in Inline # simplified definition for ProtoInstance # brutzman, 10 October 2001 # ProtoDeclare and ExternProtoDeclare no longer restricted to appear as first # children of Scene, but can now appear in any order among children nodes. # brutzman, diefenbach, puk 12 July 2001 # tags include originator, url and version attributes - still experimental. # brutzman 8 July 2001 # tags are now first children of , preceding tags. # brutzman 4 July 2001 # , , gain annotation attributes for documentation # and appInfo descriptions, matching XML Schema tag structures and semantics. # This allows scene authors (and extension authors) to annotate and document new # Prototypes and their fields, in same manner as other X3D node definitions and tooltips. # This is an important and valuable capability since prototypes are the primary extension # mechanism for VRML/X3D. # Initial implementation: attributes (rather than tags) for documentation and appInfo. # Future implementation may replace these simple attributes with documentation/appInfo # element tags from XML Schema, in order to enable internationalization (i18n) and thus # multiple simultaneous versions of these values in different languages. Documentation: # http://www.w3.org/TR/xmlschema-0/#CommVers # http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#declare-annotation # dick puk, brutzman, curtis blais 3 July 2001 (specification editors meeting) # Updated compact and compromise DTDs to match specification changes # ref: "X3D spec meeting: VRML200x/X3D profiles, components, and headers," 4 May 2001 # https://www.web3d.org/WorkingGroups/x3d-contributors/hypermail/2001/0438.html # profileForContainedScene becomes profile, # with valid enumeration names (Core|CoreInteractive|Base|Full). # indicates needed scene functionality above the given profile. # tag(s) are optional first children of , with string # attributes name (required) and level (optional). # Names are not constrained enumeration values, authors can define components. # Supported component names are (DIS|GeoVrml|HumanoidAnimation|Lattice|Nurbs|[other]). # is revised name for
to exactly match XHTML/HTML, especially # since it contains no specified VRML/X3D header information # looks OK as is # rename BaseLine Profile as Base Profile # CoreInteractive profile under consideration by Browser working group, slightly # richer than strict Core Profile which corresponds to output-only devices # rename DisJavaVrml component as DIS (IEEE Distributed Interactive Simulation Protocol) # and matched name of corresponding DIS.dtd, DIS-compact.dtd # gains boolean attribute readOnly, for field definitions inside ProtoDeclare, # ExternProtoDeclare and Script. Implied default is readOnly false. # Native-node attributes have readOnly semantics defined in the # VRML 200x Part I abstract specification. # attribute vrml97hint (for enumerations eventIn, eventOut, field, exposedField) # maintained for backwards compatibility, but not needed for VRML 200x and later. # jablonski, brutzman 1 July 2001 # initial integration LatticeXvl profile, work in progress # brutzman 1 July 2001 # promoting to version 0.8 since NIST conformance suite passes # brutzman 1 July 2001 # changed URL for local-system backup DTD resource from # "file://localhost/C:/www.web3D.org/TaskGroups/x3d/translation/x3d-compact.dtd" # ^^^^^^^^^ # to # "file:///C:/www.web3D.org/TaskGroups/x3d/translation/x3d-compact.dtd" # thus X3D scenes should have the following DOCTYPE: # # # Future work is to achieve the following DOCTYPE in working systems and applications: # # brutzman 1 July 2001 # shortened Document Type Declaration references for contained profiles inside DTD # to direct, local SYSTEM links for more-stable response both online and offline. # Example: # brutzman 25 May 2001 # moved Switch from BaseLine to Core profile, supporting use of KeySensor # activation keys under Core profile. KeySensor still undergoing implementation # and evaluation. # brutzman 17 April 2001 # subsetted TouchSensor fields for hitNormal, hitPoint and hitTexCoord # to be BaseLine profile. all other TouchSensor fields are Core profile. # brutzman 10 April 2001 # updated meta tag xml:lang language attribute reference # [IETF RFC3066/BCP47] http://www.rfc-editor.org/bcp/bcp47.txt # brutzman 12 March 2001 # meta tag name attribute now required, since description also required # goldberg 6 February 2001 # Viewpoint 'examine' field is Rotation, not Vector3Float # brutzman 3 February 2001 # corrected missing * after SceneLeafNodes in x3d-compact.dtd to allow # multiple children under ProtoInstance, not just single children # couch, brutzman 1 February 2001 # isOver, touchTime added to Anchor to match multiple interface with # TouchSensorNodeType. see VRML 97 specification, X3D Schema, SAI. # http://www.web3D.org/technicalinfo/specifications/vrml97/part1/nodesRef.html#Anchor # http://www.web3D.org/technicalinfo/specifications/vrml97/part1/concepts.html#4.6.7.3 # http://www.web3D.org/TaskGroups/x3d/translation/X3dSchemaDraft.xml # http://www.web3D.org/TaskGroups/x3d/sai/javadoc/org/web3d/x3d/sai/Anchor.html # brutzman, goldberg, williams 12/26/2000 # Scene node exposes Browser class and has a DEF. Added currentTime # to match experimental testing of proposed additional field for # VRML 97/200x. # brutzman 12/17/2000 # experimenting with renaming Color to ColorNode, in order to avoid # SAI API naming collision with Color field type (i.e. rgb values) # brutzman 11/22/2000 # renamed Vector2, Vector2Array, Vector3, Vector3Array to # Vector2Float, Vector2FloatArray, Vector3Float, Vector3FloatArray # avoiding name collisions with GeoVrml Vector_Double types # brutzman 11/19/2000 # added FontStyle to list of allowed Prototype nodes # brutzman 11/8/2000 # added KeySensor to Core Profile and StringSensor to Baseline Profile # added Nurbs Profile # renamed Vrml97 Profile to Baseline Profile # brutzman 10/8/2000 # hid never-been-tested multitexture tags by IGNORE-ing X3dExtensions # brutzman 8/13/2000 # fixed oversight, allowed USE node as one of the allowed %ProtoNodes; # brutzman 7/11/2000 # integrated extension support and translation capabilities for # GeoVrml.dtd (version 1.0) and HumanoidAnimation.dtd (version 1.1) # tested via examples subdirectories, stylesheets and X3D-Edit # brutzman 6/11/2000 # fieldValue node: attribute 'fieldName' is now 'name' for consistency # brutzman 6/7/2000 # ProtoInstance added as a valid %ProtoNodes; entity, simply allows # ProtoInstance to be used to initialize fields of type Node/Nodes # brutzman 5/23/2000 # ExternProtoDeclare: Vrml97typeHint relaxed to be any type value # brutzman 5/17/2000 # Inline edited to contain children (vice SceneNodes) in # x3d-compromise.dtd, to permit possible external access. Same # for GeoInline. This needs to be on our technical issues list. # brutzman 5/16/2000 # fixed example URLs at top of each DTD # brutzman 5/1/2000 # split out DTD into two versions: # x3d-compromise.dtd official version with field-wrapper tags # x3d-compact.dtd unofficial version without field-wrapper tags # which can be used as part of a binary specification and for # autogeneration of class hierarchies that do not include fields as # actual classes in the tree # cleaned out following excerpts from DTD: # # # # # # # # # brutzman 4/23/2000 # Script node whitespace handling for contained script code: # Script now has xml:space #FIXED to 'preserve' and it's child field tag # has xml:space restored to (default | preserve) 'default' # This forces preservation of whitespace as described in XML spec 2.10 # and more closely matches XHTML 1.0. Also note that all line-feed # combinations (#xA, #x13, #x13#xA) are mapped to #xA, the line-feed # character as described in XML spec 2.11. This means that CDATA # sections enscapsulating script code are not required for authors to # ensure proper handling of line feeds. # is contained by