X3D Model Documentation: ViewFrustumPrototype.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2  <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
  3  <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'>
  4       <head>
  5            <meta name='titlecontent='ViewFrustumPrototype.x3d'/>
  6            <meta name='descriptioncontent='Define a view frustum associated with a given pair of Viewpoint and NavigationInfo nodes, provided as a reusable prototype.'/>
  7            <meta name='creatorcontent='Don Brutzman'/>
  8            <meta name='translatedcontent='16 August 2008'/>
  9            <meta name='modifiedcontent='20 October 2019'/>
 10            <meta name='referencecontent='ViewFrustumExample.x3d'/>
 11            <meta name='drawingcontent='ViewFrustumComputation.png'/>
 12            <meta name='Imagecontent='ViewFrustumOverheadView.png'/>
 13            <meta name='Imagecontent='ViewFrustumObliqueView.png'/>
 14            <meta name='subjectcontent='view culling frustum'/>
 15            <meta name='identifiercontent='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ViewFrustumPrototype.x3d'/>
 16            <meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
 17            <meta name='licensecontent='../license.html'/>
 18       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: FrustumAppearance, FrustumCoordinate, FrustumExtrusion, FrustumLines, GeometryComputationScript, OrientationTransform, PositionTransform, VisibilitySwitch

Index for ProtoDeclare definition: ViewFrustum
-->
 19       <Scene>
 20            <WorldInfo title='ViewFrustumPrototype.x3d'/>
 21            <ProtoDeclare name='ViewFrustumappinfo='Display view frustum associated with a given pair of Viewpoint NavigationInfo nodes'>
 22                 <ProtoInterface>
 23                      <field name='ViewpointNodetype='SFNodeaccessType='initializeOnly'
                     appinfo='required: insert Viewpoint DEF or USE node for view of interest'>
 24                           <!-- NULL node, ProtoInstance must provide -->
 25                      </field>
 26                      <field name='NavigationInfoNodetype='SFNodeaccessType='initializeOnly'
                     appinfo='required: insert NavigationInfo DEF or USE node of interest'>
 27                           <!-- NULL node, ProtoInstance must provide -->
 28                      </field>
 29                      <field name='visibletype='SFBoolvalue='trueaccessType='inputOutput'
                     appinfo='whether or not frustum geometry is rendered'/>
 30                      <field name='lineColortype='SFColorvalue='0.9 0.9 0.9accessType='inputOutput'
                     appinfo='RGB color of ViewFrustum outline, default value 0.9 0.9 0.9'/>
 31                      <field name='frustumColortype='SFColorvalue='0.8 0.8 0.8accessType='inputOutput'
                     appinfo='RGB color of ViewFrustum hull geometry, default value 0.8 0.8 0.8'/>
 32                      <field name='transparencytype='SFFloatvalue='0.5accessType='inputOutput'
                     appinfo='transparency of ViewFrustum hull geometry, default value 0.5'/>
 33                      <field name='aspectRatiotype='SFFloatvalue='0.75accessType='inputOutput'
                     appinfo='assumed ratio height/width, default value 0.75'/>
 34                      <field name='tracetype='SFBoolvalue='falseaccessType='initializeOnly'
                     appinfo='debug support, default false'/>
 35                 </ProtoInterface>
 36                 <ProtoBody>
 37 
                    <!-- ROUTE information for VisibilitySwitch node:  [from GeometryComputationScript.visibilitySwitchSelection to whichChoice ] -->
                    <Switch DEF='VisibilitySwitchwhichChoice='-1'>
 38 
                         <!-- ROUTE information for PositionTransform node:  [from GeometryComputationScript.position_changed to translation ] -->
                         <Transform DEF='PositionTransformrotation='0 1 0 3.14159'>
 39 
                              <!-- ROUTE information for OrientationTransform node:  [from GeometryComputationScript.orientation_changed to rotation ] -->
                              <Transform DEF='OrientationTransform'>
 40                                     <Shape>
 41                                          <IndexedLineSet DEF='FrustumLinescoordIndex='0 1 2 3 0 -1 4 5 6 7 4 -1 0 4 -1 1 5 -1 2 6 -1 3 7 -1'>
 42 
                                             <!-- Coordinate FrustumCoordinate is a DEF node that has 1 USE node: USE_1
                                             <!-- ROUTE information for FrustumCoordinate node:  [from GeometryComputationScript.point_changed to point ] -->
                                             <Coordinate DEF='FrustumCoordinatepoint='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'/>
 43                                          </IndexedLineSet>
 44                                          <Appearance>
 45                                               <Material>
 46                                                    <IS>
 47                                                         <connect nodeField='emissiveColorprotoField='lineColor'/>
 48                                                    </IS>
 49                                               </Material>
 50                                          </Appearance>
 51                                     </Shape>
 52                                     <Shape>
 53 
                                        <!-- Extrusion FrustumExtrusion is a DEF node that has 1 USE node: USE_1
                                        <!-- ROUTE information for FrustumExtrusion node:  [from GeometryComputationScript.spine_changed to set_spine ] [from GeometryComputationScript.scale_changed to set_scale ] -->
                                        <Extrusion DEF='FrustumExtrusion'/>
 54 
                                        <!-- Appearance FrustumAppearance is a DEF node that has 1 USE node: USE_1 -->
                                        <Appearance DEF='FrustumAppearance'>
 55                                               <Material>
 56                                                    <IS>
 57                                                         <connect nodeField='diffuseColorprotoField='frustumColor'/>
 58                                                         <connect nodeField='transparencyprotoField='transparency'/>
 59                                                    </IS>
 60                                               </Material>
 61                                          </Appearance>
 62                                     </Shape>
 63                                     <Shape>
 64                                          <Sphere radius='0.08'/>
 65                                          <Appearance USE='FrustumAppearance'/>
 66                                     </Shape>
 67                                </Transform>
 68                           </Transform>
 69                      </Switch>
 70 
 71                           <field name='visibletype='SFBoolaccessType='inputOutput'
                          appinfo='Whether or not frustum geometry is rendered'/>
 72                           <field name='visibilitySwitchSelectiontype='SFInt32accessType='outputOnly'
                          appinfo='Adjust Switch selection to make geometry visible or not'/>
 73                           <field name='ViewpointNodetype='SFNodeaccessType='initializeOnly'>
 74                                <!-- initialization node (if any) goes here -->
 75                           </field>
 76                           <field name='NavigationInfoNodetype='SFNodeaccessType='initializeOnly'>
 77                                <!-- initialization node (if any) goes here -->
 78                           </field>
 79                           <field name='FrustumCoordinatetype='SFNodeaccessType='initializeOnly'>
 80                                <Coordinate USE='FrustumCoordinate'/>
 81                           </field>
 82                           <field name='FrustumExtrusiontype='SFNodeaccessType='initializeOnly'>
 83                                <Extrusion USE='FrustumExtrusion'/>
 84                           </field>
 85                           <field name='recomputetype='SFBoolaccessType='inputOnly'/>
 86                           <field name='aspectRatiotype='SFFloataccessType='inputOutput'
                          appinfo='assumed ratio height/width'/>
 87                           <field name='position_changedtype='SFVec3faccessType='outputOnly'/>
 88                           <field name='orientation_changedtype='SFRotationaccessType='outputOnly'/>
 89                           <field name='spine_changedtype='MFVec3faccessType='outputOnly'/>
 90                           <field name='scale_changedtype='MFVec2faccessType='outputOnly'/>
 91                           <field name='point_changedtype='MFVec3faccessType='outputOnly'/>
 92                           <field name='tracetype='SFBoolaccessType='initializeOnly'/>
 93                           <IS>
 94                                <connect nodeField='visibleprotoField='visible'/>
 95                                <connect nodeField='ViewpointNodeprotoField='ViewpointNode'/>
 96                                <connect nodeField='NavigationInfoNodeprotoField='NavigationInfoNode'/>
 97                                <connect nodeField='aspectRatioprotoField='aspectRatio'/>
 98                                <connect nodeField='traceprotoField='trace'/>
 99                           </IS>
100                      </Script>
101                      < ROUTE  fromNode='GeometryComputationScript' fromField='visibilitySwitchSelection' toNode='VisibilitySwitch' toField='whichChoice'/>
102                      < ROUTE  fromNode='GeometryComputationScript' fromField='position_changed' toNode='PositionTransform' toField='translation'/>
103                      < ROUTE  fromNode='GeometryComputationScript' fromField='orientation_changed' toNode='OrientationTransform' toField='rotation'/>
104                      < ROUTE  fromNode='GeometryComputationScript' fromField='spine_changed' toNode='FrustumExtrusion' toField='set_spine'/>
105                      < ROUTE  fromNode='GeometryComputationScript' fromField='scale_changed' toNode='FrustumExtrusion' toField='set_scale'/>
106                      < ROUTE  fromNode='GeometryComputationScript' fromField='point_changed' toNode='FrustumCoordinate' toField='point'/>
107                 </ProtoBody>
108            </ProtoDeclare>
109            <!-- Example use is in separate scene -->
110            <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" '>
111                 <Shape>
112                      <Appearance>
113                           <Material diffuseColor='0.8 0.4 0'/>
114                      </Appearance>
115                      <Text string='"ViewFrustumPrototype.x3d" "is a Prototype declaration file." "For an example scene using the prototype," "click this text and view" "ViewFrustumExample.x3d"'>
116                           <FontStyle justify='"MIDDLE" "MIDDLE"size='0.8'/>
117                      </Text>
118                 </Shape>
119            </Anchor>
120       </Scene>
121  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: FrustumAppearance, FrustumCoordinate, FrustumExtrusion, FrustumLines, GeometryComputationScript, OrientationTransform, PositionTransform, VisibilitySwitch

Index for ProtoDeclare definition: ViewFrustum
-->
X3D Tooltips element index: Anchor, Appearance, connect, Coordinate, Extrusion, field, FontStyle, head, IndexedLineSet, IS, Material, meta, ProtoBody, ProtoDeclare, ProtoInterface, ROUTE, Scene, Script, Shape, Sphere, Switch, Text, Transform, WorldInfo, X3D, accessType and type, XML data types, field types

Event Graph ROUTE Table entries with 6 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

GeometryComputationScript
Script
visibilitySwitchSelection
SFInt32

ROUTE
event to
(1)
VisibilitySwitch
Switch
whichChoice
SFInt32
GeometryComputationScript
Script
position_changed
SFVec3f

ROUTE
event to
(1)
PositionTransform
Transform
translation
SFVec3f
GeometryComputationScript
Script
orientation_changed
SFRotation

ROUTE
event to
(1)
OrientationTransform
Transform
rotation
SFRotation
GeometryComputationScript
Script
spine_changed
MFVec3f

ROUTE
event to
(1)
FrustumExtrusion
Extrusion
set_spine
MFVec3f
GeometryComputationScript
Script
scale_changed
MFVec2f

ROUTE
event to
(1)
FrustumExtrusion
Extrusion
set_scale
MFVec2f
GeometryComputationScript
Script
point_changed
MFVec3f

ROUTE
event to
(1)
FrustumCoordinate
Coordinate
point
MFVec3f


Anchor
description='ViewFrustum Example' 
User-interaction hint for this node. 
Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with 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> -->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->