<?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='Interactive' 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='spine.x3d' name='title'/>
    <meta content='The spinal column, also known as the vertebral column, spine or backbone, is the part of the axial skeleton in humans and othervertebrate animals. The spinal column is a segmented column of vertebrae that surrounds and protects the spinal cord. The vertebrae are separated by intervertebral discs in a series of cartilaginous joints.' name='description'/>
    <meta content='Don Brutzman' name='creator'/>
    <meta content='4 April 2026' name='created'/>
    <meta content='4 April 2026' name='modified'/>
    <meta content='https://en.wikipedia.org/wiki/Spinal_column' name='reference'/>
    <meta content='X3D 4.0 Architecture, ISO/IEC 19775-1:202x draft version 4.1, clause 4 Concepts, section 4.11.6.6 LOA‑5 hierarchy' name='specificationSection'/>
    <meta content='https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#Hierarchy5' name='specificationUrl'/>
    <meta content='X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='X3D Tidy, https://www.web3d.org/x3d/stylesheets/X3dTidy.html' name='generator'/>
    <meta content='https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Bones/spine.x3d' name='identifier'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo title='spine.x3d'/>
    <NavigationInfo type='"EXAMINE"'/>
    <Background skyColor='0.858824 1 0.94902'/>
    <!-- user hover lights bone and reveals description, user selection/deselection temporarily binds/unbinds close-up hidden viewpoint -->
    <TouchSensor DEF='UserTouchSensor' description='spine, vertebrae and cartilage'/>
    <Transform DEF='SkullLocalOffset' center='0 1.35 0' translation='0 1.35 0'>
      <ViewpointGroup DEF='ViewpointGroup_spine' description='spine model' retainUserOffsets='true'>
        <Viewpoint DEF='ViewFromFront' description='spine face' nearDistance='0.001' position='0 0 1.1' retainUserOffsets='true'/>
        <Viewpoint DEF='ViewFromBehind' description='spine from left side' nearDistance='0.001' orientation='0 1 0 1.5708' position='1.1 0 0' retainUserOffsets='true'/>
        <Viewpoint DEF='ViewFromLeft' description='spine from behind' nearDistance='0.001' orientation='0 1 0 3.1416' position='0 0 -1.1' retainUserOffsets='true'/>
        <Viewpoint DEF='ViewFromRight' description='spine from right side' nearDistance='0.001' orientation='0 1 0 -1.5708' position='-1.1 0 0' retainUserOffsets='true'/>
        <Viewpoint DEF='ViewFromAbove' description='spine from above' nearDistance='0.001' orientation='1 0 0 -1.5708' position='0 0.8 0' retainUserOffsets='true'/>
        <Viewpoint DEF='ViewFromBelow' description='spine from below' nearDistance='0.001' orientation='1 0 0 1.5708' position='0 -0.8 0' retainUserOffsets='true'/>
      </ViewpointGroup>
      <!-- nevertheless, TouchSensor interfaces from each of the Inline models are closer, taking priority and overriding this interface -->
      <Viewpoint DEF='HiddenViewpoint' nearDistance='0.001' position='0 0 0.2' retainUserOffsets='true'>
        <NavigationInfo containerField='navigationInfo' transitionType='"ANIMATE"' type='"EXAMINE"'/>
      </Viewpoint>
      <ROUTE fromField='isActive' fromNode='UserTouchSensor' toField='set_bind' toNode='HiddenViewpoint'/>
      <DirectionalLight DEF='HiddenLight' ambientIntensity='1' color='0.1 0.1 1' on='false'/>
      <ROUTE fromField='isOver' fromNode='UserTouchSensor' toField='on' toNode='HiddenLight'/>
    </Transform>
    <!-- order is from base of spine to skull, matching LOA-5 hierarch Figure 4.16 -->
    <!-- sacrum.x3d handled separately -->
    <Inline DEF='l5' url='"l5.x3d"'/>
    <Inline DEF='l5disc' url='"l5disc.x3d"'/>
    <Inline DEF='l4' url='"l4.x3d"'/>
    <Inline DEF='l4disc' url='"l4disc.x3d"'/>
    <Inline DEF='l3' url='"l3.x3d"'/>
    <Inline DEF='l3disc' url='"l3disc.x3d"'/>
    <Inline DEF='l2' url='"l2.x3d"'/>
    <Inline DEF='l2disc' url='"l2disc.x3d"'/>
    <Inline DEF='l1' url='"l1.x3d"'/>
    <Inline DEF='l1disc' url='"l1disc.x3d"'/>
    <Inline DEF='t12' url='"t12.x3d"'/>
    <Inline DEF='t12disc' url='"t12disc.x3d"'/>
    <Inline DEF='t11' url='"t11.x3d"'/>
    <Inline DEF='t11disc' url='"t11disc.x3d"'/>
    <Inline DEF='t10' url='"t10.x3d"'/>
    <Inline DEF='t10disc' url='"t10disc.x3d"'/>
    <Inline DEF='t9' url='"t9.x3d"'/>
    <Inline DEF='t9disc' url='"t9disc.x3d"'/>
    <Inline DEF='t8' url='"t8.x3d"'/>
    <Inline DEF='t8disc' url='"t8disc.x3d"'/>
    <Inline DEF='t7' url='"t7.x3d"'/>
    <Inline DEF='t7disc' url='"t7disc.x3d"'/>
    <Inline DEF='t6' url='"t6.x3d"'/>
    <Inline DEF='t6disc' url='"t6disc.x3d"'/>
    <Inline DEF='t5' url='"t5.x3d"'/>
    <Inline DEF='t5disc' url='"t5disc.x3d"'/>
    <Inline DEF='t4' url='"t4.x3d"'/>
    <Inline DEF='t4disc' url='"t4disc.x3d"'/>
    <Inline DEF='t3' url='"t3.x3d"'/>
    <Inline DEF='t3disc' url='"t3disc.x3d"'/>
    <Inline DEF='t2' url='"t2.x3d"'/>
    <Inline DEF='t2disc' url='"t2disc.x3d"'/>
    <Inline DEF='t1' url='"t1.x3d"'/>
    <Inline DEF='t1disc' url='"t1disc.x3d"'/>
    <Inline DEF='c7' url='"c7.x3d"'/>
    <Inline DEF='c7disc' url='"c7disc.x3d"'/>
    <Inline DEF='c6' url='"c6.x3d"'/>
    <Inline DEF='c6disc' url='"c6disc.x3d"'/>
    <Inline DEF='c5' url='"c5.x3d"'/>
    <Inline DEF='c5disc' url='"c5disc.x3d"'/>
    <Inline DEF='c4' url='"c4.x3d"'/>
    <Inline DEF='c4disc' url='"c4disc.x3d"'/>
    <Inline DEF='c3' url='"c3.x3d"'/>
    <Inline DEF='c3disc' url='"c3disc.x3d"'/>
    <Inline DEF='c2' url='"c2.x3d"'/>
    <Inline DEF='c2disc' url='"c2disc.x3d"'/>
    <Inline DEF='c1' url='"c1.x3d"'/>
    <!-- TODO missing <Inline DEF='c1disc' url='"c1disc.x3d"'/> -->
  </Scene>
</X3D>