<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 4.0//EN" "https://www.web3d.org/specifications/x3d-4.0.dtd">
<X3D profile='Immersive'  version='4.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-4.0.xsd ' >
<head>
<meta name='titlecontent=' DesignPatternsApparelMedicalSkinLayers.x3d '/>
<meta name='descriptioncontent='Design patterns for skin and apparel using HAnim2 standard in X3D4'/>
<meta name='creatorcontent='Don Brutzman'/>
<meta name='creatorcontent='Joe D. Williams'/>
<meta name='creatorcontent='Dick Puk'/>
<meta name='createdcontent='23 December 2022'/>
<meta name='modifiedcontent='2 July 2023'/>
<meta name='referencecontent=' DesignPatternsApparelVariations.txt '/>
<meta name='referencecontent=' HAnim2 Part 1, HAnim architecture, 4.3 Humanoid object https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#HumanoidObject '/>
<meta name='referencecontent=' HAnim2 Part 1, HAnim architecture, E.4 Multiple humanoids per file https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/Guidelines.html#MultipleHumanoidsPerFile '/>
<meta name='referencecontent=' X3D4 Architecture, clause 26 HAnim component, 26.3.2 HAnimHumanoid https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/hanim.html#HAnimHumanoid '/>
<meta name=' warning content=' Under development. This template example does not produce renderable HAnim models. '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/DesignPatternsApparelMedicalSkinLayers.x3d '/>
<meta name='generatorcontent='X3D-Edit 4.0, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!-- -->
<Scene>
<WorldInfo title='HAnimHumanoid skin design patterns for apparel, medical'/>
<Background skyColor='0 0.6 0.6'/>
<Group DEF='MultipleHumanoids'>
<MetadataString name='HAnimArchitecturereference=' https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/Guidelines.html#MultipleHumanoidsPerFilevalue='"E.4 Multiple humanoids per file"'/>
<!-- ============================== -->
<HAnimHumanoid DEF='a_SimpleSkeletonname='SimpleSkeleton'>
<HAnimJoint containerField='skeletonname='humanoid_rootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment name='sacrum'>
<Shape DEF='JointVisualization'/>
<Shape DEF='SegmentVisualization'/>
<HAnimSite DEF='a_feature01_tipname='feature01_tip'>
<Shape DEF='SiteVisualization'/>
</HAnimSite>
</HAnimSegment>
</HAnimJoint>
</HAnimHumanoid>
<!-- ============================== -->
<HAnimHumanoid DEF='b_SimpleSkeletonMeshname='SimpleSkeletonMesh'>
<HAnimJoint containerField='skeletonname='humanoid_rootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment name='sacrum'>
<Shape>
<IndexedFaceSet DEF='SegmentBoneMesh'/>
</Shape>
</HAnimSegment>
</HAnimJoint>
</HAnimHumanoid>
<!-- ============================== -->
<HAnimHumanoid DEF='c_SkinIndexedGeometryname='SkinIndexedGeometry'>
<HAnimJoint containerField='skeletonname='humanoid_rootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment name='sacrum'/>
</HAnimJoint>
<IndexedFaceSet DEF='SkinMeshIFScontainerField='skin'/>
</HAnimHumanoid>
<!-- ============================== -->
<HAnimHumanoid DEF='d_SkinShapeIndexedGeometryname='SkinShapeIndexedGeometry'>
<HAnimJoint containerField='skeletonname='humanoid_rootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment name='sacrum'/>
</HAnimJoint>
<Shape containerField='skin'>
<IndexedFaceSet USE=' SkinMeshIFS'/>
</Shape>
</HAnimHumanoid>
<!-- ============================== -->
<HAnimHumanoid DEF='e_SkinSwitchShapeIndexedGeometryname='SkinSwitchShapeIndexedGeometry'>
<HAnimJoint containerField='skeletonname='humanoid_rootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment name='sacrum'/>
</HAnimJoint>
<!-- TODO show X3D4.0 addition of <Switch DEF='AlternativeSkins' containerField='skin'> -->
<Shape containerField='skin'>
<IndexedFaceSet DEF='IndexedSkinMeshIFS'>
<Coordinate DEF='SkinMeshCoordinate'/>
</IndexedFaceSet>
</Shape>
</HAnimHumanoid>
<!-- similarly for LOD -->
<!-- ============================== -->
<HAnimHumanoid DEF='f_SynthesizedSkinShapeIndexedTwoPartGeometryname='SynthesizedSkinShapeIndexedTwoPartGeometry'>
<HAnimJoint containerField='skeletonname='humanoid_rootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment name='sacrum'/>
</HAnimJoint>
<Shape containerField='skin'>
<IndexedFaceSet DEF='TwoPartIndexedSkinMesh'>
<Coordinate DEF='TwoPartSkinMesh'/>
</IndexedFaceSet>
</Shape>
</HAnimHumanoid>
<!-- ============================== -->
<HAnimHumanoid DEF='g_ApparelSkinIndexedGeometryMultipleShapesname='ApparelSkinIndexedGeometryMultipleShapes'>
<HAnimJoint containerField='skeletonname='humanoid_rootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment name='sacrum'/>
</HAnimJoint>
<Shape containerField='skin'/>
<!-- allow multiple Shape nodes with containerField='apparel', one for each layer of clothing -->
<!-- TODO proposed for X3D4.1 <Shape containerField='apparel'/> -->
</HAnimHumanoid>
<!-- ============================== -->
<HAnimHumanoid DEF='h_AnatomySkinIndexedGeometryMultipleShapesname='AnatomySkinIndexedGeometryMultipleShapes'>
<HAnimJoint containerField='skeletonname='humanoid_rootulimit='0 0 0llimit='0 0 0'>
<HAnimSegment name='sacrum'/>
</HAnimJoint>
<!-- allow multiple Shape nodes with containerField='skin', one for each layer of skin -->
<Shape containerField='skin'/>
</HAnimHumanoid>
<!-- ============================== -->
</Group>
<Viewpoint DEF='ViewHelpTextdescription='Select text to see websiteposition='0 0 12'/>
<!-- Selectable Text design pattern has transparent Box and TouchSensor description as a tooltip -->
<Anchor description='DesignPatternsApparelMedicalSkinLayers.x3d explores potential apparel approachesparameter='"target=blank"'
  url=' "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/DesignPatternsApparelMedicalSkinLayersIndex.html" ' >
<Shape>
<!-- TODO adjust Text string and Box size, then set Material transparency='1' -->
<Text string='"DesignPatternsApparelMedicalSkinLayers.x3d" "" "explores potential apparel approaches"'>
<FontStyle family='"SANS"justify='"MIDDLE" "MIDDLE"size='0.6style='BOLD'/>
</Text>
<Appearance>
<Material diffuseColor='0.9 0.9 0.9'/>
</Appearance>
</Shape>
<Shape>
<!-- Author TODO: to adjust transparent Box as text-selection assist, set width and height to match size, then set transparency='1' to make invisible. -->
<Box size='11 2 .001'/>
<Appearance>
<Material transparency='1'/>
</Appearance>
</Shape>
</Anchor>
</Scene>
</X3D>
<!--

Visualization reports for HAnimHumanoid models: SimpleSkeleton HAnimHumanoid Report, SimpleSkeletonMesh HAnimHumanoid Report, SkinIndexedGeometry HAnimHumanoid Report, SkinShapeIndexedGeometry HAnimHumanoid Report, SkinSwitchShapeIndexedGeometry HAnimHumanoid Report, SynthesizedSkinShapeIndexedTwoPartGeometry HAnimHumanoid Report, ApparelSkinIndexedGeometryMultipleShapes HAnimHumanoid Report, AnatomySkinIndexedGeometryMultipleShapes HAnimHumanoid Report
to top <!-- Index for DEF nodes: a_feature01_tip, a_SimpleSkeleton, b_SimpleSkeletonMesh, c_SkinIndexedGeometry, d_SkinShapeIndexedGeometry, e_SkinSwitchShapeIndexedGeometry, f_SynthesizedSkinShapeIndexedTwoPartGeometry, g_ApparelSkinIndexedGeometryMultipleShapes, h_AnatomySkinIndexedGeometryMultipleShapes, IndexedSkinMeshIFS, JointVisualization, MultipleHumanoids, SegmentBoneMesh, SegmentVisualization, SiteVisualization, SkinMeshCoordinate, SkinMeshIFS, TwoPartIndexedSkinMesh, TwoPartSkinMesh, ViewHelpText

Index for Viewpoint node: ViewHelpText
-->
<!--

🔖 Visualization report for HAnimHumanoid model a_SimpleSkeleton

=============================================================================================================================
HAnimHumanoid a_SimpleSkeleton skeleton holds X3D4 HAnim2 joints/segments/sites.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (1), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (1), @ skin nodes (0)
=============================================================================================================================
HAnimHumanoid DEF='a_SimpleSkeleton name='SimpleSkeleton' loa='-1'
skeleton
  humanoid_root : sacrum ^ feature01_tip

^ HAnimSegment sacrum holds 1 HAnimSite node: feature01_tip

=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

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

<HAnimHumanoid DEF='a_SimpleSkeleton' name='SimpleSkeleton' version ='2.0' >
<!-- ============================== -->

</HAnimHumanoid>

🔖 Visualization report for HAnimHumanoid model b_SimpleSkeletonMesh

=============================================================================================================================
HAnimHumanoid b_SimpleSkeletonMesh skeleton holds X3D4 HAnim2 joints/segments.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (1), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (0)
=============================================================================================================================
HAnimHumanoid DEF='b_SimpleSkeletonMesh name='SimpleSkeletonMesh' loa='-1'
skeleton
  humanoid_root : sacrum


=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

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

<HAnimHumanoid DEF='b_SimpleSkeletonMesh' name='SimpleSkeletonMesh' version ='2.0' >
<!-- ============================== -->
<!-- ============================== -->

</HAnimHumanoid>

🔖 Visualization report for HAnimHumanoid model c_SkinIndexedGeometry

=============================================================================================================================
HAnimHumanoid c_SkinIndexedGeometry skeleton holds X3D4 HAnim2 joints/segments and a skin node.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (1), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (1)
=============================================================================================================================
HAnimHumanoid DEF='c_SkinIndexedGeometry name='SkinIndexedGeometry' loa='-1'
skin IndexedFaceSet DEF='SkinMeshIFS'
skeleton
  humanoid_root : sacrum


@ HAnimHumanoid SkinIndexedGeometry holds 1 containerField='skin' node: IndexedFaceSet DEF='SkinMeshIFS'
=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

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

<HAnimHumanoid DEF='c_SkinIndexedGeometry' name='SkinIndexedGeometry' version ='2.0' >
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->

</HAnimHumanoid>

🔖 Visualization report for HAnimHumanoid model d_SkinShapeIndexedGeometry

=============================================================================================================================
HAnimHumanoid d_SkinShapeIndexedGeometry skeleton holds X3D4 HAnim2 joints/segments and a skin node.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (1), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (1)
=============================================================================================================================
HAnimHumanoid DEF='d_SkinShapeIndexedGeometry name='SkinShapeIndexedGeometry' loa='-1'
skin Shape
skeleton
  humanoid_root : sacrum


@ HAnimHumanoid SkinShapeIndexedGeometry holds 1 containerField='skin' node: 
=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

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

<HAnimHumanoid DEF='d_SkinShapeIndexedGeometry' name='SkinShapeIndexedGeometry' version ='2.0' >
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->

</HAnimHumanoid>

🔖 Visualization report for HAnimHumanoid model e_SkinSwitchShapeIndexedGeometry

=============================================================================================================================
HAnimHumanoid e_SkinSwitchShapeIndexedGeometry skeleton holds X3D4 HAnim2 joints/segments and a skin node.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (1), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (1)
=============================================================================================================================
HAnimHumanoid DEF='e_SkinSwitchShapeIndexedGeometry name='SkinSwitchShapeIndexedGeometry' loa='-1'
skin Shape
skeleton
  humanoid_root : sacrum


@ HAnimHumanoid SkinSwitchShapeIndexedGeometry holds 1 containerField='skin' node: 
=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

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

<HAnimHumanoid DEF='e_SkinSwitchShapeIndexedGeometry' name='SkinSwitchShapeIndexedGeometry' version ='2.0' >
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->

</HAnimHumanoid>

🔖 Visualization report for HAnimHumanoid model f_SynthesizedSkinShapeIndexedTwoPartGeometry

=============================================================================================================================
HAnimHumanoid f_SynthesizedSkinShapeIndexedTwoPartGeometry skeleton holds X3D4 HAnim2 joints/segments and a skin node.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (1), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (1)
=============================================================================================================================
HAnimHumanoid DEF='f_SynthesizedSkinShapeIndexedTwoPartGeometry name='SynthesizedSkinShapeIndexedTwoPartGeometry' loa='-1'
skin Shape
skeleton
  humanoid_root : sacrum


@ HAnimHumanoid SynthesizedSkinShapeIndexedTwoPartGeometry holds 1 containerField='skin' node: 
=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

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

<HAnimHumanoid DEF='f_SynthesizedSkinShapeIndexedTwoPartGeometry' name='SynthesizedSkinShapeIndexedTwoPartGeometry' version ='2.0' >
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- similarly for LOD -->
<!-- ============================== -->

</HAnimHumanoid>

🔖 Visualization report for HAnimHumanoid model g_ApparelSkinIndexedGeometryMultipleShapes

=============================================================================================================================
HAnimHumanoid g_ApparelSkinIndexedGeometryMultipleShapes skeleton holds X3D4 HAnim2 joints/segments and a skin node.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (1), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (1)
=============================================================================================================================
HAnimHumanoid DEF='g_ApparelSkinIndexedGeometryMultipleShapes name='ApparelSkinIndexedGeometryMultipleShapes' loa='-1'
skin Shape
skeleton
  humanoid_root : sacrum


@ HAnimHumanoid ApparelSkinIndexedGeometryMultipleShapes holds 1 containerField='skin' node: 
=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

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

<HAnimHumanoid DEF='g_ApparelSkinIndexedGeometryMultipleShapes' name='ApparelSkinIndexedGeometryMultipleShapes' version ='2.0' >
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- similarly for LOD -->
<!-- ============================== -->
<!-- ============================== -->

</HAnimHumanoid>

🔖 Visualization report for HAnimHumanoid model h_AnatomySkinIndexedGeometryMultipleShapes

=============================================================================================================================
HAnimHumanoid h_AnatomySkinIndexedGeometryMultipleShapes skeleton holds X3D4 HAnim2 joints/segments and a skin node.
  [key] jointname : segmentname ^ sitename
[nodes] HAnimJoint (1), : HAnimSegment (1), % HAnimDisplacer (0), $ HAnimMotion (0), ^ HAnimSite (0), @ skin nodes (1)
=============================================================================================================================
HAnimHumanoid DEF='h_AnatomySkinIndexedGeometryMultipleShapes name='AnatomySkinIndexedGeometryMultipleShapes' loa='-1'
skin Shape
skeleton
  humanoid_root : sacrum


@ HAnimHumanoid AnatomySkinIndexedGeometryMultipleShapes holds 1 containerField='skin' node: 
=============================================================================================================================

The following inset decorates the original HAnimHumanoid skeleton with additional visualization shapes. Authors can copy/paste this version to assist in visually diagnosing skeleton correctness.

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

<HAnimHumanoid DEF='h_AnatomySkinIndexedGeometryMultipleShapes' name='AnatomySkinIndexedGeometryMultipleShapes' version ='2.0' >
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->
<!-- similarly for LOD -->
<!-- ============================== -->
<!-- ============================== -->
<!-- ============================== -->

</HAnimHumanoid>
-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/DesignPatternsApparelMedicalSkinLayersIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/DesignPatternsApparelMedicalSkinLayers.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
-->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->