package HumanoidAnimation.Specifications;

/*
Copyright (c) 1995-2020 held by the author(s).  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer
      in the documentation and/or other materials provided with the
      distribution.
    * Neither the name of the Web3D Consortium (https://www.web3d.org)
      nor the names of its contributors may be used to endorse or
      promote products derived from this software without specific
      prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/

import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.EnvironmentalEffects.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Grouping.*;
import org.web3d.x3d.jsail.HAnim.*;
import org.web3d.x3d.jsail.Navigation.*;
import org.web3d.x3d.jsail.RigidBodyPhysics.*;

// Javadoc annotations follow, see below for source.
/**
 * <p> HAnim Specification reference example providing full coverage (and no illustrated visibility) of all specified HAnim constructs, also suitable for re-use as an authoring template. </p>
 <p> Related links: HAnimSpecificationLOA3Invisible.java source, <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank">X3D Resources</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a>, and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank">X3D Tooltips</a>. </p>
	<table style="color:black; border:0px solid; border-spacing:10px 0px;">
        <caption>Scene Meta Information</caption>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center; padding:10px 0px;"><i>meta tags</i></td>
			<td style="text-align:left;   padding:10px 0px;">HumanoidAnimation.Specifications.HAnimSpecificationLOA3Invisible&nbsp; Document Metadata </td>
		</tr>

		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnimSpecificationLOA3Invisible.x3d">HAnimSpecificationLOA3Invisible.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> HAnim Specification reference example providing full coverage (and no illustrated visibility) of all specified HAnim constructs, also suitable for re-use as an authoring template. </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/files/specifications/19774/V1.0/HAnim/BodyDimensionsAndLOAs.html#LOA3ExampleSourceWithDiamonds" target="_blank">https://www.web3d.org/files/specifications/19774/V1.0/HAnim/BodyDimensionsAndLOAs.html#LOA3ExampleSourceWithDiamonds</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 24 April 2013 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 4 July 2020 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> TODO </i> </td>
			<td> Convert to X3D4 HAnim2 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Matthew T. Beitler, Joe D. Williams, Don Brutzman </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnimSpecificationLOA3Illustrated.x3d">HAnimSpecificationLOA3Illustrated.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnimSpecificationLOA3Motion.x3d">HAnimSpecificationLOA3Motion.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> HAnimSpecificationExampleChangeLog.txt </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> Image </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/images/BonesAllSkeletonFrontViewLOA1.png">images/BonesAllSkeletonFrontViewLOA1.png</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> Image </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/images/BonesAllSkeletonFrontViewLOA2.png">images/BonesAllSkeletonFrontViewLOA2.png</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> Image </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/images/BonesAllSkeletonFrontViewLOA3.png">images/BonesAllSkeletonFrontViewLOA3.png</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> TODO </i> </td>
			<td> move relevant HAnimSite/Viewpoint pairs into skeleton at appropriate locations </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> TODO </i> </td>
			<td> insert MetadataInteger nodes indicating LOA for each Joint and Segment </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> Norman Badler et al., ANTHROPOMETRY FOR COMPUTER GRAPHICS HUMAN FIGURES, University of Pennsylvania, 1989. </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="http://www.cis.upenn.edu/~badler/anthro/89-71.ps" target="_blank">http://www.cis.upenn.edu/~badler/anthro/89-71.ps</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/tables/AnthropometryForComputerGraphicsHumanFigures89-71.pdf">tables/AnthropometryForComputerGraphicsHumanFigures89-71.pdf</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> translator </i> </td>
			<td> Don Brutzman and Joe Williams </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> BS Contact Geo 8.001, <a href="http://www.bitmanagement.de/en/products/interactive-3d-clients/bs-contact-geo" target="_blank">http://www.bitmanagement.de/en/products/interactive-3d-clients/bs-contact-geo</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> originals/LOA3ExampleSourceWithDiamondsOriginal.wrl </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/originals/LOA3ExampleSourceWithDiamondsOriginal.x3d">originals/LOA3ExampleSourceWithDiamondsOriginal.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/originals/LOA3ExampleSourceWithDiamondsOriginalBsContactExport.x3d">originals/LOA3ExampleSourceWithDiamondsOriginalBsContactExport.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> HAnim Specification Table 4.4 - Face Joint object names, <a href="https://www.web3d.org/files/specifications/19774/V1.0/HAnim/concepts.html#FaceJointObjectNames" target="_blank">https://www.web3d.org/files/specifications/19774/V1.0/HAnim/concepts.html#FaceJointObjectNames</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> X3D-Edit 3.3, <a href="https://savage.nps.edu/X3D-Edit" target="_blank">https://savage.nps.edu/X3D-Edit</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> identifier </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnimSpecificationLOA3Invisible.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnimSpecificationLOA3Invisible.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> license </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/../license.html">../license.html</a> </td>
		</tr>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center;" colspan="2">  &nbsp; </td>
		</tr>
	</table>

	<p>
		This program uses the
		<a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">X3D Java Scene Access Interface Library (X3DJSAIL)</a>.
		It has been produced using the 
		<a href="https://www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">X3dToJava.xslt</a>
		stylesheet to create Java source code from an <code>.x3d</code> model.
	</p>

	* @author Matthew T. Beitler, Joe D. Williams, Don Brutzman
 */

public class HAnimSpecificationLOA3Invisible
{
	/** Default constructor to create this object. */
	public HAnimSpecificationLOA3Invisible ()
	{
	  initialize();
	}

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
  x3dModel = new X3D().setProfile(X3D.PROFILE_IMMERSIVE).setVersion(X3D.VERSION_3_3)
  .setHead(new head()
    .addComponent(new component().setName("HAnim").setLevel(1))
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("HAnimSpecificationLOA3Invisible.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("HAnim Specification reference example providing full coverage (and no illustrated visibility) of all specified HAnim constructs, also suitable for re-use as an authoring template."))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://www.web3d.org/files/specifications/19774/V1.0/HAnim/BodyDimensionsAndLOAs.html#LOA3ExampleSourceWithDiamonds"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("24 April 2013"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("4 July 2020"))
    .addMeta(new meta().setName(meta.NAME_TODO       ).setContent("Convert to X3D4 HAnim2"))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Matthew T. Beitler, Joe D. Williams, Don Brutzman"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("HAnimSpecificationLOA3Illustrated.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("HAnimSpecificationLOA3Motion.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("HAnimSpecificationExampleChangeLog.txt"))
    .addMeta(new meta().setName(meta.NAME_IMAGE      ).setContent("images/BonesAllSkeletonFrontViewLOA1.png"))
    .addMeta(new meta().setName(meta.NAME_IMAGE      ).setContent("images/BonesAllSkeletonFrontViewLOA2.png"))
    .addMeta(new meta().setName(meta.NAME_IMAGE      ).setContent("images/BonesAllSkeletonFrontViewLOA3.png"))
    .addMeta(new meta().setName(meta.NAME_TODO       ).setContent("move relevant HAnimSite/Viewpoint pairs into skeleton at appropriate locations"))
    .addMeta(new meta().setName(meta.NAME_TODO       ).setContent("insert MetadataInteger nodes indicating LOA for each Joint and Segment"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("Norman Badler et al., ANTHROPOMETRY FOR COMPUTER GRAPHICS HUMAN FIGURES, University of Pennsylvania, 1989."))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("http://www.cis.upenn.edu/~badler/anthro/89-71.ps"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("tables/AnthropometryForComputerGraphicsHumanFigures89-71.pdf"))
    .addMeta(new meta().setName(meta.NAME_TRANSLATOR ).setContent("Don Brutzman and Joe Williams"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("BS Contact Geo 8.001, http://www.bitmanagement.de/en/products/interactive-3d-clients/bs-contact-geo"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("originals/LOA3ExampleSourceWithDiamondsOriginal.wrl"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("originals/LOA3ExampleSourceWithDiamondsOriginal.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("originals/LOA3ExampleSourceWithDiamondsOriginalBsContactExport.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("HAnim Specification Table 4.4 - Face Joint object names, https://www.web3d.org/files/specifications/19774/V1.0/HAnim/concepts.html#FaceJointObjectNames"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnimSpecificationLOA3Invisible.x3d"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../license.html")))
  .setScene(new Scene()
    .addChild(new Background().setSkyColor(new MFColor(new double[] {0.3,0.3,0.3})))
    .addChild(new NavigationInfo())
    .addChild(new Group("Original_WorldInfo")
      .addChild(new WorldInfo().setInfo(new String[] {" HANIM 200x Default Joint Centers, Level-Of-Articulation 3 HANIM 200x (VRML97) Author name: eMpTy (a.k.a. Matthew T. Beitler) HANIM 200x (VRML97) Author email: beitler@cis.upenn.edu or beitler@acm.org HANIM 200x (VRML97) Author homepage: http://www.cis.upenn.edu/~beitler HANIM 200x (VRML97) Compliance Date: August 12, 2003 HANIM 200x Compliance Information: http://HAnim.org/Specifications/HAnim200x Construction Info (joint centers): The joint centers of this figure are based on the work of Norman Badler, director of the Center for Human Modeling and Simulation at the University of Pennsylvania. The original document which these joint centers are based on can be found at: http://www.cis.upenn.edu/~badler/anthro/89-71.ps "}).setTitle("HANIM 200x Default Joint Centers, LOA3")))
    .addComments(" TODO move viewpoints to be internal to HAnimHumanoid ")
    .addComments(" Viewpoint centerOfRotation=\"0 0.9149 0.0016\" matches initial at-rest locaton of the sacroliac. Note that these viewpoints are external to the HAnimHumanoid and do not move with the human. ")
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Front").setCenterOfRotation(0.0,0.9149,0.0016).setPosition(0.0,0.4,4.0))
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Front Close").setCenterOfRotation(0.0,0.9149,0.0016).setPosition(0.0,0.8,2.0))
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Front Closer").setCenterOfRotation(0.0,0.9149,0.0016).setPosition(0.0,1.2,1.0))
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Front Face").setCenterOfRotation(0.0,1.5,0.0016).setPosition(0.0,1.63,1.0))
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Right Side").setCenterOfRotation(0.0,0.9149,0.0016).setOrientation(0.0,1.0,0.0,1.5708).setPosition(2.6,0.8,0.0))
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Right Side Close").setCenterOfRotation(0.0,0.9149,0.0016).setOrientation(0.0,1.0,0.0,1.2).setPosition(1.0,0.8,0.5))
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Left Side Close").setCenterOfRotation(0.0,0.9149,0.0016).setOrientation(0.0,1.0,0.0,-1.2).setPosition(-1.0,0.8,0.5))
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Left Side").setCenterOfRotation(0.0,0.9149,0.0016).setOrientation(0.0,1.0,0.0,-1.5708).setPosition(-2.6,0.8,0.0))
    .addChild(new Viewpoint().setDescription("Humanoid LOA 3 Top").setCenterOfRotation(0.0,0.9149,0.0016).setOrientation(1.0,0.0,0.0,-1.5708).setPosition(0.0,3.5,0.0))
    .addChild(new HAnimHumanoid("hanim_humanoid").setName("humanoid").setInfo(new String[] {"authorName=Matthew T. Beitler Joe D. Williams Don Brutzman","authorEmail=HAnim@web3D.org","copyright=none","creationDate=12 May 1999","usageRestrictions=none","humanoidVersion=2.0","height=1.7504"}).setVersion("1.0")
      .addComments(" Only one root HAnimJoint is expected ")
      .addSkeleton(new HAnimJoint("hanim_humanoid_root").setName("humanoid_root").setCenter(0.0,0.824,0.0277)
        .addChild(new HAnimSegment("hanim_sacrum").setName("sacrum"))
        .addChild(new HAnimJoint("hanim_sacroiliac").setName("sacroiliac").setCenter(0.0,0.9149,0.0016)
          .addChild(new HAnimSegment("hanim_pelvis").setName("pelvis")
            .addChild(new HAnimSite("hanim_r_iliocristale_pt").setName("r_iliocristale_pt").setTranslation(-0.1525,1.0628,0.0035))
            .addChild(new HAnimSite("hanim_r_trochanterion_pt").setName("r_trochanterion_pt").setTranslation(-0.1689,0.8419,0.0352))
            .addChild(new HAnimSite("hanim_l_iliocristale_pt").setName("l_iliocristale_pt").setTranslation(0.1612,1.0537,0.0008))
            .addChild(new HAnimSite("hanim_l_trochanterion_pt").setName("l_trochanterion_pt").setTranslation(0.1677,0.8336,0.0303))
            .addChild(new HAnimSite("hanim_r_asis_pt").setName("r_asis_pt").setTranslation(-0.0887,1.0021,0.1112))
            .addChild(new HAnimSite("hanim_l_asis_pt").setName("l_asis_pt").setTranslation(0.0925,0.9983,0.1052))
            .addChild(new HAnimSite("hanim_r_psis_pt").setName("r_psis_pt").setTranslation(-0.0716,1.019,-0.1138))
            .addChild(new HAnimSite("hanim_l_psis_pt").setName("l_psis_pt").setTranslation(0.0774,1.019,-0.1151))
            .addChild(new HAnimSite("hanim_crotch_pt").setName("crotch_pt").setTranslation(0.0034,0.8266,0.0257)))
          .addChild(new HAnimJoint("hanim_l_hip").setName("l_hip").setCenter(0.0961,0.9124,-0.0001)
            .addChild(new HAnimSegment("hanim_l_thigh").setName("l_thigh")
              .addChild(new HAnimSite("hanim_l_knee_crease_pt").setName("l_knee_crease_pt").setTranslation(0.0993,0.4881,-0.0309))
              .addChild(new HAnimSite("hanim_l_femoral_lateral_epicn_pt").setName("l_femoral_lateral_epicn_pt").setTranslation(0.1598,0.4967,0.0297))
              .addChild(new HAnimSite("hanim_l_femoral_medial_epicn_pt").setName("l_femoral_medial_epicn_pt").setTranslation(0.0398,0.4946,0.0303)))
            .addChild(new HAnimJoint("hanim_l_knee").setName("l_knee").setCenter(0.104,0.4867,0.0308)
              .addChild(new HAnimSegment("hanim_l_calf").setName("l_calf"))
              .addChild(new HAnimJoint("hanim_l_ankle").setName("l_ankle").setCenter(0.1101,0.0656,-0.0736)
                .addChild(new HAnimSegment("hanim_l_hindfoot").setName("l_hindfoot")
                  .addChild(new HAnimSite("hanim_l_lateral_malleolus_pt").setName("l_lateral_malleolus_pt").setTranslation(0.1308,0.0597,-0.1032))
                  .addChild(new HAnimSite("hanim_l_medial_malleolus_pt").setName("l_medial_malleolus_pt").setTranslation(0.089,0.0716,-0.0881))
                  .addChild(new HAnimSite("hanim_l_sphyrion_pt").setName("l_sphyrion_pt").setTranslation(0.089,0.0575,-0.0943))
                  .addChild(new HAnimSite("hanim_l_calcaneous_post_pt").setName("l_calcaneous_post_pt").setTranslation(0.0974,0.0259,-0.1171)))
                .addChild(new HAnimJoint("hanim_l_subtalar").setName("l_subtalar").setCenter(0.1086,0.0001,-0.0368)
                  .addChild(new HAnimSegment("hanim_l_midproximal").setName("l_midproximal"))
                  .addChild(new HAnimJoint("hanim_l_midtarsal").setName("l_midtarsal").setCenter(0.1086,0.0001,0.0368)
                    .addChild(new HAnimSegment("hanim_l_middistal").setName("l_middistal")
                      .addChild(new HAnimSite("hanim_l_metatarsal_pha1_pt").setName("l_metatarsal_pha1_pt").setTranslation(0.0816,0.0232,0.0106)))
                    .addChild(new HAnimJoint("hanim_l_metatarsal").setName("l_metatarsal").setCenter(0.1086,0.0,0.0762)
                      .addChild(new HAnimSegment("hanim_l_forefoot").setName("l_forefoot")
                        .addChild(new HAnimSite("hanim_l_forefoot_tip").setName("l_forefoot_tip").setTranslation(0.1354,0.0016,0.1476))
                        .addChild(new HAnimSite("hanim_l_metatarsal_pha5_pt").setName("l_metatarsal_pha5_pt").setTranslation(0.1825,0.007,0.0928))
                        .addChild(new HAnimSite("hanim_l_digit2_pt").setName("l_digit2_pt").setTranslation(0.1195,0.0079,0.1433)))))))))
          .addChild(new HAnimJoint("hanim_r_hip").setName("r_hip").setCenter(-0.0961,0.9124,-0.0001)
            .addChild(new HAnimSegment("hanim_r_thigh").setName("r_thigh")
              .addChild(new HAnimSite("hanim_r_knee_crease_pt").setName("r_knee_crease_pt").setTranslation(-0.0825,0.4932,-0.0326))
              .addChild(new HAnimSite("hanim_r_femoral_lateral_epicn_pt").setName("r_femoral_lateral_epicn_pt").setTranslation(-0.1421,0.4992,0.031))
              .addChild(new HAnimSite("hanim_r_femoral_medial_epicn_pt").setName("r_femoral_medial_epicn_pt").setTranslation(-0.0221,0.5014,0.0289)))
            .addChild(new HAnimJoint("hanim_r_knee").setName("r_knee").setCenter(-0.104,0.4867,0.0308)
              .addChild(new HAnimSegment("hanim_r_calf").setName("r_calf"))
              .addChild(new HAnimJoint("hanim_r_ankle").setName("r_ankle").setCenter(-0.1101,0.0656,-0.0736)
                .addChild(new HAnimSegment("hanim_r_hindfoot").setName("r_hindfoot")
                  .addChild(new HAnimSite("hanim_r_lateral_malleolus_pt").setName("r_lateral_malleolus_pt").setTranslation(-0.1006,0.0658,-0.1075))
                  .addChild(new HAnimSite("hanim_r_medial_malleolus_pt").setName("r_medial_malleolus_pt").setTranslation(-0.0591,0.076,-0.0928))
                  .addChild(new HAnimSite("hanim_r_sphyrion_pt").setName("r_sphyrion_pt").setTranslation(-0.0603,0.061,-0.1002))
                  .addChild(new HAnimSite("hanim_r_calcaneous_post_pt").setName("r_calcaneous_post_pt").setTranslation(-0.0692,0.0297,-0.1221)))
                .addChild(new HAnimJoint("hanim_r_subtalar").setName("r_subtalar").setCenter(-0.1086,0.0001,-0.0368)
                  .addChild(new HAnimSegment("hanim_r_midproximal").setName("r_midproximal"))
                  .addChild(new HAnimJoint("hanim_r_midtarsal").setName("r_midtarsal").setCenter(-0.1086,0.0001,0.0368)
                    .addChild(new HAnimSegment("hanim_r_middistal").setName("r_middistal")
                      .addChild(new HAnimSite("hanim_r_metatarsal_pha1_pt").setName("r_metatarsal_pha1_pt").setTranslation(-0.0521,0.026,0.0127)))
                    .addChild(new HAnimJoint("hanim_r_metatarsal").setName("r_metatarsal").setCenter(-0.1086,0.0,0.0762)
                      .addChild(new HAnimSegment("hanim_r_forefoot").setName("r_forefoot")
                        .addChild(new HAnimSite("hanim_r_forefoot_tip").setName("r_forefoot_tip").setTranslation(-0.1043,0.0227,0.145))
                        .addChild(new HAnimSite("hanim_r_metatarsal_pha5_pt").setName("r_metatarsal_pha5_pt").setTranslation(-0.1523,0.0166,0.0895))
                        .addChild(new HAnimSite("hanim_r_digit2_pt").setName("r_digit2_pt").setTranslation(-0.0883,0.0134,0.1383))))))))))
        .addChild(new HAnimJoint("hanim_vl5").setName("vl5").setCenter(0.0028,1.0568,-0.0776)
          .addChild(new HAnimSegment("hanim_l5").setName("l5")
            .addChild(new HAnimSite("hanim_waist_preferred_post_pt").setName("waist_preferred_post_pt").setTranslation(0.0,1.0915,-0.1091))
            .addChild(new HAnimSite("hanim_navel_pt").setName("navel_pt").setTranslation(0.0069,1.0966,0.1017)))
          .addChild(new HAnimJoint("hanim_vl4").setName("vl4").setCenter(0.0035,1.0925,-0.0787)
            .addChild(new HAnimSegment("hanim_l4").setName("l4"))
            .addChild(new HAnimJoint("hanim_vl3").setName("vl3").setCenter(0.0041,1.1276,-0.0796)
              .addChild(new HAnimSegment("hanim_l3").setName("l3"))
              .addChild(new HAnimJoint("hanim_vl2").setName("vl2").setCenter(0.0045,1.1546,-0.08)
                .addChild(new HAnimSegment("hanim_l2").setName("l2")
                  .addChild(new HAnimSite("hanim_r_rib10_pt").setName("r_rib10_pt").setTranslation(-0.0711,1.1941,0.1016))
                  .addChild(new HAnimSite("hanim_l_rib10_pt").setName("l_rib10_pt").setTranslation(0.0871,1.1925,0.0992))
                  .addChild(new HAnimSite("hanim_rib10_midspine_pt").setName("rib10_midspine_pt").setTranslation(0.0049,1.1908,-0.1113)))
                .addChild(new HAnimJoint("hanim_vl1").setName("vl1").setCenter(0.0048,1.1912,-0.0805)
                  .addChild(new HAnimSegment("hanim_l1").setName("l1"))
                  .addChild(new HAnimJoint("hanim_vt12").setName("vt12").setCenter(0.0051,1.2278,-0.0808)
                    .addChild(new HAnimSegment("hanim_t12").setName("t12"))
                    .addChild(new HAnimJoint("hanim_vt11").setName("vt11").setCenter(0.0053,1.2679,-0.081)
                      .addChild(new HAnimSegment("hanim_t11").setName("t11"))
                      .addChild(new HAnimJoint("hanim_vt10").setName("vt10").setCenter(0.0056,1.2848,-0.0822)
                        .addChild(new HAnimSegment("hanim_t10").setName("t10")
                          .addChild(new HAnimSite("hanim_substernale_pt").setName("substernale_pt").setTranslation(0.0085,1.2995,0.1147)))
                        .addChild(new HAnimJoint("hanim_vt9").setName("vt9").setCenter(0.0057,1.3126,-0.0838)
                          .addChild(new HAnimSegment("hanim_t9").setName("t9")
                            .addChild(new HAnimSite("hanim_r_thelion_pt").setName("r_thelion_pt").setTranslation(-0.0736,1.3385,0.1217))
                            .addChild(new HAnimSite("hanim_l_thelion_pt").setName("l_thelion_pt").setTranslation(0.0918,1.3382,0.1192)))
                          .addChild(new HAnimJoint("hanim_vt8").setName("vt8").setCenter(0.0057,1.3382,-0.0845)
                            .addChild(new HAnimSegment("hanim_t8").setName("t8"))
                            .addChild(new HAnimJoint("hanim_vt7").setName("vt7").setCenter(0.0058,1.3625,-0.0833)
                              .addChild(new HAnimSegment("hanim_t7").setName("t7"))
                              .addChild(new HAnimJoint("hanim_vt6").setName("vt6").setCenter(0.0059,1.3866,-0.08)
                                .addChild(new HAnimSegment("hanim_t6").setName("t6"))
                                .addChild(new HAnimJoint("hanim_vt5").setName("vt5").setCenter(0.006,1.4102,-0.0745)
                                  .addChild(new HAnimSegment("hanim_t5").setName("t5"))
                                  .addChild(new HAnimJoint("hanim_vt4").setName("vt4").setCenter(0.0061,1.432,-0.0675)
                                    .addChild(new HAnimSegment("hanim_t4").setName("t4"))
                                    .addChild(new HAnimJoint("hanim_vt3").setName("vt3").setCenter(0.0062,1.4583,-0.057)
                                      .addChild(new HAnimSegment("hanim_t3").setName("t3"))
                                      .addChild(new HAnimJoint("hanim_vt2").setName("vt2").setCenter(0.0063,1.4761,-0.0484)
                                        .addChild(new HAnimSegment("hanim_t2").setName("t2"))
                                        .addChild(new HAnimJoint("hanim_vt1").setName("vt1").setCenter(0.0065,1.4951,-0.0387)
                                          .addChild(new HAnimSegment("hanim_t1").setName("t1")
                                            .addChild(new HAnimSite("hanim_suprasternale_pt").setName("suprasternale_pt").setTranslation(0.0084,1.4714,0.0551))
                                            .addChild(new HAnimSite("hanim_cervicale_pt").setName("cervicale_pt").setTranslation(0.0064,1.52,-0.0815)))
                                          .addChild(new HAnimJoint("hanim_vc7").setName("vc7").setCenter(0.0066,1.5132,-0.0301)
                                            .addChild(new HAnimSegment("hanim_c7").setName("c7")
                                              .addChild(new HAnimSite("hanim_r_neck_base_pt").setName("r_neck_base_pt").setTranslation(-0.0419,1.5149,-0.022))
                                              .addChild(new HAnimSite("hanim_l_neck_base_pt").setName("l_neck_base_pt").setTranslation(0.0646,1.5141,-0.038)))
                                            .addChild(new HAnimJoint("hanim_vc6").setName("vc6").setCenter(0.0066,1.5357,-0.0143)
                                              .addChild(new HAnimSegment("hanim_c6").setName("c6"))
                                              .addChild(new HAnimJoint("hanim_vc5").setName("vc5").setCenter(0.0066,1.552,-0.0082)
                                                .addChild(new HAnimSegment("hanim_c5").setName("c5"))
                                                .addChild(new HAnimJoint("hanim_vc4").setName("vc4").setCenter(0.0066,1.5662,-0.0084)
                                                  .addChild(new HAnimSegment("hanim_c4").setName("c4"))
                                                  .addChild(new HAnimJoint("hanim_vc3").setName("vc3").setCenter(0.0066,1.58,-0.0103)
                                                    .addChild(new HAnimSegment("hanim_c3").setName("c3"))
                                                    .addChild(new HAnimJoint("hanim_vc2").setName("vc2").setCenter(0.0066,1.5928,-0.0103)
                                                      .addChild(new HAnimSegment("hanim_c2").setName("c2"))
                                                      .addChild(new HAnimJoint("hanim_vc1").setName("vc1").setCenter(0.0066,1.6144,-0.0034)
                                                        .addChild(new HAnimSegment("hanim_c1").setName("c1"))
                                                        .addChild(new HAnimJoint("hanim_skullbase").setName("skullbase").setCenter(0.0044,1.6209,0.0236)
                                                          .addChild(new HAnimSegment("hanim_skull").setName("skull")
                                                            .addChild(new HAnimSite("hanim_skull_tip").setName("skull_tip").setTranslation(0.005,1.7504,0.0055)
                                                              .addComments(" TODO move skull_tip x to zero, check others for symmetry "))
                                                            .addChild(new HAnimSite("hanim_sellion_pt").setName("sellion_pt").setTranslation(0.0058,1.6316,0.0852))
                                                            .addChild(new HAnimSite("hanim_r_infraorbitale_pt").setName("r_infraorbitale_pt").setTranslation(-0.0237,1.6171,0.0752))
                                                            .addChild(new HAnimSite("hanim_l_infraorbitale_pt").setName("l_infraorbitale_pt").setTranslation(0.0341,1.6171,0.0752))
                                                            .addChild(new HAnimSite("hanim_supramenton_pt").setName("supramenton_pt").setTranslation(0.0061,1.541,0.0805))
                                                            .addChild(new HAnimSite("hanim_r_tragion_pt").setName("r_tragion_pt").setTranslation(-0.0646,1.6347,0.0302))
                                                            .addChild(new HAnimSite("hanim_r_gonion_pt").setName("r_gonion_pt").setTranslation(-0.052,1.5529,0.0347))
                                                            .addChild(new HAnimSite("hanim_l_tragion_pt").setName("l_tragion_pt").setTranslation(0.0739,1.6348,0.0282))
                                                            .addChild(new HAnimSite("hanim_l_gonion_pt").setName("l_gonion_pt").setTranslation(0.0631,1.553,0.033))
                                                            .addChild(new HAnimSite("hanim_nuchale_pt").setName("nuchale_pt").setTranslation(0.0039,1.5972,-0.0796)))
                                                          .addChild(new HAnimJoint("hanim_l_eyeball_joint").setName("l_eyeball_joint").setCenter(0.0336,1.6332,0.0502)
                                                            .addChild(new HAnimSegment("hanim_l_eyeball").setName("l_eyeball")
                                                              .addChild(new HAnimSite("hanim_l_eyeball_site_view").setName("l_eyeball_site_view").setTranslation(0.034,1.64,0.05)
                                                                .addChild(new Viewpoint("hanim_l_eyeball_site_viewpoint").setDescription("l_eyeball_site_viewpoint looking forward").setOrientation(0.0,1.0,0.0,3.141593).setPosition(0.0,0.0,0.0)))))
                                                          .addChild(new HAnimJoint("hanim_l_eyelid_joint").setName("l_eyelid_joint").setCenter(0.0336,1.6332,0.0502)
                                                            .addChild(new HAnimSegment("hanim_l_eyelid").setName("l_eyelid")))
                                                          .addChild(new HAnimJoint("hanim_l_eyebrow_joint").setName("l_eyebrow_joint").setCenter(0.0336,1.635,0.0506)
                                                            .addChild(new HAnimSegment("hanim_l_eyebrow").setName("l_eyebrow")))
                                                          .addChild(new HAnimJoint("hanim_r_eyeball_joint").setName("r_eyeball_joint").setCenter(-0.0336,1.6332,0.0502)
                                                            .addChild(new HAnimSegment("hanim_r_eyeball").setName("r_eyeball")
                                                              .addChild(new HAnimSite("hanim_r_eyeball_site_view").setName("r_eyeball_site_view").setTranslation(-0.034,1.64,0.05)
                                                                .addChild(new Viewpoint("hanim_r_eyeball_site_viewpoint").setDescription("r_eyeball_site_viewpoint looking forward").setOrientation(0.0,1.0,0.0,3.141593).setPosition(0.0,0.0,0.0)))))
                                                          .addChild(new HAnimJoint("hanim_r_eyelid_joint").setName("r_eyelid_joint").setCenter(-0.0336,1.6332,0.0502)
                                                            .addChild(new HAnimSegment("hanim_r_eyelid").setName("r_eyelid")))
                                                          .addChild(new HAnimJoint("hanim_r_eyebrow_joint").setName("r_eyebrow_joint").setCenter(-0.0336,1.635,0.0506)
                                                            .addChild(new HAnimSegment("hanim_r_eyebrow").setName("r_eyebrow")))
                                                          .addChild(new HAnimJoint("hanim_temporomandibular").setName("temporomandibular").setCenter(0.0,1.63,0.015)
                                                            .addComments(" Single joint, single segment for jaw, two sites for left/right TMJs https://en.wikipedia.org/wiki/Temporomandibular_joint ")
                                                            .addChild(new HAnimSegment("hanim_jaw").setName("jaw")
                                                              .addChild(new HAnimSite("hanim_temporomandibular_l_site_pt").setName("temporomandibular_l_site_pt").setTranslation(0.045,1.63,0.0))
                                                              .addChild(new HAnimSite("hanim_temporomandibular_r_site_pt").setName("temporomandibular_r_site_pt").setTranslation(-0.045,1.63,0.0))))))))))))
                                          .addChild(new HAnimJoint("hanim_l_sternoclavicular").setName("l_sternoclavicular").setCenter(0.082,1.4488,-0.0353)
                                            .addChild(new HAnimSegment("hanim_l_clavicle").setName("l_clavicle")
                                              .addChild(new HAnimSite("hanim_l_clavicale_pt").setName("l_clavicale_pt").setTranslation(0.0271,1.4943,0.0394))
                                              .addChild(new HAnimSite("hanim_l_acromion_pt").setName("l_acromion_pt").setTranslation(0.2032,1.476,-0.049))
                                              .addChild(new HAnimSite("hanim_l_axilla_ant_pt").setName("l_axilla_ant_pt").setTranslation(0.1777,1.4065,-0.0075))
                                              .addChild(new HAnimSite("hanim_l_axilla_post_pt").setName("l_axilla_post_pt").setTranslation(0.1706,1.4072,-0.0875)))
                                            .addChild(new HAnimJoint("hanim_l_acromioclavicular").setName("l_acromioclavicular").setCenter(0.0962,1.4269,-0.0424)
                                              .addChild(new HAnimSegment("hanim_l_scapula").setName("l_scapula"))
                                              .addChild(new HAnimJoint("hanim_l_shoulder").setName("l_shoulder").setCenter(0.2029,1.4376,-0.0387)
                                                .addChild(new HAnimSegment("hanim_l_upperarm").setName("l_upperarm")
                                                  .addChild(new HAnimSite("hanim_l_humeral_lateral_epicn_pt").setName("l_humeral_lateral_epicn_pt").setTranslation(0.228,1.1482,-0.11)))
                                                .addChild(new HAnimJoint("hanim_l_elbow").setName("l_elbow").setCenter(0.2014,1.1357,-0.0682)
                                                  .addChild(new HAnimSegment("hanim_l_forearm").setName("l_forearm")
                                                    .addChild(new HAnimSite("hanim_l_radial_styloid_pt").setName("l_radial_styloid_pt").setTranslation(0.1901,0.8645,-0.0415))
                                                    .addChild(new HAnimSite("hanim_l_olecranon_pt").setName("l_olecranon_pt").setTranslation(0.1962,1.1375,-0.1123))
                                                    .addChild(new HAnimSite("hanim_l_humeral_medial_epicn_pt").setName("l_humeral_medial_epicn_pt").setTranslation(0.1735,1.1272,-0.1113))
                                                    .addChild(new HAnimSite("hanim_l_radiale_pt").setName("l_radiale_pt").setTranslation(0.2182,1.1212,-0.1167)))
                                                  .addChild(new HAnimJoint("hanim_l_wrist").setName("l_wrist").setCenter(0.1984,0.8663,-0.0583)
                                                    .addChild(new HAnimSegment("hanim_l_hand").setName("l_hand")
                                                      .addChild(new HAnimSite("hanim_l_metacarpal_pha2_pt").setName("l_metacarpal_pha2_pt").setTranslation(0.2009,0.8139,-0.0237))
                                                      .addChild(new HAnimSite("hanim_l_ulnar_styloid_pt").setName("l_ulnar_styloid_pt").setTranslation(0.2142,0.8529,-0.0648))
                                                      .addChild(new HAnimSite("hanim_l_metacarpal_pha5_pt").setName("l_metacarpal_pha5_pt").setTranslation(0.1929,0.786,-0.1122))
                                                      .addChild(new HAnimSite("hanim_l_hand_front_view").setName("l_hand_front_view").setTranslation(0.3,0.75,0.45)
                                                        .addChild(new Viewpoint("hanim_l_hand_front_viewpoint").setDescription("left hand front").setCenterOfRotation(0.0,0.7,0.0).setPosition(0.0,0.0,0.0))))
                                                    .addChild(new HAnimJoint("hanim_l_thumb1").setName("l_thumb1").setCenter(0.1924,0.8472,-0.0534)
                                                      .addChild(new HAnimSegment("hanim_l_thumb_metacarpal").setName("l_thumb_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_l_thumb2").setName("l_thumb2").setCenter(0.1951,0.8226,0.0246)
                                                        .addChild(new HAnimSegment("hanim_l_thumb_proximal").setName("l_thumb_proximal"))
                                                        .addChild(new HAnimJoint("hanim_l_thumb3").setName("l_thumb3").setCenter(0.1955,0.8159,0.0464)
                                                          .addChild(new HAnimSegment("hanim_l_thumb_distal").setName("l_thumb_distal")
                                                            .addChild(new HAnimSite("hanim_l_thumb_distal_tip").setName("l_thumb_distal_tip").setTranslation(0.1982,0.8061,0.0759))))))
                                                    .addChild(new HAnimJoint("hanim_l_index0").setName("l_index0").setCenter(0.1983,0.8024,-0.028)
                                                      .addChild(new HAnimSegment("hanim_l_index_metacarpal").setName("l_index_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_l_index1").setName("l_index1").setCenter(0.1983,0.7815,-0.028)
                                                        .addChild(new HAnimSegment("hanim_l_index_proximal").setName("l_index_proximal"))
                                                        .addChild(new HAnimJoint("hanim_l_index2").setName("l_index2").setCenter(0.2017,0.7363,-0.0248)
                                                          .addChild(new HAnimSegment("hanim_l_index_middle").setName("l_index_middle"))
                                                          .addChild(new HAnimJoint("hanim_l_index3").setName("l_index3").setCenter(0.2028,0.7139,-0.0236)
                                                            .addChild(new HAnimSegment("hanim_l_index_distal").setName("l_index_distal")
                                                              .addChild(new HAnimSite("hanim_l_index_distal_tip").setName("l_index_distal_tip").setTranslation(0.2089,0.6858,-0.0245))
                                                              .addChild(new HAnimSite("hanim_l_dactylion_pt").setName("l_dactylion_pt").setTranslation(0.2056,0.6743,-0.0482)))))))
                                                    .addChild(new HAnimJoint("hanim_l_middle0").setName("l_middle0").setCenter(0.1987,0.8029,-0.053)
                                                      .addChild(new HAnimSegment("hanim_l_middle_metacarpal").setName("l_middle_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_l_middle1").setName("l_middle1").setCenter(0.1987,0.7818,-0.053)
                                                        .addChild(new HAnimSegment("hanim_l_middle_proximal").setName("l_middle_proximal"))
                                                        .addChild(new HAnimJoint("hanim_l_middle2").setName("l_middle2").setCenter(0.2013,0.7273,-0.0503)
                                                          .addChild(new HAnimSegment("hanim_l_middle_middle").setName("l_middle_middle"))
                                                          .addChild(new HAnimJoint("hanim_l_middle3").setName("l_middle3").setCenter(0.2026,0.7011,-0.0494)
                                                            .addChild(new HAnimSegment("hanim_l_middle_distal").setName("l_middle_distal")
                                                              .addChild(new HAnimSite("hanim_l_middle_distal_tip").setName("l_middle_distal_tip").setTranslation(0.208,0.6731,-0.0491)))))))
                                                    .addChild(new HAnimJoint("hanim_l_ring0").setName("l_ring0").setCenter(0.1956,0.8019,-0.0794)
                                                      .addChild(new HAnimSegment("hanim_l_ring_metacarpal").setName("l_ring_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_l_ring1").setName("l_ring1").setCenter(0.1956,0.7815,-0.0794)
                                                        .addChild(new HAnimSegment("hanim_l_ring_proximal").setName("l_ring_proximal"))
                                                        .addChild(new HAnimJoint("hanim_l_ring2").setName("l_ring2").setCenter(0.1973,0.7287,-0.0777)
                                                          .addChild(new HAnimSegment("hanim_l_ring_middle").setName("l_ring_middle"))
                                                          .addChild(new HAnimJoint("hanim_l_ring3").setName("l_ring3").setCenter(0.1983,0.7045,-0.0767)
                                                            .addChild(new HAnimSegment("hanim_l_ring_distal").setName("l_ring_distal")
                                                              .addChild(new HAnimSite("hanim_l_ring_distal_tip").setName("l_ring_distal_tip").setTranslation(0.2035,0.675,-0.0756)))))))
                                                    .addChild(new HAnimJoint("hanim_l_pinky0").setName("l_pinky0").setCenter(0.1925,0.8066,-0.1036)
                                                      .addChild(new HAnimSegment("hanim_l_pinky_metacarpal").setName("l_pinky_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_l_pinky1").setName("l_pinky1").setCenter(0.1925,0.7866,-0.1036)
                                                        .addChild(new HAnimSegment("hanim_l_pinky_proximal").setName("l_pinky_proximal"))
                                                        .addChild(new HAnimJoint("hanim_l_pinky2").setName("l_pinky2").setCenter(0.1938,0.7452,-0.1024)
                                                          .addChild(new HAnimSegment("hanim_l_pinky_middle").setName("l_pinky_middle"))
                                                          .addChild(new HAnimJoint("hanim_l_pinky3").setName("l_pinky3").setCenter(0.1948,0.7277,-0.1017)
                                                            .addChild(new HAnimSegment("hanim_l_pinky_distal").setName("l_pinky_distal")
                                                              .addChild(new HAnimSite("hanim_l_pinky_distal_tip").setName("l_pinky_distal_tip").setTranslation(0.2014,0.7009,-0.1012))))))))))))
                                          .addChild(new HAnimJoint("hanim_r_sternoclavicular").setName("r_sternoclavicular").setCenter(-0.082,1.4488,-0.0353)
                                            .addChild(new HAnimSegment("hanim_r_clavicle").setName("r_clavicle")
                                              .addChild(new HAnimSite("hanim_r_clavicale_pt").setName("r_clavicale_pt").setTranslation(-0.0115,1.4943,0.04))
                                              .addChild(new HAnimSite("hanim_r_acromion_pt").setName("r_acromion_pt").setTranslation(-0.1905,1.4791,-0.0431))
                                              .addChild(new HAnimSite("hanim_r_axilla_ant_pt").setName("r_axilla_ant_pt").setTranslation(-0.1626,1.4072,-0.0031))
                                              .addChild(new HAnimSite("hanim_r_axilla_post_pt").setName("r_axilla_post_pt").setTranslation(-0.1603,1.4098,-0.0826)))
                                            .addChild(new HAnimJoint("hanim_r_acromioclavicular").setName("r_acromioclavicular").setCenter(-0.0962,1.4269,-0.0424)
                                              .addChild(new HAnimSegment("hanim_r_scapula").setName("r_scapula"))
                                              .addChild(new HAnimJoint("hanim_r_shoulder").setName("r_shoulder").setCenter(-0.2029,1.4376,-0.0387)
                                                .addChild(new HAnimSegment("hanim_r_upperarm").setName("r_upperarm")
                                                  .addChild(new HAnimSite("hanim_r_humeral_lateral_epicn_pt").setName("r_humeral_lateral_epicn_pt").setTranslation(-0.2224,1.1517,-0.1033)))
                                                .addChild(new HAnimJoint("hanim_r_elbow").setName("r_elbow").setCenter(-0.2014,1.1357,-0.0682)
                                                  .addChild(new HAnimSegment("hanim_r_forearm").setName("r_forearm")
                                                    .addChild(new HAnimSite("hanim_r_radial_styloid_pt").setName("r_radial_styloid_pt").setTranslation(-0.1884,0.8676,-0.036))
                                                    .addChild(new HAnimSite("hanim_r_olecranon_pt").setName("r_olecranon_pt").setTranslation(-0.1907,1.1405,-0.1065))
                                                    .addChild(new HAnimSite("hanim_r_humeral_medial_epicn_pt").setName("r_humeral_medial_epicn_pt").setTranslation(-0.168,1.1298,-0.1062))
                                                    .addChild(new HAnimSite("hanim_r_radiale_pt").setName("r_radiale_pt").setTranslation(-0.213,1.1305,-0.1091)))
                                                  .addChild(new HAnimJoint("hanim_r_wrist").setName("r_wrist").setCenter(-0.1984,0.8663,-0.0583)
                                                    .addChild(new HAnimSegment("hanim_r_hand").setName("r_hand")
                                                      .addChild(new HAnimSite("hanim_r_metacarpal_pha2_pt").setName("r_metacarpal_pha2_pt").setTranslation(-0.1977,0.8169,-0.0177))
                                                      .addChild(new HAnimSite("hanim_r_ulnar_styloid_pt").setName("r_ulnar_styloid_pt").setTranslation(-0.2117,0.8562,-0.0584))
                                                      .addChild(new HAnimSite("hanim_r_metacarpal_pha5_pt").setName("r_metacarpal_pha5_pt").setTranslation(-0.1929,0.789,-0.1064))
                                                      .addChild(new HAnimSite("hanim_r_hand_front_view").setName("r_hand_front_view").setTranslation(-0.3,0.75,0.45)
                                                        .addChild(new Viewpoint("hanim_r_hand_front_viewpoint").setDescription("right hand front").setCenterOfRotation(0.0,0.7,0.0).setPosition(0.0,0.0,0.0))))
                                                    .addChild(new HAnimJoint("hanim_r_thumb1").setName("r_thumb1").setCenter(-0.1924,0.8472,-0.0534)
                                                      .addChild(new HAnimSegment("hanim_r_thumb_metacarpal").setName("r_thumb_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_r_thumb2").setName("r_thumb2").setCenter(-0.1951,0.8226,0.0246)
                                                        .addChild(new HAnimSegment("hanim_r_thumb_proximal").setName("r_thumb_proximal"))
                                                        .addChild(new HAnimJoint("hanim_r_thumb3").setName("r_thumb3").setCenter(-0.1955,0.8159,0.0464)
                                                          .addChild(new HAnimSegment("hanim_r_thumb_distal").setName("r_thumb_distal")
                                                            .addChild(new HAnimSite("hanim_r_thumb_distal_tip").setName("r_thumb_distal_tip").setTranslation(-0.1869,0.809,0.082))))))
                                                    .addChild(new HAnimJoint("hanim_r_index0").setName("r_index0").setCenter(-0.1983,0.8024,-0.028)
                                                      .addChild(new HAnimSegment("hanim_r_index_metacarpal").setName("r_index_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_r_index1").setName("r_index1").setCenter(-0.1983,0.7815,-0.028)
                                                        .addChild(new HAnimSegment("hanim_r_index_proximal").setName("r_index_proximal"))
                                                        .addChild(new HAnimJoint("hanim_r_index2").setName("r_index2").setCenter(-0.2017,0.7363,-0.0248)
                                                          .addChild(new HAnimSegment("hanim_r_index_middle").setName("r_index_middle"))
                                                          .addChild(new HAnimJoint("hanim_r_index3").setName("r_index3").setCenter(-0.2028,0.7139,-0.0236)
                                                            .addChild(new HAnimSegment("hanim_r_index_distal").setName("r_index_distal")
                                                              .addChild(new HAnimSite("hanim_r_index_distal_tip").setName("r_index_distal_tip").setTranslation(-0.198,0.6883,-0.018))
                                                              .addChild(new HAnimSite("hanim_r_dactylion_pt").setName("r_dactylion_pt").setTranslation(-0.1941,0.6772,-0.0423)))))))
                                                    .addChild(new HAnimJoint("hanim_r_middle0").setName("r_middle0").setCenter(-0.1987,0.8029,-0.053)
                                                      .addChild(new HAnimSegment("hanim_r_middle_metacarpal").setName("r_middle_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_r_middle1").setName("r_middle1").setCenter(-0.1987,0.7818,-0.053)
                                                        .addChild(new HAnimSegment("hanim_r_middle_proximal").setName("r_middle_proximal"))
                                                        .addChild(new HAnimJoint("hanim_r_middle2").setName("r_middle2").setCenter(-0.2013,0.7273,-0.0503)
                                                          .addChild(new HAnimSegment("hanim_r_middle_middle").setName("r_middle_middle"))
                                                          .addChild(new HAnimJoint("hanim_r_middle3").setName("r_middle3").setCenter(-0.2026,0.7011,-0.0494)
                                                            .addChild(new HAnimSegment("hanim_r_middle_distal").setName("r_middle_distal")
                                                              .addChild(new HAnimSite("hanim_r_middle_distal_tip").setName("r_middle_distal_tip").setTranslation(-0.1969,0.6758,-0.0427)))))))
                                                    .addChild(new HAnimJoint("hanim_r_ring0").setName("r_ring0").setCenter(-0.1956,0.8019,-0.0794)
                                                      .addChild(new HAnimSegment("hanim_r_ring_metacarpal").setName("r_ring_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_r_ring1").setName("r_ring1").setCenter(-0.1956,0.7815,-0.0794)
                                                        .addChild(new HAnimSegment("hanim_r_ring_proximal").setName("r_ring_proximal"))
                                                        .addChild(new HAnimJoint("hanim_r_ring2").setName("r_ring2").setCenter(-0.1973,0.7287,-0.0777)
                                                          .addChild(new HAnimSegment("hanim_r_ring_middle").setName("r_ring_middle"))
                                                          .addChild(new HAnimJoint("hanim_r_ring3").setName("r_ring3").setCenter(-0.1983,0.7045,-0.0767)
                                                            .addChild(new HAnimSegment("hanim_r_ring_distal").setName("r_ring_distal")
                                                              .addChild(new HAnimSite("hanim_r_ring_distal_tip").setName("r_ring_distal_tip").setTranslation(-0.1934,0.6778,-0.0693)))))))
                                                    .addChild(new HAnimJoint("hanim_r_pinky0").setName("r_pinky0").setCenter(-0.1925,0.8066,-0.1036)
                                                      .addChild(new HAnimSegment("hanim_r_pinky_metacarpal").setName("r_pinky_metacarpal"))
                                                      .addChild(new HAnimJoint("hanim_r_pinky1").setName("r_pinky1").setCenter(-0.1925,0.7866,-0.1036)
                                                        .addChild(new HAnimSegment("hanim_r_pinky_proximal").setName("r_pinky_proximal"))
                                                        .addChild(new HAnimJoint("hanim_r_pinky2").setName("r_pinky2").setCenter(-0.1938,0.7452,-0.1024)
                                                          .addChild(new HAnimSegment("hanim_r_pinky_middle").setName("r_pinky_middle"))
                                                          .addChild(new HAnimJoint("hanim_r_pinky3").setName("r_pinky3").setCenter(-0.1948,0.7277,-0.1017)
                                                            .addChild(new HAnimSegment("hanim_r_pinky_distal").setName("r_pinky_distal")
                                                              .addChild(new HAnimSite("hanim_r_pinky_distal_tip").setName("r_pinky_distal_tip").setTranslation(-0.1938,0.7035,-0.0949))))))))))))))))))))))))))))))
      .addComments(" USE nodes go here for access by inverse kinematics (IK) engines and other tools ")
      .addComments(" Top-level HAnimSite/Viewpoint nodes that move with the human center but are unaffected by body animation ")
      .addViewpoints(new HAnimSite("hanim_l_inclined_view").setName("l_inclined_view").setRotation(-0.113,0.993,0.0347,0.671).setTranslation(1.62,1.05,2.06)
        .addChild(new Viewpoint("hanim_l_inclined_viewpoint").setDescription("left inclined").setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_r_inclined_view").setName("r_inclined_view").setRotation(-0.113,-0.993,0.0347,0.671).setTranslation(-1.62,1.05,2.06)
        .addChild(new Viewpoint("hanim_r_inclined_viewpoint").setDescription("right inclined").setCenterOfRotation(0.0,0.9,0.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_front_view").setName("front_view").setTranslation(0.0,0.85,2.58)
        .addChild(new Viewpoint("hanim_front_viewpoint").setDescription("front").setCenterOfRotation(0.0,0.9,0.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_back_view").setName("back_view").setRotation(0.0,1.0,0.0,3.14).setTranslation(0.0,0.85,-2.58)
        .addChild(new Viewpoint("hanim_back_viewpoint").setDescription("back").setCenterOfRotation(0.0,0.9,0.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_l_side_view").setName("l_side_view").setRotation(0.0,1.0,0.0,1.5708).setTranslation(2.6,0.854,0.0)
        .addChild(new Viewpoint("hanim_l_side_viewpoint").setDescription("left side").setCenterOfRotation(0.0,0.9,0.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_Top_view").setName("Top_view").setRotation(1.0,0.0,0.0,-1.57).setTranslation(0.0,3.5,0.0)
        .addChild(new Viewpoint("hanim_Top_viewpoint").setDescription("Top").setCenterOfRotation(0.0,0.9,0.0).setPosition(0.0,0.0,0.0)))
      .addComments(" TODO move relevant HAnimSite/Viewpoint pairs into skeleton at appropriate locations, if so also revert containerField to default ")
      .addViewpoints(new HAnimSite("hanim_front_close_view").setName("front_close_view").setTranslation(0.0,0.854,1.575)
        .addChild(new Viewpoint("hanim_front_close_viewpoint").setDescription("front close").setCenterOfRotation(0.0,0.0,1.575).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_side_close_view").setName("side_close_view").setRotation(0.0,1.0,0.0,1.5708).setTranslation(1.56,0.854,0.0)
        .addChild(new Viewpoint("hanim_side_close_viewpoint").setDescription("side close").setCenterOfRotation(1.6,0.0,0.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_head_front_close_view").setName("head_front_close_view").setTranslation(0.0,1.5,1.0)
        .addChild(new Viewpoint("hanim_head_front_close_viewpoint").setDescription("head front close").setCenterOfRotation(0.0,0.0,1.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_chest_front_close_view").setName("chest_front_close_view").setTranslation(0.0,1.2,1.0)
        .addChild(new Viewpoint("hanim_chest_front_close_viewpoint").setDescription("chest front close").setCenterOfRotation(0.0,0.0,1.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_pelvis_front_close_view").setName("pelvis_front_close_view").setTranslation(0.0,0.8,1.0)
        .addChild(new Viewpoint("hanim_pelvis_front_close_viewpoint").setDescription("pelvis front close").setCenterOfRotation(0.0,0.0,1.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_knees_front_close_view").setName("knees_front_close_view").setTranslation(0.0,0.4,1.0)
        .addChild(new Viewpoint("hanim_knees_front_close_viewpoint").setDescription("knees front close").setCenterOfRotation(0.0,0.4,0.0).setPosition(0.0,0.0,0.0)))
      .addViewpoints(new HAnimSite("hanim_feet_front_close_view").setName("feet_front_close_view").setTranslation(0.0,0.0,1.0)
        .addChild(new Viewpoint("hanim_feet_front_close_viewpoint").setDescription("feet front close").setPosition(0.0,0.0,0.0)))
      .addComments(" right between the eyes, stationary position not animating except with body itself ")
      .addViewpoints(new HAnimSite("hanim_eye_level_view").setName("eye_level_view").setTranslation(0.0,1.6332,0.0502)
        .addChild(new Viewpoint("hanim_eye_level_viewpoint").setDescription("eye level looking forward").setOrientation(0.0,1.0,0.0,3.141593).setPosition(0.0,0.0,0.0)))
      .addJoints(new HAnimJoint().setUSE("hanim_humanoid_root"))
      .addJoints(new HAnimJoint().setUSE("hanim_sacroiliac"))
      .addJoints(new HAnimJoint().setUSE("hanim_vl5"))
      .addJoints(new HAnimJoint().setUSE("hanim_vl4"))
      .addJoints(new HAnimJoint().setUSE("hanim_vl3"))
      .addJoints(new HAnimJoint().setUSE("hanim_vl2"))
      .addJoints(new HAnimJoint().setUSE("hanim_vl1"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt12"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt11"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt10"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt9"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt8"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt7"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt6"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt5"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt4"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt3"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt2"))
      .addJoints(new HAnimJoint().setUSE("hanim_vt1"))
      .addJoints(new HAnimJoint().setUSE("hanim_vc7"))
      .addJoints(new HAnimJoint().setUSE("hanim_vc6"))
      .addJoints(new HAnimJoint().setUSE("hanim_vc5"))
      .addJoints(new HAnimJoint().setUSE("hanim_vc4"))
      .addJoints(new HAnimJoint().setUSE("hanim_vc3"))
      .addJoints(new HAnimJoint().setUSE("hanim_vc2"))
      .addJoints(new HAnimJoint().setUSE("hanim_vc1"))
      .addJoints(new HAnimJoint().setUSE("hanim_skullbase"))
      .addJoints(new HAnimJoint().setUSE("hanim_temporomandibular"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_acromioclavicular"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_acromioclavicular"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_ankle"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_ankle"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_elbow"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_elbow"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_eyeball_joint"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_eyeball_joint"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_eyebrow_joint"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_eyebrow_joint"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_eyelid_joint"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_eyelid_joint"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_hip"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_hip"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_index0"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_index0"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_index1"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_index1"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_index2"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_index2"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_index3"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_index3"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_knee"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_knee"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_metatarsal"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_metatarsal"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_middle0"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_middle0"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_middle1"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_middle1"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_middle2"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_middle2"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_middle3"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_middle3"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_midtarsal"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_midtarsal"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_pinky0"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_pinky0"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_pinky1"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_pinky1"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_pinky2"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_pinky2"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_pinky3"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_pinky3"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_ring0"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_ring0"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_ring1"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_ring1"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_ring2"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_ring2"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_ring3"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_ring3"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_shoulder"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_shoulder"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_sternoclavicular"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_sternoclavicular"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_subtalar"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_subtalar"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_thumb1"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_thumb1"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_thumb2"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_thumb2"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_thumb3"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_thumb3"))
      .addJoints(new HAnimJoint().setUSE("hanim_l_wrist"))
      .addJoints(new HAnimJoint().setUSE("hanim_r_wrist"))
      .addSegments(new HAnimSegment().setUSE("hanim_pelvis"))
      .addSegments(new HAnimSegment().setUSE("hanim_skull"))
      .addSegments(new HAnimSegment().setUSE("hanim_jaw"))
      .addSegments(new HAnimSegment().setUSE("hanim_c1"))
      .addSegments(new HAnimSegment().setUSE("hanim_c2"))
      .addSegments(new HAnimSegment().setUSE("hanim_c3"))
      .addSegments(new HAnimSegment().setUSE("hanim_c4"))
      .addSegments(new HAnimSegment().setUSE("hanim_c5"))
      .addSegments(new HAnimSegment().setUSE("hanim_c6"))
      .addSegments(new HAnimSegment().setUSE("hanim_c7"))
      .addSegments(new HAnimSegment().setUSE("hanim_t1"))
      .addSegments(new HAnimSegment().setUSE("hanim_t2"))
      .addSegments(new HAnimSegment().setUSE("hanim_t3"))
      .addSegments(new HAnimSegment().setUSE("hanim_t4"))
      .addSegments(new HAnimSegment().setUSE("hanim_t5"))
      .addSegments(new HAnimSegment().setUSE("hanim_t6"))
      .addSegments(new HAnimSegment().setUSE("hanim_t7"))
      .addSegments(new HAnimSegment().setUSE("hanim_t8"))
      .addSegments(new HAnimSegment().setUSE("hanim_t9"))
      .addSegments(new HAnimSegment().setUSE("hanim_t10"))
      .addSegments(new HAnimSegment().setUSE("hanim_t11"))
      .addSegments(new HAnimSegment().setUSE("hanim_t12"))
      .addSegments(new HAnimSegment().setUSE("hanim_l1"))
      .addSegments(new HAnimSegment().setUSE("hanim_l2"))
      .addSegments(new HAnimSegment().setUSE("hanim_l3"))
      .addSegments(new HAnimSegment().setUSE("hanim_l4"))
      .addSegments(new HAnimSegment().setUSE("hanim_l5"))
      .addSegments(new HAnimSegment().setUSE("hanim_sacrum"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_calf"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_calf"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_clavicle"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_clavicle"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_eyeball"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_eyeball"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_eyebrow"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_eyebrow"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_eyelid"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_eyelid"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_forearm"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_forearm"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_forefoot"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_forefoot"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_hand"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_hand"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_hindfoot"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_hindfoot"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_index_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_index_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_index_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_index_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_index_middle"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_index_middle"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_index_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_index_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_middistal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_middistal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_middle_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_middle_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_middle_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_middle_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_middle_middle"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_middle_middle"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_middle_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_middle_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_midproximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_midproximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_pinky_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_pinky_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_pinky_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_pinky_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_pinky_middle"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_pinky_middle"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_pinky_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_pinky_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_ring_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_ring_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_ring_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_ring_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_ring_middle"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_ring_middle"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_ring_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_ring_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_scapula"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_scapula"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_thigh"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_thigh"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_thumb_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_thumb_distal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_thumb_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_thumb_metacarpal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_thumb_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_thumb_proximal"))
      .addSegments(new HAnimSegment().setUSE("hanim_l_upperarm"))
      .addSegments(new HAnimSegment().setUSE("hanim_r_upperarm"))
      .addSites(new HAnimSite().setUSE("hanim_crotch_pt"))
      .addSites(new HAnimSite().setUSE("hanim_skull_tip"))
      .addSites(new HAnimSite().setUSE("hanim_sellion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_supramenton_pt"))
      .addSites(new HAnimSite().setUSE("hanim_nuchale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_suprasternale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_cervicale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_substernale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_rib10_midspine_pt"))
      .addSites(new HAnimSite().setUSE("hanim_waist_preferred_post_pt"))
      .addSites(new HAnimSite().setUSE("hanim_navel_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_acromion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_acromion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_asis_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_asis_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_axilla_ant_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_axilla_ant_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_axilla_post_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_axilla_post_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_calcaneous_post_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_calcaneous_post_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_clavicale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_clavicale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_dactylion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_dactylion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_digit2_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_digit2_pt"))
      .addViewpoints(new HAnimSite().setUSE("hanim_l_eyeball_site_view"))
      .addViewpoints(new HAnimSite().setUSE("hanim_r_eyeball_site_view"))
      .addSites(new HAnimSite().setUSE("hanim_l_femoral_lateral_epicn_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_femoral_lateral_epicn_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_femoral_medial_epicn_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_femoral_medial_epicn_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_forefoot_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_forefoot_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_gonion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_gonion_pt"))
      .addViewpoints(new HAnimSite().setUSE("hanim_l_hand_front_view"))
      .addViewpoints(new HAnimSite().setUSE("hanim_r_hand_front_view"))
      .addSites(new HAnimSite().setUSE("hanim_l_humeral_lateral_epicn_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_humeral_lateral_epicn_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_humeral_medial_epicn_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_humeral_medial_epicn_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_iliocristale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_iliocristale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_index_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_index_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_infraorbitale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_infraorbitale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_knee_crease_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_knee_crease_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_lateral_malleolus_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_lateral_malleolus_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_medial_malleolus_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_medial_malleolus_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_metacarpal_pha2_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_metacarpal_pha2_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_metacarpal_pha5_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_metacarpal_pha5_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_metatarsal_pha1_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_metatarsal_pha1_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_metatarsal_pha5_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_metatarsal_pha5_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_middle_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_middle_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_neck_base_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_neck_base_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_olecranon_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_olecranon_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_pinky_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_pinky_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_psis_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_psis_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_radial_styloid_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_radial_styloid_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_radiale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_radiale_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_rib10_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_rib10_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_ring_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_ring_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_temporomandibular_l_site_pt"))
      .addSites(new HAnimSite().setUSE("hanim_temporomandibular_r_site_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_sphyrion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_sphyrion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_thelion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_thelion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_thumb_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_thumb_distal_tip"))
      .addSites(new HAnimSite().setUSE("hanim_r_tragion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_tragion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_trochanterion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_trochanterion_pt"))
      .addSites(new HAnimSite().setUSE("hanim_l_ulnar_styloid_pt"))
      .addSites(new HAnimSite().setUSE("hanim_r_ulnar_styloid_pt"))));
    }
	// end of initialize() method

	/** The initialized model object, created within initialize() method. */
	private X3D x3dModel;

	/** 
	 * Provide a 
	 * <a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank">shallow copy</a>
	 * of the X3D model.
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html">X3D</a>
	 * @return HAnimSpecificationLOA3Invisible model
	 */
	public X3D getX3dModel()
	{	  
		return x3dModel;
	}
	   
    /** 
	 * Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.
     * @param args array of input parameters, provided as arguments
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-">X3D.handleArguments(args)</a>
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--">X3D.validationReport()</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html">CommandLine</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE">CommandLine.USAGE</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html">ConfigurationProperties</a>
     */
    public static void main(String args[])
    {
        X3D thisExampleX3dModel = new HAnimSpecificationLOA3Invisible().getX3dModel();

		boolean hasArguments = (args != null) && (args.length > 0);
		boolean validate = true; // default
		boolean argumentsLoadNewModel = false;
		String  fileName = new String();

		if (args != null)
		{
			for (String arg : args)
			{
				if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))
				{
					validate = true; // making sure
				}
				if (arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3D) ||
					arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_CLASSICVRML) ||
					arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3DB) ||
					arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_VRML97) ||
					arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_EXI) ||
					arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_GZIP) ||
					arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_ZIP) ||
					arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_HTML) ||
					arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_XHTML))
				{
					argumentsLoadNewModel = true;
					fileName = arg;
				}
			}
		}
		if      (argumentsLoadNewModel)
			System.out.println("WARNING: \"HAnimSpecificationLOA3Invisible\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");
		else if (hasArguments) // if no arguments provided, this method produces usage warning
			thisExampleX3dModel.handleArguments(args);

		if (validate)
		{
			System.out.print("Java program \"HAnimSpecificationLOA3Invisible\" self-validation test results: ");
			String validationResults = thisExampleX3dModel.validationReport();
            if (validationResults.startsWith("\n"))
                System.out.println();
			System.out.println(validationResults.trim());
		}
    }
}
