<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN"   "http://www.web3d.org/specifications/x3d-3.2.dtd">
<X3D profile='Immersiveversion='3.2xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation=' http://www.web3d.org/specifications/x3d-3.2.xsd '>
<head>
<meta name='titlecontent='ViewFrustrumPrototype.x3d'/>
<meta name='descriptioncontent='Display view frustrum associated with a given pair of Viewpoint, NavigationInfo nodes'/>
<meta name='creatorcontent='Don Brutzman'/>
<meta name='translatedcontent='16 August 2008'/>
<meta name='modifiedcontent='17 August 2008'/>
<meta name='referencecontent='ViewFrustrumExample.x3d'/>
<meta name='drawingcontent='ViewFrustrumComputation.png'/>
<meta name='imagecontent='ViewFrustrumOverheadView.png'/>
<meta name='imagecontent='ViewFrustrumObliqueView.png'/>
<meta name='subjectcontent='view culling frustrum'/>
<meta name='identifiercontent=' http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter14-Prototypes/ViewFrustrumPrototype.x3d '/>
<meta name='generatorcontent='X3D-Edit, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent='../license.html'/>
</head>
<!--

Index for ProtoDeclare definition: ViewFrustrum
Index for DEF nodes: FrustrumAppearance, FrustrumCoordinate, FrustrumExtrusion, FrustrumLines, GeometryComputationScript, OrientationTransform, PositionTransform
-->
<Scene>
<ProtoDeclare name='ViewFrustrumappinfo='Display view frustrum associated with a given pair of Viewpoint NavigationInfo nodes'>
<ProtoInterface>
<field name='ViewpointNodetype='SFNodeaccessType='initializeOnly'>
<!-- NULL node -->
</field>
<field name='NavigationInfoNodetype='SFNodeaccessType='initializeOnly'>
<!-- NULL node -->
</field>
<field name='lineColortype='SFColorvalue='0.9 0.9 0.9accessType='inputOutput'/>
<field name='frustrumColortype='SFColorvalue='0.8 0.8 0.8accessType='inputOutput'/>
<field name='transparencytype='SFFloatvalue='0.5accessType='inputOutput'/>
<field name='aspectRatiotype='SFFloatvalue='0.75accessType='inputOutput'
 appinfo='assumed ratio height/width'/>
<field name='tracetype='SFBoolvalue='trueaccessType='initializeOnly'/>
</ProtoInterface>
<ProtoBody>
<!-- PositionTransform ROUTE:  [from GeometryComputationScript.position_changed to translation ] -->
<Transform DEF='PositionTransformrotation='0 1 0 3.14159'>
<!-- OrientationTransform ROUTE:  [from GeometryComputationScript.orientation_changed to rotation ] -->
<Transform DEF='OrientationTransform'>
<Shape>
<IndexedLineSet DEF='FrustrumLinescoordIndex='0 1 2 3 0 -1 4 5 6 7 4 -1 0 4 -1 1 5 -1 2 6 -1 3 7 -1'>
<!-- FrustrumCoordinate ROUTE:  [from GeometryComputationScript.point_changed to point ] -->
<Coordinate DEF='FrustrumCoordinatepoint='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'/>
</IndexedLineSet>
<Appearance>
<Material>
<IS>
<connect nodeField='emissiveColorprotoField='lineColor'/>
</IS>
</Material>
</Appearance>
</Shape>
<Shape>
<!-- FrustrumExtrusion ROUTEs:  [from GeometryComputationScript.spine_changed to set_spine ] [from GeometryComputationScript.scale_changed to set_scale ] -->
<Extrusion DEF='FrustrumExtrusion'/>
<Appearance DEF='FrustrumAppearance'>
<Material>
<IS>
<connect nodeField='diffuseColorprotoField='frustrumColor'/>
<connect nodeField='transparencyprotoField='transparency'/>
</IS>
</Material>
</Appearance>
</Shape>
<Shape>
<Sphere radius='0.25'/>
<Appearance USE='FrustrumAppearance'/>
</Shape>
</Transform>
</Transform>
<!-- GeometryComputationScript ROUTEs:  [from position_changed to PositionTransform.translation ] [from orientation_changed to OrientationTransform.rotation ] [from spine_changed to FrustrumExtrusion.set_spine ] [from scale_changed to FrustrumExtrusion.set_scale ] [from point_changed to FrustrumCoordinate.point ] -->
<Script DEF='GeometryComputationScriptdirectOutput='true'
  url=' "ViewFrustrumScript.js" "http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter14-Prototypes/ViewFrustrumScript.js" '>
<field name='ViewpointNodetype='SFNodeaccessType='initializeOnly'/>
<field name='NavigationInfoNodetype='SFNodeaccessType='initializeOnly'/>
<field name='FrustrumCoordinatetype='SFNodeaccessType='initializeOnly'>
<Coordinate USE='FrustrumCoordinate'/>
</field>
<field name='FrustrumExtrusiontype='SFNodeaccessType='initializeOnly'>
<Extrusion USE='FrustrumExtrusion'/>
</field>
<field name='recomputetype='SFBoolaccessType='inputOnly'/>
<field name='aspectRatiotype='SFFloataccessType='inputOutput'
 appinfo='assumed ratio height/width'/>
<field name='position_changedtype='SFVec3faccessType='outputOnly'/>
<field name='orientation_changedtype='SFRotationaccessType='outputOnly'/>
<field name='spine_changedtype='MFVec3faccessType='outputOnly'/>
<field name='scale_changedtype='MFVec2faccessType='outputOnly'/>
<field name='point_changedtype='MFVec3faccessType='outputOnly'/>
<field name='tracetype='SFBoolaccessType='initializeOnly'/>
<IS>
<connect nodeField='ViewpointNodeprotoField='ViewpointNode'/>
<connect nodeField='NavigationInfoNodeprotoField='NavigationInfoNode'/>
<connect nodeField='aspectRatioprotoField='aspectRatio'/>
<connect nodeField='traceprotoField='trace'/>
</IS>
</Script>
<ROUTE fromNode='GeometryComputationScriptfromField='position_changedtoNode='PositionTransformtoField='translation'/>
<ROUTE fromNode='GeometryComputationScriptfromField='orientation_changedtoNode='OrientationTransformtoField='rotation'/>
<ROUTE fromNode='GeometryComputationScriptfromField='spine_changedtoNode='FrustrumExtrusiontoField='set_spine'/>
<ROUTE fromNode='GeometryComputationScriptfromField='scale_changedtoNode='FrustrumExtrusiontoField='set_scale'/>
<ROUTE fromNode='GeometryComputationScriptfromField='point_changedtoNode='FrustrumCoordinatetoField='point'/>
</ProtoBody>
</ProtoDeclare>
<!-- Example use is in separate scene -->
<Anchor description='ViewFrustrumExampleparameter='target=_blank'
  url=' "ViewFrustrumExample.x3d" "http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter14-Prototypes/ViewFrustrumExamplet.x3d" '>
<Shape>
<Appearance>
<Material diffuseColor='0.8 0.4 0'/>
</Appearance>
<Text string='"ViewFrustrumExample.x3d" "is a Prototype declaration file." "" "For an example scene using this node," "click this text and view" "ViewFrustrumExample.x3d"solid='true'>
<FontStyle justify='"MIDDLE" "MIDDLE"size='0.8'/>
</Text>
</Shape>
</Anchor>
</Scene>
</X3D>
<!--

Index for ProtoDeclare definition: ViewFrustrum
Index for DEF nodes: FrustrumAppearance, FrustrumCoordinate, FrustrumExtrusion, FrustrumLines, GeometryComputationScript, OrientationTransform, PositionTransform
-->

<!-- Tag color codes (X3D, XML terminology): <Node DEF='idName' field='value'/> <Element DEF='idName' attribute='value'/> <Prototype name='ProtoName'> <field name='fieldName'/> </Prototype> -->