<?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 content='DesignPatternsApparelMedicalSkinLayers.x3d' name='title'/>
    <meta content='Design patterns for skin and apparel using HAnim2 standard in X3D4' name='description'/>
    <meta content='Don Brutzman' name='creator'/>
    <meta content='Joe D. Williams' name='creator'/>
    <meta content='Dick Puk' name='creator'/>
    <meta content='23 December 2022' name='created'/>
    <meta content='18 May 2024' name='modified'/>
    <meta content='DesignPatternsApparelVariations.txt' name='reference'/>
    <meta content='HAnim2 Part 1, HAnim architecture, 4.3 Humanoid object https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#HumanoidObject' name='reference'/>
    <meta content='HAnim2 Part 1, HAnim architecture, E.4 Multiple humanoids per file https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/Guidelines.html#MultipleHumanoidsPerFile' name='reference'/>
    <meta content='X3D4 Architecture, clause 26 HAnim component, 26.3.2 HAnimHumanoid https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimHumanoid' name='reference'/>
    <meta content='Under development. This template example does not produce renderable HAnim models.' name='warning'/>
    <meta content='https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/DesignPatternsApparelMedicalSkinLayers.x3d' name='identifier'/>
    <meta content='X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo title='HAnimHumanoid skin design patterns for apparel, medical'/>
    <Background skyColor='0 0.6 0.6'/>
    <Group DEF='MultipleHumanoids'>
      <MetadataString name='HAnimArchitecture' reference='https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/Guidelines.html#MultipleHumanoidsPerFile' value='"E.4 Multiple humanoids per file"'/>
      <!-- ============================== -->
      <HAnimHumanoid DEF='a_SimpleSkeleton' name='SimpleSkeleton' version='2.0'>
        <HAnimJoint containerField='skeleton' name='humanoid_root'>
          <HAnimSegment name='sacrum'>
            <Shape DEF='JointVisualization'/>
            <Shape DEF='SegmentVisualization'/>
            <HAnimSite DEF='a_feature01_tip' name='feature01_tip'>
              <Shape DEF='SiteVisualization'/>
            </HAnimSite>
          </HAnimSegment>
        </HAnimJoint>
      </HAnimHumanoid>
      <!-- ============================== -->
      <HAnimHumanoid DEF='b_SimpleSkeletonMesh' name='SimpleSkeletonMesh' version='2.0'>
        <HAnimJoint containerField='skeleton' name='humanoid_root'>
          <HAnimSegment name='sacrum'>
            <Shape>
              <IndexedFaceSet DEF='SegmentBoneMesh'/>
            </Shape>
          </HAnimSegment>
        </HAnimJoint>
      </HAnimHumanoid>
      <!-- ============================== -->
      <HAnimHumanoid DEF='c_SkinIndexedGeometry' name='SkinIndexedGeometry' version='2.0'>
        <HAnimJoint containerField='skeleton' name='humanoid_root'>
          <HAnimSegment name='sacrum'/>
        </HAnimJoint>
        <IndexedFaceSet DEF='SkinMeshIFS' containerField='skin'/>
      </HAnimHumanoid>
      <!-- ============================== -->
      <HAnimHumanoid DEF='d_SkinShapeIndexedGeometry' name='SkinShapeIndexedGeometry' version='2.0'>
        <HAnimJoint containerField='skeleton' name='humanoid_root'>
          <HAnimSegment name='sacrum'/>
        </HAnimJoint>
        <Shape containerField='skin'>
          <IndexedFaceSet USE='SkinMeshIFS'/>
        </Shape>
      </HAnimHumanoid>
      <!-- ============================== -->
      <HAnimHumanoid DEF='e_SkinSwitchShapeIndexedGeometry' name='SkinSwitchShapeIndexedGeometry' version='2.0'>
        <HAnimJoint containerField='skeleton' name='humanoid_root'>
          <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_SynthesizedSkinShapeIndexedTwoPartGeometry' name='SynthesizedSkinShapeIndexedTwoPartGeometry' version='2.0'>
        <HAnimJoint containerField='skeleton' name='humanoid_root'>
          <HAnimSegment name='sacrum'/>
        </HAnimJoint>
        <Shape containerField='skin'>
          <IndexedFaceSet DEF='TwoPartIndexedSkinMesh'>
            <Coordinate DEF='TwoPartSkinMesh'/>
          </IndexedFaceSet>
        </Shape>
      </HAnimHumanoid>
      <!-- ============================== -->
      <HAnimHumanoid DEF='g_ApparelSkinIndexedGeometryMultipleShapes' name='ApparelSkinIndexedGeometryMultipleShapes' version='2.0'>
        <HAnimJoint containerField='skeleton' name='humanoid_root'>
          <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_AnatomySkinIndexedGeometryMultipleShapes' name='AnatomySkinIndexedGeometryMultipleShapes' version='2.0'>
        <HAnimJoint containerField='skeleton' name='humanoid_root'>
          <HAnimSegment name='sacrum'/>
        </HAnimJoint>
        <!-- allow multiple Shape nodes with containerField='skin', one for each layer of skin -->
        <Shape containerField='skin'/>
      </HAnimHumanoid>
      <!-- ============================== -->
    </Group>
    <Viewpoint DEF='ViewHelpText' description='Select text to see website' position='0 0 12'/>
    <!-- Selectable Text design pattern has transparent Box and TouchSensor description as a tooltip -->
    <Anchor description='DesignPatternsApparelMedicalSkinLayers.x3d explores potential apparel approaches' parameter='"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 solid='false' string='"DesignPatternsApparelMedicalSkinLayers.x3d" "" "explores potential apparel approaches"'>
          <FontStyle family='"SANS"' justify='"MIDDLE" "MIDDLE"' size='0.6' style='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>