X3D schema changelog: https://www.web3d.org/specifications/x3d-schema-changelog.txt Version control: https://svn.code.sf.net/p/x3d/code/www.web3d.org/specifications References: ================================================================================================= - Final schema: https://www.web3d.org/specifications/x3d-4.0.xsd - Schema extensions: https://www.web3d.org/specifications/x3d-4.0-Web3dExtensionsPublic.xsd https://www.web3d.org/specifications/x3d-4.0-Web3dExtensionsPrivate.xsd - Documentation https://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0.html ================================================================================================= - Final schema: https://www.web3d.org/specifications/x3d-3.3.xsd - Schema extensions: https://www.web3d.org/specifications/x3d-3.3-Web3dExtensionsPublic.xsd https://www.web3d.org/specifications/x3d-3.3-Web3dExtensionsPrivate.xsd - Documentation https://www.web3d.org/specifications/X3dSchemaDocumentation3.3/x3d-3.3.html ================================================================================================= - Final schema: https://www.web3d.org/specifications/x3d-3.2.xsd - Schema extensions: https://www.web3d.org/specifications/x3d-3.2-Web3dExtensionsPublic.xsd https://www.web3d.org/specifications/x3d-3.2-Web3dExtensionsPrivate.xsd - Documentation https://www.web3d.org/specifications/X3dSchemaDocumentation3.2/x3d-3.2.html ================================================================================================= - Final schema: https://www.web3d.org/specifications/x3d-3.1.xsd - Schema extensions: https://www.web3d.org/specifications/x3d-3.1-Web3dExtensionsPublic.xsd https://www.web3d.org/specifications/x3d-3.1-Web3dExtensionsPrivate.xsd - Documentation https://www.web3d.org/specifications/X3dSchemaDocumentation3.1/x3d-3.1.html ================================================================================================= - Final schema: https://www.web3d.org/specifications/x3d-3.0.xsd - Schema extensions: https://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPublic.xsd https://www.web3d.org/specifications/x3d-3.0-Web3dExtensionsPrivate.xsd - Documentation https://www.web3d.org/specifications/X3dSchemaDocumentation3.0/x3d-3.0.html ================================================================================================= X3D Scene Authoring Hints: Validation of X3D Scenes using DTD and XML Schema https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#Validation X3D for Web Authors, Chapter 1, Technical Introduction https://x3dgraphics.com/chapters/Chapter01-Technical_Introduction.pdf ================================================================================================= Author: Don Brutzman Example use referencing the X3D DOCTYPE and Schema in an X3D source scene: ============================================================================= Open-source license: https://www.web3d.org/specifications/license.html https://www.web3d.org/specifications/license.txt Schema development tools: - Netbeans https://www.netbeans.org - XML Spy https://www.xmlspy.com - Ant https://ant.apache.org X3D editor for testing usage of these DTDs and schemas: - X3D-Edit https://savage.nps.edu/X3D-Edit Additional References: - XML Schema validator: https://www.w3.org/2001/03/webdata/xsv - X3D tagset DTDs: - https://www.web3d.org/specifications/x3d-3.0.dtd - https://www.web3d.org/specifications/x3d-3.0-InputOutputFields.dtd - https://www.web3d.org/specifications/x3d-3.0-Web3dExtensions.dtd - Revised Web3D Extensions: https://www.web3d.org/x3d-content/x3d-3.0-Web3dExtensions.dtd - Related VRML specs: https://www.web3D.org/technicalinfo/specifications/vrml97 https://web3d.org/vrtp/dis-java-vrml https://www.geovrml.org/1.0 https://h-anim.org/spec1.1 https://www.blaxxun.com/support/developerguide/developer/contact/3d/nurbs/spec/nurbsproposal.html - XML Schema DTD: https://www.w3.org/2000/10/XMLSchema.dtd - XML Schema schema: https://www.w3.org/2000/10/XMLSchema.xsd - XML Datatypes DTD: https://www.w3.org/2000/10/datatypes.dtd - XML Datatypes schema: https://www.w3.org/2000/10/datatypes.xsd - XML Schema Primer: https://www.w3.org/TR/2000/WD-xmlschema-0-20000922 - XML Schema Structures: https://www.w3.org/TR/2000/WD-xmlschema-1-20000922 - XML Schema Datatypes: https://www.w3.org/TR/2000/WD-xmlschema-2-20000922 - XML Schema group: https://www.w3.org/XML/Schema - XML Schema quality checker: https://alphaworks.ibm.com/tech/xmlsqc - Interface hierarchy: https://www.web3d.org/spec_editors/abstract/Part01/concepts.html#InterfaceHierarchy - X3D Scene Access https://www.web3d.org/spec_editors/abstract/Part02 Interface (SAI): https://www.web3d.org/spec_editors/bindings - Robin Cover's pages: https://www.oasis-open.org/cover/schemas.html - Best practices: https://www.xfront.com/BestPractices.html - Xeena XML editor: https://www.alphaWorks.ibm.com/tech/xeena - Xeena xsd profile: https://www.web3D.org/x3d/content/XMLSchema.profile - X3D-Edit: https://www.web3D.org/x3d/content/README.X3D-Edit.html - X3D-Schema-Edit: https://www.web3D.org/x3d/content/X3D-Schema-Edit.bat - X3D Contributors: https://www.web3D.org/x3d.html - _Professional XML Schemas_ by Kurt Cagle, Jon Duckett, Oliver Griffin, Stephen Mohr, Francis Norton, Nik Ozu, Ian Stokes-Rees, Jeni Tennison and Kevin Williams, Wrox Press Ltd., Birmingham UK, 2001. https://www.wrox.com/Books/Book_Details.asp?ISBN=1861005474 - _Definitive XML Schema_, Priscilla Walmsley, Prentice Hall, Upper Saddle River New Jersey, 2002. https://www.datypic.com/books/defxmlschema W3C XmlSchema.dtd revisions: - None needed. Using original W3C Schema and Datatypes DTDs listed above. ============================================================================= 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: - Mismatch problem with X3DEnvironmentalSensorNode center and the GeoProximitySensor geoCenter field; deprecated geoCenter, add schematron rule. - Done: Continue quality assurance (QA) refinements as found in Web3D 2012 paper by Marc Petit et al. - Done: confirm annotations allowing autogeneration of full X3D Unified Object Model (X3DUOM) and corresponding SAI APIs in various programming languages. 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 XML Schema update activity: https://www.web3d.org/specifications/x3d-schema-changelog.txt 2 FEB 2024, brutzman - Final Web3D url for X3D 4.0 Architecture International Standard (IS) https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/Architecture.html 17 DEC 2023, brutzman - ComposedCubeMapTexture field textureProperties default is TextureProperties node 20 NOV 2023, seelig, brutzman - X3DEnvironmentalSensorNode size field has accessType inputOutput which affects ProximitySensor TransformSensor VisibilitySensor GeoProximitySensor - HAnimHumanoid motionsEnabled field is an MFBool attribute, not an element - ArcClose2D Disk2D Rectangle2D TriangleSet2D field solid has default value false - Extrusion fields have accessType initializeOnly, creaseAngle has type SFFloat - HAnimHumanoid fields jointBindingPositions jointBindingRotations jointBindingScales have default value of empty array - HAnimMotion fields channels, joints have type SFString - HAnimMotion field enabled has default value true - Text field solid has default value false 5 NOV 2023, seelig, brutzman - all solid fields have accessType initializeOnly - (4.0) added ComposedCubeMapTexture textureProperties, must follow other textures - several size fields have accessType initializeOnly (rather than inputOutput): X3DEnvironmentalSensorNode, Box, GeneratedCubeMapTexture, Rectangle2D - 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. - GeoElevationGrid set_height has type MFDouble - Extrusion fields beginCap, ccw, convex, creaseAngle, crossSection, endCap, orientation, scale, solid, spine have accessType initializeOnly. - 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 - HAnimDisplacer attribute coordIndex has accessType inputOutput - added HAnimHumanoid MFBool [in out] motionsEnabled - (4.0) HAnimMotion added next, previous fields - SplinePositionInterpolator, SplinePositionInterpolator2D, SplineScalarInterpolator closed field has accessType inputOutput - SquadOrientationInterpolator has no closed field - LayerSet order field has accessType inputOutput - PointLight, SpotLight radius field has accessType inputOutput - NurbsOrientationInterpolator, NurbsPositionInterpolator knot field has accessType inputOutput - (4.0) OrthoViewpoint fieldOfView has type MFFloat even though SFVec3f is more correct to prevent modeling errors, deficiency recorded as Mantis 1398 - (4.0) ParticleSystem color field has type SFNode (synonym for prior colorRamp field) - SurfaceEmitter has no coordIndex fields, removed - CylinderSensor, PlaneSensor field axisRotation default value 0 0 1 0 - UniversalJoint field body2axis is type SFVec3f - X3DVertexAttributeNode, FloatVertexAttribute, Matrix3VertexAttribute Matrix4VertexAttribute field name has accessType inputOutput - (4.0) added Appearance backMaterial field - (4.0) added TextureTransform, 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 29 MAY 2023, brutzman - (4.0) Addition of acronyms and glossary terms from X3D 4.0 Architecture as simpleType enumerations - (4.0) corrected X3D Architecture specification url 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 29 JAN 2023, carlson, williams brutzman - (v4.0) corrections to segment hierarchy of names: HAnimJoint vl5 has parent humanoid_root HAnimJoint l_sternoclavicular has parent vt1 HAnimJoint r_sternoclavicular has parent vt1 - HAnimJoint can contain HAnimDisplacer nodes 13 JAN 2023, brutzman, puk, myeong won lee, ryan - (X3D 4.0 Architecture DIS ISO Editor review) - (v4.0) rename TextureProjector component to TextureProjection component, avoiding name overloading with node names - (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) HAnimMotion includes name field for consistency - (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 21 APR 2022, kamburelis polys puk brutzman - (v4.0) Mantis 1336, defer EnvironmentLight to X3D4.1 14 MAY 2022, brutzman puk - (v4.0) Mantis 700 NurbsSet now contains X3DParametricGeometryNode rather than X3DNurbsSurfaceGeometryNode nodes - (v4.0) Mantis 641, 691 HAnimHumanoid only allows HAnim version 2.1 in X3D4 - (v4.0) Mantis 1393, remove PointProperties markertype, deferred to X3D4.1 27 APR 2022, brutzman puk - (v4.0) Mantis 876 GeoTransform allow negative scale values (for underground) - (v4.0) Mantis 932 NurbsTextureCoordinate weight field, change type to MFDouble - (v4.0) Mantis 1347 X3DOneSidedMaterialNode emissiveColor field refactored into implementing nodes, since UnlitMaterial requires different default value 1 1 1 9 APR 2022, brutzman puk - (v4.0) Mantis 930 DIS field rtpHeaderExpected has accessType inputOutput - (v4.0) Mantis 1393 add PointProperties markertype field, also added simpleType hatchStyleValues, lineTypeValues, markerTypeValues enumerations 19 MAR 2022, brutzman puk - (v4.0) Mantis 512 move CoordinateDouble to Rendering component - (v4.0) Mantis 799 disallow GeoCoordinate in HAnim or Nurbs nodes - (v4.0) Mantis 491 EspduTransform is X3DNetworkSensorNode - (v4.0) Mantis 799 allow GeoCoordinate as coord field for Nurbs nodes, also PolylineEmitter and VolumeEmitter 14 MAR 2022, brutzman puk - (v4.0) SpotLight default value beamWidth = pi * 3 / 16 = 0.589049 - (v4.0) RigidBody is X3DChildNode, Mantis 836 - (v4.0) Add 'on' field to all nodes implementing X3DParticleEmitterNode - (v4.0) Remove incorrect references to 'children' field in X3DSoundSourceNode nodes (AudioClip BufferAudioSource ListenerPointSource MicrophoneSource MovieTexture OscillatorSource and StreamAudioSource) Mantis 1387 - (v4.0) OscillatorSource frequency default value 440.0 - (v4.0) ViewpointGroup minimum size 0 0 0 - (v4.0) rename skinBindingCoords and skinBindingNormals, matching HAnim Specification - simpleType SFBool has default value false - simpleType SFVec4f,SFVec4d have default="0.0 0.0 0.0 1.0" - Mantis 655, HAnimJoint cannot contain HAnimSite or HAnimDisplacer 19 FEB 2022, brutzman - (v3.3, v4.0) made regex occurrence (\s) consistent throughout as \s - (v4.0) X3DEnvironmentTextureNode inherits from badge X3DSingleTextureNode (rather than X3DTextureNode) - (v4.0) pending, refined defaults for Spotlight beamWidth, cutoffAngle - (v4.0) considering addition of fields to ProjectionVolumeStyle: intensityThresholdFloor, intensityThresholdCeiling 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 15 JAN 2022, brutzman - rename intensityType as unitIntervalType for correctness https://en.wikipedia.org/wiki/Unit_interval - (v4.0) relax upper bounds on light intervals, previously [0,1] now [0,infinity] which matches glTF Physically Based Rendering (PBR) parameters 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. 26 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 28 SEP 2021, lentz kamburelis brutzman - (v4.0) add enumerations for containerFieldChoicesX3DTexture2DNode and containerFieldChoicesX3dUrlObjectTexture: 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 - (v3.1-v4.0) MultiTextureCoordinate is part of ComposedGeometryContentModel - (v4.0) allow X3DComposedGeometryNode texCoord field to include X3DSingleTextureCoordinateNode|MultiTextureCoordinate - (v4.0) allow watchlist containerField for backwards compatibility of X3D models in containerFieldChoicesAudioClip 2 AUG 2021, brutzman lentz polys puk - (v4.0) mediaDeviceID is inputOutput field, assignable by author (X3DSoundDestinationNode, AudioDestination, StreamAudioDestination) - Marker interface SceneGraphStructureStatement renamed as X3DStatement for precision, consistency. Note this is not an official interface in X3D4 Architecture specification. - (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. 8 JUNE 2021 - (v4.0) correct X3DSoundDestinationNode outputOnly field name as mediaDeviceID (not id) - (v4.0) remove duplicate definition of mediaDeviceID in AudioDestination, StreamAudioDestination 16 MAY 2021, brutzman - add id to globalAttributes, similar to class and style - (v4.0) StreamAudioDestination, StreamAudioSource: added streamIdentifier field, removed mediaStream field - (v4.0) added EnvironmentLight, TextureProjector, TextureProjectorParallel to ChildContentModelFull - (v4.0) added numerous missing field names to accessType enumeration lists initializeOnlyAccessTypes, inputOnlyAccessTypes, outputOnlyAccessTypes, inputOutputAccessTypes 7 MAY 2021, brutzman - HAnimJoint stiffness default 0 0 0 23 MAR 2021 - (v4.0) Renamed geoMetadataKeyValues as geoMetadataSummaryKeyValues for consistency with hanimHumanoidInfoKeyValues 19 MAR 2021, williams brutzman - (v4.0) continue adding default CAESAR positions to joints 17 MAR 2021, brutzman - add enumeration descriptions for geoMetadataKeyValues, hanimHumanoidInfoKeyValues 28 FEB 2021, brutzman williams - (v4.0) swap mismatched hanimFeaturePointNameValues enumeration aliases for anterior, posterior - (v4.0) move incorrectly placed hand-related name aliases from hanimSegment list to hanimJoint list 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) solid field accessType changed to inputOutput for better animation and visualization - (v4.0) Appearance alphaMode with choices "AUTO" "OPAQUE" "MASK" "BLEND" with default "AUTO" - (v4.0) Appearance alphaCutoff for threshold associated with alphaMode - (v4.0) FontStyle/ScreenFontStyle: all fields changed to accessType inputOutput for better animation and user accessibility 17 JAN 2021, brutzman - (v4.0) Refactor X3DFontStyle/FontStyle/ScreenFontStyle hierarchy to support inputOutput style attribute, Mantis 1335 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, audio-graph children appinfo - (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.) 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' - (v4.0) pitch moved from abstract type X3DTimeDependentNode to AudioClip, MovieTexture with no change to X3D3 functionality - (v4.0) duration_changed moved from abstract type X3DSoundSourceNode to AudioClip, MovieTexture with no change to X3D3 functionality - (v4.0) loop moved from abstract type X3DTimeDependentNode to TimeSensor, AudioClip, MovieTexture with no change to X3D3 functionality - (v4.0) ListenerPoint not X3DBindableNode 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, colorModeChoices - (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 near/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 X3DTextureCoordinateNode (TextureCoordinate and TextureCoordinateGenerator), X3DTextureTransformNode (TextureTransform) 15 AUG 2020, brutzman - (v4.0) add description, enabled fields to X3DTimeDependentNode, TimeSensor (Mantis 1323) - (v4.0) add description, load, refresh to X3DUrlObject nodes (Mantis 1262) 6 JUN 2020, brutzman - (v4.0) add nearClippingPlane, farClippingPlane to X3DViewpointNode (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) 6 JUN 2020, brutzman - (v4.0) Cone, Cylinder top/side/bottom fields have accessType inputOutput (Mantis 1304) 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 - improve appinfo documentation for various SF/MF field types and SimpleType enumerations - TODO (v4.0) 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 - TODO HAnimJoint inherits X3DGroupingNode but interfaces aren't directly defined, bugfix needed in X3DUOM 26 APR 2020, brutzman - add appinfo documentation for various enumeration values 7 APR 2020, brutzman - Rename Humanoid Animation (HAnim) simpleType enumeration lists for clarity: featurePointNameValues -> hanimFeaturePointNameValues segmentNameValues -> hanimSegmentNameValues jointNameValues -> hanimJointNameValues - (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 - Relaxation of some name constraints from NMTOKEN to SFString for meta, Metadata nodes, CAD nodes. Did not change xs:NMTOKEN to xs:token, keeping exact match with DOCTYPE. No change needed in DOCTYPE which already matched these conventions. - fix content model for GeoOrigin (which is X3DNode, not X3DChildNode) as initial element after metadata field. Improved regularity enabled X3D-Tidy fix for ordering of child nodes. - (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 implements X3DChildNode, not X3DNode 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 - remove mistaken inclusion of HAnimMotion under HAnimJoint - (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) - TODO PointProperties inconsistent camel-case spelling, should be lineType and lineWidthScaleFactor: Mantis 1252 24 NOV 2019, brutzman - (v4.0) X3D version default="4.0" - (v4.0) TODO Insert header namespace indicating XML Schema XSD version 1.1 15 SEP 2019, brutzman - X3DMetadataObject is abstract and cannot implement X3DNode, this changed Metadata* node inheritance signatures - Improved X3DUOM inclusion of inheritedFrom object types and interfaces - TODO check Layout*, Script and Shader* nodes for potentially similar issues 11 AUG 2019, brutzman - add "IS" annotation for X3DUOM to X3DNode and other top-level nodes, node types - add "field" annotation for X3DUOM to Script, ComposedShader, PackagedShader and ShaderProgram - corresponding changes to X3DJSAIL, X3D Python Package, X3D Ontology 20 JUL 2019, brutzman - (v3.2-4.0) add missing appinfo descriptions for abstract node types 13 JUL 2019, brutzman - change documentation links http://www.web3d.org to https://www.web3d.org but leave schema, DTD reference links unchanged 19 JUN 2019, brutzman, flotynski - Add x3d: namespace to each X3D schema - Change MFBool to regex-based string type, thus allowing optional intermediate commas - Annotate some regex-based string types with corresponding xsdType as extra typing information for X3DUOM 25 MAY 2019, brutzman - changed meta name from SFString to NMTOKEN since no published meta name candidates include whitespace. see X3D Tooltips for further details. 4 MAY 2019, marchetti puk brutzman - (v4.0) added PointProperties 2 APR 2019, brutzman - X3DUOM support allowing additional meta name values: disclaimer movie photo 26 FEB 2019, brutzman williams - (v4.0) add joint, segment aliases for HAnim 1.0 10 FEB 2019, brutzman williams - (v4.0) Updated simpleType jointNameValues, segmentNameValues to match HAnim 2.0 FDIS specification, TODO aliases from HAnim 1.0 - (v3.0-3.3) HAnim joint name humanoidroot corrected as humanoid_root 27 JAN 2019, brutzman - stricter typing of name attributes, wherever possible, using NMTOKEN and xs:token 20 JAN 2019, brutzman williams - Refactored/removed duplicative simpleType siteNameValues - (v4.0) Updated HAnim v2.0 featurePointNameValues metadata: name, appinfo, aliases - TODO decide whether to update HAnim enumerations in X3D 3.0-3.3 - added additional well-defined/supported meta name enumerations - name attribute of meta element is now required (no need to perpetuate historic HTML laxness when defining name=value semantic pairs) 2 JAN 2019, brutzman williams - (v4.0) added HAnim name appinfo metadata, more to follow 16 DEC 2018, brutzman williams - (v4.0) added loaType for HAnimHumanoid, HAnimMotion Level Of Articulation (LOA) - (v4.0) added description field for HAnim nodes, again matching HAnimMotion - (v4.0) added siteName enumeration annotation data matching HAnim specification, providing partial LOA-1 examples to illustrate design patterns 11 DEC 2018, brutzman - Applied all relevant refactor/renaming conventions to X3D versions 3.0-3.3 for full consistency throughout X3D Unified Object Model (X3DUOM) and upcoming X3D Semantic Web efforts. All identified best practices are now implemented. 21 OCT 2018, brutzman - (v4.0) Refactor renaming of simpleType naming conventions in order to support X3DUOM design patterns: enumeration Choices (strict sets of string tokens) and optional Values (allowed, extendable string tokens). TODO apply to v3.0-v3.3 following review. - Layout node, align field: singleton "CENTER" is not allowed, since paired values must be used. Similar singleton fixes checked/applied for other 2-string types. TODO consider special regex for MFString[2] arrays. 13 OCT 2019, brutzman - Finish appinfo descriptions for all complexType node-type definitions. - Renamed root element of X3DUOM documents as X3dUnifiedObjectModel 28 SEP 2019, brutzman - (v3.0) remove annotation references to X3D v3.1+ constructs, fogCoord FogCoord and attrib X3DVertexAttribute 27 SEP 2018, brutzman - Match v4.0 improvements for regular expressions (regexes), containerField choice types and LoadSensor watchlist nodes in v3.0 through v3.3 schemas - HAnimJoint ulimit, llimit changed to SFVec3f rather than MFFloat (from HAnim review) 30 AUG 2018, brutzman - (v4.0) tightened SF/MFColor SF/MFColorRGBA regexes - (v4.0) added SFImage/MFImage, SFMatrix3f/SFMatrix3d, MFMatrix3f/MFMatrix3d, SFMatrix4f/SFMatrix4d, MFMatrix4f/MFMatrix4d regexes 18 AUG 2018, brutzman - (v4.0) boundingBoxSizeType renamed as bBoxSizeType, add regex to SimpleType bboxSizeType 16 AUG 2018, plesch, brutzman - humanoid_root is lower case (as are all HAnim names) - (v4.0) regexes for plus/minus and hexadecimal digits improved and made consistent - (v4.0) improved whitespace handling in regexes 5 AUG 2018, brutzman - (v4.0) fixed default value for SFTime (-1) - (v4.0) regex updates and unit testing for SF/MFVec2f, SF/MFVec2d, SF/MFVec3f, SF/MFVec3d, SF/MFVec4f, SF/MFVec4d, SF/MFColor, SF/MFColorColorRGBA, SF/MFRotation. for details see https://www.web3d.org/specifications/X3dRegularExpressions.html - Cannot use negative lookahead to filter illegal values since not permitted in XML Schema regexes. 28 JUL 2018, brutzman - (v4.0) regex updates for SF/MFBool, SF/MFInt32, SF/MFFloat, SF/MFDouble, SF/MFTime 8 JUL 2018, brutzman - (v4.0) added rootNode (for parent GeoLOD) to containerFieldChoicesGroupLODShapeTransform - (v3.2+) ParticleSystem: add containerFieldChoicesColor for Color, ColorRGBA - (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 29 JUN 2018, brutzman - (v4.0) added various non-default containerFieldChoices - (v4.0) corrected HAnimMotion default containerField to motions 14 JUN 2018, brutzman, carlson - (v4.0) corrections to SFImage, MFImage regex 9 JUN 2018, brutzman - changed simpleType fieldTypeName to fieldTypeNames for naming consistency 7 JUN 2018, brutzman, plesch - (v4.0) fix extraneous entries in HAnimHumanoid - (v4.0) continuing experimentation with additional regex patterns, see mail list 3 JUN 2018, brutzman - regex: use MFDouble pattern for MFTime (rather than double list) in order to handle commas - regex: use SFVec2f pattern for SFVec2d, fixing mistake - Updated X3D Regular Expressions (regexes) documentation https://www.web3d.org/specifications/X3dRegularExpressions.html - regex: TODO need to handle intermediate whitespace greater than a single character - regex: TODO need regexes for MFString, SFImage and MFImage 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 hanimVersionValues (1.0 1.1 2.0) - (v4.0) remove duplicate enumeration for r_carpal_distal_interphalangeal_joint_5 13 MAY 2018 brutzman, HAnim working group review - (v4.0) HAnimMotion fixed range definitions, added startFrame/endFrame fields, current draft set of fields include frameCount, frameDuration, frameIndex. 3 MAY 2018 brutzman, HAnim working group review - (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 14 APR 2018 brutzman - Ensure range limits (typically minInclusive 0) present for SFTime duration fields, including outputOnly fields 6 JAN 2018 brutzman - Allow HAnimHumanoid skin field to contain Group|Transform|Shape|IndexedFaceSet - Improved descriptions for hanimVersionValues enumerations. 31 DEC 2017 brutzman - HAnimJoint can also contain HAnimSite in children field - HAnimHumanoid can only contain IndexedFaceSet in skin field, not X3DChildNode (TODO add other indexed meshes once HAnim and mantis reviews are complete) 28 OCT 2017 brutzman walmsley puk - (v3.1+) make shaderPartTypeValues enumerations in ShaderPart, ShaderProgram, extensible rather than a fixed list (Mantis 904) - (v3.2+) add pickSensorSortOrderValues enumerations, extensible list (Mantis 900) - (v3.2+) add pickSensorMatchCriterionValues enumerations, fixed list 5 OCT 2017 brutzman - All X3D XML Schema documentation regenerated satisfactorily using updated Altova XmlSpy v2018: https://www.altova.com https://www.web3d.org/specifications/X3dSchemaDocumentation3.3 https://www.web3d.org/specifications/X3dSchemaDocumentation3.2 https://www.web3d.org/specifications/X3dSchemaDocumentation3.1 https://www.web3d.org/specifications/X3dSchemaDocumentation3.0 https://www.web3d.org/specifications/X3dSchemaDocumentation4.0 11 November brutzman - (v3.1+) Refactor enumeration values as simpleType declarations for reusability in unified object model: GeneratedCubeMapTexture update field (v3.1+) and ProjectionVolumeStyle type field (v3.3+). - Add, improve warnings regarding comma validation in numeric field types. 28 October 2017 brutzman walmsley puk - (v3.1+) make shaderPartTypeValues enumerations in ShaderPart, ShaderProgram, extensible rather than a fixed list (Mantis 904) - (v3.2+) add pickSensorSortOrderValues enumerations, extensible list (Mantis 900) - (v3.2+) add pickSensorMatchCriterionValues enumerations, fixed list 1 October 2017 brutzman - (v3.2+) annotated LayerSet values for activeLayer and order fields to be minInclusive 0 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. 6 September 2017 carlson brutzman walmsley - index field minInclusive bounds are -1 for IndexedTriangleFanSet, IndexedTriangleStripSet - index field minInclusive bounds are 0 for IndexedTriangleSet 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) - X3DMetadataObject 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 brutzman - Allow field declarations within PackagedShader and ShaderProgram, also made other content-model and inputOnly/outputOnly definitions more consistent for Shaders component. - All Metadata* node interface annotations now include X3DNode. 31 January 2016 sanden, brutzman (still pending) - TODO: refactor various enumeration values for X3DPickSensorNode to allow independent referencing in X3D Object Model 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) 5 December 2016, brutzman - Improved annotation appinfo descriptions for X3D statements - ProtoInstance additionalInterface is X3DChildNode (rather than X3DNode) - ProtoBody children have type X3DNode (i.e. any node type) - TODO ShaderProgram content model needs to allow field declarations - Website access-problem workarounds successful, updates deployed 24 September 2016, brutzman - (v3.2) Restored GeoViewpoint attributes for navType and headlight - (v3.3+) Corrected order of contained statements within : component, unit, meta - (v3.3+) Relaxed ordering of IsoSurfaceVolumeData content. 21 September 2016, brutzman walmsley - Significant release update includes all enumeration types and method annotations needed for X3D Object Model. - Provided strict justifyValues enumeration list to only allow correct values for FontStyle/ScreenFontStyle justify attribute - Corrected names for r_thelion/l_thelion (omitting "bustpoint") - (v3.2+) removed extraneous X3DBoundedObject from X3DRigidJointNode - (v3.2+) removed extraneous X3DChildNode from DISEntityTypeMapping - (various versions) Add enumeration lists: alignValues, forceOutputValues, fontFamilyValues, intersectionTypeValues, modeMultiTextureValues, offsetUnitValues, scaleModeValues, sizeUnitValues, transitionTypeValues, typeValues, geoSystemValues, and hanimHumanoidInfoKeyValues. - Close review and update of simpleType enumeration lists with attribute types, either strictly required (as part of regular XML schema validation) or optionally extensible (multiply defined, with base type listed in appinfo). Tested with X3D Object Model and X3D Java SAI autogeneration. - Corrected MFString enumerations for appliedParametersValues, labelled others. - appinfo indication to suggest default value for required (user-specified) values in X3D statements (X3D version/profile, HAnimHumanoid version, etc.) Values are still explicitly required for inclusion in XML-encoded scenes. - Added metaNameValues as an extensible enumerations list to encourage inclusion and consistent use of meta elements describing scene models. 17 July 2016, walmsley brutzman - Added min/max bounds for numerous fields and fixed several appinfo errata: no change in validation capabilities but will improve X3D Object Model fidelity 9 July 2016, brutzman - Added simpleType definitions for SFNode, MFNode to aid completeness of autogenerated X3D Object Model. - Remove extraneous . character in HAnim enumeration names - Add appinfo for metadata nodes 15 June 2016, brutzman - improved appinfo descriptions for base types 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. 26 March 2016, brutzman - (v3.0) restore missing content model for X3DComposedGeometryNode 25 February 2016, walmsley, brutzman - HAnimHumanoid: skinCoord and skinNormal are type SFNode - ShaderPart, ShaderProgram: default value type="VERTEX" - MetadataSet contains ProtoInstance (though no other Metadata* nodes allow it) - Reviewed xs:choice min/max bounds for all elements, made minor adjustments - ShadedVolumeStyle, VolumeData allowed to have no child nodes 16 February 2016, walmsley, brutzman - WorldInfo info and title attributes changed to accessType inputOutput - GeoElevationGrid default height is 0 0 0 0, matching dimensions and ElevationGrid 27 January 2016, walmsley, brutzman - TimeTrigger triggerTime outputOnly event has type SFTime - fix GeoLOD content model to align with GeoTransform; TODO specification issue raised. - (v3.2+) TextureProperties anisotropicDegree default set to 1, with lower limit 1 - (v3.2+) TextureProperties borderWidth changed to nonnegative SFInt32, anticipating specification change - (v3.2+) TextureProperties texturePriority limits set [0,1] 18 January 2016, walmsley, brutzman - componentName, componentLevel annotation/appinfo entries inserted throughout to support X3D Object Model API generation. Includes support-level details, noting where full support for child attributes/elements may require a higher componentLevel than baseline componentLevel for parent node. - Add 'class' attribute to all X3D statements (including SceneGraphStructureStatement) for consistency with HTML. - All complexType definitions abstract=true (cannot be instantiated as elements) and final=false (can be extended). - Improved draft abstract definition for Event, matching ProtoBody content model with attributes timestamp, type, value. - DISEntityTypeMapping implements X3DInfoNode. - GeoMetadata: add additionalInterface X3DUrlObject. - Normalization of leading whitespace using tabs, updated contributor list, noted use of Mantis for issues. https://stackoverflow.com/questions/1949014/how-can-i-configure-netbeans-to-insert-tabs-instead-of-a-bunch-of-spaces 3 January 2016, walmsley, brutzman - (v3.2+) GeneratedCubeMapTexture, ImageCubeMapTexture: added SFNode TextureProperties as contained content - Noted unbounded simpleType enumeration list for shaderLanguageValues (v3.1+), hanimVersionValues - Added unbounded simpleType enumeration list for fontStyleFamilyValues, annotated FontStyle and ScreenFontStyle - Applied range limits as annotation appinfo to multiple nodes and a variety of index fields - Refactored nearly all containerField values to explicitly appear in each node, rather than in node types. This approach is more verbose but fixes several containerField value-collision problems. - Viewport default containerfield='viewport' which match Layering, Layout components 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. Also adjusted minInclusive/minExclusive limits. 22 December 2015, walmsley, brutzman - (v3.1+) FogCoordinate inherits from X3DGeometricPropertyNode, also fixed documentation url 21 December 2015, walmsley, brutzman - (v3.2+) editorial refactoring of annotations for consistency: X3DPickableObject, X3DShaderNode, ComposedShader, X3DSensorNode, X3DViewportNode - (v3.2+) remove appearance, geometry fields from ParticleSystem appinfo since already covered by X3DShapeNode - moved SoundChildContentModel from X3DSoundNode to Sound - (v3.2+) fixed annotation entries for X3DNBodyCollidableNode, X3DNBodyCollisionSpaceNode, X3DRigidJointNode, X3DViewportNode - (v3.2+) added matchCriterion field to X3DPickSensorNode - (v3.2+) fixed annotation entry for X3DRigidJointNode forceOutput - Added X3DPrototypeInstance appinfo and comments for metadata SFNode - Moved appinfo for appearance and geometry from Shape to X3DShapeNode - Anchor: added appinfo additionalInterface for X3DUrlObject - (v3.2+) BoundedPhysicsModel geometry is SFNode choice, not a sequence - (v3.1+) attribute order now only included on initializeOnlyAccessTypes since that is most frequent usage. Also added inputOutputField appinfo to LayerSet, NurbsOrientationInterpolator, NurbsPositionInterpolator - CoordinateInterpolator2D annotation appinfo for outputOnlyField value_changed has type MFVec3f - (v3.1+) ElevationGrid content model does not include NurbsTextureCoordinate - Removed NurbsTextureCoordinate from ColorNormalTexCoordContentModel and ColorCoordinateNormalTexCoordContentModel - TODO consistent node employment of ColorNormalTexCoordContentModel and ColorCoordinateNormalTexCoordContentModel - set minimum value 0 for ElevationGrid/GeoElevationGrid xDimension and zDimension - (v3.2+) set minimum value 0 for X3DParticleEmitterNode speed, variation, mass, surfaceArea - (v3.2+) set value range 0..pi for ConeEmitter angle - changed maxInclusive numeric values of pi to 3.1416, avoids false errors due to roundoff. default pi remains 3.141592653 - GeoLOD/LOD value limits on attributes range, level_changed - GeoLOD, LOD added to annotation/appinfo that attribute center has accessType initializeOnlyField - FontStyle size > 0, spacing >= 0 30 November 2015, walmsley, brutzman - xs:schema version attribute values set strictly to 3.0, 3.1, 3.2, 3.3, 4.0 for tool use (XML Schema Part 1 Section 3.15.2 states that semantics are user defined) - X3DTextureNode implements X3DTextureNode - (v3.1+) X3DEnvironmentTextureNode inherits from X3DChildNode, no need to redefine containerField="texture" - (v3.2+) X3DEnvironmentalSensorNode field "center" refactored as type="SFVec3f" for ProximitySensor, TransformSensor and VisibilitySensor and type="SFVec3d" for GeoProximitySensor 25 November 2015, walmsley brutzman - remove duplicate comment within ComposedShader, must -> shall, normalize whitespace - X3DScriptNode also has additionalInterface X3DChildNode 31 October 2015, brutzman - updated version and revision information - X3D version 3.4 no longer planned, going straight to version 4.0 23 October 2015, walmsley brutzman - ProtoInstance now utilizes X3DPrototypeInstance and includes child metadata node - Eliminated superfluous complexType X3DPrototype, for better consistency, now ProtoDeclare and ExternProtoDeclare directly extend SceneGraphStructureStatement - Specification documentation urls updated: /19776-1/V3.2/ to /19776-1/V3.3/ 12 October 2015, walmsley brutzman - SceneGraphStructureNodeType renamed as SceneGraphStructureStatement - MetadataSet no longer has badge interface SceneGraphStructureStatement, TODO noted - ProtoInstance content model corrected to only allow one child IS statement 5 October 2015, walmsley brutzman - ExternProtoDeclare appinfo added, matching X3D Tooltips 31 August 2015, legrand walmsley brutzman - (v3.2+) Replaced incorrect hyphen character in FRICTION_COEFFICIENT-2. Added annotation. - (v3.1+) ComposedShader content model corrected to reconcile multiple interfaces, proper ordering of metadata field IS 17 August 2015, walmsley brutzman - TODO: support field definitions and reconcile content-model collisions for IS. Also look at X3DShaderNode along with PackagedShader and ProgramShader for potential changes. 3 August 2015, walmsley brutzman - Refined ChildContentModelCore annotation to node that X3DNode content model can include IS/connect prior to (Metadata) nodes. - Corrected stylesheet autogeneration of X3D XML Encoding paragraph 6.2.179 Script to show preceding https://www.web3d.org/specifications/stylesheets/EncodingOfNodes.html#Script 27 July 2015, walmsley brutzman - X3DScriptNode includes url field (no duplication of url interface in Script node) - X3DFogObject does not implement any other interfaces and does not need containerField definition - BooleanTrigger, IntegerTrigger, TimeTrigger each implement X3DTriggerNode interface - (v3.2+) TextureProperties implements interface X3DNode vice X3DAppearanceChildNode - HAnimJoint content model: add HAnimDisplacer node (but not HAnimSite, see Mantis Issue 655) - NurbsTextureCoordinate implements X3DNode vice X3DTextureCoordinateNode with containerField texCoord 13 June 2015, walmsley brutzman - (v3.2+) refactored X3DViewpointNode, ViewpointGroup and GeoViewpoint inheritance to match specification 8 June 2015, walmsley brutzman - (v3.1+) Added axisRotation to CylinderSensor and PlaneSensor. - geoSystemType is MFString, not SFString - Added numerous accessType inputOnly/outputOnly annotation appinfo entries to facilitate API autogeneration - Removed redundant node annotation appinfo entries when already included by inherited node type - Note that CADAssembly children ViewpointGroup and OrthoViewpoint require Navigation component level 3, which is higher than Viewpoint provided in CADInterchange profile - removed SquadOrientationInterpolator closed field, erroneous; added normalizeVelocity field - removed texCoord field from NurbsPatchSurface, duplicative with X3DNurbsSurfaceGeometryNode - removed texCoord and controlPointfields from NurbsTrimmedSurface, duplicative with X3DNurbsSurfaceGeometryNode - NurbsCurve2D is not a renderable geometry node, removed from geometry content model. - ComposedCubeMapTexture contained-element field name corrected from "topUrl" to "top" - Added missing fields: SurfaceEmitter coordIndex, VolumeEmitter internal - BoundaryEnhancementVolumeStyle content model fixed/simplified - fixed capitalization, spelling etc. of detected errors in field-name enumerations for each accessType; added corresponding annotation/appinfo inputOnly/outputOnly events - detected, fixed irregular use of commas and [brackets] in elements with multiple X3D element defaults - fixed Layer content model, allowing zero or more children - ensured all annotation/appinfo SFNode/MFNode inputOnly, outputOnly events have default type included - refactored Programmable Shaders component nodes, minimized use of mixed content (contained CDATA text) - (v3.2+) CollisionCollection base type X3DNode, default containerField="collider" - moved fraction_changed from X3DTimeDependentNode to TimeSensor - TODO noted problem: actual containerField for AudioClip is "source" not "children" - (v3.2+) Contact base type X3DNode, matching spec - (v3.1+) LocalFog is not bindable, implements X3DChildNode with additionalInterface X3DFogObject - (v3.2+) LayoutGroup additionalInterface X3DGroupingNode, TODO review content-model collisions if direct inheritance used - (v3.1+) Text node added outputOnly event "origin", lineBounds is type MFVec2f - Resolved appinfo fields for X3DSoundSourceNode and X3DTimeDependentNode - Removed duplicate appinfo set_bind field from GeoViewpoint inherited from X3DBindableNode - (V3.2+) Added missing children, addChildren, and RemoveChildren fields to LayoutGroup - (V3.2+) Added missing containerField to Contact - Add missing MedicalInterchange profile - Added QA test, ensured that MFString default values are quoted 16 May 2015, walmsley brutzman - (v3.2+) X3DRigidJointNode corrected field naming from mustOutput to forceOutput. Affects BallJoint, DoubleAxisHingeJoint, MotorJoint, SingleAxisHingeJoint, SliderJoint, UniversalJoint. - Add annotation/appinfo for Event Utility component inputOnly/outputOnly fields. Affects BooleanFilter, BooleanToggle, BooleanTrigger, IntegerTrigger, TimeTrigger - Comparison of floating-point regular expressions (regexes) to XML Schema xs:float - Addition of regex for boundingBoxSizeType, restricting SFVec3f to positive values or "-1 -1 -1" variants - Moved description field from AudioClip/MovieTexture to X3DSoundSourceNode - (v3.2+) Add annotation/appinfo for BallJoint outputOnly fields body1AnchorPoint, body2AnchorPoint - GeoLOD: child content model for rootNode, geoOrigin - IsoSurfaceVolumeData, SegmentedVolumeData have optional child nodes - (v3.3) restored geoOrigin field to GeoCoordinate, matching other versions 14 April 2015, walmsley brutzman - (v3.2+) add appliedParameterValues enumerations (to support API generation, even though not validatable in MFString) - (v3.2+) constrain allowed values for CollisionCollection and Contact fields: bounce, minBounceSpeed, softnessConstantForceMix, and softnessErrorCorrection 17 March 2015, walmsley - (v3.2+) add Picking to componentNames 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 - X3DAppearanceNode abstract="true" - Metadata*, HAnim* nodes: cannot require @name field or else USE nodes fail to validate 12 January 2015, brutzman - field and fieldValue can have Appearance child node, thus added Appearance to SceneGraphFragmentContentModel 1 December 2014, norbraten daly brutzman - field name consistency: entitySubCategory recapitalized as entitySubcategory to match capitalization of subcategory 6 October 2014, brutzman Major addition to all versions: - Inserted annotation appinfo elements/attributes for inputOnly, outputOnly and SFNode/MFNode fields in concrete node interfaces, now allowing API autogeneration. This additional type/accessType/default detail does not affect XML validation. Tested through generation of Java Scene Authoring Interface (SAI) specification appendices using stylesheets/BuildSpecificationLanguageBindingJava.xslt conversion. - Annotation attribute otherInterfaces refactored as additionalInterface - Future work: autogenerate native Java interfaces as standalone source code library. Schema validation modifications: - CollisionSensor object model corrected to extend X3DSensorNode vice X3DChildNode - GeoLOD object model corrected to extend X3DChildNode, X3DBoundedObject vice X3DChildNode - StaticGroup object model corrected as X3DChildNode, X3DBoundedObject - MultiTexture node: omitted erroneous/extraneous 'transparent' field - TextureCoordinateGenerator node: added enumeration type textureCoordinateGeneratorModeValues 31 August 2014, brutzman - simpleType SFTime, MFTime corrected to basis of xs:double with default of no constraints - Add annotation appinfo attributes for inputOnly, outputOnly and SFNode/MFNode fields in abstract interfaces in order to allow API generation without affecting XML validation. - Omit unnecessary/unspecified complexType definitions for X3DHumanoidNode, X3DTextureTransform2DNode - Constrain non-negative: X3DFogObject visibilityRange, NavigationInfo speed and visibilityLimit, LoadSensor timeOut, TimeSensor cycleInterval, X3DChaserNode duration, X3DDamperNode tau - NavigationInfo transitionTime type corrected to SFTime, also constrain non-negative 27 May 2014, brutzman - Metadata containerField choices are (metadata|value) with default remaining "metadata" to match X3D specification 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 - Corrected base url for H-Anim specification, https://www.web3d.org/files/specifications/19774/V1.0/HAnim/HAnim.html 15 July 2013, brutzman, williams - HAnimJoint can only contain HAnimJoint or HAnimSegment as direct children, not HAnimSite 26 May 2013, brutzman - SegmentedVolumeData can optional contain 2 X3DTexture3DNode nodes and multiple X3DVolumeRenderStyleNode nodes 4 May 2013, brutzman - fixed erroneous content model for HAnimJoint: child nodes can be any-order xs:choice, rather than ordered xs:sequence 29 April 2013, brutzman, williams - fixed erroneous H-Anim jointName r_subtalar:r_midproximal as r_subtalar 25 April 2013, brutzman - HAnimJoint allowed content model further restricted to match X3D specification (only displacers HAnimDisplacer, children HAnimJoint HAnimSegment HAnimSite) - inserted annotations for SF/MFNode field names under various CAD, HAnim nodes 25 April 2013, Hyokwang Lee, brutzman - (v3.1+) CADPart is an allowed child node as part of ChildContentModelFull 24 April 2013, brutzman - Corrected overzealous validation in HAnim nodes: name and version fields cannot be required since they do not appear in USE copies 15 April 2013, brutzman williams - Corrected an omission in HAnimSite: name field now typed against siteNames list 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, allow ProtoInstance as substitute for contained ShaderPart 29 September 2012, brutzman - (v3.2+) ScreenFontStyle added to TextChildContentModel and SceneGraphFragmentContentModel - (v3.2+) LayoutLayer is an X3DLayerNode which is contained within the LayerSet content model - (v3.2+) Layer, LayoutLayer and Viewport added to SceneGraphFragmentContentModel (since not in any ChildContentModel) - (v3.1+) Corrected X3DFogObject containerField default to "children" 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.2+) moved SquadOrientationInterpolator to FullProfile, normalizeVelocity field removed since no keyVelocity field is present - (v3.3 only) ScalerDamper corrected to ScalarDamper 16 September 2012, brutzman - (v3.2+) EaseInEaseOut node added to ChildContentModelFull, changed interface from X3DInterpolatorNode to X3DChildNode, restored key field definition - (v3.2+) PrimitivePicker renamed to PrimitivePickSensor - (v3.2+) added nodes to ChildContentModelFull: LinePickSensor, PickableGroup, PointPickSensor, PrimitivePickSensor, VolumePickSensor, SplinePositionInterpolator, SplinePositionInterpolator2D, SplineScalarInterpolator, LayerSet, ParticleSystem, TransformSensor - (v3.2+) ParticleSystem node added to ChildContentModelFull, can also contain ConeEmitter, ExplosionEmitter - (v3.2+) Viewport implements X3DViewportNode rather than X3DGroupingNode - (v3.2+) AppearanceChildContentModelNoProtoInstance includes TextureTransform3D, TextureTransformMatrix3D - fixed several specification documentation links - Added new test to BuildSpecificationInterfacesFromSchema.xslt that checks each node for missing content model 11 September 2012, brutzman - Explicitly declare LoadSensorChildContentModel, was not correct as part of X3DNetworkSensorNode, moved to LoadSensor node only - Explicitly declare RigidJointNodeContentModel for consistency and to support autogeneration of X3D specification documentation 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.1+) Node name correction: TextureMatrixTransform renamed to TextureTransformMatrix3D to match specification - (v3.2+) Node name correction: PointPicker renamed to PointPickSensor to match specification - (v3.2+) ClipPlane implements the X3DChildNode interface, not X3DColorNode - (v3.2+) Renamed PickSensorGroupingNodeContentModel as PickSensorGroupingNodeContentModel to match functionality - Updated all X3D Specification documentation url root addresses, added missing documentation urls 4 September 2012, brutzman - (v3.2+) Allow further uses of ProtoInstance as ParticleSystems child node for physics, but not possible for colorRamp, texCoordRamp, or emitter since it creates ambiguous content model 30 August August 2012, brutzman - (v3.3) Add explanatory annotations for ProtoInstance references, reformat overall document 25 August 2012, brutzman - meta tag name attribute is optional to match HTML, since http-equiv attribute might be used instead - meta tag attributes: added annotation urls 23 August 2012, brutzman, puk - DIS nodes EspduTransform, SignalPdu, ReceiverPdu, TransmitterPdu are geospatial, fields added for geoSystem, geoCoords (support X3D v3.3 specification change) 22 August 2012, brutzman, hudson - meta tag includes optional attribute 'scheme' (for consistency with DOCTYPE and HTML 4) 17 August 2012, brutzman, Hyokwang Lee - (v3.1+) CADAssembly not allowed to include Switch (since events not provided by CADInterchange profile) or StaticGroup (since reaarrangement/removal of children nodes can break CAD product structure). Neither of these nodes are listed in CADInterchange profile. - (v3.1+) CADAssembly has a content model restricted to X3DGroupingNode nodes in CADInterchange profile, thus children are also allowed to include DirectionalLight, NavigationInfo, OrthoViewpoint, Viewpoint, ViewpointGroup, WorldInfo to match current and proposed nodes in this Profile. - (v3.1+) Note that parent CADLayer does not have similar restrictions and can contain any X3DGroupingNode. - Appearance does not belong as member of ChildContentModelInterchange, removed 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 10 August 2012, Hyokwang Lee, brutzman - (v3.1+) CADAssembly: allow grouping nodes that make sense for CAD, adding Anchor and Inline to match allowed DTD children 24 June 2012, marchetti, brutzman - (v3.1+) CADLayer is not an X3DProductStructureChildNode - (v3.1+) CADAssembly can only contain multiple GroupingNodes, CADAssembly (subassembly), CADPart, CADFace or ProtoInstance nodes - (v3.1+) CADPart can only contain multiple CADFace or ProtoInstance nodes - (v3.1+) CADFace can only contain single Shape|LOD|Transform|ProtoInstance 24 June 2012, Petit, Boccon-Gibod, Mouton, brutzman - Reference: "Evaluating the X3D Schema with semantic web tools," Web3D 2012 Conference, Petit, Marc (EDF), Henry Boccon-Gibod (EDF), Mouton, Christophe (EDF) - (v3.2) GeoProximitySensor geoCenter has type SFVec3D - define, utilize intensityType for float values ranging [0..1] - rename BoundingBoxSize to boundingBoxSizeType for naming consistency - other potential refactoring improvements require further study and discussion 11 February 2012, brutzman - X3DNurbsControlCurveNode inherits from X3DNode, not X3DGeometryNode - NurbsCurve2D, ContourPolyline2D corresponding changes for containerField='children' to match DTD 20 December 2011, polys, brutzman - (v3.3) added VolumeRendering to list of componentNames 19 November 2011, brutzman - (v3.3) changed upper bound of EdgeEnhancementVolumeStyle gradientThreshold to Pi since it is a radians value - (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 - omitted superfluous mixed="false" from definitions - omitted superfluous mixed="false" from definitions - (v3.3) restored allowed enumeration for X3D v3.2 - (v3.3) restricted unit types to not include derived types (velocity etc.) - (v3.1, v3.2, v3.3) allow ShaderPart to contain source code by setting and using a new abstract type X3DNodeMixedContent that matches abstract type X3DNode 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 - Added X3DVolumeDataNode nodes to ChildContentModelFull (usage similar to Shape) 31 July 2011, brutzman - (v3.3) added all types and nodes for Volume Rendering component - (v3.3) updated attribute enumeration cross-reference tables, which are useful for specification-chapter autogeneration and construction of APIs or documentation - (v3.0 thru v3.3) better annotations for ShapeChildContentModel geometry, appearance - (v3.0 thru v3.3) EspduTransform added otherInterfaces: X3DNetworkSensorNode; - (v3.0 thru v3.3) ReceiverPdu, SignalPdu, TransmitterPdu are X3DNetworkSensorNode type, added otherInterfaces: X3DBoundedObject (specification bug reports submitted), also ensured enabled/bboxCenter/bboxSize fields resolved with node types consistently - (v3.2, v3.3) DISEntityTypeMapping added otherInterfaces: X3DUrlObject - TODO refactor TextureBackgroundChildContentModel 20 July 2011, brutzman, v3.3 definitions - GeoOrigin is deprecated and discouraged (but nevertheless allowed) - centerOfRotation specified by Viewpoint, OrthoViewpoint and GeoViewpoint nodes individually (rather than in X3DViewpointNode complexType) since the field type is SFVec3f, SFVec3f and SFVec3d respectively - GeoViewpoint changes: added centerOfRotation and retainUserOffsets, removed navType and headlight - (also v3.2) renamed X3DPickingNode as X3DPickSensorNode 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 Schema 19 February 2011, brutzman - MultiTextureCoordinate corrected to contain TextureCoordinate, TextureCoordinateGenerator 12 September 2010, brutzman - ShaderPart internal definitions refactored for consistency using xs:complexType, with no changes in field signatures (versions 3.1 and 3.2) 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 ChildContentModelGeoSpatial for 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 24 January 2010, brutzman - Allow whitespace and/or comma between arrays making up MFMatrix3d, MFMatrix3f, MFMatrix4d, MFMatrix4f (v3.1 and v3.2 only) 2 January 2010, brutzman - Update type of all 'class' attributes as NMTOKENS (name-token array type) 27 December 2009, brutzman - Update all documentation url addresses for X3D Specification - Sort content model for Script to match other nodes: field*, IS?, MetadataNodes?, then CDATA source - Corrected shader node definitions for ComposedShader, PackagedShader, ShaderPart, ShaderProgram including mixed type (contained shader source code) and default containerField values - correction: ShaderPart does not implement X3DProgrammableShaderObject interface 26 December 2009, stewart, brutzman - GeoMetadata fix: change erroneous contained element references from name=* to ref=* - 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) 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 16 August 2009, brutzman - corrected minimum string length for SFImage/MFImage type image field to 5 (e.g. 0 0 0) 25 May 2009, brutzman - corrected: require Arc2D, ArcClose2D startAngle, endAngle within range [-2pi,2pi] 9 April 2009, brutzman - require Arc2D, ArcClose2D radius to be greater than 0 (xs:minExclusive vice xs:minInclusive) - require Arc2D, ArcClose2D startAngle, endAngle within range [-pi,pi] 9 March 2009, brutzman - added accessType enumerations for TextureProperties 1 March 2009, brutzman - editorial: component documentation corrections 24 February 2009, brutzman - component definition restricted to only allow values 1-5 10 January 2009, brutzman - added DISEntityManager to ChildContentModelDIS - added DISEntityTypeMapping url field, also changed interface extension to X3DNode instead of X3DChildNode in order to define proper default value for containerField 26-30 December 2008, brutzman - added RigidBodyPhysics component nodes to ChildContentModelFull and SceneGraphFragmentContentModel - content model optional for X3DRigidJointNode, CollidableOffset, CollisionSensor, RigidBody, RigidBodyCollection 13 October 2008, brutzman - added TextureBackground to ChildContentModelFull - fixed field signatures, added enumeration types for TextureProperties 20 August 2008, g. couch, brutzman - added transparency to X3DBackgroundNode (Background, TextureBackground) (v3.2) 4 August 2008, yoo, brutzman - rename TexCoordDamper to TexCoordDamper2D - added follower nodes (Chaser and Damper nodes) to ChildContentModelFull (Full profile) to permit validation - remove resolved TODO comments from Chaser component nodes - correct specification url in annotations throughout 18 July 2008, brutzman - remove following illegal watchList child nodes from X3DNetworkSensorNode to fix LoadSensor validation: Anchor GeoMetadata Script ProtoInstance - annotate source, watchList containerField values for Sound, LoadSensor content models 9 July 2008, brutzman - added OrthoViewpoint and ViewpointGroup to ChildContentModelFull - made X3DViewpointNode an X3DBindableNode 24 June 2008, brutzman - added translation, rotation, center, scale, scaleOrientation fields to CADPart (v3.1, 3.2 only) 9 June 2008, brutzman - added Contour2D, ContourPolyline2D to SceneGraphFragmentContentModel for allowable field, fieldValue contents 31 May 2008, brutzman - vertexCount field for LineSet node, name field for all HAnim nodes: omit use="required" so that USE nodes can validate 5 May 2008, brutzman - Add X3dBoundedObject interface, bboxSize/bboxCenter to HAnimHumanoid - Remove url values for draft versions in header comments, no longer supported - added HAnimDisplacer to SceneGraphFragmentContentModel, thus allowing inclusion in field/fieldValue 19 April 2008, brutzman - Added missing data-type enumerations to (v3.1, 3.2 only) SFMatrix4d MFMatrix4d SFMatrix4f MFMatrix4f SFVec4d MFVec4d SFVec4f MFVec4f 17 April 2008, Changhua Wu, brutzman - removed duplicate componentNames (v3.2 only) Followers Layering Layout RigidBodyPhysics ParticleSystems PickingSensor 30 March 2008, brutzman - add GeoTransform to ChildContentModelGeoSpatial for v3.2, allowing use with other children nodes 13 March 2008, brutzman - refactor to allow MetadataSet to contain multiple Metadata* nodes 7 February 2008, mccann, puk, brutzman - added GeoProximitySensor node - TODO bug submitted that 'center' field in parent type X3DEnvironmentalSensorNode is inappropriate and needs refactoring 22 November 2007, puk, brutzman - set X3DRigidJointNode axis default to 0 1 0 - renamed containerField annotation collidables to collider 22 November 2007, puk - forceOutput changed back to mustOutput 21 November 2007, brutzman - removed SurfaceEmitter 'coordIndex' and 'set_coordIndex' fields - removed VolumeEmitter 'internal' field - added ForcePhysicsModel 'force' field to enumeration list of allowed inputOutputAccessType values 5 November 2007, brutzman - improved content model ParticleSystem 4 November 2007, brutzman - simplified CollisionSensor content model, eliminating outputOnly MFNode fields intersections, contacts - revised Contact content model - LinePicker, PrimitivePicker, VolumePicker renamed to LinePickSensor, PrimitivePickSensor, VolumePickSensor - disableTime set to SFTime rather than SFFloat 28 October 2007, brutzman - fixed containerField default for LayerSet 15 October 2007, brutzman - GeoTransform geoCenter field changed from SFVec3f to SFVec3d 7-8 October 2007, brutzman - changed for metadata children to default maxOccurs="1" since it is SFNode throughout - removed Contour2D, ContourPolyline2D from GeometryContentModelNurbs since these are only used internally to trim Nurbs nodes and are not used as part of the GeometryContentModel - ForcePhysicsModel field 'gravity' renamed to 'force' 6 October 2007, brutzman, williams - v3.2 added ClipPlane, DISEntityManager, DISEntityTypeMapping, EaseInEaseOut, SplinePositionInterpolator, SplinePositionInterpolator2D, SplineScalarInterpolator, SquadOrientationInterpolator - v3.1, v3.2 renamed Composed3DTexture to ComposedTexture3D - v3.1, v3.2 renamed Image3DTexture to ImageTexture3D - v3.1, v3.2 renamed Pixel3DTexture to PixelTexture3D - v3.1, v3.2 added otherInterfaces X3DUrlObject to ImageTexture3D - v3.2 added TransformSensor - v3.2 renamed GravityPhysicsModel to ForcePhysicsModel - v3.2 added TwoSidedMaterial 30 September 2007, brutzman - removed outputOnly fields StringSensor enteredText, FinalText - v3.2 added containerField (field name) values for X3DNBodyCollisionSpaceNode, X3DRigidJointNode, RigidBody, LayoutGroup 24 September 2007, brutzman - moved url field, X3DUrlObject interface from X3DSoundSourceNode to AudioClip, MovieTexture - completed various initializeOnly, inputOutput accessType enumeration values 23 September 2007, brutzman - v3.2 added GeoTransform - v3.2 added new field-name enumerations to inputOnlyAccessTypes and outputOnlyAccessTypes for 3.0, 3.1 and 3.2 schemas: - set version number to 3.0.2, 3.1.2, 3.2.2 respectively to indicate alignment with v3.2 - removed outputOnly field isActive from X3DSensorNode - removed outputOnly fields isActive and collideTime from Collision - removed outputOnly fields elapsedTime, isActive, isPaused from X3DTimeDependentNode - removed various outputOnly fields from DIS nodes - removed outputOnly fields set_bind, bindTime, isBound from X3DBindableNode - removed outputOnly field isOver from X3DPointingDeviceSensorNode - removed outputOnly fields isSelected, isValid and inputOnly field activate from X3DShaderNode - removed outputOnly fields loadTime, isLoaded and progress from LoadSensor - removed erroneous field isFilled from Rectangle2D - removed inputOnly field set_fraction from X3DInterpolatorNode - removed inputOnly fields set_fraction, previous, next from X3DSequencerNode - removed inputOnly, outputOnly fields from EventUtility nodes - removed inputOnly fields set_* from various nodes and node types - removed outputOnly fields *_changed and is* from various nodes and node types 22 September 2007, brutzman - v3.2 complete, added PickingSensor, Followers and ParticleSystems components - v3.2 added enumeration values for componentNames 8 September 2007, brutzman - v3.2 added RigidBodyPhysics component - updated OasisXmlCatalogX3D.xml for 3.2 contructs 2-3 September 2007, brutzman - began work on version 3.2, changes are to all schema unless annotated otherwise - renamed ChildContentModeCore to ChildContentModelCore - v3.2 modified Viewpoint to be of (newly added) type X3DViewpointNode - v3.2 added Layer, Layout components 10 January 2006 grieve, brutzman - changed content model for Contour2D from [NurbsCurve|ContourPolyline2D] to [NurbsCurve2D|ContourPolyline2D] 5 January 2006 brutzman - added bboxCenter, bboxSize to X3DShapeNode 2-3 January 2006 hudson, brutzman - corrected regular expressions (regexes) for SF/MF Matrix 3f-4d, MFVec4f, MFVec4d types - changed IMPORT InlineDEF to inlineDEF 31 December 2005 brutzman - MultiTexture content model: added ProtoInstance, removed MultiTexture - MultiTextureTransform content model corrected (TextureTransform or ProtoInstance) 29-30 December 2005 brutzman - added accessType information for various fields, added completeness checks to BuildSpecificationInterfacesFromSchema.xslt - fixed various DTD/schema mismatches discovered by checking accessType definitions - FloatVertexAttribute, Matrix3VertexAttribute, Matrix4VertexAttribute: X3DVertexAttributeNode given containerField attrib, added to X3DComposedGeometryNode - added containerField values to GeoOrigin, HAnimDisplacer, Script - HAnimDisplacer weight default value set to 0.0 - GeoElevationGrid removed set_yScale - X3DShaderNode: added containerField shaders - AppearanceChildContentModelNoProtoInstance: added ComposedShader, PackagedShader, ProgramShader - removed unneeded comment block: # - removed unneeded blocks: ContainedNodeLabel tags help distinguish between the different uses of node siblings that might otherwise share the same node type. These tags are labels in the scene graph, not instantiable nodes. Because these tags do not need to be instantiated as scene graph nodes, they do not have DEF or USE values like X3DNodes. ContainedNodeLabel tags are sometimes referred to as "wrapper tags." Note that ContainedNodeLabel tags are not needed when node siblings have different types. Thus "wrapper tags" are not needed for most child nodes in the VRML 97 node set. X3DArrayField is equivalent to MF (Multiple Field) simple non-Node types in the VRML 97 Specification. 27 December 2005 brutzman - (v3.1 only) added Texturing3D component: X3DTexture3DNode, Composed3DTexture, Image3DTexture, Pixel3DTexture, TextureCoordinate3D, TextureCoordinate4D, TextureMatrixTransform, TextureTransform3D 26 December 2005 brutzman - (v3.1 only) Added CADAssembly, CADLayer to ChildContentModelFull - (v3.1 only) Added QuadSet, IndexedQuadSet to GeometryContentModelCAD - (v3.1 only) Renamed GeometryContentModel2DFull to GeometryContentModel2D - (v3.1 only) Added bboxCenter, bboxSize, name to CADFace - added controlPoint to X3DNurbsControlCurveNode - changed NurbsCurve2D, ContourPolyline2D to X3DNurbsControlCurveNode, removed local definition of controlPoint - (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, shaderPartTypeValues - (v3.1 only) Added CubeMapTexturing component: X3DEnvironmentTextureNode, ComposedCubeMapTexture, GeneratedCubeMapTexture, ImageCubeMapTexture - changed X3DScriptNode list of contained Metadata nodes to ChildContentModeCore 22 December 2005 brutzman - NurbsTextureCoordinate added to SceneGraphFragmentContentModel - (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 - LineProperties: added inputOutput field applied 19 December 2005 brutzman - (v3.1 only) FogCoordinate default containerField value set to fogCoord - (v3.1 only) X3DCoordinateNode containerField moved to implementing nodes, since value may vary - (v3.1 only) FogCoordinate added to ColorCoordinateNormalTexCoordContentModel and ColorNormalTexCoordContentModel. 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) X3DLightNode: 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 - (v3.1 only) added X3DFogObject 18 December 2005 victor, brutzman - IndexedTriangleStripSet stripCount field removed - Polypoint2D points field renamed to point - EspduTransform articulationParameterIdPartAttachedArray field renamed to articulationParameterIdPartAttachedToArray - added NavigationInfo transitionType MFString, default "ANIMATE" - added solid field to Text, ArcClose2D, Circle2D, Disk2D, Rectangle2D, TriangleSet2D 16 December 2005 ecer, brutzman - X3DSoundSourceNode duration_changed type changed to SFTime - CylinderSensor rotation_changed type changed to SFRotation - IntegerTrigger triggerValue type changed to SFInt32 - LOD center type changed to SFVec3f - PointLight location type changed to SFVec3f - Rectangle2D size type changed to SFVec2f - SphereSensor rotation_changed type changed to SFRotation - SpotLight location, direction type changed to SFVec3f - TimeTrigger triggerTime type changed to SFTime - ROUTE fromField, toField type changed to xs:NMTOKEN - GeoElevationGrid xSpacing, zSpacing type basis changed to SFDouble, default set to 1 - GeoLOD center type changed to SFVec3d - GeoLOD range type changed to SFFloat 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, ecer, brutzman - EspduTransform firingRange type changed from SFInt32 to SFFloat - DirectionalLight direction type changed from MFVec3f to SFVec3f 14 November 2005 brutzman - added CADGeometry component, matching 3.1 specification - added enumeration value for CADInterchange Profile, matching 3.1 specification 22 October 2005 brutzman - added enumeration type x3dVersion to allow or "3.0" in x3d-3.1.xsd. also refactored x3d-3.0.xsd as enumeration, continue to only allow "3.0" as allowed value. - relaxed order of GeoElevationGrid children (GeoOrigin, Color, Normal, TextureCoordinate) - corrected GeoViewpoint child GeoOrigin to be a reference, allowing proper validation of Geospatial scenes - relaxed GeoMetadata content model to permit zero child nodes - added FontStyle to allowed content for field, fieldValue, ProtoBody (SceneGraphFragmentContentModel) - added speed attribute to MovieTexture - rounded up pi/2 maxInclusive values to 1.5708 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 21 October 2005 brutzman - updated x3d-3.0.xsd (schema version 3.0.0) as x3d-3.0.xsd (schema version 3.0.1), incorporating all changes to date. This will become the X3D Amendment 1 version of the X3D 3.0 schema. - The X3D Amendment 1 schema itself is fully backwards compatible and can validate but also adds additional v3.1 nodes. It is provided separately as x3d-3.1.xsd (schema version 3.1.1). - Thus the second digit in each schema version is the X3D amendment supported for validation, and the last digit in each schema version is the X3D amendment revision of the schema. 21 October 2005 grieve, brutzman - moved otherInterfaces attribute (used to indicate multiple inheritance) into appinfo annotation, rather than as an improper attribute. These multiple interfaces are informational for application/API generation tools, since complexType doesn't allow definition of multiple interfaces. A more verbose (but probably more confusing) approach would be to rename the complexType definitions. In any case, each complexType does include all attributes and child-element content defined by each of the implemented interfaces. 10 October 2005 brutzman - MetadataSet choice of children maxOccurs changed from 0 to unbounded - Refactored AppearanceChildContentModelLooseNoProtoInstance inside AppearanceChildContentModelLoose - added MultiTextureTransform to AppearanceChildContentModelLooseNoProtoInstance - added Appearance to ChildContentModelInterchange - bound X3DNode type to ChildContentModelCore (Metadata nodes) and single child Metadata-node choice - added ChildContentModelCore (Metadata nodes) to SceneGraphFragmentContentModel, field and fieldValue - rearranged definitions for HAnimHumanoid and ChildContentModelHumanoidAnimation for proper validation - rearranged definitions for SceneGraphFragmentContentModel and SceneGraphFragmentWithPrototypeDeclarationsContentModel for proper validation - Provided NurbsPatchSurface with content model Coordinate, CoordinateDouble, TextureCoordinate, TextureCoordinateGenerator,NurbsTextureCoordinate, ProtoInstance - added uClosed, vClosed to X3DNurbsSurfaceGeometryNode - added Coordinate, CoordinateDouble to NurbsCurve, NurbsOrientationInterpolator, NurbsPositionInterpolator, NurbsSurfaceInterpolator - added Contour2D to GeometryContentModelNurbs, also added default containerField trimmingContour - added NurbsCurve, ContourPolyline2D as content model for Contour2D - NurbsCurve: added closed field, removed controlPoint attribute - NurbsCurve2D: added closed field, changed controlPoint to MFVec2d - NurbsSet: corrected content model to contain NurbsSurface nodes, proper interfaces - NurbsTextureCoordinate: added controlPoint - NurbsSweptSurface: added one (ContourPolyline2D, NurbsCurve2D) node and one NurbsCurve node to content model - NurbsSwungSurface: added two (ContourPolyline2D, NurbsCurve2D) nodes to content model - NurbsTextureCoordinate: changed weight to MFFloat - NurbsTrimmedSurface: added content model Contour2D, Coordinate, CoordinateDouble, TextureCoordinate, TextureCoordinateGenerator, NurbsTextureCoordinate 2 October 2005 brutzman - began work on schema corrections to better validate under XMLSpy and other tools - AppearanceChildContentModel is problematic due to combinatoric explosion of design pattern for FillProperties, LineProperties, ImageTexture, PixelTexture, MovieTexture, TextureTransform, and ProtoInstance - replaced model for Appearance with AppearanceChildContentModelLoose, which only validates legitimate child nodes but does not prevent duplicate entries. This is an unfortunate limitation of XML Schema deterministic content model requirements. - Removed AppearanceChildContentModel from schema since it creates problems for schema validation tools, copied here for archival purposes AppearanceChildContentModel is the child-node content model corresponding to X3DAppearanceChildNode. AppearanceChildContentModel can first contain optional FillProperties and/or LineProperties, then any-order Material, ImageTexture, MovieTexture, MultiTexture, PixelTexture, TextureTransform, MultiTextureTransform. No more than one instance of any single node type is allowed. 26 November 2004, Steffen Nowacki - removed duplicate entry for bottomUrl in utility simpleType "inputOutputAccessTypes" 2 October 2004, brutzman - children in GeoMetadata changed to be optional 16 September 2004, puk, brutzman - added ContentModel type descriptions from specification as annotations (used for autogenerating X3D Encoding of Nodes in XML Encodings specification) - corrected secondary node type for Collision node to X3DSensorNode 15 September 2004, brutzman and X3D Specification Team - URL for revisions to Web3D Extensions: http://www.web3d.org/x3d-content/x3d-3.0-Web3dExtensionsPublic.xsd 14 September 2004, brutzman - x3d-3.0-Web3dExtensionsPublic.xsd (including LatticeXVL node) and x3d-3.0-Web3dExtensionsPrivate.xsd schemas added - revised version number to 3.0.0 16 July 2004, dabrowski, brutzman - Renamed Lineset field 'lineCount' to 'vertexCount' 11 July 2004, brutzman - corrected additional internal structural errors in ColorNormalTexCoordContentModel and ColorCoordinateNormalTexCoordContentModel - GeoElevationGrid child content made optional 8 July 2004, brutzman - removed Event - renamed the looser AppearanceChildContentModel alternative as AppearanceChildContentModelLoose - NurbsTextureCoordinate now extends X3DTextureCoordinateNode vice X3DNode - ColorNormalTexCoordContentModel and ColorCoordinateNormalTexCoordContentModel modified to permit TextureCoordinateGenerator, MultiTextureCoordinate and NurbsTextureCoordinate as alternatives to TextureCoordinate - Successfully generated documentation using XMLSPY, placed in c:/www.web3d.org/x3d/content/X3dSchemaDocumentation/x3d-3.0.html https://www.web3d.org/specifications/X3dSchemaDocumentation/x3d-3.0.html but then IndexedFaceSet began crashing it, likely due to more complex ColorCoordinateNormalTexCoordContentModel 8 July 2004, brutzman - Tool bug: alternative simplified AppearanceChildContentModel provided to avoid ambiguous child content errors from xjc (jaxb) schema validation. Commented sections have to be swapped when using schema to generate data bindings since AppearanceChildContentModel appears too complicated for tools otherwise. - Tool bug: attribute name="class" has to be commented for xjc (jaxb) to build API classes [ERROR] Attempt to create a property having the same name as the reserved word "Class". line 1139 of x3d-3.0.xsd - Corrected content model for GeoMetadata to include MFNode 'data' field, which can only refer to other GeoSpatial nodes. - Moved attribute name="class" back into attributeGroup globalAttributes with corrected type="xsd:NMTOKEN" (not type="xsd:string") - Eliminated SFFloatPositive and SFFloatNonNegative. Example redefinition: Saved prior regex definitions, for information purposes: 7 July 2004, brutzman - restructured ChildContentModel, SceneGraphStructureContentModel and SceneGraphFragmentContentModel to avoid nondeterminism ambiguities 1 July 2004, brutzman - change AppearanceChildContentModel for LineProperties, FillProperties to avoid ambiguous child content errors from jaxb schema validation 27 June 2004, brutzman - changed SFFloat to instead of - removed duplicative Metadata node declarations from ChildContentModeCore since already provided in X3DNode - removed erroneous declarations from ChildContentModeCore - removed extraneous CoordinateInterpolator2D from ChildContentModelImmersive - updated X3D Specification base url from https://www.web3d.org/specifications/ISO-IEC-19775/Part01 to https://www.web3d.org/x3d/specifications/ISO-IEC-19775-FDIS-X3dAbstractSpecification/Part01 - removed redundant Metadata* nodes from MetadataSet since they are already provided by X3DNode - removed redundant ColorCoordinateNormalTexCoordContentModel from IndexedFaceSet content model, since already provided by X3DComposedGeometryNode - X3DScriptNode made a separate base type since it can contain mixed (CDATA text) content, which means that it can't inherit from X3DNode. Thus added metadata children to precede field tags. Script already in ChildContentModelImmersive. - Cannot have a trailing ProtoInstance or two ProtoInstances represent FillProperties/LineProperties, restricted AppearanceChildContentModel slightly to preclude nondeterministic combinations of child content - Eliminated redundant GeoLocation from content model for GeoLocation, GeoLOD - Restricted HAnimDisplacer to only appear under HAnimSite, not as any ChildNode - Similarly restricted HAnimJoint, HAnimSegment, HAnimSite to not appear as any ChildNode ============================================================================= change summary prior to 27 June 2004: Nodes with different attributes/interfaces/names than VRML 97: - Anchor: implement X3DTouchSensorNode (and thus SensorNodeType) interface, add attributes enabled, isActive, isOver, touchTime - Collision: implement X3DEnvironmentalSensorNode (and thus SensorNodeType) interface, add attributes enabled, isActive - Joint: implement X3DBoundedObject interface, attributes bboxCenter, bboxSize - KeySensor: new node - IndexedLineSet: new attribute lineWidth - LOD: children (instead of level), implement X3DBoundedObject interface for bboxCenter, bboxSize - PointSet: new attribute pointSize - Scene: integrates functionality of VRML 97 Script node's Browser class - Site: implement X3DBoundedObject interface, attributes bboxCenter, bboxSize - StringSensor: new node - Switch: children (instead of choice), might implement X3DBoundedObject interface - Viewpoint: new (experimental) attribute examine (rotation used when active NavigationInfo is in EXAMINE mode) - No attributes are designated as eventIn, eventOut, field, exposedField since all are treated equivalently (by design decision at 1999 summit). Prototype fields can indicate fieldHint via attribute vrml97Hint for backwards compatibility using X3D-to-VRML-97 translators. - Routing events via field-name prefix set_ (or suffix _changed) is no longer required. Ought to be designated as a deprecation so that X3D implementations are forgiving. X3dToVrml97.xslt needs to be updated to support proper backwards translation automatically. ============================================================================= X3D design work completed: - Removed profile attributes for all nodes. - Verify all nodes, attributes and relationships using DTD. - Verify node types against latest interface hierarchy. - Verify summary of attribute additions relative to VRML 97 specification. - Verify attribute distribution among node types using SAI version 1. - Resolve X3DNode and base type relationships and naming conventions. - Added StringsUrl type to allow further pattern restrictions on valid url values, with expectation that further detail needs to be specified that is compatible with URNs. StringsUrl maps to VRML 97 MFStrings. - Multiple interfaces for Anchor, Collision, MovieTexture, TimeSensor: have verified there is no native Schema approach available for directly indicating multiple simultaneous types. Thus an otherInterfaces attribute is provided in combination with explicit repetition of attributes for these other interfaces. This allows proper autogeneration of multiple IDL and API interfaces by XSLT stylesheets. - Verify there are no other multiple interface nodes. - Extract tooltips from X3D-Edit to augment annotation->appinfo text. - Ensure setup and configuration files properly documented and available online as part of X3D-Edit distribution. - VRML 97's Script node Browser class (for values exposed to a browser) is being provided via attributes on Scene node (and thus a Scene interface). Also need to update DTD, X3D-Edit tooltips profile and X3dToVrml97.xsl translation stylesheet. - Use attributeGroup for any attributes contained in complexType (meaning NodeType definitions) so that multiple-interface repetitions can refer to the proper attributeGroup rather than explicitly repeating each attribute. - SceneGraphStructureType interface identifies scene-related nodes that are not renderable nodes in the scene graph (X3D, Header, Scene, ROUTE etc.). - Scene Authoring Interface (SAI) Java bindings for interfaces in org/web3d/x3d/sai/SceneAuthoringInterface.java are autogenerated from X3dSchemaDraft.xml by BuildInterfacesFromSchema.xsl - Enumeration types originally converted to Java interfaces, now converted into fully functional utility classes. - Can X3D element be formally designated as root node? Apparently not, according to revised Schema recommendation. Nevertheless, structured relationships of the node typing rules makes X3D the root. No further action required. - SceneGraphStructureNodeType nodes (X3D, Scene, Header, Prototype* etc.) changed from Full profile to either Base or Core profile as appropriate. - Updated to match final 2001 XML Schema Recommendation revisions. - Investigate restrictions on use of abstract="true" for element content as described in http://www.w3.org/2000/05/12-xmlschema-lcissues.html#abstract-types - Profile renaming: Core to Interchange profile CoreInteractive to Interactive profile BaseLine to Immersive profile Full stays Full profile DisJavaVrml to DIS profile GeoVrml to GeoSpatial profile - Wrapper tag issues: http://www.web3D.org/x3d/ComposingSceneGraphAlternatives.html - Color: naming collision between X3DField 'color' and node interface 'Color' avoided by distinct naming conventions for field type and field name. - xsd:choice minOccurs/maxOccurs attributes moved to parent xsd:group when used by reference (SoundChildContentModel, TextureBackgroundChildContentModel) - regex patterns for SFVec2d, MFVec2d, SFVec3d, MFVec3d, MFVec3f - Can SubstitutionGroup be used for deprecated node labels like LOD-level (now LOD-children) and Switch-choice (now Switch-children)? No. - Add source urls for annotations appinfo/documentation once specification addresses are stable. Initially using VRML 97 specification URLs for clarity. Updating to XLink urls into VRML 200x is the eventual goal. - Update the x3d-compact.dtd to precisely match names used for node types (e.g. GroupingNode). - Can USE be substituted anywhere? XML Schema substitutionGroup? Wildcard? Answer: USE no longer allowed due to type ambiguity, redundancy. - Consider optionalAttributes for appropriate fields in Interchange profile nodes that are only guaranteed at higher profile levels (or else just annotate them and leave optional implementation silent as an implementer choice). Answer: no. - Is it possible for this schema to differentiate profile-optional attributes (e.g. Anchor.target, IndexedFaceSet.convex etc.) in the same way that the DTD allows strict or loose checking of different-profile attributes? This is a bit tricky since browsers can optionally support Immersive-related attributes even when operating in a Interchange profile mode. Answer: no. - Relax ROUTE to appear within a scene/prototype, not solely at the end: ROUTE is a child node type. - Can FloatNonNegative pattern restrictions instead be added on a localized node-by-node basis? Probably too verbose, but at least that preserves base-type definitions. Answer: no, poor design choice. - Require ROUTE attributes. ============================================================================= X3D Schema design work in progress: - Using XSV validator to check the internal consistency of the schema. - Still need to automate regression testing for schema-based validation of content suites, a few esoteric schema warnings remain from xsqc and xsv. - Update source urls for annotations appinfo/documentation once specification addresses are stable. - How to identify simple types as X3DField and X3DArrayField? - Need X3DTexture3DNode? Probably keep Extrusion, [Geo]ElevationGrid as X3DGeometryNode - Need regex patterns for BoundingBoxSize, other special boundary constraints - Add additional type restrictions such as FloatNonNegative etc. ? Consider whether this can be codified as further base types or included as range restrictions on existing base types. - Need constraint or pattern on TriangleFanSet fanCount and TriangleStripSet stripCount (3 or more values) - is there some way to apply a restriction that only one child of Collision can have containerField="proxy" ? - Augment H-Anim 1.1 with H-Anim 2001. Decide if 1.1 can be included compatibly (as with DTD). - Matching interfaces with org.w3c.dom Element, Attr and Event types. Mapping to SAI X3DNode, X3DField and Event respectively. Under evaluation as part of Scene Authoring Interface (SAI) development. - Can deprecations be encoded as allowable options, or alternate/duplicate attributes? Stylesheets can capture and propagate the deprecations if consistently defined. - Patterns for multifield types need to be completed? - Establish different namespace scopes using key/keyRef for DEF/USE ID/IDREFs (and ROUTE/IS) inside ProtoDeclare. - Establish different namespace scopes for node and ProtoDeclare names. Or at least forbid reserved node names in prototypes. - Insert namespace prefixes (xsd: etc.) on X3D element - may need to use ref. See next section of this documentation for example implementation details. - Is restricting values on fields with accessType inputOnly/outputOnly possible? - Need to integrate CoordinateDouble and ColorRGBA into content models ============================================================================= Future work with namespaces and 'xsd:' qualifiers for non-X3D schema elements/datatypes, once software tools are namespace aware: xmlns ="http://www.w3.org/2000/10/XMLSchema" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:x3d="http://www.web3d.org/specifications/x3d-3.0.xsd" targetNamespace="http://www.web3d.org/specifications/x3d-3.0.xsd" DTD processing approach to namespaces: X3dSchemaDraft.xml entity declaration section (i.e. document subset) which goes inside the DOCTYPE tag at the top of this schema: ] Caution: Xeena and JAXP do not yet support document subset or namespaces, so the preceding document subset fragment listed here will get clobbered if inserted inside DOCTYPE. ============================================================================= XSV validator server: http://www.w3.org/2001/03/webdata/xsv Actual schema public ID: -//W3C//DTD XMLSCHEMA 200102//EN Web address schema DTD: http://www.w3.org/2001/XMLSchema.dtd Local address X3D schema: C:\www.web3d.org\specifications\x3d-3.0.xsd =============================================================================