<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "http://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Immersive' version='3.3 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' http://www.web3d.org/specifications/x3d-3.3.xsd '>
<head>
<!-- Originally these fundamental prototypes were defined in InterchangableActorsViaDynamicRoutingPrototypes.x3d -->
<meta name='titlecontent='HAnimPrototypes.x3d'/>
<meta name='descriptioncontent='Example implementation of X3D Humanoid Animation (H-Anim) nodes using X3D prototypes.'/>
<meta name=' warning content=' These are developmental examples that can assist X3D player implementations and support interoperability. They are not intended for author use in regular X3D scenes. '/>
<meta name=' warning content=' Developer note: names for these H-Anim Prototypes need to be corrected if used internally in an X3D player implementation (e.g. Joint to HAnimJoint). '/>
<meta name=' warning content=' Need support for skin '/>
<meta name='creatorcontent='Ozan APAYDIN, Don Brutzman'/>
<meta name='translatorcontent='Ozan APAYDIN, Don Brutzman'/>
<meta name='createdcontent='15 November 2001'/>
<meta name='modifiedcontent='22 October 2018'/>
<meta name='TODOcontent='upgrade to match support requirements for HAnim 2.2'/>
<meta name='referencecontent=' http://www.web3d.org/files/specifications/19774/V1.0/HAnim/HAnim.html '/>
<meta name='referencecontent=' http://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/hanim.html '/>
<meta name='referencecontent=' http://h-anim.org/Models/H-Anim2001/boxman/boxman.wrl '/>
<meta name='referencecontent=' http://h-anim.org/Specifications/H-Anim2001 '/>
<meta name='referencecontent=' http://www.h-anim.org '/>
<meta name='referencecontent=' http://h-anim.org/Models '/>
<meta name='referencecontent=' http://h-anim.org/Specifications '/>
<meta name='referencecontent='InterchangableActorsViaDynamicRoutingPrototypes.x3d'/>
<meta name='identifiercontent=' http://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/HAnimPrototypes.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!-- -->
<Scene>
<!-- **********Human Model Protypes********* -->
<ProtoDeclare name='Humanoid1_1appinfo='The Humanoid node serves as overall container for the Joint Segment Site and Viewpoint nodes which define the skeleton geometry and landmarks of the humanoid figure. Additionally the node provides a means for defining information about the author copyright and usage restrictions of the model.' documentation=' http://H-Anim.org/Specifications/H-Anim2001/part1/Humanoid.html '>
<ProtoInterface>
<!-- H-Anim v1.1 field definitions -->
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='versiontype='SFStringvalue='1.1accessType='inputOutput'
 appinfo='legal values: 1.1 or 2.0'/>

<field name='humanoidVersiontype='SFStringaccessType='inputOutput'
 appinfo='Version of the humanoid being modeled. Hint: H-anim version 2.0'/>

<field name='infotype='MFStringaccessType='inputOutput'/>
<field name='translationtype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='rotationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='centertype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='scaletype='SFVec3fvalue='1 1 1accessType='inputOutput'/>
<field name='scaleOrientationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'/>
<field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'/>
<field name='humanoidBodytype='MFNodeaccessType='inputOutput'
 appinfo='H-Anim 1.1 field container for body head. Hint: replaced by 2.0 skeleton.'
 documentation=' http://H-Anim.org/Specifications/H-Anim1.1/#humanoid '/>

<field name='skeletontype='MFNodeaccessType='inputOutput'
 appinfo='H-Anim 2.0 field container for body geometry Hint: replaces 1.1 humanoidBody'
 documentation=' http://H-Anim.org/Specifications/H-Anim2001/part1/Humanoid.html '/>

<field name='jointstype='MFNodeaccessType='inputOutput'
 appinfo='Container field for Joint nodes'/>

<field name='segmentstype='MFNodeaccessType='inputOutput'
 appinfo='Container field for Segment nodes'/>

<field name='sitestype='MFNodeaccessType='inputOutput'
 appinfo='Container field for Site nodes'/>

<field name='viewpointstype='MFNodeaccessType='inputOutput'
 appinfo='Container field for Viewpoint nodes'/>

<field name='skinCoordtype='SFNodeaccessType='inputOutput'
 appinfo='Hint: H-anim version 2.0'>
<!-- NULL -->
</field>
<field name='skinNormaltype='SFNodeaccessType='inputOutput'
 appinfo='Hint: H-anim version 2.0'>
<!-- NULL -->
</field>
</ProtoInterface>
<ProtoBody>
<Transform DEF='HumanoidTransform'>
<IS>
<connect nodeField='translationprotoField='translation'/>
<connect nodeField='rotationprotoField='rotation'/>
<connect nodeField='centerprotoField='center'/>
<connect nodeField='scaleprotoField='scale'/>
<connect nodeField='scaleOrientationprotoField='scaleOrientation'/>
<connect nodeField='bboxCenterprotoField='bboxCenter'/>
<connect nodeField='bboxSizeprotoField='bboxSize'/>
</IS>
<Group DEF='HumanoidGroup1'>
<IS>
<connect nodeField='childrenprotoField='humanoidBody'/>
</IS>
</Group>
<Group DEF='HumanoidGroup2'>
<IS>
<connect nodeField='childrenprotoField='skeleton'/>
</IS>
</Group>
<Group DEF='HumanoidGroup3'>
<IS>
<connect nodeField='childrenprotoField='viewpoints'/>
</IS>
</Group>
</Transform>
</ProtoBody>
</ProtoDeclare>
<ProtoDeclare name='Jointappinfo='The Joint node is used as a building block to describe the articulations of the humanoid figure. Each articulation of the humanoid figure is represented by a Joint node each of which is organized into a hierarchy that describes the overall skeleton of the humanoid.' documentation=' http://H-Anim.org/Specifications/H-Anim2001/part1/Joint.html '>
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='ulimittype='MFFloataccessType='inputOutput'/>
<field name='llimittype='MFFloataccessType='inputOutput'/>
<field name='limitOrientationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='skinCoordIndextype='MFInt32accessType='inputOutput'/>
<field name='skinCoordWeighttype='MFFloataccessType='inputOutput'/>
<field name='stiffnesstype='MFFloatvalue='0 0 0accessType='inputOutput'/>
<field name='translationtype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='rotationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='scaletype='SFVec3fvalue='1 1 1accessType='inputOutput'/>
<field name='scaleOrientationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='centertype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'/>
<field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'/>
<field name='childrentype='MFNodeaccessType='inputOutput'/>
<field name='addChildrentype='MFNodeaccessType='inputOnly'/>
<field name='removeChildrentype='MFNodeaccessType='inputOnly'/>
</ProtoInterface>
<ProtoBody>
<Transform DEF='JointTransform'>
<IS>
<connect nodeField='translationprotoField='translation'/>
<connect nodeField='rotationprotoField='rotation'/>
<connect nodeField='centerprotoField='center'/>
<connect nodeField='scaleprotoField='scale'/>
<connect nodeField='scaleOrientationprotoField='scaleOrientation'/>
<connect nodeField='bboxCenterprotoField='bboxCenter'/>
<connect nodeField='bboxSizeprotoField='bboxSize'/>
<connect nodeField='childrenprotoField='children'/>
<connect nodeField='addChildrenprotoField='addChildren'/>
<connect nodeField='removeChildrenprotoField='removeChildren'/>
</IS>
</Transform>
</ProtoBody>
</ProtoDeclare>
<ProtoDeclare name='Segmentappinfo='The Segment node is used describe the attributes of the physical links between the joints of the humanoid figure. Each body part (pelvis thigh calf etc.) of the humanoid figure is represented by a Segment node.' documentation=' http://H-Anim.org/Specifications/H-Anim2001/part1/Segment.html '>
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='masstype='SFFloatvalue='0accessType='inputOutput'/>
<field name='centerOfMasstype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='momentsOfInertiatype='MFFloatvalue='0 0 0 0 0 0 0 0 0accessType='inputOutput'/>
<field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'/>
<field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'/>
<field name='childrentype='MFNodeaccessType='inputOutput'/>
<field name='addChildrentype='MFNodeaccessType='inputOnly'/>
<field name='removeChildrentype='MFNodeaccessType='inputOnly'/>
<field name='coordtype='SFNodeaccessType='inputOutput'
 appinfo='contains Coordinate nodes'>
<!-- NULL -->
</field>
<field name='displacerstype='MFNodeaccessType='inputOutput'
 appinfo='contains Displacer nodes'/>
</ProtoInterface>
<ProtoBody>
<Group DEF='SegmentGroup'>
<IS>
<connect nodeField='bboxCenterprotoField='bboxCenter'/>
<connect nodeField='bboxSizeprotoField='bboxSize'/>
<connect nodeField='childrenprotoField='children'/>
<connect nodeField='addChildrenprotoField='addChildren'/>
<connect nodeField='removeChildrenprotoField='removeChildren'/>
</IS>
</Group>
</ProtoBody>
</ProtoDeclare>
<ProtoDeclare name='Siteappinfo='The Site node can be used for three purposes: (a) to define an "end effector" location which can be used by an inverse kinematics system (b) to define an attachment point for accessories such as jewelry and clothing and (c) to define a location for a virtual camera in the reference frame of a Segment node (such as a view "through the eyes" of the humanoid for use in multi-user worlds).' documentation=' http://H-Anim.org/Specifications/H-Anim2001/part1/Site.html '>
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='translationtype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='rotationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='scaletype='SFVec3fvalue='1 1 1accessType='inputOutput'/>
<field name='scaleOrientationtype='SFRotationvalue='0 0 1 0accessType='inputOutput'/>
<field name='centertype='SFVec3fvalue='0 0 0accessType='inputOutput'/>
<field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'/>
<field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'/>
<field name='childrentype='MFNodeaccessType='inputOutput'/>
<field name='addChildrentype='MFNodeaccessType='inputOnly'/>
<field name='removeChildrentype='MFNodeaccessType='inputOnly'/>
</ProtoInterface>
<ProtoBody>
<Transform DEF='SiteTransform'>
<IS>
<connect nodeField='translationprotoField='translation'/>
<connect nodeField='rotationprotoField='rotation'/>
<connect nodeField='centerprotoField='center'/>
<connect nodeField='scaleprotoField='scale'/>
<connect nodeField='scaleOrientationprotoField='scaleOrientation'/>
<connect nodeField='bboxCenterprotoField='bboxCenter'/>
<connect nodeField='bboxSizeprotoField='bboxSize'/>
<connect nodeField='childrenprotoField='children'/>
<connect nodeField='addChildrenprotoField='addChildren'/>
<connect nodeField='removeChildrenprotoField='removeChildren'/>
</IS>
</Transform>
</ProtoBody>
</ProtoDeclare>
<ProtoDeclare name='Displacerappinfo='A Displacer can be used in three different ways: (a) identify the vertices corresponding to a particular feature on a Segment (b) represent a particular muscular action which displaces the vertices in various directions (linearly or radially) and (c) represent a complete configuration of the vertices in a Segment.' documentation=' http://H-Anim.org/Specifications/H-Anim2001/part1/Displacer.html '>
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='coordIndextype='MFInt32accessType='inputOutput'/>
<field name='displacementstype='MFVec3faccessType='inputOutput'/>
</ProtoInterface>
<ProtoBody>
<WorldInfo info='"null body node"'/>
</ProtoBody>
</ProtoDeclare>
<Shape>
<Text string='"Humanoid Animation" "(HAnim) prototype" "implementations"'>
<FontStyle justify='"MIDDLE" "MIDDLE"'/>
</Text>
<Appearance>
<Material ambientIntensity='0.25diffuseColor='0.795918 0.505869 0.093315shininess='0.39specularColor='0.923469 0.428866 0.006369'>
<!-- Universal Media Library: Autumn 9 -->
</Material>
</Appearance>
</Shape>
</Scene>
</X3D>
<!--

Index for ProtoDeclare definitions : Displacer, Humanoid1_1, Joint, Segment, Site

Index for DEF nodes : HumanoidGroup1, HumanoidGroup2, HumanoidGroup3, HumanoidTransform, JointTransform, SegmentGroup, SiteTransform
-->

<!-- 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 -->