<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Core' version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' http://www.web3d.org/specifications/x3d-3.3.xsd '>
<head>
<component level='3'/>
<component name='Geometry2D'/>
<component level='3name='Geometry2D'/>
<unit category='angleconversionFactor='-1name='nonPositiveConversionFactor'/>
<meta name='titlecontent='TestSchematronDiagnostics.x3d'/>
<meta name='descriptioncontent='Test Schematron diagnostics capabilities for detecting various content errors and style warnings.'/>
<meta name='creatorcontent='Don Brutzman'/>
<meta name='createdcontent='19 October 2008'/>
<meta name='modifiedcontent='22 October 2017'/>
<meta name=' warning content=' The regex is not finding IllegalMinusSignsTest. '/>
<meta name=' error content=' Test scene with many errors, primarily intended to exercise most of the rules in the X3D Schematron diagnostic set. '/>
<meta name=' warning content=' Test scene with many warnings embedded in comments. '/>
<meta name='hintcontent='Test scene with many hints embedded in comments.'/>
<meta name='infocontent='Perhaps the most erroneous X3D scene in the world!'/>
<meta name='referencecontent=' http://www.web3d.org/x3d/tools/schematron/X3dSchematronValidityChecks.sch '/>
<meta name='referencecontent=' http://www.web3d.org/x3d/tools/schematron/X3dSchematron.html '/>
<meta name='referencecontent=' http://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance '/>
<meta name='identifiercontent=' http://www.web3d.org/x3d/content/examples/Basic/development/TestSchematronDiagnostics.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!--

Visualization reports for HAnimHumanoid models: JimDandy HAnimHumanoid Report, JimDandy HAnimHumanoid Report
Index for ExternProtoDeclare definitions : DoubleDeclarationUrlMissingPoundProtoName, DoubleDeclarationUrlMissingPoundProtoName, DoubleMixedDeclaration, ExternProtoDeclareAfterInstance, ExternProtoDeclareBeforeInstance, ExternProtoDeclareUrlVRML.wrl.MissingX3D.x3d, ExternProtoDeclareUrlVRML.wrl.PrecedingX3D.x3d, X3D

Index for ProtoDeclare definitions : DoubleMixedDeclaration, DoubleProtoDeclaration, DoubleProtoDeclaration, EmptyProtoInterfaceEmptyProtoBody, IllegalProtoInterface, MissingProtoBody, ProtoDeclareAfterInstance, ProtoDeclareBeforeInstance, ReferenceTest, X3D

Index for DEF nodes : "QuotedDEF", AnchorBookmark, AppearanceWithProtoInstanceChild, BackgroundColorProblems, BackgroundWithParentLOD, BadBoundingBoxValues, BadChild, BadContainerField, BadNameBadFieldValueNameMissingInitialization, BothUrlAndCDATA, CADFaceMultipleShapeChildren, CADFaceOneShapeChild, CaseSensitive, CharacterBeforeQuotes, ChildrenCorrectContainerField, ChildrenIncorrectContainerField, Clock, ColorInterpolatorColorProblems, containerFieldNot_shape, ContainsISchildButNoParentProtoDeclare, CountTests, DEF, DEF_USEinsideProtoDeclareScope, DEFAppendedSpace, DefaultImageData, DEFcontainsUSEcopyOfSelf, DEFdescriptionMatch, DEFEmbedded Space, DEFoutsideProtoDeclareScope, DEFPrependedSpace, DeprecatedNodeUnquotedGeoSystem, DirectionalLightColorProblems, DoubleDeclaration2, DoubleDEF, DoubleDEF, DuplicatedCoordinatePointArray, DuplicatedDeclaration, DuplicateImageData, duplicateName1, duplicateName2, ElevationGridBadDimensions, ElevationGridInsufficientHeights, ElevationGridTooManyHeights, Embedded Blanks DEF, EmbeddedQuoteMarksOK, EmptyColor, EmptyCoordinate, EmptyGroup, EmptyGroupContainsComment, EmptyGroupInsideSwitch, EmptyNormal, EmptyShapeWithCommentSilencesWarning, EmptySwitchContainsROUTE, EmptyTextureCoordinate, EscapedQuoteMarkWarning, ExtrusionCrossSectionMiscountSpineMismatchCrossSectionMiscount, familyValuesMissingIntermediateQuotes, FirstTitle, FogColorProblems, FogWithParentLOD, FontStyleFieldsContainIllegalQuotes, GeometryNodeCollisionParentNeedsParentShapeWithProxyContainerField, GeometryNodeNeedsShapeParent, hanim_HumanoidRoot, hanim_Top_view, hanim_Top_viewpoint, HAnimCoordinateCorrectContainerField, HAnimCoordinateDoubleCorrectContainerField, HAnimCoordinateDoubleIncorrectContainerField, HAnimCoordinateIncorrectContainerField, HAnimNormalIncorrectContainerField, HasCDATAwithoutEcmascriptHeader, HasLegalCDATA, HasUrlNoCDATA, HelloWorld, HumanoidCannotContainChildrenNodes, IfsEmptyChildren, IfsSingletonChildren, IllegalBackgroundChild, IllegalChild, IllegalChildForLoadSensor, IllegalChildrenContainerFields, IllegalColorValuesMaterial, IllegalCombinationDEFUSE, IllegalDecimalPointsTest, IllegalFields, IllegalGeometryProxyNode, IllegalHAnimDisplacerInHAnimSiteNode, IllegalImageData, IllegalInfoQuotes, IllegalMetadataContainerField, IllegalMinusSignsTest, IllegalNameIllegalParent, IllegalParent1, IllegalParent2, IllegalParent3, IllegalParentChild-DEF-USE, IllegalPlaneEquationValues, IllegalTextureBackgroundChild, IllegalTextureBackgroundChildContainerField, IllegalValuesColor, IllegalValuesColorRGBA, IllegalViewpointGroupChild, ImageDataTest, ImproperCapitalizationOfNodeName, improperDEF, ImproperDEFname, IncorrectChildNodes, incorrectlyNestedHumanoidMissingNameAttribute, InterpolatorWithSingleKey, ISconnectDescription, JointInterpolator, JointNameSegmentNameHierarchyTest, LegalChild, LegalChild1, LegalChild2, LegalChild3, LegalGeoSystem, MismatchedJointCenter_l_knee, MismatchedJointCenter_r_knee, MismatchedKeyArrays, MismatchedKeyArraysSFVec3f, MissingComponentH-AnimLevel1, MissingIndex, MissingNameAttributeCheckContainerField, MissingParentShape, NavigationInfoWithParentLOD, NeedQuoteMarks, negativeCenterHeight, negativeTranslationHeight, NoBackgroundChildrenAllowed, NoChildAppearance, NoChildGeometry, noChildNodeforUSE, NoChildren, NoChildrenNoUrl, NodeFollowsRoute1, NodeFollowsRoute2, NodeUrlVRML.wrl.PrecedingX3D.x3d, NoImageData, NoLocalFogV3.0, NoMaterialNoTexture, NoOutputROUTE, NoParentSoundNode, NormalPath, NoROUTE, NoROUTEs, NoROUTEsNoKeyValueArray, NoSpacesInDescription, NoTextureChildren, notUniqueName1, notUniqueName2, NoUrlIllegalChild, NoUrlNoCDATA, OI, OKviewpoint, OnlyFieldDeclarationsAllowedInProtoInterface, PeerBillboard, PeerCylinderSensor, PeerTouchSensor, PointLightColorProblems, PrototypeRootNode, RecursiveInlineInvocation, ReusableAudioClip, RouteButNoFields, SecondTitle, separateBackColorWrong, SingleColor, SingleCoordinate, SingleNormal, SingleProtoInstanceChild, SingleTextureCoordinate, SoundDefaults, SoundMaxLessThanDefaultMin, SoundMaxNegative, SoundMinGreaterThanDefaultMax, SoundMinGreaterThanMax, SoundMinNegative, SpotLightColorProblems, StaticGroupChildTests, StaticGroupDescendantsCannotConsumeEvents, StaticGroupDescendantsCannotProduceEvents, textureContainerField, TextureCoordinateGeneratorIllegalMode, TextureCoordinateGeneratorIllegalParameterCount, TextureTransformWithNoSiblingTextureNode, ThreeUnescapedQuoteMarksMissingSpaceEndsApostrophe, UnquotedTypeAndTransitionTypeErrors, UrlDotWrlPrecedesDotX3d, USEandDEFtogether, USEmismatchDEFnodeType, USEoutsideProtoDeclareScope, USEprecedesDEF, USEwithChildElement, ViewHumanoidMissingCenterOfRotation, ViewpointWithParentLOD, watchListContainerField, ZeroMagnitudeRotationAxes

Index for Viewpoint images : DEFdescriptionMatch, hanim_Top_viewpoint, ISconnectDescription, OKviewpoint, ViewHumanoidMissingCenterOfRotation, ViewpointWithParentLOD
-->
<Scene DEF='improperDEFUSE='improperUSE'>
<!-- - illegal comment starts with extra hyphen - character -->
<!-- - illegal comment has intermediate paired-hyphen - - characters -->
<TouchSensor DEF='IllegalCombinationDEFUSEUSE='IllegalCombinationDEFUSE'/>
<CylinderSensor DEF='DoubleDEFenabled='false'/>
<TimeSensor DEF='DoubleDEF'/>
<WorldInfo DEF='FirstTitletitle='title #1'/>
<WorldInfo DEF='SecondTitletitle='title #2'/>
<WorldInfo DEF='DEFPrependedSpace'/>
<WorldInfo DEF='DEFEmbedded Space'/>
<WorldInfo DEF='DEFAppendedSpace'/>
<WorldInfo DEF='IllegalInfoQuotesinfo='WorldInfo info strings need to be quoted'/>
<WorldInfo DEF='IllegalChild'>
<WorldInfo/>
</WorldInfo>
<WorldInfo DEF='LegalChild'>
<MetadataString/>
</WorldInfo>
<Anchor DEF='NoChildrenNoUrl'/>
<Anchor DEF='AnchorBookmarkparameter='target=unquoted'
  url=' "#missingBookmark" '>
<Group/>
</Anchor>
<Inline DEF='HelloWorld'
  url=' "../HelloWorld.x3d" "http://www.web3d.org/x3d/content/examples/Basic/HelloWorld.x3d" "../HelloWorld.wrl" '/>

<Inline DEF='UrlDotWrlPrecedesDotX3d'
  url=' "test.wrl" "test.x3d" "adjacentquote" "marks" '/>

<Inline DEF='NoUrlIllegalChild'>
<WorldInfo/>
</Inline>
<Inline DEF='NodeUrlVRML.wrl.PrecedingX3D.x3d'
  url=' "HelloWorld.wrl" "HelloWorld.x3d" '/>

<ExternProtoDeclare name='ExternProtoDeclareUrlVRML.wrl.PrecedingX3D.x3d'
  url=' "HelloWorld.wrl" "HelloWorld.x3d" '/>

<ExternProtoDeclare name='ExternProtoDeclareUrlVRML.wrl.MissingX3D.x3d'
  url=' "HelloWorld.wrl" '/>

<Shape DEF='NoChildAppearance'>
<Box/>
</Shape>
<Shape DEF='NoChildGeometry'>
<Appearance DEF='NoMaterialNoTexture'/>
</Shape>
<!-- test no other fields if USE present -->
<Shape USE='NoChildAppearance'/>
<Shape USE='NoChildAppearance'/>
<Shape USE='NoChildAppearance'/>
<Shape DEF='USEwithChildElement'>
<Box/>
<Appearance DEF='AppearanceWithProtoInstanceChild'>
<ProtoInstance name='NodeSubstituteNoDeclaration'/>
</Appearance>
</Shape>
<Appearance DEF='MissingParentShape'/>
<Shape USE='USEwithChildElement'>
<Appearance USE='NoMaterialNoTexture'/>
</Shape>
<Shape DEF='SingleProtoInstanceChild'>
<ProtoInstance name='NodeSubstituteNoDeclaration'/>
</Shape>
<!-- no DEF name -->
<TimeSensor DEF='NoOutputROUTE'/>
<TimeSensor DEF='ClockcycleInterval='100loop='true'/>
<ColorInterpolator/>
<ColorInterpolator DEF='InterpolatorWithSingleKeykey='0'/>
<ColorInterpolator DEF='ColorInterpolatorColorProblemskey='0keyValue='-1 1.2 0.3 0.4'/>
<!-- no DEF name -->
<PositionInterpolator DEF='NoROUTEsNoKeyValueArraykey='0 0'/>
<!-- ROUTE information for MismatchedKeyArrays node:  [self-route from value_changed to set_fraction ] -->
<ScalarInterpolator DEF='MismatchedKeyArrayskey='0keyValue='0 0'/>
<!-- ROUTE information for MismatchedKeyArraysSFVec3f node:  [self-route from value_changed to set_fraction ] -->
<NormalInterpolator DEF='MismatchedKeyArraysSFVec3fkey='0 1keyValue='0 0 0 1 1'/>
<!-- bogus ROUTEs to allow trapping deeper error -->
<ROUTE fromNode='MismatchedKeyArraysfromField='value_changedtoNode='MismatchedKeyArraystoField='set_fraction'/>
<ROUTE fromNode='MismatchedKeyArraysSFVec3ffromField='value_changedtoNode='MismatchedKeyArraysSFVec3ftoField='set_fraction'/>
<BooleanSequencer/>
<BooleanSequencer DEF='NoROUTEskey='0 0.5 1keyValue='true false true'/>
<IntegerTrigger/>
<IntegerTrigger DEF='NoROUTE'/>
<OrientationInterpolator DEF='OI'/>
<LoadSensor DEF='ChildrenIncorrectContainerField'>
<ImageTexture DEF='textureContainerField'
  url=' "http:/bogus" '/>
</LoadSensor>
<LoadSensor DEF='ChildrenCorrectContainerField'>
<ImageTexture DEF='watchListContainerFieldcontainerField='watchList'/>
</LoadSensor>
<LoadSensor DEF='IncorrectChildNodes'>
<Group containerField='watchList'/>
<Anchor DEF='IllegalChildForLoadSensor'/>
</LoadSensor>
<Script DEF='HasLegalCDATA'>
<field name='duplicatedFieldNametype='SFBoolaccessType='inputOnly'/>
<field name='duplicatedFieldNametype='SFBoolaccessType='inputOnly'/>
<![CDATA[
      
ecmascript:
function initialize()
{
   // initialize() method silences ROUTE check
}
    
]]>
</Script>
<Script DEF='HasCDATAwithoutEcmascriptHeader'>
<field name='noAccessTypetype='SFBool'/>
<field name='noTypeaccessType='inputOnly'/>
<field type='noNameaccessType='inputOnly'/>
<field name='neverSettype='SFBoolaccessType='outputOnly'/>
<![CDATA[
      
// empty Script body

    
]]>
</Script>
<Script DEF='HasUrlNoCDATA'
  url=' TestSchematronDiagnostics.js '>
</Script>
<Script DEF='NoUrlNoCDATA'>
</Script>
<Script DEF='BothUrlAndCDATA'
  url=' "TestSchematronDiagnostics.js" '>
<field name='inputFunctionDefinedTwicetype='SFBoolaccessType='inputOnly'/>
<field name='noInputFunctionAllowedtype='SFBoolaccessType='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
}

    
]]>
</Script>
<Script DEF='RouteButNoFields'
  url=' TestSchematronDiagnostics.js '>
</Script>
<ROUTE fromNode='NoFieldsfromField='blahtoNode='NoFieldstoField='blah'/>
<ProtoInstance name='NoDeclaration'/>
<ProtoDeclare name='MissingProtoBody'/>
<WorldInfo DEF='DEFoutsideProtoDeclareScope'/>
<ProtoDeclare name='DoubleMixedDeclarationDEF='DuplicatedDeclaration'>
<ProtoBody>
<Group/>
<Viewpoint DEF='ISconnectDescription'>
<IS>
<connect nodeField='descriptionprotoField='description'/>
</IS>
</Viewpoint>
<!-- TODO not yet working... -->
<WorldInfo USE='DEFoutsideProtoDeclareScope'/>
<WorldInfo DEF='USEoutsideProtoDeclareScope'/>
<WorldInfo DEF='DEF_USEinsideProtoDeclareScope'/>
<WorldInfo USE='DEF_USEinsideProtoDeclareScope'/>
</ProtoBody>
</ProtoDeclare>
<WorldInfo USE='USEoutsideProtoDeclareScope'/>
<ExternProtoDeclare name='DoubleMixedDeclaration'
  url=' http://bogus#DifferentRemotePrototypeName '/>

<ProtoInstance name='DoubleMixedDeclarationDEF='DoubleDeclaration2'>
<fieldValue name='duplicatedFieldValueNamevalue='blah'/>
<fieldValue name='duplicatedFieldValueName'/>
<fieldValue value='noName'/>
</ProtoInstance>
<ProtoDeclare name='DoubleProtoDeclaration'
  url=' http:/bogus '/>

<ProtoDeclare name='DoubleProtoDeclaration'
  url=' http:///bogus '/>

<ExternProtoDeclare name='DoubleDeclarationUrlMissingPoundProtoName'
  url=' http:///bogus '/>

<ExternProtoDeclare name='DoubleDeclarationUrlMissingPoundProtoName'
  url=' http:/bogus '/>

<ProtoDeclare name='EmptyProtoInterfaceEmptyProtoBody'>
<ProtoInterface/>
<ProtoBody/>
</ProtoDeclare>
<ProtoDeclare name='IllegalProtoInterface'>
<ProtoInterface>
<Group DEF='OnlyFieldDeclarationsAllowedInProtoInterface'/>
</ProtoInterface>
<ProtoBody>
<Group/>
</ProtoBody>
</ProtoDeclare>
<ExternProtoDeclare name='ExternProtoDeclareBeforeInstance'
  url=' httpsMissing '/>

<ProtoInstance name='ExternProtoDeclareBeforeInstance'/>
<ProtoInstance name='ExternProtoDeclareAfterInstance'/>
<ExternProtoDeclare name='ExternProtoDeclareAfterInstance'
  url=' httpMissing '/>

<ProtoDeclare name='ProtoDeclareBeforeInstance'>
<ProtoBody>
<Group/>
</ProtoBody>
</ProtoDeclare>
<ProtoInstance name='ProtoDeclareBeforeInstance'/>
<ProtoInstance name='ProtoDeclareAfterInstance'/>
<ProtoDeclare name='ProtoDeclareAfterInstance'>
<ProtoBody>
<Group>
<IS>
<connect nodeField='danglingConnectNodeFieldprotoField='danglingConnectProtoField'/>
</IS>
</Group>
</ProtoBody>
</ProtoDeclare>
<Group DEF='ContainsISchildButNoParentProtoDeclare'>
<IS>
<connect nodeField='isolatedConnectNodeFieldprotoField='isolatedConnectProtoField'/>
</IS>
</Group>
<!-- test isolated (invalid) connect element <connect nodeField="isolatedConnectNodeField" protoField="isolatedConnectProtoField"/> -->
<Shape DEF='BadBoundingBoxValuesbboxCenter='1a 2b 3cbboxSize='-1 -2 -3'>
<Extrusion DEF='ExtrusionCrossSectionMiscountSpineMismatchCrossSectionMiscountcrossSection='1 2 3orientation='0 0 1 0 0 0 1 0 0 0 1 0scale='1 1 1 1 1 1 1 1 1 1 1 1spine='0 0 0 0 2 0'/>
<!-- check for reserved word in DEF -->
<Appearance DEF='DEF'>
<TwoSidedMaterial DEF='separateBackColorWrongbackShininess='0.123'/>
</Appearance>
</Shape>
<ROUTE fromNode='blahfromField='set_blahtoNode='bleahtoField='bleah_changed'/>
<Viewpoint DEF='OKviewpointdescription='this viewpoint is OK'/>
<Viewpoint DEF='DEFdescriptionMatchdescription='DEFdescriptionMatch'/>
<OrthoViewpoint DEF='NoSpacesInDescriptiondescription='NeedToPutSpacesInDescription'/>
<GeoViewpoint DEF='IllegalFieldsnavType='OTHER'/>
<GeoMetadata DEF='BadChild'>
<GeoViewpoint DEF='BadContainerField'/>
</GeoMetadata>
<!-- check for reserved word in name definitions -->
<ProtoDeclare name='X3D'>
<ProtoBody>
<Group DEF='PrototypeRootNode'/>
</ProtoBody>
</ProtoDeclare>
<ExternProtoDeclare name='X3D'>
<field name='X3Dtype='SFBoolaccessType='inputOnly'/>
</ExternProtoDeclare>
<ProtoInstance name='X3DDEF='BadNameBadFieldValueNameMissingInitialization'>
<fieldValue name='X3D'/>
</ProtoInstance>
<ProtoInstance name='X3D'>
<fieldValue name='X3Dvalue='doubleInitialization'>
<Shape/>
</fieldValue>
</ProtoInstance>
<LOD>
<Background DEF='BackgroundWithParentLOD'/>
<Fog DEF='FogWithParentLOD'/>
<NavigationInfo DEF='NavigationInfoWithParentLOD'/>
<Viewpoint DEF='ViewpointWithParentLOD'/>
</LOD>
<ViewpointGroup DEF='IllegalViewpointGroupChild'>
<Transform/>
</ViewpointGroup>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='NoImageData'/>
</Appearance>
</Shape>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='IllegalImageDataimage='1 a b c d'/>
</Appearance>
</Shape>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='DefaultImageData'/>
</Appearance>
</Shape>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='DuplicateImageData'/>
</Appearance>
</Shape>
<Shape>
<Box/>
<Appearance>
<PixelTexture DEF='ImageDataTestimage='1 1 1 0xAA'/>
</Appearance>
</Shape>
<WorldInfo DEF='USEandDEFtogetherUSE='USEandDEFtogether'/>
<WorldInfo USE='USEprecedesDEF'/>
<WorldInfo DEF='USEprecedesDEF'/>
<WorldInfo USE='noDEFforUSE'/>
<WorldInfo DEF='noChildNodeforUSE'/>
<WorldInfo USE='noChildNodeforUSE'>
<MetadataSet>
<MetadataString name='someStringArrayvalue='unquoted string values'/>
</MetadataSet>
</WorldInfo>
<Group DEF='DEFcontainsUSEcopyOfSelf'>
<Group USE='DEFcontainsUSEcopyOfSelf'/>
</Group>
<WorldInfo DEF='USEmismatchDEFnodeType'/>
<Group USE='USEmismatchDEFnodeType'/>
<LocalFog DEF='NoLocalFogV3.0'/>
<PointLight/>
<Shape>
<IndexedFaceSet DEF='CountTestscreaseAngle='-1.234coordIndex='0 1 2 -1'>
<Coordinate point='0 0 0 0 1 0 1 0 0 5'/>
<Color DEF='IllegalValuesColorcolor='-1 2 3'/>
<ColorRGBA DEF='IllegalValuesColorRGBAcolor='-1 1.2 0.3 0.4'/>
<TextureCoordinate/>
<TextureCoordinateGenerator/>
</IndexedFaceSet>
<Appearance USE='NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='CharacterBeforeQuotesstring='x " "'>
<FontStyle family='unquotedFontFamilyNamejustify='unquotedIllegalJustification'/>
</Text>
<Appearance USE='NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='ThreeUnescapedQuoteMarksMissingSpaceEndsApostrophestring='"" x" ''>
<FontStyle DEF='familyValuesMissingIntermediateQuotesfamily='"SANS SERIF"justify='"BEGIN" "BEGIN"'/>
</Text>
<Appearance USE='NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='EscapedQuoteMarkWarningstring='"here is a single escaped \" quote mark character"'>
<FontStyle justify='"IllegalValue"'/>
</Text>
<Appearance USE='NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='NeedQuoteMarksstring='quote marks are required for single string'>
<FontStyle/>
</Text>
<Appearance USE='NoMaterialNoTexture'/>
</Shape>
<Shape>
<Text DEF='EmbeddedQuoteMarksOKstring='"plain text with \"quote marks\" embedded"'>
<FontStyle DEF='FontStyleFieldsContainIllegalQuoteslanguage='"noquo"style='"PLAIN"'/>
</Text>
<Appearance USE='NoMaterialNoTexture'/>
</Shape>
<Shape>
<IndexedQuadSet DEF='MissingIndex'>
<Coordinate DEF='DuplicatedCoordinatePointArraypoint='0 0 0 0 1 0 1 0 0 5'/>
</IndexedQuadSet>
<Appearance USE='NoMaterialNoTexture'/>
</Shape>
<NormalInterpolator DEF='NormalPathkey='0 0.5 1keyValue='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'/>
<GeoLocation DEF='LegalGeoSystemgeoCoords='36.607 -121.885 0.0'/>
<ProtoDeclare name='ReferenceTest'>
<ProtoInterface>
<field name='defaultTesttype='SInt32value='78accessType='initializeOnly'/>
<field name='incorrectInitializationSFColorRGBAtype='SFColorRGBAvalue='1 1 1accessType='initializeOnly'/>
</ProtoInterface>
<ProtoBody>
<Script
  url=' "http:///bogus" '>
<field name='missingInitializationValue1type='SFBoolaccessType='initializeOnly'/>
<field name='missingInitializationValue2type='SFInt32accessType='initializeOnly'/>
<field name='incorrectInitializationSFVec3ftype='SFVec3fvalue='0.0accessType='initializeOnly'/>
<field name='incorrectInitializationMFColortype='MFColorvalue='1 2 3 4 5 6 7accessType='initializeOnly'/>
<field name='missingInitializationValueHasIStype='SFBoolvalue='trueaccessType='initializeOnly'/>
<fieldValue name='shouldBeField'/>
<IS>
<connect nodeField='missingInitializationValueHasISprotoField='test'/>
</IS>
</Script>
<!-- Subsequent nodes do not render, but still must be a valid X3D subgraph -->
</ProtoBody>
</ProtoDeclare>
<ProtoInstance name='ReferenceTest'>
<fieldValue name='defaultTestvalue='78'/>
<fieldValue name='incorrectInitializationSFColorRGBAvalue='1 1 1 1 1'/>
<field name='shouldBeFieldValue'/>
</ProtoInstance>
<Transform DEF='ZeroMagnitudeRotationAxesrotation='0 0 0 0scaleOrientation='0 0 0 0'/>
<Box DEF='GeometryNodeNeedsShapeParent'/>
<Collision DEF='IllegalGeometryProxyNode'>
<Box DEF='GeometryNodeCollisionParentNeedsParentShapeWithProxyContainerFieldcontainerField='proxy'/>
</Collision>
<NavigationInfo DEF='UnquotedTypeAndTransitionTypeErrorstransitionType='ALTERNATEtype='OTHER'/>
<Group DEF='IllegalParentChild-DEF-USE'>
<Group USE='IllegalParentChild-DEF-USE'/>
</Group>
<CADLayer name='incorrect boolean valuevisible='true false wrong'/>
<Shape>
<ImageTexture DEF='IllegalParent1'/>
<MovieTexture DEF='IllegalParent2'/>
<PixelTexture DEF='IllegalParent3'/>
</Shape>
<Shape>
<TextureTransform DEF='TextureTransformWithNoSiblingTextureNode'/>
</Shape>
<Shape>
<Appearance>
<TextureTransform USE='TextureTransformWithNoSiblingTextureNode'/>
<TextureCoordinateGenerator DEF='TextureCoordinateGeneratorIllegalModemode='Bogus'/>
<TextureCoordinateGenerator DEF='TextureCoordinateGeneratorIllegalParameterCountmode='NOISEparameter='1 2 3 4'/>
</Appearance>
</Shape>
<Shape>
<Appearance>
<MultiTexture DEF='NoTextureChildrenfunction='"BogusFunction1Value" "BogusFunction2Value" "mode='"BogusMode1Value" BogusMode2Value"source='BogusSourceValue'/>
</Appearance>
</Shape>
<Background DEF='NoBackgroundChildrenAllowed'>
<ImageTexture DEF='IllegalBackgroundChild'/>
</Background>
<TextureBackground>
<ImageTexture DEF='LegalChild1'/>
<MovieTexture DEF='LegalChild2'/>
<PixelTexture DEF='LegalChild3'/>
<Group DEF='IllegalTextureBackgroundChild'/>
<ImageTexture DEF='IllegalTextureBackgroundChildContainerFieldcontainerField='frontUrl'/>
</TextureBackground>
<Group DEF='Embedded Blanks DEF'/>
<Group USE='Embedded Blanks USE'/>
<Group DEF='"QuotedDEF"'/>
<Group USE='"QuotedUSE"'/>
<MetadataSet>
<MetadataBoolean/>
<MetadataFloat containerField='value'/>
<MetadataDouble containerField='illegalName'/>
</MetadataSet>
<MetadataString DEF='IllegalMetadataContainerFieldcontainerField='value'/>
<ScalarInterpolator DEF='IllegalDecimalPointsTestkey='0.00.5 1.0keyValue='1 2 3'/>
<ScalarInterpolator DEF='IllegalMinusSignsTestkey='0.0 0.5 1.0keyValue='-1-2 3'/>
<!-- test of NeedsChildNode -->
<Group DEF='EmptyGroup'/>
<Switch>
<!-- test of NeedsChildNode -->
<Group DEF='EmptyGroupInsideSwitch'/>
</Switch>
<Group DEF='EmptyGroupContainsComment'>
<!-- test of NeedsChildNode -->
</Group>
<Switch DEF='EmptySwitchContainsROUTE'>
<!-- test of NeedsChildNode -->
<ROUTE fromNode='NoFieldsfromField='blahtoNode='NoFieldstoField='blah'/>
</Switch>
<CADLayer visible='false'>
<CADAssembly>
<CADPart>
<CADFace DEF='CADFaceOneShapeChild'>
<Transform containerField='shape'>
<Shape/>
</Transform>
</CADFace>
<CADFace DEF='CADFaceMultipleShapeChildren'>
<Transform DEF='containerFieldNot_shape'>
<Shape/>
<Shape/>
</Transform>
</CADFace>
</CADPart>
</CADAssembly>
</CADLayer>
<GeoOrigin DEF='DeprecatedNodeUnquotedGeoSystemgeoSystem='GD WE'/>
<HAnimHumanoid DEF='notUniqueName1name='JimDandyversion='1.1'/>
<Viewpoint DEF='ViewHumanoidMissingCenterOfRotation'/>
<Shape DEF='EmptyShapeWithCommentSilencesWarning'>
<!-- silence warning -->
</Shape>
<Shape>
<Appearance>
<Material DEF='IllegalColorValuesMaterialdiffuseColor='-1 1.2 0.3 0.4emissiveColor='-1 1.2 0.3 0.4specularColor='-1 1.2 0.3 0.4'/>
</Appearance>
</Shape>
<Background DEF='BackgroundColorProblemsgroundColor='-1 1.2 0.3 0.4skyColor='-1 1.2 0.3 0.4'/>
<Fog DEF='FogColorProblemscolor='-1 1.2 0.3 0.4'/>
<DirectionalLight DEF='DirectionalLightColorProblemscolor='-1 1.2 0.3 0.4'/>
<PointLight DEF='PointLightColorProblemscolor='-1 1.2 0.3 0.4'/>
<SpotLight DEF='SpotLightColorProblemscolor='-1 1.2 0.3 0.4'/>
<ClipPlane DEF='IllegalPlaneEquationValuesplane='1 2 3 4 5'/>
<HAnimHumanoid DEF='notUniqueName2name='JimDandyversion='2.0'>
<!-- keep the following Group node as first child so that it is reported by diagnostic test -->
<Group DEF='HumanoidCannotContainChildrenNodesname='IllegalGroupChildrenNode'/>
<HAnimJoint DEF='MissingComponentH-AnimLevel1'>
<HAnimHumanoid DEF='incorrectlyNestedHumanoidMissingNameAttributeversion='2.0'/>
</HAnimJoint>
<HAnimJoint DEF='MissingNameAttributeCheckContainerField'/>
<HAnimJoint USE='MissingNameAttributeCheckContainerField'/>
<HanimJoint DEF='ImproperCapitalizationOfNodeName'/>
<HAnimJoint DEF='duplicateName1name='sacroiliac'/>
<HAnimJoint DEF='duplicateName2name='sacroiliac'/>
<!-- ROUTE information for JointInterpolator node:  [from value_changed to MissingNameAttribute.translation ] -->
<PositionInterpolator DEF='JointInterpolatorkey='0 0keyValue='0 0 0 1 0 0'/>
<ROUTE fromNode='JointInterpolatorfromField='value_changedtoNode='MissingNameAttributetoField='translation'/>
<HAnimJoint DEF='ImproperDEFnamename='l_acromioclavicular'/>
<HAnimJoint DEF='hanim_HumanoidRootname='HumanoidRoot'>
<HAnimSegment DEF='JointNameSegmentNameHierarchyTestname='notSacrum'/>
<HAnimJoint DEF='negativeCenterHeightcenter='0 -1 0name='negativeCenterHeight'>
<HAnimSegment DEF='IllegalChildrenContainerFieldsname='IllegalChildrenContainerFields'>
<HAnimSite DEF='negativeTranslationHeightname='negativeTranslationHeighttranslation='0 -1 0'>
<HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode'/>
</HAnimSite>
<Coordinate/>
<CoordinateDouble/>
</HAnimSegment>
</HAnimJoint>
<HAnimJoint DEF='MismatchedJointCenter_l_kneecenter='1 2 3name='l_knee'/>
<HAnimJoint DEF='MismatchedJointCenter_r_kneecenter='4 5 6name='r_knee'/>
<HAnimJoint USE='IllegalEmbeddedHAnimUse'/>
<HAnimSite DEF='IllegalNameIllegalParentname='IllegalNameIllegalParent'/>
<!-- TODO test IllegalEmbeddedHAnimUse in another HAnimHumanoid -->
</HAnimJoint>
<!-- the following construct is OK and should not throw errors -->
<HAnimSite DEF='hanim_Top_viewcontainerField='viewpointsname='Top_viewrotation='1 0 0 -1.57translation='0 3.5 0'>
<Viewpoint DEF='hanim_Top_viewpointcenterOfRotation='0 0.9 0description='Topposition='0 0 0'/>
</HAnimSite>
<Coordinate DEF='HAnimCoordinateCorrectContainerFieldcontainerField='skinCoordpoint='0 0 0'/>
<Coordinate DEF='HAnimCoordinateIncorrectContainerField'/>
<CoordinateDouble DEF='HAnimCoordinateDoubleCorrectContainerFieldcontainerField='skinCoordpoint='0 0 0'/>
<CoordinateDouble DEF='HAnimCoordinateDoubleIncorrectContainerField'/>
<Normal DEF='HAnimNormalIncorrectContainerField'/>
</HAnimHumanoid>
<Sound DEF='NoChildren'/>
<AudioClip DEF='NoParentSoundNodedescription='bad clip reference'
  url=' "blah" '/>

<Sound class='must separate classes with;space characterslocation='0 2 0'>
<AudioClip description='bad clip reference'
  url=' "blah" '/>
</Sound>
<Sound DEF='SoundDefaultslocation='0 2 0'>
<AudioClip DEF='ReusableAudioClipdescription='reusable'
  url=' "../Vrml97Specification/click.wav" "http://www.web3d.org/x3d/content/examples/Basic/Vrml97Specification/click.wav" '/>
</Sound>
<Sound DEF='SoundMinNegativelocation='0 2 0minBack='-1minFront='-1'>
<AudioClip USE='ReusableAudioClip'/>
</Sound>
<Sound DEF='SoundMaxNegativelocation='0 2 0maxBack='-10maxFront='-10'>
<AudioClip USE='ReusableAudioClip'/>
</Sound>
<Sound DEF='SoundMinGreaterThanMaxlocation='0 2 0maxBack='11maxFront='11minBack='12minFront='12'>
<AudioClip USE='ReusableAudioClip'/>
</Sound>
<Sound DEF='SoundMinGreaterThanDefaultMaxlocation='0 2 0minBack='13minFront='13'>
<AudioClip USE='ReusableAudioClip'/>
</Sound>
<Sound DEF='SoundMaxLessThanDefaultMinlocation='0 2 0maxBack='0.5maxFront='0.5'>
<AudioClip USE='ReusableAudioClip'/>
</Sound>
<ROUTE fromNode='DuplicateROUTEfromField='test1toNode='test2toField='test3'/>
<ROUTE fromNode='DuplicateROUTEfromField='test1toNode='test2toField='test3'/>
<ROUTE fromNode='DuplicateROUTEfromField='test1toNode='test2toField='test3'/>
<ROUTE fromNode='NodeFollowsRoute1fromField='childrentoNode='NodeFollowsRoute2toField='children'/>
<!-- ROUTE information for NodeFollowsRoute1 node:  [from children to NodeFollowsRoute2.children ] -->
<Group DEF='NodeFollowsRoute1'>
<!-- ROUTE information for NodeFollowsRoute2 node:  [from NodeFollowsRoute1.children to children ] -->
<Group DEF='NodeFollowsRoute2'>
<!-- silence warning -->
</Group>
</Group>
<Shape DEF='ElevationGridInsufficientHeights'>
<ElevationGrid solid='falsexSpacing='0zDimension='3zSpacing='0height='1 2 3 4 5'/>
</Shape>
<Shape DEF='ElevationGridTooManyHeights'>
<ElevationGrid solid='falsexSpacing='-1zDimension='3zSpacing='-1height='1 2 3 4 5 6 7'/>
</Shape>
<Shape DEF='ElevationGridBadDimensions'>
<ElevationGrid solid='falsexDimension='-2zDimension='-3height='1 2 3 4 5 6'/>
</Shape>
<StaticGroup DEF='StaticGroupChildTests'>
<Group>
<!-- ROUTE information for StaticGroupDescendantsCannotProduceEvents node:  [from fraction_changed to StaticGroupDescendantsCannotConsumeEvents.set_fraction ] -->
<TimeSensor DEF='StaticGroupDescendantsCannotProduceEvents'/>
<!-- ROUTE information for StaticGroupDescendantsCannotConsumeEvents node:  [from StaticGroupDescendantsCannotProduceEvents.fraction_changed to set_fraction ] -->
<PositionInterpolator DEF='StaticGroupDescendantsCannotConsumeEvents'/>
<PositionInterpolator USE='StaticGroupDescendantsCannotBeUsed'/>
</Group>
<ROUTE fromNode='StaticGroupDescendantsCannotProduceEventsfromField='fraction_changedtoNode='StaticGroupDescendantsCannotConsumeEventstoField='set_fraction'/>
</StaticGroup>
<Group DEF='CaseSensitive'>
<!-- test case sensitivity of DEF/USE -->
</Group>
<Group USE='CASESENSITIVE'/>
<Group>
<TouchSensor DEF='PeerTouchSensor'/>
<CylinderSensor DEF='PeerCylinderSensor'/>
<Billboard DEF='PeerBillboard'/>
</Group>
<Inline DEF='RecursiveInlineInvocation'
  url=' "TestSchematronDiagnostics.x3d" '/>

<Shape>
<IndexedFaceSet DEF='IfsEmptyChildren'>
<Coordinate DEF='EmptyCoordinate'/>
<Color DEF='EmptyColor'/>
<Normal DEF='EmptyNormal'/>
<TextureCoordinate DEF='EmptyTextureCoordinate'/>
</IndexedFaceSet>
</Shape>
<Shape>
<IndexedFaceSet DEF='IfsSingletonChildren'>
<Coordinate DEF='SingleCoordinatepoint='1 2 3'/>
<Color DEF='SingleColorcolor='0.1 0.2 0.3'/>
<Normal DEF='SingleNormalvector='0 1 0'/>
<TextureCoordinate DEF='SingleTextureCoordinatepoint='0.4 0.8'/>
</IndexedFaceSet>
</Shape>
</Scene>
</X3D>
<!--

Visualization reports for HAnimHumanoid models: JimDandy HAnimHumanoid Report, JimDandy HAnimHumanoid Report
Index for ExternProtoDeclare definitions : DoubleDeclarationUrlMissingPoundProtoName, DoubleDeclarationUrlMissingPoundProtoName, DoubleMixedDeclaration, ExternProtoDeclareAfterInstance, ExternProtoDeclareBeforeInstance, ExternProtoDeclareUrlVRML.wrl.MissingX3D.x3d, ExternProtoDeclareUrlVRML.wrl.PrecedingX3D.x3d, X3D

Index for ProtoDeclare definitions : DoubleMixedDeclaration, DoubleProtoDeclaration, DoubleProtoDeclaration, EmptyProtoInterfaceEmptyProtoBody, IllegalProtoInterface, MissingProtoBody, ProtoDeclareAfterInstance, ProtoDeclareBeforeInstance, ReferenceTest, X3D

Index for DEF nodes : "QuotedDEF", AnchorBookmark, AppearanceWithProtoInstanceChild, BackgroundColorProblems, BackgroundWithParentLOD, BadBoundingBoxValues, BadChild, BadContainerField, BadNameBadFieldValueNameMissingInitialization, BothUrlAndCDATA, CADFaceMultipleShapeChildren, CADFaceOneShapeChild, CaseSensitive, CharacterBeforeQuotes, ChildrenCorrectContainerField, ChildrenIncorrectContainerField, Clock, ColorInterpolatorColorProblems, containerFieldNot_shape, ContainsISchildButNoParentProtoDeclare, CountTests, DEF, DEF_USEinsideProtoDeclareScope, DEFAppendedSpace, DefaultImageData, DEFcontainsUSEcopyOfSelf, DEFdescriptionMatch, DEFEmbedded Space, DEFoutsideProtoDeclareScope, DEFPrependedSpace, DeprecatedNodeUnquotedGeoSystem, DirectionalLightColorProblems, DoubleDeclaration2, DoubleDEF, DoubleDEF, DuplicatedCoordinatePointArray, DuplicatedDeclaration, DuplicateImageData, duplicateName1, duplicateName2, ElevationGridBadDimensions, ElevationGridInsufficientHeights, ElevationGridTooManyHeights, Embedded Blanks DEF, EmbeddedQuoteMarksOK, EmptyColor, EmptyCoordinate, EmptyGroup, EmptyGroupContainsComment, EmptyGroupInsideSwitch, EmptyNormal, EmptyShapeWithCommentSilencesWarning, EmptySwitchContainsROUTE, EmptyTextureCoordinate, EscapedQuoteMarkWarning, ExtrusionCrossSectionMiscountSpineMismatchCrossSectionMiscount, familyValuesMissingIntermediateQuotes, FirstTitle, FogColorProblems, FogWithParentLOD, FontStyleFieldsContainIllegalQuotes, GeometryNodeCollisionParentNeedsParentShapeWithProxyContainerField, GeometryNodeNeedsShapeParent, hanim_HumanoidRoot, hanim_Top_view, hanim_Top_viewpoint, HAnimCoordinateCorrectContainerField, HAnimCoordinateDoubleCorrectContainerField, HAnimCoordinateDoubleIncorrectContainerField, HAnimCoordinateIncorrectContainerField, HAnimNormalIncorrectContainerField, HasCDATAwithoutEcmascriptHeader, HasLegalCDATA, HasUrlNoCDATA, HelloWorld, HumanoidCannotContainChildrenNodes, IfsEmptyChildren, IfsSingletonChildren, IllegalBackgroundChild, IllegalChild, IllegalChildForLoadSensor, IllegalChildrenContainerFields, IllegalColorValuesMaterial, IllegalCombinationDEFUSE, IllegalDecimalPointsTest, IllegalFields, IllegalGeometryProxyNode, IllegalHAnimDisplacerInHAnimSiteNode, IllegalImageData, IllegalInfoQuotes, IllegalMetadataContainerField, IllegalMinusSignsTest, IllegalNameIllegalParent, IllegalParent1, IllegalParent2, IllegalParent3, IllegalParentChild-DEF-USE, IllegalPlaneEquationValues, IllegalTextureBackgroundChild, IllegalTextureBackgroundChildContainerField, IllegalValuesColor, IllegalValuesColorRGBA, IllegalViewpointGroupChild, ImageDataTest, ImproperCapitalizationOfNodeName, improperDEF, ImproperDEFname, IncorrectChildNodes, incorrectlyNestedHumanoidMissingNameAttribute, InterpolatorWithSingleKey, ISconnectDescription, JointInterpolator, JointNameSegmentNameHierarchyTest, LegalChild, LegalChild1, LegalChild2, LegalChild3, LegalGeoSystem, MismatchedJointCenter_l_knee, MismatchedJointCenter_r_knee, MismatchedKeyArrays, MismatchedKeyArraysSFVec3f, MissingComponentH-AnimLevel1, MissingIndex, MissingNameAttributeCheckContainerField, MissingParentShape, NavigationInfoWithParentLOD, NeedQuoteMarks, negativeCenterHeight, negativeTranslationHeight, NoBackgroundChildrenAllowed, NoChildAppearance, NoChildGeometry, noChildNodeforUSE, NoChildren, NoChildrenNoUrl, NodeFollowsRoute1, NodeFollowsRoute2, NodeUrlVRML.wrl.PrecedingX3D.x3d, NoImageData, NoLocalFogV3.0, NoMaterialNoTexture, NoOutputROUTE, NoParentSoundNode, NormalPath, NoROUTE, NoROUTEs, NoROUTEsNoKeyValueArray, NoSpacesInDescription, NoTextureChildren, notUniqueName1, notUniqueName2, NoUrlIllegalChild, NoUrlNoCDATA, OI, OKviewpoint, OnlyFieldDeclarationsAllowedInProtoInterface, PeerBillboard, PeerCylinderSensor, PeerTouchSensor, PointLightColorProblems, PrototypeRootNode, RecursiveInlineInvocation, ReusableAudioClip, RouteButNoFields, SecondTitle, separateBackColorWrong, SingleColor, SingleCoordinate, SingleNormal, SingleProtoInstanceChild, SingleTextureCoordinate, SoundDefaults, SoundMaxLessThanDefaultMin, SoundMaxNegative, SoundMinGreaterThanDefaultMax, SoundMinGreaterThanMax, SoundMinNegative, SpotLightColorProblems, StaticGroupChildTests, StaticGroupDescendantsCannotConsumeEvents, StaticGroupDescendantsCannotProduceEvents, textureContainerField, TextureCoordinateGeneratorIllegalMode, TextureCoordinateGeneratorIllegalParameterCount, TextureTransformWithNoSiblingTextureNode, ThreeUnescapedQuoteMarksMissingSpaceEndsApostrophe, UnquotedTypeAndTransitionTypeErrors, UrlDotWrlPrecedesDotX3d, USEandDEFtogether, USEmismatchDEFnodeType, USEoutsideProtoDeclareScope, USEprecedesDEF, USEwithChildElement, ViewHumanoidMissingCenterOfRotation, ViewpointWithParentLOD, watchListContainerField, ZeroMagnitudeRotationAxes

Index for Viewpoint images : DEFdescriptionMatch, hanim_Top_viewpoint, ISconnectDescription, OKviewpoint, ViewHumanoidMissingCenterOfRotation, ViewpointWithParentLOD
-->
<!--

Visualization report for HAnimHumanoid model notUniqueName1

Key to author-assist additions inserted in the HAnimHumanoid skeleton:

  • HumanoidRoot   Suggested Shape geometry for HAnimHumanoid
  • HAnimJoint        Suggested Shape geometry additions are provided to illustrate each HAnimJoint
  • HAnimSegment  Suggested IndexedLineSet connections illustrate each HAnimSegment
  • HAnimSite          Suggested IndexedLineSet and Shape geometry additions illustrate each HAnimSite
  • Viewpoint             Suggested Shape geometry additions illustrate each HAnimSite/Viewpoint combinations

<HAnimHumanoid DEF='notUniqueName1' name='JimDandy' version ='1.1'
info=' '>

</HAnimHumanoid>

Visualization report for HAnimHumanoid model notUniqueName2

Key to author-assist additions inserted in the HAnimHumanoid skeleton:

  • HumanoidRoot   Suggested Shape geometry for HAnimHumanoid
  • HAnimJoint        Suggested Shape geometry additions are provided to illustrate each HAnimJoint
  • HAnimSegment  Suggested IndexedLineSet connections illustrate each HAnimSegment
  • HAnimSite          Suggested IndexedLineSet and Shape geometry additions illustrate each HAnimSite
  • Viewpoint             Suggested Shape geometry additions illustrate each HAnimSite/Viewpoint combinations

<HAnimHumanoid DEF='notUniqueName2' name='JimDandy' version ='2.0'
info=' '>
<!-- keep the following Group node as first child so that it is reported by diagnostic test --> <!-- keep the following Group node as first child so that it is reported by diagnostic test --> <!-- keep the following Group node as first child so that it is reported by diagnostic test -->
  • <HAnimJoint DEF='ImproperDEFname' name='l_acromioclavicular' > </HAnimJoint>
<!-- keep the following Group node as first child so that it is reported by diagnostic test -->
  • <HAnimJoint DEF='hanim_HumanoidRoot' name='HumanoidRoot' >
    <!-- TODO test IllegalEmbeddedHAnimUse in another HAnimHumanoid -->
    • <HAnimSegment DEF='JointNameSegmentNameHierarchyTest' name='notSacrum'>
      • <!-- Visualization sphere for <HAnimJoint name='HumanoidRoot'/> is placed within <HAnimSegment name='notSacrum'/> -->
        <TouchSensor description='HAnimJoint HumanoidRoot, HAnimSegment notSacrum'/>
      • <Transform translation=''> <Shape USE='HAnimJointShape'/> </Transform>
      • <!-- HAnimSegment visualization line from current <HAnimJoint name='HumanoidRoot'/> to child <HAnimJoint name='negativeCenterHeight'/> -->
        <Shape> <LineSet vertexCount='2'> <Coordinate point=', 0 -1 0'/> <ColorRGBA USE='HAnimSegmentLineColorRGBA'/> </LineSet> </Shape>
      • <!-- HAnimSegment visualization line from current <HAnimJoint name='HumanoidRoot'/> to child <HAnimJoint name='l_knee'/> -->
        <Shape> <LineSet vertexCount='2'> <Coordinate point=', 1 2 3'/> <ColorRGBA USE='HAnimSegmentLineColorRGBA'/> </LineSet> </Shape>
      • <!-- HAnimSegment visualization line from current <HAnimJoint name='HumanoidRoot'/> to child <HAnimJoint name='r_knee'/> -->
        <Shape> <LineSet vertexCount='2'> <Coordinate point=', 4 5 6'/> <ColorRGBA USE='HAnimSegmentLineColorRGBA'/> </LineSet> </Shape>
      • <!-- HAnimSegment visualization line from current <HAnimJoint name='HumanoidRoot'/> to child <HAnimJoint name=''/> -->
        <Shape> <LineSet vertexCount='2'> <Coordinate point=', '/> <ColorRGBA USE='HAnimSegmentLineColorRGBA'/> </LineSet> </Shape>
      </HAnimSegment>
    • <HAnimJoint DEF='negativeCenterHeight' name='negativeCenterHeight' center ='0 -1 0' >
      • <HAnimSegment DEF='IllegalChildrenContainerFields' name='IllegalChildrenContainerFields'>
        • <!-- Visualization sphere for <HAnimJoint name='negativeCenterHeight'/> is placed within <HAnimSegment name='IllegalChildrenContainerFields'/> -->
          <TouchSensor description='HAnimJoint negativeCenterHeight, HAnimSegment IllegalChildrenContainerFields'/>
        • <Transform translation='0 -1 0'> <Shape USE='HAnimJointShape'/> </Transform>
        • <!-- HAnimSite visualization line segment from ancestor <HAnimJoint name='negativeCenterHeight'/> to <HAnimSite name='negativeTranslationHeight'/> -->
          <Shape> <LineSet vertexCount='2'> <Coordinate point='0 -1 0, 0 -1 0'/> <ColorRGBA USE='HAnimSiteColorRGBA'/> </LineSet> </Shape>
        • <HAnimSite DEF='negativeTranslationHeight' name='negativeTranslationHeight' translation='0 -1 0'>
          • <!-- HAnimSite visualization shape -->
          • <TouchSensor description='HAnimSite negativeTranslationHeight'/>
          • <Shape USE='HAnimSiteShape'/>
          <HAnimDisplacer DEF='IllegalHAnimDisplacerInHAnimSiteNode'/> </HAnimSite>
        </HAnimSegment>
      </HAnimJoint>
    </HAnimJoint>

<HAnimJoint USE='MissingNameAttributeCheckContainerField'/>

<!-- the following construct is OK and should not throw errors -->
  • <HAnimSite DEF='hanim_Top_view' name='Top_view' containerField ='viewpoints'  rotation='1 0 0 -1.57translation='0 3.5 0'>
    • <!-- HAnimSite visualization shape -->
    • <TouchSensor description='HAnimSite Top_view'/>
    • <Shape USE='HAnimSiteShape'/>
    • <Viewpoint DEF='hanim_Top_viewpointcenterOfRotation='0 0.9 0description='Topposition='0 0 0'/>
    • <!-- HAnimSite/Viewpoint visualization shape -->
    • <Anchor description='HAnimSite hanim_Top_view Viewpoint ' url='"#hanim_Top_viewpoint"'>
        <LOD forceTransitions='true' range='0.04'>
         <WorldInfo info='"hide diamond when close"'/>
         <Shape DEF='HAnimSiteViewpointShape'> <IndexedFaceSet DEF='SiteViewpointDiamondIFS' coordIndex='0 1 2 -1 0 2 3 -1 0 3 4 -1 0 4 1 -1 5 2 1 -1 5 3 2 -1 5 4 3 -1 5 1 4 -1' creaseAngle='0.5'> <Coordinate point='0 0.010 0 -0.010 0 0 0 0 0.010 0.010 0 0 0 0 -0.010 0 -0.010 0'/> </IndexedFaceSet> <Appearance> <Material diffuseColor='1 1 0' transparency='0.3'/> </Appearance> </Shape>
        </LOD>
      </Anchor>
    </HAnimSite>

</HAnimHumanoid>

-->

<!-- Color key: <X3dNode DEF='idName' field='value'/> matches <XmlElement DEF='idName' attribute='value'/>
(Light blue background: behavior node) (Grey background: inserted documentation) (Magenta background: X3D Extensibility)
    <Prototype name='ProtoName'> <field name='fieldName'/> </Prototype> -->

<!-- Additional help information about X3D scenes: X3D Resources, X3D Scene Authoring Hints and X3D Tooltips -->