<?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='VisibleShapesTest.x3d' name='title'/>
    <meta content='Test scene with BooleanSequencer animation of visible field on several X3DBoundedObject nodes, triggering a new feature in X3D4.' name='description'/>
    <meta content='18 January 2020' name='created'/>
    <meta content='1 June 2024' name='modified'/>
    <meta content='Don Brutzman' name='creator'/>
    <meta content='X3D 4.0 Architecture, ISO/IEC 19775-1:2023, 10 Grouping component, 10.3.1 X3DBoundedObject' name='specificationSection'/>
    <meta content='https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#X3DBoundedObject' name='specificationUrl'/>
    <meta content='X3D 4.0 Architecture, ISO/IEC 19775-1:2023, 12 Shape component, 12.3.5 X3DShapeNode' name='specificationSection'/>
    <meta content='https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#X3DShapeNode' name='specificationUrl'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/Animation/VisibleShapesTest.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='VisibleShapesTest.x3d'/>
    <Viewpoint DEF='EntryView' description='Visible Shapes Test' position='0 0 12'/>
    <Transform DEF='BoxGroupingNode' translation='-3 1.5 0'>
      <Shape DEF='BoxShape'>
        <Box/>
        <Appearance>
          <Material DEF='Red' diffuseColor='1 0 0'/>
        </Appearance>
      </Shape>
      <Transform translation='0 -2 0'>
        <Shape DEF='BoxVisibleText'>
          <Text string='"Box visible"'>
            <FontStyle DEF='TextStyle' family='"SANS"' justify='"MIDDLE" "MIDDLE"' style='BOLD'/>
          </Text>
          <Appearance>
            <Material USE='Red'/>
          </Appearance>
        </Shape>
      </Transform>
      <BooleanSequencer DEF='Pulsar1' key='0 0.25 0.5 0.75 1' keyValue='true false true true true'/>
      <ROUTE fromField='value_changed' fromNode='Pulsar1' toField='visible' toNode='BoxGroupingNode'/>
    </Transform>
    <Transform DEF='SphereGroupingNode' translation='0 1.5 0'>
      <Shape DEF='SphereShape'>
        <Sphere/>
        <Appearance>
          <Material DEF='Green' diffuseColor='0 1 0'/>
        </Appearance>
      </Shape>
      <Transform translation='0 -3 0'>
        <Shape DEF='SphereVisibleText'>
          <Text string='"Sphere visible"'>
            <FontStyle USE='TextStyle'/>
          </Text>
          <Appearance>
            <Material USE='Green'/>
          </Appearance>
        </Shape>
      </Transform>
      <BooleanSequencer DEF='Pulsar2' key='0 0.25 0.5 0.75 1' keyValue='true true false true true'/>
      <ROUTE fromField='value_changed' fromNode='Pulsar2' toField='visible' toNode='SphereShape'/>
      <ROUTE fromField='value_changed' fromNode='Pulsar2' toField='visible' toNode='SphereVisibleText'/>
    </Transform>
    <Transform DEF='CylinderGroupingNode' translation='3 1.5 0'>
      <Shape DEF='CylinderShape'>
        <Cylinder/>
        <Appearance>
          <Material DEF='Blue' diffuseColor='0.4 0.4 1'/>
        </Appearance>
      </Shape>
      <Transform translation='0 -4 0'>
        <Shape DEF='CylinderVisibleText'>
          <Text string='"Cylinder visible"'>
            <FontStyle USE='TextStyle'/>
          </Text>
          <Appearance>
            <Material USE='Blue'/>
          </Appearance>
        </Shape>
      </Transform>
      <BooleanSequencer DEF='Pulsar3' key='0 0.25 0.5 0.75 1' keyValue='true true true false true'/>
      <ROUTE fromField='value_changed' fromNode='Pulsar3' toField='visible' toNode='CylinderShape'/>
      <ROUTE fromField='value_changed' fromNode='Pulsar3' toField='visible' toNode='CylinderVisibleText'/>
    </Transform>
    <TimeSensor DEF='SequencerClock' cycleInterval='8' loop='true'/>
    <ROUTE fromField='fraction_changed' fromNode='SequencerClock' toField='set_fraction' toNode='Pulsar1'/>
    <ROUTE fromField='fraction_changed' fromNode='SequencerClock' toField='set_fraction' toNode='Pulsar2'/>
    <ROUTE fromField='fraction_changed' fromNode='SequencerClock' toField='set_fraction' toNode='Pulsar3'/>
  </Scene>
</X3D>