<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Immersive'
version='3.3'
xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance'
xsd:noNamespaceSchemaLocation
='
https://www.web3d.org/specifications/x3d-3.3.xsd
'
>
<head>
</head>
<!--
-->
<Scene>
<WorldInfo title='ViewFrustumPrototype.x3d'/>
<ProtoDeclare name='ViewFrustum' appinfo='Display view frustum associated with a given pair of Viewpoint NavigationInfo nodes'
>
<ProtoInterface>
<field name='ViewpointNode' type='SFNode' accessType='initializeOnly'
appinfo='required: insert Viewpoint DEF or USE node for view of interest'
>
<!-- NULL node, ProtoInstance must provide -->
</field>
<field name='NavigationInfoNode' type='SFNode' accessType='initializeOnly'
appinfo='required: insert NavigationInfo DEF or USE node of interest'
>
<!-- NULL node, ProtoInstance must provide -->
</field>
<field name='visible' type='SFBool' value='true' accessType='inputOutput'
appinfo='whether or not frustum geometry is rendered'
/>
<field name='lineColor' type='SFColor' value='0.9 0.9 0.9' accessType='inputOutput'
appinfo='RGB color of ViewFrustum outline, default value 0.9 0.9 0.9'
/>
<field name='frustumColor' type='SFColor' value='0.8 0.8 0.8' accessType='inputOutput'
appinfo='RGB color of ViewFrustum hull geometry, default value 0.8 0.8 0.8'
/>
<field name='transparency' type='SFFloat' value='0.5' accessType='inputOutput'
appinfo='transparency of ViewFrustum hull geometry, default value 0.5'
/>
<field name='aspectRatio' type='SFFloat' value='0.75' accessType='inputOutput'
appinfo='assumed ratio height/width, default value 0.75'
/>
<field name='trace' type='SFBool' value='false' accessType='initializeOnly'
appinfo='debug support, default false'
/>
</ProtoInterface>
<ProtoBody>
<Shape>
<IndexedLineSet DEF='FrustumLines' coordIndex='0 1 2 3 0 -1 4 5 6 7 4 -1 0 4 -1 1 5 -1 2 6 -1 3 7 -1'>
</IndexedLineSet>
<Appearance>
<Material>
<IS>
<connect nodeField='emissiveColor' protoField='lineColor'/>
</IS>
</Material>
</Appearance>
</Shape>
<Shape>
<Appearance DEF='FrustumAppearance'>
<Material>
<IS>
<connect nodeField='diffuseColor' protoField='frustumColor'/>
<connect nodeField='transparency' protoField='transparency'/>
</IS>
</Material>
</Appearance>
</Shape>
<Shape>
</Shape>
</Transform>
</Transform>
</Switch>
<field name='visible' type='SFBool' accessType='inputOutput'
appinfo='Whether or not frustum geometry is rendered'
/>
<field name='visibilitySwitchSelection' type='SFInt32' accessType='outputOnly'
appinfo='Adjust Switch selection to make geometry visible or not'
/>
<field name='ViewpointNode' type='SFNode' accessType='initializeOnly'>
<!-- initialization node (if any) goes here -->
</field>
<field name='NavigationInfoNode' type='SFNode' accessType='initializeOnly'>
<!-- initialization node (if any) goes here -->
</field>
<field name='FrustumCoordinate' type='SFNode' accessType='initializeOnly'>
</field>
<field name='FrustumExtrusion' type='SFNode' accessType='initializeOnly'>
</field>
<field name='recompute' type='SFBool' accessType='inputOnly'/>
<field name='aspectRatio' type='SFFloat' accessType='inputOutput'
appinfo='assumed ratio height/width'
/>
<field name='position_changed' type='SFVec3f' accessType='outputOnly'/>
<field name='orientation_changed' type='SFRotation' accessType='outputOnly'/>
<field name='spine_changed' type='MFVec3f' accessType='outputOnly'/>
<field name='scale_changed' type='MFVec2f' accessType='outputOnly'/>
<field name='point_changed' type='MFVec3f' accessType='outputOnly'/>
<field name='trace' type='SFBool' accessType='initializeOnly'/>
<IS>
<connect nodeField='visible' protoField='visible'/>
<connect nodeField='ViewpointNode' protoField='ViewpointNode'/>
<connect nodeField='NavigationInfoNode' protoField='NavigationInfoNode'/>
<connect nodeField='aspectRatio' protoField='aspectRatio'/>
<connect nodeField='trace' protoField='trace'/>
</IS>
</Script>
<
ROUTE
fromNode='
GeometryComputationScript' fromField='visibilitySwitchSelection' toNode='
VisibilitySwitch' toField='whichChoice'/>
<
ROUTE
fromNode='
GeometryComputationScript' fromField='position_changed' toNode='
PositionTransform' toField='translation'/>
<
ROUTE
fromNode='
GeometryComputationScript' fromField='orientation_changed' toNode='
OrientationTransform' toField='rotation'/>
<
ROUTE
fromNode='
GeometryComputationScript' fromField='spine_changed' toNode='
FrustumExtrusion' toField='set_spine'/>
<
ROUTE
fromNode='
GeometryComputationScript' fromField='scale_changed' toNode='
FrustumExtrusion' toField='set_scale'/>
<
ROUTE
fromNode='
GeometryComputationScript' fromField='point_changed' toNode='
FrustumCoordinate' toField='point'/>
</ProtoBody>
</ProtoDeclare>
<!-- Example use is in separate scene -->
<Anchor description='ViewFrustum Example'
url='
ViewFrustumExample.x3d"https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ViewFrustumExample.x3d" "ViewFrustumExample.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ViewFrustumExample.wrl" '
>
<Shape>
<Appearance>
<Material diffuseColor='0.8 0.4 0'/>
</Appearance>
<Text string='"ViewFrustumPrototype.x3d" "is a Prototype declaration file." "For an example scene using the prototype," "click this text and view" "ViewFrustumExample.x3d"'>
<FontStyle justify='"MIDDLE" "MIDDLE"' size='0.8'/>
</Text>
</Shape>
</Anchor>
</Scene>
</X3D>
<!--
-->
-->
<!--
Online at
https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ViewFrustumPrototypeIndex.html
-->
<!--
Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ViewFrustumPrototype.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)
<ProtoDeclare
name='ProtoName'>
<field
name='fieldName'/> </ProtoDeclare>
-->
<!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->