<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package HumanoidAnimation.Legacy;

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 metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * &lt;p&gt; 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. &lt;/p&gt;
 &lt;p&gt; Related links:  source HAnim1SpecificationLOA3Invisible.java, &lt;a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank"&gt;X3D Resources&lt;/a&gt;, &lt;a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank"&gt;X3D Scene Authoring Hints&lt;/a&gt;, and &lt;a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank"&gt;X3D Tooltips&lt;/a&gt;. &lt;/p&gt;
	&lt;table style="color:black; border:0px solid; border-spacing:10px 0px;"&gt;
        &lt;caption&gt;Scene Meta Information&lt;/caption&gt;
		&lt;tr style="background-color:silver; border-color:silver;"&gt;
			&lt;td style="text-align:center; padding:10px 0px;"&gt;&lt;i&gt;meta tags&lt;/i&gt;&lt;/td&gt;
			&lt;td style="text-align:left;   padding:10px 0px;"&gt;HumanoidAnimation.Legacy.HAnim1SpecificationLOA3Invisible&amp;nbsp; Document Metadata &lt;/td&gt;
		&lt;/tr&gt;

		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; title &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/HAnim1SpecificationLOA3Invisible.x3d"&gt;HAnim1SpecificationLOA3Invisible.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; description &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; 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. &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/files/specifications/19774/V1.0/HAnim/BodyDimensionsAndLOAs.html#LOA3ExampleSourceWithDiamonds" target="_blank"&gt;https://www.web3d.org/files/specifications/19774/V1.0/HAnim/BodyDimensionsAndLOAs.html#LOA3ExampleSourceWithDiamonds&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; created &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; 24 April 2013 &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; modified &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; 2 July 2023 &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="color:red"&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; error &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; Legacy model, not valid as X3D4 HAnim version 2.0 since HAnim version 1.0 has significant differences and is no longer directly supported &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; creator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; Matthew T. Beitler, Joe D. Williams, Don Brutzman &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/HAnim1SpecificationLOA3Illustrated.x3d"&gt;HAnim1SpecificationLOA3Illustrated.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/HAnim1SpecificationLOA3Animation.x3d"&gt;HAnim1SpecificationLOA3Animation.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; HAnimSpecificationExampleChangeLog.txt &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; Image &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/images/BonesAllSkeletonFrontViewLOA1.png"&gt;images/BonesAllSkeletonFrontViewLOA1.png&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; Image &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/images/BonesAllSkeletonFrontViewLOA2.png"&gt;images/BonesAllSkeletonFrontViewLOA2.png&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; Image &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/images/BonesAllSkeletonFrontViewLOA3.png"&gt;images/BonesAllSkeletonFrontViewLOA3.png&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; TODO &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; move relevant HAnimSite/Viewpoint pairs into skeleton at appropriate locations &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; TODO &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; insert MetadataInteger nodes indicating LOA for each Joint and Segment &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; Norman Badler et al., ANTHROPOMETRY FOR COMPUTER GRAPHICS HUMAN FIGURES, University of Pennsylvania, 1989. &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="http://www.cis.upenn.edu/~badler/anthro/89-71.ps" target="_blank"&gt;http://www.cis.upenn.edu/~badler/anthro/89-71.ps&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/tables/AnthropometryForComputerGraphicsHumanFigures89-71.pdf"&gt;tables/AnthropometryForComputerGraphicsHumanFigures89-71.pdf&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; translator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; Don Brutzman and Joe Williams &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; generator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; BS Contact Geo 8.001, &lt;a href="http://www.bitmanagement.de/en/products/interactive-3d-clients/bs-contact-geo" target="_blank"&gt;http://www.bitmanagement.de/en/products/interactive-3d-clients/bs-contact-geo&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; originals/LOA3ExampleSourceWithDiamondsOriginal.wrl &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/originals/LOA3ExampleSourceWithDiamondsOriginal.x3d"&gt;originals/LOA3ExampleSourceWithDiamondsOriginal.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/originals/LOA3ExampleSourceWithDiamondsOriginalBsContactExport.x3d"&gt;originals/LOA3ExampleSourceWithDiamondsOriginalBsContactExport.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; HAnim Specification Table 4.4 - Face Joint object names, &lt;a href="https://www.web3d.org/files/specifications/19774/V1.0/HAnim/concepts.html#FaceJointObjectNames" target="_blank"&gt;https://www.web3d.org/files/specifications/19774/V1.0/HAnim/concepts.html#FaceJointObjectNames&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; generator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; X3D-Edit 3.3, &lt;a href="https://savage.nps.edu/X3D-Edit" target="_blank"&gt;https://savage.nps.edu/X3D-Edit&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; identifier &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/HAnim1SpecificationLOA3Invisible.x3d" target="_blank"&gt;https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/HAnim1SpecificationLOA3Invisible.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; license &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/../license.html"&gt;../license.html&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color:silver; border-color:silver;"&gt;
			&lt;td style="text-align:center;" colspan="2"&gt;  &amp;nbsp; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;

	&lt;p&gt;
		This program uses the
		&lt;a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank"&gt;X3D Java Scene Access Interface Library (X3DJSAIL)&lt;/a&gt;.
		It has been produced using the 
		&lt;a href="https://www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank"&gt;X3dToJava.xslt&lt;/a&gt;
		stylesheet
	       (&lt;a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank"&gt;version control&lt;/a&gt;)
                which is used to create Java source code from an original &lt;code&gt;.x3d&lt;/code&gt; model.
	&lt;/p&gt;

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

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

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_IMMERSIVE).setVersion(X3D.VERSION_3_3)
  .setHead(new head()
    .addComponent(new component().setName("H-Anim").setLevel(1))
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("HAnim1SpecificationLOA3Invisible.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("2 July 2023"))
    .addMeta(new meta().setName(meta.NAME_ERROR      ).setContent("Legacy model, not valid as X3D4 HAnim version 2.0 since HAnim version 1.0 has significant differences and is no longer directly supported"))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Matthew T. Beitler, Joe D. Williams, Don Brutzman"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("HAnim1SpecificationLOA3Illustrated.x3d"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("HAnim1SpecificationLOA3Animation.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/Legacy/HAnim1SpecificationLOA3Invisible.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=1.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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
        .addChild(new HAnimSegment("hanim_sacrum").setName("sacrum"))
        .addChild(new HAnimJoint("hanim_sacroiliac").setName("sacroiliac").setCenter(0.0,0.9149,0.0016).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
              .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                  .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                    .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
              .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                  .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                    .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
            .addChild(new HAnimSegment("hanim_l4").setName("l4"))
            .addChild(new HAnimJoint("hanim_vl3").setName("vl3").setCenter(0.0041,1.1276,-0.0796).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
              .addChild(new HAnimSegment("hanim_l3").setName("l3"))
              .addChild(new HAnimJoint("hanim_vl2").setName("vl2").setCenter(0.0045,1.1546,-0.08).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                  .addChild(new HAnimSegment("hanim_l1").setName("l1"))
                  .addChild(new HAnimJoint("hanim_vt12").setName("vt12").setCenter(0.0051,1.2278,-0.0808).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                    .addChild(new HAnimSegment("hanim_t12").setName("t12"))
                    .addChild(new HAnimJoint("hanim_vt11").setName("vt11").setCenter(0.0053,1.2679,-0.081).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                      .addChild(new HAnimSegment("hanim_t11").setName("t11"))
                      .addChild(new HAnimJoint("hanim_vt10").setName("vt10").setCenter(0.0056,1.2848,-0.0822).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                            .addChild(new HAnimSegment("hanim_t8").setName("t8"))
                            .addChild(new HAnimJoint("hanim_vt7").setName("vt7").setCenter(0.0058,1.3625,-0.0833).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                              .addChild(new HAnimSegment("hanim_t7").setName("t7"))
                              .addChild(new HAnimJoint("hanim_vt6").setName("vt6").setCenter(0.0059,1.3866,-0.08).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                .addChild(new HAnimSegment("hanim_t6").setName("t6"))
                                .addChild(new HAnimJoint("hanim_vt5").setName("vt5").setCenter(0.006,1.4102,-0.0745).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                  .addChild(new HAnimSegment("hanim_t5").setName("t5"))
                                  .addChild(new HAnimJoint("hanim_vt4").setName("vt4").setCenter(0.0061,1.432,-0.0675).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                    .addChild(new HAnimSegment("hanim_t4").setName("t4"))
                                    .addChild(new HAnimJoint("hanim_vt3").setName("vt3").setCenter(0.0062,1.4583,-0.057).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                      .addChild(new HAnimSegment("hanim_t3").setName("t3"))
                                      .addChild(new HAnimJoint("hanim_vt2").setName("vt2").setCenter(0.0063,1.4761,-0.0484).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                        .addChild(new HAnimSegment("hanim_t2").setName("t2"))
                                        .addChild(new HAnimJoint("hanim_vt1").setName("vt1").setCenter(0.0065,1.4951,-0.0387).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                              .addChild(new HAnimSegment("hanim_c6").setName("c6"))
                                              .addChild(new HAnimJoint("hanim_vc5").setName("vc5").setCenter(0.0066,1.552,-0.0082).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                .addChild(new HAnimSegment("hanim_c5").setName("c5"))
                                                .addChild(new HAnimJoint("hanim_vc4").setName("vc4").setCenter(0.0066,1.5662,-0.0084).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                  .addChild(new HAnimSegment("hanim_c4").setName("c4"))
                                                  .addChild(new HAnimJoint("hanim_vc3").setName("vc3").setCenter(0.0066,1.58,-0.0103).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                    .addChild(new HAnimSegment("hanim_c3").setName("c3"))
                                                    .addChild(new HAnimJoint("hanim_vc2").setName("vc2").setCenter(0.0066,1.5928,-0.0103).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .addChild(new HAnimSegment("hanim_c2").setName("c2"))
                                                      .addChild(new HAnimJoint("hanim_vc1").setName("vc1").setCenter(0.0066,1.6144,-0.0034).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .addChild(new HAnimSegment("hanim_c1").setName("c1"))
                                                        .addChild(new HAnimJoint("hanim_skullbase").setName("skullbase").setCenter(0.0044,1.6209,0.0236).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .addChild(new HAnimSegment("hanim_r_eyebrow").setName("r_eyebrow")))
                                                          .addChild(new HAnimJoint("hanim_temporomandibular").setName("temporomandibular").setCenter(0.0,1.63,0.015).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                              .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                  .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                    .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                              .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                  .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                    .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                      .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                        .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                          .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).setLlimit(new double[] {0.0,0.0,0.0}).setUlimit(new double[] {0.0,0.0,0.0})
                                                            .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"))));
            }
            catch (Exception ex)
            {       
                System.err.println ("*** Further hints on X3DJSAIL errors and exceptions at");
                System.err.println ("*** https://www.web3d.org/specifications/java/X3DJSAIL.html");
                throw (ex);
            }
	}
	// end of initialize() method

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

	/** 
	 * Provide a 
	 * &lt;a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank"&gt;shallow copy&lt;/a&gt;
	 * of the X3D model.
	 * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html"&gt;X3D&lt;/a&gt;
	 * @return HAnim1SpecificationLOA3Invisible 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 &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-"&gt;X3D.handleArguments(args)&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--"&gt;X3D.validationReport()&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html"&gt;CommandLine&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE"&gt;CommandLine.USAGE&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html"&gt;ConfigurationProperties&lt;/a&gt;
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new HAnim1SpecificationLOA3Invisible().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) &amp;&amp; (args.length &gt; 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: \"HumanoidAnimation.Legacy.HAnim1SpecificationLOA3Invisible\" 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.println("--- TODO fix duplicated outputs ---"); // omit when duplicated outputs problem is solved/refactored
		String validationResults = thisExampleX3dModel.validationReport();
            //  System.out.println("-----------------------------------"); // omit when duplicated outputs problem is solved/refactored
                System.out.print("HumanoidAnimation.Legacy.HAnim1SpecificationLOA3Invisible self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

                // experimental: test X3DJSAIL output files
                // Legacy/HAnim1SpecificationLOA3Invisible_JavaExport.* file validation is checked when building X3D Example Archives
                String filenameX3D  = "Legacy/HAnim1SpecificationLOA3Invisible_JavaExport.x3d"; 
                String filenameX3DV = "Legacy/HAnim1SpecificationLOA3Invisible_JavaExport.x3dv"; 
                String filenameJSON = "Legacy/HAnim1SpecificationLOA3Invisible_JavaExport.json";
                thisExampleX3dModel.toFileX3D        (filenameX3D);
                thisExampleX3dModel.toFileClassicVRML(filenameX3DV);
// TODO         thisExampleX3dModel.toFileJSON       (filenameJSON);
        }
    }
}
</pre></body></html>