| 1 |
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
|
| 3 | <X3D profile='Core' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'> |
| 4 | <head> |
| 5 | <component level='3'/> |
| 6 | <component name='Geometry2D'/> |
| 7 | <component level='3' name='Geometry2D'/> |
| 8 | <component level='3' name='Geometry2D'/> |
| 9 | <unit category='angle' conversionFactor='-1' name='nonPositiveConversionFactor'/> |
| 10 | <unit category='angle' conversionFactor='-1' name='nonPositiveConversionFactor'/> |
| 11 | <meta name='title' content=' TestSchematronDiagnostics.x3d '/> |
| 12 | <meta name='description' content='Test Schematron diagnostics capabilities for detecting various content errors and style warnings.'/> |
| 13 | <meta name='description' content='Second meta tag to test warning that two description meta tags are present.'/> |
| 14 | <meta name='creator' content='Don Brutzman'/> |
| 15 | <meta name='created' content='19 October 2008'/> |
| 16 | <meta name='modified' content='25 October 2020'/> |
| 17 | <meta name=' warning ' content=' The regex is not finding IllegalMinusSignsTest. '/> |
| 18 | <meta name=' error ' content=' Test scene with many errors, primarily intended to exercise most of the rules in the X3D Schematron diagnostic set. '/> |
| 19 | <meta name=' warning ' content=' Test scene with many warnings embedded in comments. '/> |
| 20 | <meta name='hint' content='Test scene with many hints embedded in comments.'/> |
| 21 | <meta name='info' content='Perhaps the most erroneous X3D scene in the world!'/> |
| 22 | <meta name='info' content='Perhaps the most erroneous X3D scene in the world!'/> |
| 23 | <meta name='reference' content='https://www.web3d.org/x3d/tools/schematron/X3dSchematronValidityChecks.sch'/> |
| 24 | <meta name='reference' content=' https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html '/> |
| 25 | <meta name='reference' content='https://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance'/> |
| 26 | <meta name='identifier' content=' https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.x3d '/> |
| 27 | <meta name='generator' content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit'/> |
| 28 | <meta name='license' content='../license.html'/> |
| 29 | </head> |
| 30 | <Scene USE='improperUSE'> |
| 31 | <!-- - illegal comment starts with extra hyphen - character --> |
| 32 | <!-- - illegal comment has intermediate paired-hyphen - - characters --> |
| 33 |
<!-- TouchSensor
IllegalCombinationDEFUSE is a DEF node that has 1 USE node: USE_1 --> <TouchSensor USE='IllegalCombinationDEFUSE'/> |
| 34 | <CylinderSensor DEF='DoubleDEF' enabled='false'/> |
| 35 | <TimeSensor DEF='DoubleDEF'/> |
| 36 | <WorldInfo DEF='FirstTitle' title='title #1'/> |
| 37 | <WorldInfo DEF='SecondTitle' title='title #2'/> |
| 38 | <WorldInfo DEF='DEFPrependedSpace'/> |
| 39 | <WorldInfo DEF='DEFEmbedded Space'/> |
| 40 | <WorldInfo DEF='DEFAppendedSpace'/> |
| 41 | <WorldInfo DEF='IllegalInfoQuotes' info='"WorldInfo info strings need to be quoted"'/> |
| 42 | <WorldInfo DEF='IllegalChild'> |
| 43 | <WorldInfo/> |
| 44 | </WorldInfo> |
| 45 | <WorldInfo DEF='LegalChild'> |
| 46 | <MetadataString/> |
| 47 | </WorldInfo> |
| 48 | <Anchor DEF='NoChildrenNoUrl'/> |
| 49 | <Anchor DEF='AnchorBookmark' parameter='"target=unquoted"' url=' "#missingBookmark" '> |
| 50 | <Group/> |
| 51 | </Anchor> |
| 52 | <Inline DEF='HelloWorld' url=' "../HelloWorld.x3d" "https://www.web3d.org/x3d/content/examples/Basic/HelloWorld.x3d" "../HelloWorld.wrl"'/> |
| 53 | <Inline DEF='UrlDotWrlPrecedesDotX3d' url=' "test.wrl" "test.x3d" "adjacentquote" "marks" '/> |
| 54 | <Inline DEF='NoUrlIllegalChild'> |
| 55 | <WorldInfo/> |
| 56 | </Inline> |
| 57 | <Inline DEF='NodeUrlVRML.wrl.PrecedingX3D.x3d' url=' "HelloWorld.wrl" "HelloWorld.x3d"'/> |
| 58 | <ExternProtoDeclare name='ExternProtoDeclareUrlVRML.wrl.PrecedingX3D.x3d' url=' "HelloWorld.wrl" "HelloWorld.x3d"'/> |
| 59 | <ExternProtoDeclare name='ExternProtoDeclareUrlVRML.wrl.MissingX3D.x3d' url=' "HelloWorld.x3d" "https://www.web3d.org/x3d/content/examples/Basic/development/HelloWorld.x3d" "HelloWorld.wrl" "https://www.web3d.org/x3d/content/examples/Basic/development/HelloWorld.wrl" '/> |
| 60 |
<!-- Shape
NoChildAppearance is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
<Shape DEF='NoChildAppearance'> |
| 61 | <Box/> |
| 62 | </Shape> |
| 63 | <Shape DEF='NoChildGeometry'> |
| 64 | |
| 65 | </Shape> |
| 66 | <!-- test no other fields if USE present --> |
| 67 | <Shape USE='NoChildAppearance'/> |
| 68 | <Shape USE='NoChildAppearance'/> |
| 69 | <Shape USE='NoChildAppearance'/> |
| 70 |
<!-- Shape
USEwithChildElement is a DEF node that has 1 USE node: USE_1 -->
<Shape DEF='USEwithChildElement'> |
| 71 | <Box/> |
| 72 | <Appearance DEF='AppearanceWithProtoInstanceChild'> |
| 73 | <ProtoInstance name='NodeSubstituteNoDeclaration'/> |
| 74 | </Appearance> |
| 75 | </Shape> |
| 76 | <Appearance DEF='MissingParentShape'/> |
| 77 | <Shape USE='USEwithChildElement'> |
| 78 | <Appearance USE='NoMaterialNoTexture'/> |
| 79 | </Shape> |
| 80 | <Shape DEF='SingleProtoInstanceChild'> |
| 81 | <ProtoInstance name='NodeSubstituteNoDeclaration'/> |
| 82 | </Shape> |
| 83 | <!-- no DEF name --> |
| 84 | <TimeSensor DEF='NoOutputROUTE'/> |
| 85 | <TimeSensor DEF='Clock' cycleInterval='100' loop='true'/> |
| 86 | <ColorInterpolator/> |
| 87 | <ColorInterpolator DEF='InterpolatorWithSingleKey' key='0'/> |
| 88 | <ColorInterpolator DEF='ColorInterpolatorColorProblems' key='0' keyValue='-1 1.2 0.3 0.4'/> |
| 89 | <!-- no DEF name --> |
| 90 | <PositionInterpolator DEF='NoROUTEsNoKeyValueArray' key='0 0'/> |
| 91 |
<!-- ROUTE information for MismatchedKeyArrays node:
[self-route from value_changed to set_fraction
]
-->
<ScalarInterpolator DEF='MismatchedKeyArrays' key='0' keyValue='0 0'/> |
| 92 |
<!-- ROUTE information for MismatchedKeyArraysSFVec3f node:
[self-route from value_changed to set_fraction
]
-->
<NormalInterpolator DEF='MismatchedKeyArraysSFVec3f' key='0 1' keyValue='0 0 0 1 1'/> |
| 93 | <!-- bogus ROUTEs to allow trapping deeper error --> |
| 94 | < ROUTE fromNode='MismatchedKeyArrays' fromField='value_changed' toNode='MismatchedKeyArrays' toField='set_fraction'/> |
| 95 | < ROUTE fromNode='MismatchedKeyArraysSFVec3f' fromField='value_changed' toNode='MismatchedKeyArraysSFVec3f' toField='set_fraction'/> |
| 96 | <BooleanSequencer/> |
| 97 | <BooleanSequencer DEF='NoROUTEs' key='0 0.5 1' keyValue='true false true'/> |
| 98 | <IntegerTrigger/> |
| 99 | <IntegerTrigger DEF='NoROUTE'/> |
| 100 | <OrientationInterpolator DEF='OI'/> |
| 101 | <LoadSensor DEF='ChildrenIncorrectContainerField'> |
| 102 | <ImageTexture DEF='textureContainerField' url=' "http:/bogus" "https://www.web3d.org/x3d/content/examples/Basic/development/http:/bogus" '/> |
| 103 | </LoadSensor> |
| 104 | <LoadSensor DEF='ChildrenCorrectContainerField'> |
| 105 | <ImageTexture DEF='watchListContainerField' containerField='watchList'/> |
| 106 | </LoadSensor> |
| 107 | <LoadSensor DEF='IncorrectChildNodes'> |
| 108 | <Group containerField='watchList'/> |
| 109 | <Anchor DEF='IllegalChildForLoadSensor'/> |
| 110 | </LoadSensor> |
| 111 | <Script DEF='HasLegalCDATA'> |
| 112 | <field name='duplicatedFieldName' type='SFBool' accessType='inputOnly'/> |
| 113 | <field name='duplicatedFieldName' type='SFBool' accessType='inputOnly'/> |
<![CDATA[
ecmascript:
function initialize()
{
// initialize() method silences ROUTE check
}
]]>
|
|
| 115 | </Script> |
| 116 | <Script DEF='HasCDATAwithoutEcmascriptHeader'> |
| 117 | <field name='noAccessType' type='SFBool'/> |
| 118 | <field name='noType' accessType='inputOnly'/> |
| 119 | <field type='noName' accessType='inputOnly'/> |
| 120 | <field name='neverSet' type='SFBool' accessType='outputOnly'/> |
<![CDATA[
ecmascript:
// empty Script body
]]>
|
|
| 122 | </Script> |
| 123 | <Script DEF='HasUrlNoCDATA' url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" '> |
| 124 | </Script> |
| 124 | <Script DEF='NoUrlNoCDATA'> |
| 125 | </Script> |
| 125 | <Script DEF='BothUrlAndCDATA' url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" '> |
| 126 | <field name='inputFunctionDefinedTwice' type='SFBool' accessType='inputOnly'/> |
| 127 | <field name='noInputFunctionAllowed' type='SFBool' accessType='outputOnly'/> |
<![CDATA[
ecmascript:
function set_noInputFunctionAllowed (newValue)
{
// cannot have input function for output field
}
function set_inputFunctionDefinedTwice (newValue)
{
// only one definition allowed; this is #1
}
function set_inputFunctionDefinedTwice (newValue)
{
// only one definition allowed; this is #2
}
]]>
|
|
| 129 | </Script> |
| 130 | <Script DEF='RouteButNoFields' url=' "TestSchematronDiagnostics.js" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.js" '> |
| 131 | </Script> |
| 131 | < ROUTE fromNode='NoFields' fromField='blah' toNode='NoFields' toField='blah'/> |
| 132 | <ProtoInstance name='NoDeclaration'/> |
| 133 | <ProtoDeclare name='MissingProtoBody'/> |
| 134 |
<!-- WorldInfo
DEFoutsideProtoDeclareScope is a DEF node that has 1 USE node: USE_1 --> <WorldInfo DEF='DEFoutsideProtoDeclareScope'/> |
| 135 | <ProtoDeclare name='DoubleMixedDeclaration' DEF='DuplicatedDeclaration'> |
| 136 | <ProtoBody> |
| 137 | <Group/> |
| 138 | <Viewpoint DEF='ISconnectDescription'> |
| 139 | <IS> |
| 140 | <connect nodeField='description' protoField='description'/> |
| 141 | </IS> |
| 142 | </Viewpoint> |
| 143 | <!-- TODO not yet working... --> |
| 144 | <WorldInfo USE='DEFoutsideProtoDeclareScope'/> |
| 145 |
<!-- WorldInfo
USEoutsideProtoDeclareScope is a DEF node that has 1 USE node: USE_1 --> <WorldInfo DEF='USEoutsideProtoDeclareScope'/> |
| 146 |
<!-- WorldInfo
DEF_USEinsideProtoDeclareScope is a DEF node that has 1 USE node: USE_1 --> <WorldInfo DEF='DEF_USEinsideProtoDeclareScope'/> |
| 147 | <WorldInfo USE='DEF_USEinsideProtoDeclareScope'/> |
| 148 | </ProtoBody> |
| 149 | </ProtoDeclare> |
| 150 | <WorldInfo USE='USEoutsideProtoDeclareScope'/> |
| 151 | <ExternProtoDeclare name='DoubleMixedDeclaration' url=' http://bogus#DifferentRemotePrototypeName '/> |
| 152 | <ProtoInstance name='DoubleMixedDeclaration' DEF='DoubleDeclaration2'> |
| 153 | <fieldValue name='duplicatedFieldValueName' value='blah'/> |
| 154 | <fieldValue name='duplicatedFieldValueName'/> |
| 155 | <fieldValue value='noName'/> |
| 156 | </ProtoInstance> |
| 157 | <ProtoDeclare name='DoubleProtoDeclaration' url=' "http:/bogus" "https://www.web3d.org/x3d/content/examples/Basic/development/http:/bogus" '/> |
| 158 | <ProtoDeclare name='DoubleProtoDeclaration' url=' http:///bogus '/> |
| 159 | <ExternProtoDeclare name='DoubleDeclarationUrlMissingPoundProtoName' url=' http:///bogus '/> |
| 160 | <ExternProtoDeclare name='DoubleDeclarationUrlMissingPoundProtoName' url=' "http:/bogus" "https://www.web3d.org/x3d/content/examples/Basic/development/http:/bogus" '/> |
| 161 | <ProtoDeclare name='EmptyProtoInterfaceEmptyProtoBody'> |
| 162 | <ProtoInterface/> |
| 163 | <ProtoBody/> |
| 164 | </ProtoDeclare> |
| 165 | <ProtoDeclare name='IllegalProtoInterface'> |
| 166 | <ProtoInterface> |
| 167 | <Group DEF='OnlyFieldDeclarationsAllowedInProtoInterface'/> |
| 168 | </ProtoInterface> |
| 169 | <ProtoBody> |
| 170 | <Group/> |
| 171 | </ProtoBody> |
| 172 | </ProtoDeclare> |
| 173 | <ExternProtoDeclare name='ExternProtoDeclareBeforeInstance' url=' "httpsMissing" "https://www.web3d.org/x3d/content/examples/Basic/development/httpsMissing" '/> |
| 174 | <ProtoInstance name='ExternProtoDeclareBeforeInstance'/> |
| 175 | <ProtoInstance name='ExternProtoDeclareAfterInstance'/> |
| 176 | <ExternProtoDeclare name='ExternProtoDeclareAfterInstance' url=' "httpMissing" "https://www.web3d.org/x3d/content/examples/Basic/development/httpMissing" '/> |
| 177 | <ProtoDeclare name='ProtoDeclareBeforeInstance'> |
| 178 | <ProtoBody> |
| 179 | <Group/> |
| 180 | </ProtoBody> |
| 181 | </ProtoDeclare> |
| 182 | <ProtoInstance name='ProtoDeclareBeforeInstance'/> |
| 183 | <ProtoInstance name='ProtoDeclareAfterInstance'/> |
| 184 | <ProtoDeclare name='ProtoDeclareAfterInstance'> |
| 185 | <ProtoBody> |
| 186 | <Group> |
| 187 | <IS> |
| 188 | <connect nodeField='danglingConnectNodeField' protoField='danglingConnectProtoField'/> |
| 189 | </IS> |
| 190 | </Group> |
| 191 | </ProtoBody> |
| 192 | </ProtoDeclare> |
| 193 | <Group DEF='ContainsISchildButNoParentProtoDeclare'> |
| 194 | <IS> |
| 195 | <connect nodeField='isolatedConnectNodeField' protoField='isolatedConnectProtoField'/> |
| 196 | </IS> |
| 197 | </Group> |
| 198 | <!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField" protoField="isolatedConnectProtoField"/> --> |
| 199 | <Shape DEF='BadBoundingBoxValues' bboxCenter='1a 2b 3c' bboxSize='-1 -2 -3'> |
| 200 | <Extrusion DEF='ExtrusionCrossSectionMiscountSpineMismatchCrossSectionMiscount' crossSection='1 2 3' orientation='0 0 1 0 0 0 1 0 0 0 1 0' scale='1 1 1 1 1 1 1 1 1 1 1 1' spine='0 0 0 0 2 0'/> |
| 201 | <!-- check for reserved word in DEF --> |
| 202 | <Appearance DEF='DEF'> |
| 203 | <TwoSidedMaterial DEF='separateBackColorWrong' backShininess='0.123'/> |
| 204 | </Appearance> |
| 205 | </Shape> |
| 206 | < ROUTE fromNode='blah' fromField='set_blah' toNode='bleah' toField='bleah_changed'/> |
| 207 | <Viewpoint DEF='OKviewpoint' description='this viewpoint is OK'/> |
| 208 | <Viewpoint DEF='DEFdescriptionMatch' description='DEFdescriptionMatch'/> |
| 209 | <OrthoViewpoint DEF='NoSpacesInDescription' description='NeedToPutSpacesInDescription'/> |
| 210 | <GeoViewpoint DEF='IllegalFields' navType='"OTHER"' containerField='children'/> |
| 211 | <GeoMetadata DEF='BadChild' containerField='children'> |
| 212 | <GeoViewpoint DEF='BadContainerField' containerField='children'/> |
| 213 | </GeoMetadata> |
| 214 | <!-- check for reserved word in name definitions --> |
| 215 | <ProtoDeclare name='X3D'> |
| 216 | <ProtoBody> |
| 217 | <Group DEF='PrototypeRootNode'/> |
| 218 | </ProtoBody> |
| 219 | </ProtoDeclare> |
| 220 | <ExternProtoDeclare name='X3D'> |
| 221 | <field name='X3D' type='SFBool' accessType='inputOnly'/> |
| 222 | </ExternProtoDeclare> |
| 223 | <ProtoInstance name='X3D' DEF='BadNameBadFieldValueNameMissingInitialization'> |
| 224 | <fieldValue name='X3D'/> |
| 225 | </ProtoInstance> |
| 226 | <ProtoInstance name='X3D'> |
| 227 | <fieldValue name='X3D' value='doubleInitialization'> |
| 228 | <Shape/> |
| 229 | </fieldValue> |
| 230 | </ProtoInstance> |
| 231 | <LOD> |
| 232 | <Background DEF='BackgroundWithParentLOD'/> |
| 233 | <Fog DEF='FogWithParentLOD'/> |
| 234 | <NavigationInfo DEF='NavigationInfoWithParentLOD'/> |
| 235 | <Viewpoint DEF='ViewpointWithParentLOD'/> |
| 236 | </LOD> |
| 237 | <ViewpointGroup DEF='IllegalViewpointGroupChild'> |
| 238 | <Transform/> |
| 239 | </ViewpointGroup> |
| 240 | <Shape> |
| 241 | <Box/> |
| 242 | <Appearance> |
| 243 | <PixelTexture DEF='NoImageData'/> |
| 244 | </Appearance> |
| 245 | </Shape> |
| 246 | <Shape> |
| 247 | <Box/> |
| 248 | <Appearance> |
| 249 | <PixelTexture DEF='IllegalImageData' image='1 a b c d'/> |
| 250 | </Appearance> |
| 251 | </Shape> |
| 252 | <Shape> |
| 253 | <Box/> |
| 254 | <Appearance> |
| 255 | <PixelTexture DEF='DefaultImageData'/> |
| 256 | </Appearance> |
| 257 | </Shape> |
| 258 | <Shape> |
| 259 | <Box/> |
| 260 | <Appearance> |
| 261 | <PixelTexture DEF='DuplicateImageData'/> |
| 262 | </Appearance> |
| 263 | </Shape> |
| 264 | <Shape> |
| 265 | <Box/> |
| 266 | <Appearance> |
| 267 | <PixelTexture DEF='ImageDataTest' image='1 1 1 0xAA'/> |
| 268 | </Appearance> |
| 269 | </Shape> |
| 270 |
<!-- WorldInfo
USEandDEFtogether is a DEF node that has 1 USE node: USE_1 --> <WorldInfo USE='USEandDEFtogether'/> |
| 271 | <WorldInfo USE='USEprecedesDEF'/> |
| 272 |
<!-- WorldInfo
USEprecedesDEF is a DEF node that has 1 USE node: USE_1 --> <WorldInfo DEF='USEprecedesDEF'/> |
| 273 | <WorldInfo USE='noDEFforUSE'/> |
| 274 |
<!-- WorldInfo
noChildNodeforUSE is a DEF node that has 1 USE node: USE_1 --> <WorldInfo DEF='noChildNodeforUSE'/> |
| 275 | <WorldInfo USE='noChildNodeforUSE'> |
| 276 | <MetadataSet> |
| 277 | <MetadataString name='someStringArray' value='"unquoted string values"'/> |
| 278 | </MetadataSet> |
| 279 | </WorldInfo> |
| 280 |
<!-- Group
DEFcontainsUSEcopyOfSelf is a DEF node that has 1 USE node: USE_1 -->
<Group DEF='DEFcontainsUSEcopyOfSelf'> |
| 281 | <Group USE='DEFcontainsUSEcopyOfSelf'/> |
| 282 | </Group> |
| 283 |
<!-- WorldInfo
USEmismatchDEFnodeType is a DEF node that has 1 USE node: USE_1 --> <WorldInfo DEF='USEmismatchDEFnodeType'/> |
| 284 | <Group USE='USEmismatchDEFnodeType'/> |
| 285 | <LocalFog DEF='NoLocalFogV3.0'/> |
| 286 | <PointLight/> |
| 287 | <Shape> |
| 288 | <IndexedFaceSet DEF='CountTests' creaseAngle='-1.234' coordIndex='0 1 2 -1'> |
| 289 | <Coordinate point='0 0 0 0 1 0 1 0 0 5'/> |
| 290 | <Color DEF='IllegalValuesColor' color='-1 2 3'/> |
| 291 | <ColorRGBA DEF='IllegalValuesColorRGBA' color='-1 1.2 0.3 0.4'/> |
| 292 | <TextureCoordinate/> |
| 293 | <TextureCoordinateGenerator/> |
| 294 | </IndexedFaceSet> |
| 295 | <Appearance USE='NoMaterialNoTexture'/> |
| 296 | </Shape> |
| 297 | <Shape> |
| 298 | <Text DEF='CharacterBeforeQuotes' string='x " "'> |
| 299 | <FontStyle family='"unquotedFontFamilyName"' justify='"unquotedIllegalJustification"'/> |
| 300 | </Text> |
| 301 | <Appearance USE='NoMaterialNoTexture'/> |
| 302 | </Shape> |
| 303 | <Shape> |
| 304 | <Text DEF='ThreeUnescapedQuoteMarksMissingSpaceEndsApostrophe' string='"" x" ''> |
| 305 | <FontStyle DEF='familyValuesMissingIntermediateQuotes' family='"SANS SERIF"' justify='"BEGIN" "BEGIN"'/> |
| 306 | </Text> |
| 307 | <Appearance USE='NoMaterialNoTexture'/> |
| 308 | </Shape> |
| 309 | <Shape> |
| 310 | <Text DEF='EscapedQuoteMarkWarning' string='"here is a single escaped \" quote mark character"'> |
| 311 | <FontStyle justify='"IllegalValue"'/> |
| 312 | </Text> |
| 313 | <Appearance USE='NoMaterialNoTexture'/> |
| 314 | </Shape> |
| 315 | <Shape> |
| 316 | <Text DEF='NeedQuoteMarks' string='"quote marks are required for single string"'> |
| 317 | <FontStyle/> |
| 318 | </Text> |
| 319 | <Appearance USE='NoMaterialNoTexture'/> |
| 320 | </Shape> |
| 321 | <Shape> |
| 322 | <Text DEF='EmbeddedQuoteMarksOK' string='"plain text with \"quote marks\" embedded"'> |
| 323 | <FontStyle DEF='FontStyleFieldsContainIllegalQuotes' language='"noquo"' style='"PLAIN"'/> |
| 324 | </Text> |
| 325 | <Appearance USE='NoMaterialNoTexture'/> |
| 326 | </Shape> |
| 327 | <Shape> |
| 328 | <IndexedQuadSet DEF='MissingIndex' ccw='true' colorPerVertex='true' normalPerVertex='true' solid='true'> |
| 329 | <Coordinate DEF='DuplicatedCoordinatePointArray' point='0 0 0 0 1 0 1 0 0 5'/> |
| 330 | </IndexedQuadSet> |
| 331 | <Appearance USE='NoMaterialNoTexture'/> |
| 332 | </Shape> |
| 333 | <NormalInterpolator DEF='NormalPath' key='0 0.5 1' keyValue='0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 5'/> |
| 334 | <GeoLocation DEF='LegalGeoSystem' geoCoords='36.607 -121.885 0.0' containerField='children'/> |
| 335 | <ProtoDeclare name='ReferenceTest'> |
| 336 | <ProtoInterface> |
| 337 | <field name='defaultTest' type='SInt32' value='78' accessType='initializeOnly'/> |
| 338 | <field name='incorrectInitializationSFColorRGBA' type='SFColorRGBA' value='1 1 1' accessType='initializeOnly'/> |
| 339 | </ProtoInterface> |
| 340 | <ProtoBody> |
| 341 | <Script url=' "http:///bogus" '> |
| 342 | <field name='missingInitializationValue1' type='SFBool' accessType='initializeOnly'/> |
| 343 | <field name='missingInitializationValue2' type='SFInt32' accessType='initializeOnly'/> |
| 344 | <field name='incorrectInitializationSFVec3f' type='SFVec3f' value='0.0' accessType='initializeOnly'/> |
| 345 | <field name='incorrectInitializationMFColor' type='MFColor' value='1 2 3 4 5 6 7' accessType='initializeOnly'/> |
| 346 | <field name='missingInitializationValueHasIS' type='SFBool' value='true' accessType='initializeOnly'/> |
| 347 | <fieldValue name='shouldBeField'/> |
| 348 | <IS> |
| 349 | <connect nodeField='missingInitializationValue2' protoField='defaultTest'/> |
| 350 | <connect nodeField='missingInitializationValueHasIS' protoField='test'/> |
| 351 | </IS> |
| 352 | </Script> |
| 353 | <!-- Subsequent nodes do not render, but still must be a valid X3D subgraph --> |
| 354 | </ProtoBody> |
| 355 | </ProtoDeclare> |
| 356 | <ProtoInstance name='ReferenceTest'> |
| 357 | <fieldValue name='defaultTest' value='78'/> |
| 358 | <fieldValue name='incorrectInitializationSFColorRGBA' value='1 1 1 1 1'/> |
| 359 | <field name='shouldBeFieldValue'/> |
| 360 | </ProtoInstance> |
| 361 | <Transform DEF='ZeroMagnitudeRotationAxes' scaleOrientation='0 0 0 0'/> |
| 362 | <Box DEF='GeometryNodeNeedsShapeParent'/> |
| 363 | <Collision DEF='IllegalGeometryProxyNode'> |
| 364 | <Box DEF='GeometryNodeCollisionParentNeedsParentShapeWithProxyContainerField' containerField='proxy'/> |
| 365 | </Collision> |
| 366 | <NavigationInfo DEF='UnquotedTypeAndTransitionTypeErrors' transitionType='"ALTERNATE"' type='OTHER'/> |
| 367 | <NavigationInfo DEF='NavigationInfoWithTypeALL' type='"ALL"'/> |
| 368 |
<!-- Group
IllegalParentChild-DEF-USE is a DEF node that has 1 USE node: USE_1 -->
<Group DEF='IllegalParentChild-DEF-USE'> |
| 369 | <Group USE='IllegalParentChild-DEF-USE'/> |
| 370 | </Group> |
| 371 | <CADLayer name='contains whitespace and incorrect boolean value' visible='true false wrong'/> |
| 372 | <Shape> |
| 373 | <ImageTexture DEF='IllegalParent1'/> |
| 374 | <MovieTexture DEF='IllegalParent2'/> |
| 375 | <PixelTexture DEF='IllegalParent3'/> |
| 376 | </Shape> |
| 377 | <Shape> |
| 378 |
<!-- TextureTransform
TextureTransformWithNoSiblingTextureNode is a DEF node that has 1 USE node: USE_1 --> <TextureTransform DEF='TextureTransformWithNoSiblingTextureNode'/> |
| 379 | </Shape> |
| 380 | <Shape> |
| 381 | <Appearance> |
| 382 | <TextureTransform USE='TextureTransformWithNoSiblingTextureNode'/> |
| 383 | <TextureCoordinateGenerator DEF='TextureCoordinateGeneratorIllegalMode' mode='Bogus'/> |
| 384 | <TextureCoordinateGenerator DEF='TextureCoordinateGeneratorIllegalParameterCount' mode='NOISE' parameter='1 2 3 4'/> |
| 385 | </Appearance> |
| 386 | </Shape> |
| 387 | <Shape> |
| 388 | <Appearance> |
| 389 | <MultiTexture DEF='NoTextureChildren' function='"BogusFunction1Value" "BogusFunction2Value" "' mode='"BogusMode1Value" BogusMode2Value"' source='"BogusSourceValue"'/> |
| 390 | </Appearance> |
| 391 | </Shape> |
| 392 | <Background DEF='NoBackgroundChildrenAllowed'> |
| 393 | <ImageTexture DEF='IllegalBackgroundChild'/> |
| 394 | </Background> |
| 395 | <TextureBackground> |
| 396 | <ImageTexture DEF='LegalChild1'/> |
| 397 | <MovieTexture DEF='LegalChild2'/> |
| 398 | <PixelTexture DEF='LegalChild3'/> |
| 399 | <Group DEF='IllegalTextureBackgroundChild'/> |
| 400 | <ImageTexture DEF='IllegalTextureBackgroundChildContainerField' containerField='frontUrl'/> |
| 401 | </TextureBackground> |
| 402 | <Group DEF='Embedded Blanks DEF'/> |
| 403 | <Group USE='Embedded Blanks USE'/> |
| 404 | <Group DEF='"QuotedDEF"'/> |
| 405 | <Group USE='"QuotedUSE"'/> |
| 406 | <MetadataSet> |
| 407 | <MetadataBoolean/> |
| 408 | <MetadataFloat containerField='value'/> |
| 409 | <MetadataDouble containerField='illegalName'/> |
| 410 | </MetadataSet> |
| 411 | <MetadataString DEF='IllegalMetadataContainerField' containerField='value'/> |
| 412 | <ScalarInterpolator DEF='IllegalDecimalPointsTest' key='0.00.5 1.0' keyValue='1 2 3'/> |
| 413 | <ScalarInterpolator DEF='IllegalMinusSignsTest' key='0.0 0.5 1.0' keyValue='-1-2 3'/> |
| 414 | <!-- test of NeedsChildNode --> |
| 415 | <Group DEF='EmptyGroup'/> |
| 416 | <Switch whichChoice='-1'> |
| 417 | <!-- test of NeedsChildNode --> |
| 418 | <Group DEF='EmptyGroupInsideSwitch'/> |
| 419 | </Switch> |
| 420 | <Group DEF='EmptyGroupContainsComment'> |
| 421 | <!-- test of NeedsChildNode --> |
| 422 | </Group> |
| 423 | <Switch DEF='EmptySwitchContainsROUTE' whichChoice='-1'> |
| 424 | <!-- test of NeedsChildNode --> |
| 425 | < ROUTE fromNode='NoFields' fromField='blah' toNode='NoFields' toField='blah'/> |
| 426 | </Switch> |
| 427 | <CADLayer visible='false'> |
| 428 | <CADAssembly> |
| 429 | <CADPart> |
| 430 | <CADFace DEF='CADFaceOneShapeChild'> |
| 431 | <Transform containerField='shape'> |
| 432 | <Shape/> |
| 433 | </Transform> |
| 434 | </CADFace> |
| 435 | <CADFace DEF='CADFaceMultipleShapeChildren'> |
| 436 | <Transform DEF='containerFieldNot_shape'> |
| 437 | <Shape/> |
| 438 | <Shape/> |
| 439 | </Transform> |
| 440 | </CADFace> |
| 441 | </CADPart> |
| 442 | </CADAssembly> |
| 443 | </CADLayer> |
| 444 | <GeoOrigin DEF='DeprecatedNodeUnquotedGeoSystem' geoSystem='"GD WE"'/> |
| 445 | <Viewpoint DEF='ViewHumanoidMissingCenterOfRotation'/> |
| 446 | <Shape DEF='EmptyShapeWithCommentSilencesWarning'> |
| 447 | <!-- silence warning --> |
| 448 | </Shape> |
| 449 | <Shape> |
| 450 | <Appearance> |
| 451 | <Material DEF='IllegalColorValuesMaterial' diffuseColor='-1 1.2 0.3 0.4' emissiveColor='-1 1.2 0.3 0.4' specularColor='-1 1.2 0.3 0.4'/> |
| 452 | </Appearance> |
| 453 | </Shape> |
| 454 | <Background DEF='BackgroundColorProblems' groundColor='-1 1.2 0.3 0.4' skyColor='-1 1.2 0.3 0.4'/> |
| 455 | <Fog DEF='FogColorProblems' color='-1 1.2 0.3 0.4'/> |
| 456 | <DirectionalLight DEF='DirectionalLightColorProblems' color='-1 1.2 0.3 0.4'/> |
| 457 | <PointLight DEF='PointLightColorProblems' color='-1 1.2 0.3 0.4'/> |
| 458 | <SpotLight DEF='SpotLightColorProblems' color='-1 1.2 0.3 0.4'/> |
| 459 | <ClipPlane DEF='IllegalPlaneEquationValues' plane='1 2 3 4 5'/> |
| 460 | <HAnimHumanoid DEF='notUniqueName1' name='JimDandy' version='1.1'/> |
| 461 | <HAnimHumanoid DEF='notUniqueName2' name='JimDandy' version='2.0'> |
| 462 | <!-- keep the following Group node as first child so that it is reported by diagnostic test --> |
| 463 | <Group DEF='HumanoidCannotContainChildrenNodes' name='IllegalGroupChildrenNode'/> |
| 464 | <HAnimJoint containerField='skeleton' name='HumanoidRoot'> |
| 465 |
<!-- HAnimJoint
MissingComponentH-AnimLevel1 is a DEF node that has 1 USE node: USE_1 -->
<HAnimJoint DEF='MissingComponentH-AnimLevel1'> |
| 466 | <HAnimHumanoid DEF='incorrectlyNestedHumanoidMissingNameAttribute' version='2.0'/> |
| 467 | </HAnimJoint> |
| 468 |
<!-- HAnimJoint
MissingNameAttributeCheckContainerField is a DEF node that has 2 USE nodes: USE_1, USE_2 --> <HAnimJoint DEF='MissingNameAttributeCheckContainerField'/> |
| 469 | <HAnimJoint USE='MissingNameAttributeCheckContainerField'/> |
| 470 | <HanimJoint DEF='ImproperCapitalizationOfNodeName'/> |
| 471 |
<!-- HAnimJoint
duplicateName1 is a DEF node that has 2 USE nodes: USE_1, USE_2 --> <HAnimJoint DEF='duplicateName1' name='sacroiliac'/> |
| 472 |
<!-- HAnimJoint
duplicateName2 is a DEF node that has 1 USE node: USE_1 --> <HAnimJoint DEF='duplicateName2' name='sacroiliac'/> |
| 473 | <HAnimJoint USE='duplicateName1' containerField='joints'/> |
| 474 |
<!-- ROUTE information for JointInterpolator node:
[from value_changed to MissingNameAttribute.translation
]
-->
<PositionInterpolator DEF='JointInterpolator' key='0 0' keyValue='0 0 0 1 0 0'/> |
| 475 | < ROUTE fromNode='JointInterpolator' fromField='value_changed' toNode='MissingNameAttribute' toField='translation'/> |
| 476 |
<!-- HAnimJoint
ImproperDEFname is a DEF node that has 1 USE node: USE_1 --> <HAnimJoint DEF='ImproperDEFname' name='l_acromioclavicular'/> |
| 477 |
<!-- HAnimJoint
hanim_HumanoidRoot is a DEF node that has 1 USE node: USE_1 -->
<HAnimJoint DEF='hanim_HumanoidRoot' name='HumanoidRoot'> |
| 478 |
<!-- HAnimSegment
JointNameSegmentNameHierarchyTest is a DEF node that has 1 USE node: USE_1 -->
<HAnimSegment DEF='JointNameSegmentNameHierarchyTest' name='notSacrum'> |
| 479 | <!-- the following construct is OK and should not throw errors --> |
| 480 |
<!-- HAnimSite
hanim_Top_view is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
<HAnimSite DEF='hanim_Top_view' containerField='viewpoints' name='Top_view' rotation='1 0 0 -1.57' translation='0 3.5 0'> |
| 481 | <Viewpoint DEF='hanim_Top_viewpoint' centerOfRotation='0 0.9 0' description='Top' position='0 0 0'/> |
| 482 | </HAnimSite> |
| 483 | </HAnimSegment> |
| 484 |
<!-- HAnimJoint
negativeCenterHeight is a DEF node that has 1 USE node: USE_1 -->
<HAnimJoint DEF='negativeCenterHeight' center='0 -1 0' name='negativeCenterHeight'> |
| 485 |
<!-- HAnimSegment
IllegalChildrenContainerFields is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
<HAnimSegment DEF='IllegalChildrenContainerFields' name='IllegalChildrenContainerFields'> |
| 486 |
<!-- HAnimSite
negativeTranslationHeight is a DEF node that has 1 USE node: USE_1 -->
<HAnimSite DEF='negativeTranslationHeight' name='negativeTranslationHeight' translation='0 -1 0'> |
| 487 | <HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode'/> |
| 488 | </HAnimSite> |
| 489 | <Coordinate/> |
| 490 | <CoordinateDouble/> |
| 491 | </HAnimSegment> |
| 492 | </HAnimJoint> |
| 493 |
<!-- HAnimJoint
MismatchedJointCenter_l_knee is a DEF node that has 1 USE node: USE_1 --> <HAnimJoint DEF='MismatchedJointCenter_l_knee' center='1 2 3' name='l_knee'/> |
| 494 |
<!-- HAnimJoint
MismatchedJointCenter_r_knee is a DEF node that has 1 USE node: USE_1 --> <HAnimJoint DEF='MismatchedJointCenter_r_knee' center='4 5 6' name='r_knee'/> |
| 495 | <HAnimJoint USE='IllegalEmbeddedHAnimUse'/> |
| 496 |
<!-- HAnimSite
IllegalNameIllegalParent is a DEF node that has 1 USE node: USE_1 --> <HAnimSite DEF='IllegalNameIllegalParent' name='IllegalNameIllegalParent'/> |
| 497 | <!-- TODO test IllegalEmbeddedHAnimUse in another HAnimHumanoid --> |
| 498 | </HAnimJoint> |
| 499 | </HAnimJoint> |
| 500 | <HAnimSite USE='hanim_Top_view' containerField='viewpoints'/> |
| 501 | <HAnimSite USE='hanim_Top_view' containerField='viewpoints'/> |
| 502 | <HAnimSegment USE='JointNameSegmentNameHierarchyTest' containerField='segments'/> |
| 503 | <HAnimSegment USE='IllegalChildrenContainerFields' containerField='segments'/> |
| 504 | <!-- test for duplicated USE node --> |
| 505 | <HAnimSegment USE='IllegalChildrenContainerFields' containerField='segments'/> |
| 506 | <Coordinate DEF='HAnimCoordinateCorrectContainerField' containerField='skinCoord' point='0 0 0'/> |
| 507 | <Coordinate DEF='HAnimCoordinateIncorrectContainerField'/> |
| 508 | <CoordinateDouble DEF='HAnimCoordinateDoubleCorrectContainerField' containerField='skinCoord' point='0 0 0'/> |
| 509 | <CoordinateDouble DEF='HAnimCoordinateDoubleIncorrectContainerField'/> |
| 510 | <Normal DEF='HAnimNormalIncorrectContainerField'/> |
| 511 | <HAnimJoint USE='MissingComponentH-AnimLevel1' containerField='joints'/> |
| 512 | <HAnimJoint USE='MissingNameAttributeCheckContainerField' containerField='joints'/> |
| 513 | <HAnimJoint USE='duplicateName1' containerField='joints'/> |
| 514 | <HAnimJoint USE='duplicateName2' containerField='joints'/> |
| 515 | <HAnimJoint USE='ImproperDEFname' containerField='joints'/> |
| 516 | <HAnimJoint USE='hanim_HumanoidRoot' containerField='joints'/> |
| 517 | <HAnimJoint USE='negativeCenterHeight' containerField='joints'/> |
| 518 | <HAnimJoint USE='MismatchedJointCenter_l_knee' containerField='joints'/> |
| 519 | <HAnimJoint USE='MismatchedJointCenter_r_knee' containerField='joints'/> |
| 520 | <HAnimSite USE='hanim_Top_view' containerField='sites'/> |
| 521 | <HAnimSite USE='negativeTranslationHeight' containerField='sites'/> |
| 522 | <HAnimSite USE='IllegalNameIllegalParent' containerField='sites'/> |
| 523 | </HAnimHumanoid> |
| 524 | <Sound DEF='NoChildren'/> |
| 525 | <AudioClip DEF='NoParentSoundNode' description='bad clip reference' url=' "blah" "https://www.web3d.org/x3d/content/examples/Basic/development/blah" '/> |
| 526 | <Sound class='must separate classes with;space characters' location='0 2 0'> |
| 527 | <AudioClip description='bad clip reference' url=' "blah" "https://www.web3d.org/x3d/content/examples/Basic/development/blah" '/> |
| 528 | </Sound> |
| 529 | <Sound DEF='SoundDefaults' location='0 2 0'> |
| 530 |
<!-- AudioClip
ReusableAudioClip is a DEF node that has 5 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5 --> <AudioClip DEF='ReusableAudioClip' description='reusable' url=' "../Vrml97Specification/click.wav" "https://www.web3d.org/x3d/content/examples/Basic/Vrml97Specification/click.wav" '/> |
| 531 | </Sound> |
| 532 | <Sound DEF='SoundMinNegative' location='0 2 0' minBack='-1' minFront='-1'> |
| 533 | <AudioClip USE='ReusableAudioClip'/> |
| 534 | </Sound> |
| 535 | <Sound DEF='SoundMaxNegative' location='0 2 0' maxBack='-10' maxFront='-10'> |
| 536 | <AudioClip USE='ReusableAudioClip'/> |
| 537 | </Sound> |
| 538 | <Sound DEF='SoundMinGreaterThanMax' location='0 2 0' maxBack='11' maxFront='11' minBack='12' minFront='12'> |
| 539 | <AudioClip USE='ReusableAudioClip'/> |
| 540 | </Sound> |
| 541 | <Sound DEF='SoundMinGreaterThanDefaultMax' location='0 2 0' minBack='13' minFront='13'> |
| 542 | <AudioClip USE='ReusableAudioClip'/> |
| 543 | </Sound> |
| 544 | <Sound DEF='SoundMaxLessThanDefaultMin' location='0 2 0' maxBack='0.5' maxFront='0.5'> |
| 545 | <AudioClip USE='ReusableAudioClip'/> |
| 546 | </Sound> |
| 547 | < ROUTE fromNode='DuplicateROUTE' fromField='test1' toNode='test2' toField='test3'/> |
| 548 | < ROUTE fromNode='DuplicateROUTE' fromField='test1' toNode='test2' toField='test3'/> |
| 549 | < ROUTE fromNode='DuplicateROUTE' fromField='test1' toNode='test2' toField='test3'/> |
| 550 | < ROUTE fromNode='NodeFollowsRoute1' fromField='children' toNode='NodeFollowsRoute2' toField='children'/> |
| 551 |
<!-- ROUTE information for NodeFollowsRoute1 node:
[from children to NodeFollowsRoute2.children
]
-->
<Group DEF='NodeFollowsRoute1'> |
| 552 |
<!-- ROUTE information for NodeFollowsRoute2 node:
[from NodeFollowsRoute1.children to children
]
-->
<Group DEF='NodeFollowsRoute2'> |
| 553 | <!-- silence warning --> |
| 554 | </Group> |
| 555 | </Group> |
| 556 | <Shape DEF='ElevationGridInsufficientHeights'> |
| 557 | <ElevationGrid solid='false' xSpacing='0' zDimension='3' zSpacing='0' height='1 2 3 4 5'/> |
| 558 | </Shape> |
| 559 | <Shape DEF='ElevationGridTooManyHeights'> |
| 560 | <ElevationGrid solid='false' xSpacing='-1' zDimension='3' zSpacing='-1' height='1 2 3 4 5 6 7'/> |
| 561 | </Shape> |
| 562 | <Shape DEF='ElevationGridBadDimensions'> |
| 563 | <ElevationGrid solid='false' xDimension='-2' zDimension='-3' height='1 2 3 4 5 6'/> |
| 564 | </Shape> |
| 565 | <StaticGroup DEF='StaticGroupChildTests' containerField='children'> |
| 566 | <Group> |
| 567 | <TimeSensor DEF='StaticGroupDescendantsCannotProduceEvents'/> |
| 568 | <PositionInterpolator DEF='StaticGroupDescendantsCannotConsumeEvents'/> |
| 569 | <PositionInterpolator USE='StaticGroupDescendantsCannotBeUsed'/> |
| 570 | </Group> |
| 571 | <!-- note mistake capitalization, correct form is ROUTE --> |
| 572 | <Route fromField='fraction_changed' fromNode='StaticGroupDescendantsCannotProduceEvents' toField='set_fraction' toNode='StaticGroupDescendantsCannotConsumeEvents'/> |
| 573 | </StaticGroup> |
| 574 | <Group DEF='CaseSensitive'> |
| 575 | <!-- test case sensitivity of DEF/USE --> |
| 576 | </Group> |
| 577 | <Group USE='CASESENSITIVE'/> |
| 578 | <Group> |
| 579 | <TouchSensor DEF='PeerTouchSensor'/> |
| 580 | <CylinderSensor DEF='PeerCylinderSensor'/> |
| 581 | <Billboard DEF='PeerBillboard'/> |
| 582 | </Group> |
| 583 | <Inline DEF='RecursiveInlineInvocation' url=' "TestSchematronDiagnostics.x3d" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.x3d" "TestSchematronDiagnostics.wrl" "https://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.wrl" '/> |
| 584 | <Shape> |
| 585 | <IndexedFaceSet DEF='IfsEmptyChildren'> |
| 586 | <Coordinate DEF='EmptyCoordinate'/> |
| 587 | <Color DEF='EmptyColor'/> |
| 588 | <Normal DEF='EmptyNormal'/> |
| 589 | <TextureCoordinate DEF='EmptyTextureCoordinate'/> |
| 590 | </IndexedFaceSet> |
| 591 | </Shape> |
| 592 | <Shape> |
| 593 | <IndexedFaceSet DEF='IfsSingletonChildren'> |
| 594 | <Coordinate DEF='SingleCoordinate' point='1 2 3'/> |
| 595 | <Color DEF='SingleColor' color='0.1 0.2 0.3'/> |
| 596 | <Normal DEF='SingleNormal' vector='0 1 0'/> |
| 597 | <TextureCoordinate DEF='SingleTextureCoordinate' point='0.4 0.8'/> |
| 598 | </IndexedFaceSet> |
| 599 | </Shape> |
| 600 | <GeoLOD containerField='children'> |
| 601 | <Shape DEF='rootNodeContainerFieldIsCorrect'/> |
| 602 | </GeoLOD> |
| 603 | <TextureProjector/> |
| 604 | <TextureProjectorParallel DEF='DistanceMismatchIllegalFieldOfView' farDistance='.1' fieldOfView='1 2 3 4 5' nearDistance='20'/> |
| 605 | </Scene> |
| 606 | </X3D> |
============================================================================================================================= HAnimHumanoid notUniqueName1 skeleton holds X3D3 HAnim1 joints/segments. [key] jointname : segmentname ^ sitename [nodes] HAnimJoint (0), : HAnimSegment (0), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (0) ============================================================================================================================= HAnimHumanoid DEF='notUniqueName1 name='JimDandy' loa='' skeleton =============================================================================================================================
The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.
Key to author-assist additions inserted in the HAnimHumanoid skeleton:
| <HAnimHumanoid DEF='notUniqueName1' name='JimDandy' version ='1.1' > | |
| 31 | <!-- - illegal comment starts with extra hyphen - character --> |
| 32 | <!-- - illegal comment has intermediate paired-hyphen - - characters --> |
| 66 | <!-- test no other fields if USE present --> |
| 83 | <!-- no DEF name --> |
| 89 | <!-- no DEF name --> |
| 93 | <!-- bogus ROUTEs to allow trapping deeper error --> |
| 198 | <!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField" protoField="isolatedConnectProtoField"/> --> |
| 214 | <!-- check for reserved word in name definitions --> |
| 414 | <!-- test of NeedsChildNode --> |
|
</HAnimHumanoid> |
|
============================================================================================================================= HAnimHumanoid notUniqueName2 skeleton holds X3D3 HAnim2 joints/segments/sites. [key] jointname : segmentname ^ sitename [nodes] HAnimJoint (8), : HAnimSegment (2), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (3), @ skin nodes (0) ============================================================================================================================= HAnimHumanoid DEF='notUniqueName2 name='JimDandy' loa='' skeleton HumanoidRoot | (HAnimJoint/@name not found) ============================================================================================================================= HAnimHumanoid incorrectlyNestedHumanoidMissingNameAttribute skeleton holds X3D3 HAnim2 joints/segments. [key] jointname : segmentname ^ sitename [nodes] HAnimJoint (0), : HAnimSegment (0), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (0) ============================================================================================================================= | | HAnimHumanoid DEF='incorrectlyNestedHumanoidMissingNameAttribute name='' loa='' skeleton ============================================================================================================================= | (HAnimJoint/@name not found) | sacroiliac | sacroiliac | l_acromioclavicular | HumanoidRoot : notSacrum ^ Top_view | negativeCenterHeight : IllegalChildrenContainerFields ^ negativeTranslationHeight % | l_knee | r_knee % HAnimSite negativeTranslationHeight holds 1 HAnimDisplacer node: HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode' ^ HAnimJoint HumanoidRoot holds 1 HAnimSite node: IllegalNameIllegalParent ^ HAnimSegment notSacrum holds 1 HAnimSite node: Top_view ^ HAnimSegment IllegalChildrenContainerFields holds 1 HAnimSite node: negativeTranslationHeight =============================================================================================================================
The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.
Key to author-assist additions inserted in the HAnimHumanoid skeleton:
| <HAnimHumanoid DEF='notUniqueName2' name='JimDandy' version ='2.0' > | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| 31 | <!-- - illegal comment starts with extra hyphen - character --> | ||||||||||||||||||||||||||||||||||||
| 32 | <!-- - illegal comment has intermediate paired-hyphen - - characters --> | ||||||||||||||||||||||||||||||||||||
| 66 | <!-- test no other fields if USE present --> | ||||||||||||||||||||||||||||||||||||
| 83 | <!-- no DEF name --> | ||||||||||||||||||||||||||||||||||||
| 89 | <!-- no DEF name --> | ||||||||||||||||||||||||||||||||||||
| 93 | <!-- bogus ROUTEs to allow trapping deeper error --> | ||||||||||||||||||||||||||||||||||||
| 198 | <!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField" protoField="isolatedConnectProtoField"/> --> | ||||||||||||||||||||||||||||||||||||
| 214 | <!-- check for reserved word in name definitions --> | ||||||||||||||||||||||||||||||||||||
| 414 | <!-- test of NeedsChildNode --> | ||||||||||||||||||||||||||||||||||||
|
500 |
<HAnimSite USE='hanim_Top_view' containerField='viewpoints'/>
|
501 |
<HAnimSite USE='hanim_Top_view' containerField='viewpoints'/>
|
502 |
<HAnimSegment USE='JointNameSegmentNameHierarchyTest' containerField='segments'/>
|
503 |
<HAnimSegment USE='IllegalChildrenContainerFields' containerField='segments'/>
|
504 |
<!-- test for duplicated USE node -->
|
505 |
<HAnimSegment USE='IllegalChildrenContainerFields' containerField='segments'/>
|
511 |
<HAnimJoint USE='MissingComponentH-AnimLevel1' containerField='joints'/>
|
512 |
<HAnimJoint USE='MissingNameAttributeCheckContainerField' containerField='joints'/>
|
513 |
<HAnimJoint USE='duplicateName1' containerField='joints'/>
|
514 |
<HAnimJoint USE='duplicateName2' containerField='joints'/>
|
515 |
<HAnimJoint USE='ImproperDEFname' containerField='joints'/>
|
516 |
<HAnimJoint USE='hanim_HumanoidRoot' containerField='joints'/>
|
517 |
<HAnimJoint USE='negativeCenterHeight' containerField='joints'/>
|
518 |
<HAnimJoint USE='MismatchedJointCenter_l_knee' containerField='joints'/>
|
519 |
<HAnimJoint USE='MismatchedJointCenter_r_knee' containerField='joints'/>
|
520 |
<HAnimSite USE='hanim_Top_view' containerField='sites'/>
|
521 |
<HAnimSite USE='negativeTranslationHeight' containerField='sites'/>
|
522 |
<HAnimSite USE='IllegalNameIllegalParent' containerField='sites'/>
|
|
|
|
</HAnimHumanoid> |
|||||||||||||||||||||||||||||||||||||
Event Graph ROUTE Table entries with 10 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
|
PeerTouchSensor
TouchSensor |
No direct ROUTE connection found for events to/from this node. |
|
Clock
TimeSensor |
No direct ROUTE connection found for events to/from this node. |
|
DoubleDEF
TimeSensor |
No direct ROUTE connection found for events to/from this node. |
|
NoOutputROUTE
TimeSensor |
No direct ROUTE connection found for events to/from this node. |
|
StaticGroupDescendantsCannotProduceEvents
TimeSensor |
No direct ROUTE connection found for events to/from this node. |
|
HasLegalCDATA
Script |
No direct ROUTE connection found for events to/from this node. This Script has no direct access to other nodes. |
| line 73
ProtoInstance NodeSubstituteNoDeclaration |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
| line 81
ProtoInstance NodeSubstituteNoDeclaration |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
| line 132
ProtoInstance NoDeclaration |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
| line 174
ProtoInstance ExternProtoDeclareBeforeInstance |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
| line 175
ProtoInstance ExternProtoDeclareAfterInstance |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
| line 182
ProtoInstance ProtoDeclareBeforeInstance |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
| line 183
ProtoInstance ProtoDeclareAfterInstance |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
| line 226
ProtoInstance X3D |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declaration with direct access to other nodes, and thus has potential to produce run-time animation. |
| line 356
ProtoInstance ReferenceTest |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
|
BadNameBadFieldValueNameMissingInitialization
ProtoInstance X3D |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
|
DoubleDeclaration2
ProtoInstance DoubleMixedDeclaration |
No direct ROUTE connection found for events to/from this node. This ProtoInstance contains SFNode/MFNode fieldValue declarations with direct access to other nodes, and thus has potential to produce run-time animation. |
<!--
Color-coding legend: X3D terminology
<X3dNode
DEF='idName' field='value'/>
matches XML terminology
<XmlElement
DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
<ProtoInstance name='ProtoName'>
<field
name='fieldName'/> </ProtoInstance>
-->
<!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->