X3D
type: NamedIndividual
has head: head
has scene: Scene
profile: Immersive
version: 3.2
no namespace schema location: https://www.web3d.org/specifications/x3d-3.2.xsd

meta 1 1
type: NamedIndividual
type: meta
has parent: head
content: ThirdPersonViewChaser.x3d
name: title

meta 1 2
type: NamedIndividual
type: meta
has parent: head
content: X3D Follower example
name: description

meta 1 3
type: NamedIndividual
type: meta
has parent: head
content: Herbert Stocker
name: creator

meta 1 4
type: NamedIndividual
type: meta
has parent: head
content: Don Brutzman
name: translator

meta 1 5
type: NamedIndividual
type: meta
has parent: head
content: 18 April 2006
name: created

meta 1 6
type: NamedIndividual
type: meta
has parent: head
content: 2 December 2011
name: translated

meta 1 7
type: NamedIndividual
type: meta
has parent: head
content: 2 January 2025
name: modified

meta 1 8
type: NamedIndividual
type: meta
has parent: head
content: originals/3rdPersonView-c.wrl
name: reference

meta 1 9
type: NamedIndividual
type: meta
has parent: head
content: originals/3rdPersonView-f.wrl
name: reference

meta 1 10
type: NamedIndividual
type: meta
has parent: head
content: Stocker_06_Followers.pdf
name: reference

meta 1 11
type: NamedIndividual
type: meta
has parent: head
content: http://www.hersto.com/Publications/Followers
name: reference

meta 1 12
type: NamedIndividual
type: meta
has parent: head
content: X3D version 3.2 or greater
name: requires

meta 1 13
type: NamedIndividual
type: meta
has parent: head
content: X3D Follower Chaser Damper
name: subject

meta 1 14
type: NamedIndividual
type: meta
has parent: head
content: Why is ScalarChaser missing from the X3D Specification?
name: TODO

meta 1 15
type: NamedIndividual
type: meta
has parent: head
content: under development
name: warning

meta 1 16
type: NamedIndividual
type: meta
has parent: head
content: https://www.web3d.org/x3d/specifications/ISO-IEC-19775-1.2-X3D-AbstractSpecification/Part01/components/followers.html
name: reference

meta 1 17
type: NamedIndividual
type: meta
has parent: head
content: https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html
name: reference

meta 1 18
type: NamedIndividual
type: meta
has parent: head
content: https://www.web3d.org/x3d/content/examples/Basic/Followers/ThirdPersonViewChaser.x3d
name: identifier

meta 1 19
type: NamedIndividual
type: meta
has parent: head
content: Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html
name: generator

meta 1 20
type: NamedIndividual
type: meta
has parent: head
content: X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit
name: generator

meta 1 21
type: NamedIndividual
type: meta
has parent: head
content: ../../license.html
name: license

ThirdPersonViewChaser.x3d
description: X3D Follower example
creator: Herbert Stocker
translator: Don Brutzman
created: 18 April 2006
translated: 2 December 2011
modified: 2 January 2025
reference: originals/3rdPersonView-c.wrl
reference: originals/3rdPersonView-f.wrl
reference: Stocker_06_Followers.pdf
reference: http://www.hersto.com/Publications/Followers
requires: X3D version 3.2 or greater
subject: X3D Follower Chaser Damper
warning: under development
reference: https://www.web3d.org/x3d/specifications/ISO-IEC-19775-1.2-X3D-AbstractSpecification/Part01/components/followers.html
reference: https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html
generator: Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html
generator: X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit
license: ../../license.html

WorldInfo 2 1
type: NamedIndividual
type: WorldInfo
has parent: Scene
title: ThirdPersonViewChaser.x3d

ExternProtoDeclare 2 2
type: NamedIndividual
type: ExternProtoDeclare
has parent: Scene
has field: field 2 2 1
has field: field 2 2 2
has field: field 2 2 3
has field: field 2 2 4
has field: field 2 2 5
has field: field 2 2 6
has field: field 2 2 7
has field: field 2 2 8
has field: field 2 2 9
has field: field 2 2 10
has field: field 2 2 11
name: ScalarDamper
url: "FollowerPrototypeDeclarations.x3d#ScalarDamper" "https://www.web3d.org/x3d/content/examples/Basic/Followers/FollowerPrototypeDeclarations.x3d#ScalarDamper" "FollowerPrototypeDeclarations.wrl#ScalarDamper" "https://www.web3d.org/x3d/content/examples/Basic/Followers/FollowerPrototypeDeclarations.wrl#ScalarDamper"

field 2 2 1
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: outputOnly
name: isLoaded
type: SFBool

field 2 2 2
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: outputOnly
name: value_changed
type: SFFloat

field 2 2 3
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: inputOnly
name: set_destination
type: SFFloat

field 2 2 4
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: initializeOnly
name: initial_destination
type: SFFloat

field 2 2 5
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: initializeOnly
name: order
type: SFInt32

field 2 2 6
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: inputOutput
name: tau
type: SFFloat

field 2 2 7
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: inputOnly
name: set_value
type: SFFloat

field 2 2 8
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: outputOnly
name: transparency_changed
type: SFFloat

field 2 2 9
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: initializeOnly
name: initial_value
type: SFFloat

field 2 2 10
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: outputOnly
name: isActive
type: SFBool

field 2 2 11
type: NamedIndividual
type: field
has parent: ExternProtoDeclare 2 2
access type: initializeOnly
name: eps
type: SFFloat

NavigationInfo 2 3
type: NamedIndividual
type: NavigationInfo
has parent: Scene
headlight: false
type: "NONE"

Background 2 4
type: NamedIndividual
type: Background
has parent: Scene
sky color: 0.6
sky color: 0.7
sky color: 1.0

DirectionalLight 2 5
type: NamedIndividual
type: DirectionalLight
has parent: Scene
direction: 1.0
direction: -1.0

Proxi
type: NamedIndividual
type: ProximitySensor
has parent: Scene
DEF: Proxi
size: 1.0E30

VP
type: NamedIndividual
type: Viewpoint
has parent: Scene
DEF: VP
description: 3rd Person View Chaser
field of view: 1.0

ProtoDeclare 2 8
type: NamedIndividual
type: ProtoDeclare
has parent: Scene
has proto interface: ProtoInterface 2 8 1
has proto body: ProtoBody 2 8 2
name: Tree

field 2 8 1 1
type: NamedIndividual
type: field
has parent: ProtoInterface 2 8 1
access type: inputOutput
name: position
type: SFVec3f
value: 0.0

field 2 8 1 2
type: NamedIndividual
type: field
has parent: ProtoInterface 2 8 1
access type: inputOnly
name: set_Color
type: SFColor

field 2 8 1 3
type: NamedIndividual
type: field
has parent: ProtoInterface 2 8 1
access type: inputOnly
name: set_Size
type: SFFloat

connect 2 8 2 1 1 1
type: NamedIndividual
type: connect
has parent: IS 2 8 2 1 1
node field: translation
proto field: position

TrTrunc
type: NamedIndividual
type: Transform
has parent: Transform 2 8 2 1
has children: Shape 2 8 2 1 2 1
DEF: TrTrunc
translation: 0.0
translation: 1.0

Material 2 8 2 1 2 1 1 1
type: NamedIndividual
type: Material
has parent: Appearance 2 8 2 1 2 1 1
ambient intensity: 0.06
diffuse color: 0.376
diffuse color: 0.161
diffuse color: 0.0196
emissive color: 0.318
emissive color: 0.208
emissive color: 0.0667
shininess: 0.93

Cylinder 2 8 2 1 2 1 2
type: NamedIndividual
type: Cylinder
has parent: Shape 2 8 2 1 2 1
radius: 0.2

TrCrown
type: NamedIndividual
type: Transform
has parent: Transform 2 8 2 1
has children: Shape 2 8 2 1 3 1
DEF: TrCrown
translation: 0.0
translation: 3.5

MatCrown
type: NamedIndividual
type: Material
has parent: Appearance 2 8 2 1 3 1 1
DEF: MatCrown
ambient intensity: 0.0633
diffuse color: 0.11
diffuse color: 0.369
diffuse color: 0.0902
emissive color: 0.051
emissive color: 0.176
emissive color: 0.0275
shininess: 0.09
specular color: 0.09

Sphere 2 8 2 1 3 1 2
type: NamedIndividual
type: Sphere
has parent: Shape 2 8 2 1 3 1
radius: 1.5

ScrTree
type: NamedIndividual
type: Script
has parent: ProtoBody 2 8 2
has field: field 2 8 2 2 1
has field: field 2 8 2 2 2
has field: field 2 8 2 2 3
has IS: IS 2 8 2 2 4
DEF: ScrTree
source code: ecmascript: function set_Color(Col) { croneDiffuseColor= new SFColor( Col.r * .7 , Col.g * .7 , Col.b * .7 ); croneEmissiveColor= new SFColor( Col.r * .3 , Col.g * .3 , Col.b * .3 ); }

field 2 8 2 2 1
type: NamedIndividual
type: field
has parent: ScrTree
access type: outputOnly
name: croneEmissiveColor
type: SFColor

field 2 8 2 2 2
type: NamedIndividual
type: field
has parent: ScrTree
access type: inputOnly
name: set_Color
type: SFColor

field 2 8 2 2 3
type: NamedIndividual
type: field
has parent: ScrTree
access type: outputOnly
name: croneDiffuseColor
type: SFColor

connect 2 8 2 2 4 1
type: NamedIndividual
type: connect
has parent: IS 2 8 2 2 4
node field: set_Color
proto field: set_Color

ROUTE 2 8 2 3
type: NamedIndividual
type: ROUTE
has parent: ProtoBody 2 8 2
from field: croneDiffuseColor
from node: ScrTree
to field: diffuseColor
to node: MatCrown

ROUTE 2 8 2 4
type: NamedIndividual
type: ROUTE
has parent: ProtoBody 2 8 2
from field: croneEmissiveColor
from node: ScrTree
to field: emissiveColor
to node: MatCrown

TrGround
type: NamedIndividual
type: Transform
has parent: Scene
has children: ShGround
DEF: TrGround
translation: -120.0
translation: 0.0

ShGround
type: NamedIndividual
type: Shape
has parent: TrGround
has appearance: Appearance 2 9 1 1
has geometry: EvGridGround
DEF: ShGround

Material 2 9 1 1 1
type: NamedIndividual
type: Material
has parent: Appearance 2 9 1 1
ambient intensity: 0.0
diffuse color: 0.2
diffuse color: 0.41
diffuse color: 0.0
emissive color: 0.15
emissive color: 0.21
emissive color: 0.0
shininess: 0.0

EvGridGround
type: NamedIndividual
type: ElevationGrid
has parent: ShGround
DEF: EvGridGround
crease angle: 4.0
x dimension: 40
x spacing: 6.0
z dimension: 40
z spacing: 6.0

ScrEvGridIniter
type: NamedIndividual
type: Script
has parent: Scene
has field: field 2 10 1
DEF: ScrEvGridIniter
direct output: true
source code: ecmascript: function sin0(x) { return Math.sin(x * 6.28318530717959); // We don't use 2*Math.PI in the hope it will increase performance. } function cos0(x) { return Math.cos(x * 6.28318530717959); // We don't use 2*Math.PI in the hope it will increase performance. } function initialize() { var Heights= new MFFloat; Heights.length= Grid.xDimension * Grid.zDimension; var ZFrom= -Grid.zDimension*Grid.zSpacing/2; var ZTo= Grid.zDimension*Grid.zSpacing/2 - Grid.zSpacing * .1; var ZStep= Grid.zSpacing; var XFrom= -Grid.xDimension*Grid.xSpacing/2; var XTo= Grid.xDimension*Grid.xSpacing/2 - Grid.xSpacing * .1; var XStep= Grid.xSpacing; // ZFrom+= Grid.zSpacing; // ZTo-= Grid.zSpacing; // XFrom+= Grid.xSpacing; // XTo-= Grid.xSpacing; var Idx= 0; // Idx+= 1 + Grid.xDimension * 1; for(var Z= ZFrom; Z<=ZTo; Z+= ZStep) { for(var X= XFrom; X<=XTo; X+= XStep) { var s= 9; var H= .7*( cos0(Z*s / 30) + cos0(X*s / 35 + X*X*s*s / 34) + sin0(X*Z*s / 40)); H+= cos0(Math.sqrt(X*X + Z*Z) / 300) * 15; Heights[Idx++]= H; } // Idx+= 2; } Grid.height= Heights; }

field 2 10 1
type: NamedIndividual
type: field
has parent: ScrEvGridIniter
has geometry: EvGridGround-USE-1
access type: initializeOnly
name: Grid
type: SFNode

GrTrees
type: NamedIndividual
type: Group
has parent: Scene
has children: ProtoInstance 2 11 1
has children: ProtoInstance 2 11 2
has children: ProtoInstance 2 11 3
has children: ProtoInstance 2 11 4
has children: ProtoInstance 2 11 5
has children: ProtoInstance 2 11 6
has children: ProtoInstance 2 11 7
has children: ProtoInstance 2 11 8
has children: ProtoInstance 2 11 9
has children: ProtoInstance 2 11 10
has children: ProtoInstance 2 11 11
has children: ProtoInstance 2 11 12
has children: ProtoInstance 2 11 13
has children: ProtoInstance 2 11 14
has children: ProtoInstance 2 11 15
has children: ProtoInstance 2 11 16
has children: ProtoInstance 2 11 17
has children: ProtoInstance 2 11 18
has children: ProtoInstance 2 11 19
has children: ProtoInstance 2 11 20
has children: ProtoInstance 2 11 21
has children: ProtoInstance 2 11 22
has children: ProtoInstance 2 11 23
has children: ProtoInstance 2 11 24
has children: ProtoInstance 2 11 25
has children: ProtoInstance 2 11 26
has children: ProtoInstance 2 11 27
has children: ProtoInstance 2 11 28
has children: ProtoInstance 2 11 29
has children: ProtoInstance 2 11 30
has children: ProtoInstance 2 11 31
has children: ProtoInstance 2 11 32
has children: ProtoInstance 2 11 33
has children: ProtoInstance 2 11 34
has children: ProtoInstance 2 11 35
has children: ProtoInstance 2 11 36
has children: ProtoInstance 2 11 37
has children: ProtoInstance 2 11 38
has children: ProtoInstance 2 11 39
has children: ProtoInstance 2 11 40
has children: ProtoInstance 2 11 41
has children: ProtoInstance 2 11 42
has children: ProtoInstance 2 11 43
has children: ProtoInstance 2 11 44
has children: ProtoInstance 2 11 45
has children: ProtoInstance 2 11 46
has children: ProtoInstance 2 11 47
has children: ProtoInstance 2 11 48
has children: ProtoInstance 2 11 49
has children: ProtoInstance 2 11 50
has children: ProtoInstance 2 11 51
has children: ProtoInstance 2 11 52
has children: ProtoInstance 2 11 53
has children: ProtoInstance 2 11 54
has children: ProtoInstance 2 11 55
has children: ProtoInstance 2 11 56
has children: ProtoInstance 2 11 57
has children: ProtoInstance 2 11 58
has children: ProtoInstance 2 11 59
has children: ProtoInstance 2 11 60
has children: ProtoInstance 2 11 61
has children: ProtoInstance 2 11 62
has children: ProtoInstance 2 11 63
has children: ProtoInstance 2 11 64
has children: ProtoInstance 2 11 65
has children: ProtoInstance 2 11 66
has children: ProtoInstance 2 11 67
has children: ProtoInstance 2 11 68
has children: ProtoInstance 2 11 69
has children: ProtoInstance 2 11 70
has children: ProtoInstance 2 11 71
has children: ProtoInstance 2 11 72
has children: ProtoInstance 2 11 73
has children: ProtoInstance 2 11 74
has children: ProtoInstance 2 11 75
has children: ProtoInstance 2 11 76
has children: ProtoInstance 2 11 77

ProtoInstance 2 11 1
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 1 1
name: Tree

fieldValue 2 11 1 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 1
name: position
value: 2.0
value: 0.0
value: -50.0

ProtoInstance 2 11 2
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 2 1
name: Tree

fieldValue 2 11 2 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 2
name: position
value: 80.0
value: 0.0
value: 56.0

ProtoInstance 2 11 3
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 3 1
name: Tree

fieldValue 2 11 3 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 3
name: position
value: -98.0
value: 0.0
value: 6.0

ProtoInstance 2 11 4
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 4 1
name: Tree

fieldValue 2 11 4 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 4
name: position
value: 62.0
value: 0.0
value: 56.0

ProtoInstance 2 11 5
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 5 1
name: Tree

fieldValue 2 11 5 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 5
name: position
value: -82.0
value: 0.0
value: 2.0

ProtoInstance 2 11 6
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 6 1
name: Tree

fieldValue 2 11 6 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 6
name: position
value: 16.0
value: 0.0
value: 14.0

ProtoInstance 2 11 7
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 7 1
name: Tree

fieldValue 2 11 7 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 7
name: position
value: 54.0
value: 0.0
value: -62.0

ProtoInstance 2 11 8
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 8 1
name: Tree

fieldValue 2 11 8 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 8
name: position
value: 0.0
value: 58.0

ProtoInstance 2 11 9
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 9 1
name: Tree

fieldValue 2 11 9 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 9
name: position
value: 78.0
value: 0.0

ProtoInstance 2 11 10
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 10 1
name: Tree

fieldValue 2 11 10 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 10
name: position
value: 88.0
value: 0.0
value: -18.0

ProtoInstance 2 11 11
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 11 1
name: Tree

fieldValue 2 11 11 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 11
name: position
value: 76.0
value: 0.0
value: 6.0

ProtoInstance 2 11 12
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 12 1
name: Tree

fieldValue 2 11 12 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 12
name: position
value: 94.0
value: 0.0
value: 24.0

ProtoInstance 2 11 13
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 13 1
name: Tree

fieldValue 2 11 13 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 13
name: position
value: 46.0
value: 0.0
value: -52.0

ProtoInstance 2 11 14
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 14 1
name: Tree

fieldValue 2 11 14 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 14
name: position
value: -82.0
value: 0.0
value: 96.0

ProtoInstance 2 11 15
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 15 1
name: Tree

fieldValue 2 11 15 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 15
name: position
value: 70.0
value: 0.0
value: -14.0

ProtoInstance 2 11 16
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 16 1
name: Tree

fieldValue 2 11 16 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 16
name: position
value: -46.0
value: 0.0
value: -98.0

ProtoInstance 2 11 17
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 17 1
name: Tree

fieldValue 2 11 17 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 17
name: position
value: 6.0
value: 0.0
value: -2.0

ProtoInstance 2 11 18
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 18 1
name: Tree

fieldValue 2 11 18 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 18
name: position
value: -78.0
value: 0.0
value: -18.0

ProtoInstance 2 11 19
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 19 1
name: Tree

fieldValue 2 11 19 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 19
name: position
value: 70.0
value: 0.0
value: 34.0

ProtoInstance 2 11 20
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 20 1
name: Tree

fieldValue 2 11 20 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 20
name: position
value: 6.0
value: 0.0
value: 2.0

ProtoInstance 2 11 21
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 21 1
name: Tree

fieldValue 2 11 21 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 21
name: position
value: 22.0
value: 0.0
value: 48.0

ProtoInstance 2 11 22
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 22 1
name: Tree

fieldValue 2 11 22 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 22
name: position
value: -82.0
value: 0.0
value: -40.0

ProtoInstance 2 11 23
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 23 1
name: Tree

fieldValue 2 11 23 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 23
name: position
value: -44.0
value: 0.0
value: -80.0

ProtoInstance 2 11 24
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 24 1
name: Tree

fieldValue 2 11 24 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 24
name: position
value: -44.0
value: 0.0
value: 66.0

ProtoInstance 2 11 25
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 25 1
name: Tree

fieldValue 2 11 25 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 25
name: position
value: -34.0
value: 0.0
value: -76.0

ProtoInstance 2 11 26
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 26 1
name: Tree

fieldValue 2 11 26 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 26
name: position
value: -96.0
value: 0.0
value: 42.0

ProtoInstance 2 11 27
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 27 1
name: Tree

fieldValue 2 11 27 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 27
name: position
value: -74.0
value: 0.0
value: 56.0

ProtoInstance 2 11 28
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 28 1
name: Tree

fieldValue 2 11 28 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 28
name: position
value: -24.0
value: 0.0
value: 2.0

ProtoInstance 2 11 29
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 29 1
name: Tree

fieldValue 2 11 29 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 29
name: position
value: -60.0
value: 0.0
value: 62.0

ProtoInstance 2 11 30
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 30 1
name: Tree

fieldValue 2 11 30 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 30
name: position
value: 68.0
value: 0.0
value: 32.0

ProtoInstance 2 11 31
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 31 1
name: Tree

fieldValue 2 11 31 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 31
name: position
value: -38.0
value: 0.0
value: 44.0

ProtoInstance 2 11 32
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 32 1
name: Tree

fieldValue 2 11 32 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 32
name: position
value: -100.0
value: 0.0
value: 28.0

ProtoInstance 2 11 33
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 33 1
name: Tree

fieldValue 2 11 33 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 33
name: position
value: 86.0
value: 0.0
value: -70.0

ProtoInstance 2 11 34
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 34 1
name: Tree

fieldValue 2 11 34 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 34
name: position
value: 68.0
value: 0.0
value: 36.0

ProtoInstance 2 11 35
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 35 1
name: Tree

fieldValue 2 11 35 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 35
name: position
value: 4.0
value: 0.0
value: 52.0

ProtoInstance 2 11 36
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 36 1
name: Tree

fieldValue 2 11 36 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 36
name: position
value: -76.0
value: 0.0
value: 16.0

ProtoInstance 2 11 37
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 37 1
name: Tree

fieldValue 2 11 37 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 37
name: position
value: -100.0
value: 0.0
value: 86.0

ProtoInstance 2 11 38
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 38 1
name: Tree

fieldValue 2 11 38 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 38
name: position
value: -36.0
value: 0.0
value: -86.0

ProtoInstance 2 11 39
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 39 1
name: Tree

fieldValue 2 11 39 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 39
name: position
value: 96.0
value: 0.0
value: 12.0

ProtoInstance 2 11 40
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 40 1
name: Tree

fieldValue 2 11 40 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 40
name: position
value: 78.0
value: 0.0
value: -78.0

ProtoInstance 2 11 41
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 41 1
name: Tree

fieldValue 2 11 41 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 41
name: position
value: -36.0
value: 0.0
value: -4.0

ProtoInstance 2 11 42
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 42 1
name: Tree

fieldValue 2 11 42 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 42
name: position
value: 88.0
value: 0.0
value: 92.0

ProtoInstance 2 11 43
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 43 1
name: Tree

fieldValue 2 11 43 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 43
name: position
value: -92.0
value: 0.0
value: -66.0

ProtoInstance 2 11 44
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 44 1
name: Tree

fieldValue 2 11 44 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 44
name: position
value: -68.0
value: 0.0
value: -22.0

ProtoInstance 2 11 45
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 45 1
name: Tree

fieldValue 2 11 45 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 45
name: position
value: -46.0
value: 0.0
value: 64.0

ProtoInstance 2 11 46
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 46 1
name: Tree

fieldValue 2 11 46 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 46
name: position
value: -68.0
value: 0.0
value: 70.0

ProtoInstance 2 11 47
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 47 1
name: Tree

fieldValue 2 11 47 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 47
name: position
value: -100.0
value: 0.0
value: 26.0

ProtoInstance 2 11 48
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 48 1
name: Tree

fieldValue 2 11 48 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 48
name: position
value: -58.0
value: 0.0
value: -82.0

ProtoInstance 2 11 49
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 49 1
name: Tree

fieldValue 2 11 49 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 49
name: position
value: -48.0
value: 0.0
value: 64.0

ProtoInstance 2 11 50
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 50 1
name: Tree

fieldValue 2 11 50 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 50
name: position
value: 78.0
value: 0.0
value: -30.0

ProtoInstance 2 11 51
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 51 1
name: Tree

fieldValue 2 11 51 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 51
name: position
value: -86.0
value: 0.0
value: -46.0

ProtoInstance 2 11 52
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 52 1
name: Tree

fieldValue 2 11 52 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 52
name: position
value: 56.0
value: 0.0
value: 24.0

ProtoInstance 2 11 53
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 53 1
name: Tree

fieldValue 2 11 53 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 53
name: position
value: -68.0
value: 0.0
value: 76.0

ProtoInstance 2 11 54
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 54 1
name: Tree

fieldValue 2 11 54 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 54
name: position
value: -30.0
value: 0.0
value: -34.0

ProtoInstance 2 11 55
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 55 1
name: Tree

fieldValue 2 11 55 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 55
name: position
value: -58.0
value: 0.0
value: 32.0

ProtoInstance 2 11 56
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 56 1
name: Tree

fieldValue 2 11 56 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 56
name: position
value: -98.0
value: 0.0
value: -28.0

ProtoInstance 2 11 57
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 57 1
name: Tree

fieldValue 2 11 57 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 57
name: position
value: -4.0
value: 0.0
value: -64.0

ProtoInstance 2 11 58
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 58 1
name: Tree

fieldValue 2 11 58 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 58
name: position
value: -48.0
value: 0.0
value: -86.0

ProtoInstance 2 11 59
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 59 1
name: Tree

fieldValue 2 11 59 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 59
name: position
value: 50.0
value: 0.0
value: -30.0

ProtoInstance 2 11 60
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 60 1
name: Tree

fieldValue 2 11 60 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 60
name: position
value: 56.0
value: 0.0
value: -96.0

ProtoInstance 2 11 61
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 61 1
name: Tree

fieldValue 2 11 61 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 61
name: position
value: 10.0
value: 0.0
value: 34.0

ProtoInstance 2 11 62
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 62 1
name: Tree

fieldValue 2 11 62 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 62
name: position
value: -42.0
value: 0.0
value: -84.0

ProtoInstance 2 11 63
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 63 1
name: Tree

fieldValue 2 11 63 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 63
name: position
value: 28.0
value: 0.0
value: 32.0

ProtoInstance 2 11 64
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 64 1
name: Tree

fieldValue 2 11 64 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 64
name: position
value: 8.0
value: 0.0
value: 18.0

ProtoInstance 2 11 65
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 65 1
name: Tree

fieldValue 2 11 65 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 65
name: position
value: 32.0
value: 0.0
value: -32.0

ProtoInstance 2 11 66
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 66 1
name: Tree

fieldValue 2 11 66 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 66
name: position
value: 60.0
value: 0.0
value: 86.0

ProtoInstance 2 11 67
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 67 1
name: Tree

fieldValue 2 11 67 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 67
name: position
value: 38.0
value: 0.0
value: 76.0

ProtoInstance 2 11 68
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 68 1
name: Tree

fieldValue 2 11 68 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 68
name: position
value: 10.0
value: 0.0
value: -74.0

ProtoInstance 2 11 69
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 69 1
name: Tree

fieldValue 2 11 69 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 69
name: position
value: -24.0
value: 0.0
value: -14.0

ProtoInstance 2 11 70
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 70 1
name: Tree

fieldValue 2 11 70 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 70
name: position
value: 96.0
value: 0.0
value: 48.0

ProtoInstance 2 11 71
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 71 1
name: Tree

fieldValue 2 11 71 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 71
name: position
value: 30.0
value: 0.0

ProtoInstance 2 11 72
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 72 1
name: Tree

fieldValue 2 11 72 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 72
name: position
value: -70.0
value: 0.0
value: -16.0

ProtoInstance 2 11 73
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 73 1
name: Tree

fieldValue 2 11 73 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 73
name: position
value: -52.0
value: 0.0
value: 8.0

ProtoInstance 2 11 74
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 74 1
name: Tree

fieldValue 2 11 74 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 74
name: position
value: -54.0
value: 0.0
value: -84.0

ProtoInstance 2 11 75
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 75 1
name: Tree

fieldValue 2 11 75 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 75
name: position
value: -70.0
value: 0.0
value: -74.0

ProtoInstance 2 11 76
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 76 1
name: Tree

fieldValue 2 11 76 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 76
name: position
value: 28.0
value: 0.0
value: 12.0

ProtoInstance 2 11 77
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 77 1
name: Tree

fieldValue 2 11 77 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 77
name: position
value: -8.0
value: 0.0
value: -94.0

ProtoInstance 2 11 78
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 78 1
name: Tree

fieldValue 2 11 78 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 78
name: position
value: -96.0
value: 0.0
value: 8.0

ProtoInstance 2 11 79
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 79 1
name: Tree

fieldValue 2 11 79 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 79
name: position
value: -32.0
value: 0.0
value: -26.0

ProtoInstance 2 11 80
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 80 1
name: Tree

fieldValue 2 11 80 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 80
name: position
value: -44.0
value: 0.0
value: 12.0

ProtoInstance 2 11 81
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 81 1
name: Tree

fieldValue 2 11 81 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 81
name: position
value: 56.0
value: 0.0
value: -50.0

ProtoInstance 2 11 82
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 82 1
name: Tree

fieldValue 2 11 82 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 82
name: position
value: -2.0
value: 0.0
value: 78.0

ProtoInstance 2 11 83
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 83 1
name: Tree

fieldValue 2 11 83 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 83
name: position
value: 52.0
value: 0.0
value: -16.0

ProtoInstance 2 11 84
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 84 1
name: Tree

fieldValue 2 11 84 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 84
name: position
value: 56.0
value: 0.0
value: -46.0

ProtoInstance 2 11 85
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 85 1
name: Tree

fieldValue 2 11 85 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 85
name: position
value: -10.0
value: 0.0
value: -76.0

ProtoInstance 2 11 86
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 86 1
name: Tree

fieldValue 2 11 86 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 86
name: position
value: -72.0
value: 0.0
value: 34.0

ProtoInstance 2 11 87
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 87 1
name: Tree

fieldValue 2 11 87 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 87
name: position
value: 52.0
value: 0.0
value: -44.0

ProtoInstance 2 11 88
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 88 1
name: Tree

fieldValue 2 11 88 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 88
name: position
value: -18.0
value: 0.0
value: 6.0

ProtoInstance 2 11 89
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 89 1
name: Tree

fieldValue 2 11 89 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 89
name: position
value: 0.0
value: -94.0

ProtoInstance 2 11 90
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 90 1
name: Tree

fieldValue 2 11 90 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 90
name: position
value: 32.0
value: 0.0
value: -66.0

ProtoInstance 2 11 91
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 91 1
name: Tree

fieldValue 2 11 91 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 91
name: position
value: 4.0
value: 0.0
value: 72.0

ProtoInstance 2 11 92
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 92 1
name: Tree

fieldValue 2 11 92 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 92
name: position
value: 98.0
value: 0.0
value: 22.0

ProtoInstance 2 11 93
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 93 1
name: Tree

fieldValue 2 11 93 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 93
name: position
value: -38.0
value: 0.0
value: -88.0

ProtoInstance 2 11 94
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 94 1
name: Tree

fieldValue 2 11 94 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 94
name: position
value: -90.0
value: 0.0
value: 96.0

ProtoInstance 2 11 95
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 95 1
name: Tree

fieldValue 2 11 95 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 95
name: position
value: 34.0
value: 0.0
value: -70.0

ProtoInstance 2 11 96
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 96 1
name: Tree

fieldValue 2 11 96 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 96
name: position
value: -12.0
value: 0.0
value: -98.0

ProtoInstance 2 11 97
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 97 1
name: Tree

fieldValue 2 11 97 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 97
name: position
value: -28.0
value: 0.0
value: -58.0

ProtoInstance 2 11 98
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 98 1
name: Tree

fieldValue 2 11 98 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 98
name: position
value: -30.0
value: 0.0
value: 54.0

ProtoInstance 2 11 99
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 99 1
name: Tree

fieldValue 2 11 99 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 99
name: position
value: 54.0
value: 0.0
value: 16.0

ProtoInstance 2 11 100
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 100 1
name: Tree

fieldValue 2 11 100 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 100
name: position
value: -36.0
value: 0.0
value: 66.0

ProtoInstance 2 11 101
type: NamedIndividual
type: ProtoInstance
has parent: GrTrees
has field value: fieldValue 2 11 101 1
name: Tree

fieldValue 2 11 101 1
type: NamedIndividual
type: fieldValue
has parent: ProtoInstance 2 11 101
name: position
value: -78.0
value: 0.0
value: 86.0

ScrTreeHightIniter
type: NamedIndividual
type: Script
has parent: Scene
has field: field 2 12 1
has field: field 2 12 2
has field: field 2 12 3
has field: field 2 12 4
DEF: ScrTreeHightIniter
direct output: true
source code: ecmascript: function initialize() { Trees= TreeGroup.children; for(var C= 0; C<Trees.length; C++ ) Trees[C].position= AddGroundHeight(Trees[C].position); } // receives an SFVec3f of a position over ground, evaluates the ground height at that // position and adds it to the y value of the vector. function AddGroundHeight(Vec) { var PosOnGrid= Vec.subtract(GroundTrans.translation); var FloatIdxX= PosOnGrid.x / GroundGrid.xSpacing; var FloatIdxZ= PosOnGrid.z / GroundGrid.zSpacing; var FracX= FloatIdxX - Math.floor(FloatIdxX); var FracZ= FloatIdxZ - Math.floor(FloatIdxZ); // We do linear interpolation in the square we have. var IdxLowerX= Math.floor(FloatIdxX); var IdxLowerZ= Math.floor(FloatIdxZ); var IdxHigherX= IdxLowerX + 1; var IdxHigherZ= IdxLowerZ + 1; if(IdxLowerX < 0) IdxLowerX= 0; if(IdxLowerZ < 0) IdxLowerZ= 0; if(IdxHigherX < 0) IdxHigherX= 0; if(IdxHigherZ < 0) IdxHigherZ= 0; if(IdxLowerX >= GroundGrid.xDimension) IdxLowerX= GroundGrid.xDimension - 1; if(IdxHigherX >= GroundGrid.xDimension) IdxHigherX= GroundGrid.xDimension - 1; if(IdxLowerZ >= GroundGrid.zDimension) IdxLowerZ= GroundGrid.zDimension - 1; if(IdxHigherZ >= GroundGrid.zDimension) IdxHigherZ= GroundGrid.zDimension - 1; var LowerXHeight= GetGroundGridHeightAt(IdxLowerX, IdxLowerZ) * (1 - FracZ) + GetGroundGridHeightAt(IdxLowerX, IdxHigherZ) * FracZ; var HigherXHeight= GetGroundGridHeightAt(IdxHigherX, IdxLowerZ) * (1 - FracZ) + GetGroundGridHeightAt(IdxHigherX, IdxHigherZ) * FracZ; var Height= LowerXHeight * (1 - FracX) + HigherXHeight * FracX; return new SFVec3f(Vec.x, Vec.y + Height, Vec.z); } function GetGroundGridHeightAt(IdxX, IdxZ) { return GroundGrid.height[IdxX + IdxZ * GroundGrid.xDimension]; }

field 2 12 1
type: NamedIndividual
type: field
has parent: ScrTreeHightIniter
has children: GrTrees-USE-1
access type: initializeOnly
name: TreeGroup
type: SFNode

field 2 12 2
type: NamedIndividual
type: field
has parent: ScrTreeHightIniter
has children: TrGround-USE-1
access type: initializeOnly
name: GroundTrans
type: SFNode

field 2 12 3
type: NamedIndividual
type: field
has parent: ScrTreeHightIniter
has geometry: EvGridGround-USE-2
access type: initializeOnly
name: GroundGrid
type: SFNode

field 2 12 4
type: NamedIndividual
type: field
has parent: ScrTreeHightIniter
access type: initializeOnly
name: Trees
type: MFNode

TransObject
type: NamedIndividual
type: Transform
has parent: Scene
has children: Transform 2 13 1
DEF: TransObject

Transform 2 13 1
type: NamedIndividual
type: Transform
has parent: TransObject
has children: Transform 2 13 1 1
rotation: 0.0
rotation: 1.0
rotation: 3.1415927
translation: 0.0
translation: 0.3
translation: 0.5

Transform 2 13 1 1
type: NamedIndividual
type: Transform
has parent: Transform 2 13 1
has children: Shape 2 13 1 1 1
rotation: -0.074
rotation: 0.991
rotation: 0.113
rotation: -1.177
translation: -0.0
translation: 1.386
translation: 0.5

Mat
type: NamedIndividual
type: Material
has parent: Appearance 2 13 1 1 1 1
DEF: Mat
ambient intensity: 0.04
diffuse color: 0.44
diffuse color: 0.27
diffuse color: 0.17
emissive color: 0.21
emissive color: 0.13
emissive color: 0.08
shininess: 0.19
specular color: 0.29
specular color: 0.31
specular color: 0.05

IndexedFaceSet 2 13 1 1 1 2
type: NamedIndividual
type: IndexedFaceSet
has parent: Shape 2 13 1 1 1
has coord: coord Suzanne
coord index: 46
coord index: 0
coord index: 2
coord index: 44
coord index: -1
coord index: 3
coord index: 1
coord index: 47
coord index: 45
coord index: 4
coord index: 42
coord index: 5
coord index: 43
coord index: 8
coord index: 6
coord index: 7
coord index: 9
coord index: 10
coord index: 11
coord index: 12
coord index: 14
coord index: 15
coord index: 13
coord index: 16
coord index: 17
coord index: 20
coord index: 18
coord index: 19
coord index: 21
coord index: 22
coord index: 23
coord index: 24
coord index: 26
coord index: 27
coord index: 25
coord index: 28
coord index: 29
coord index: 32
coord index: 30
coord index: 31
coord index: 33
coord index: 34
coord index: 35
coord index: 36
coord index: 38
coord index: 39
coord index: 37
coord index: 40
coord index: 41
coord index: 50
coord index: 48
coord index: 51
coord index: 49
coord index: 52
coord index: 53
coord index: 54
coord index: 55
coord index: 56
coord index: 57
coord index: 58
coord index: 59
coord index: 62
coord index: 63
coord index: 64
coord index: 65
coord index: 60
coord index: 61
coord index: 88
coord index: 173
coord index: 175
coord index: 90
coord index: 174
coord index: 89
coord index: 86
coord index: 171
coord index: 172

coord Suzanne
type: NamedIndividual
type: Coordinate
has parent: IndexedFaceSet 2 13 1 1 1 2
DEF: coord_Suzanne
point: 0.86
point: 0.251
point: -0.044
point: 0.466
point: 0.211
point: 0.737
point: 0.826
point: 0.177
point: -0.135
point: 0.376
point: 0.131
point: 0.757
point: 0.754
point: -0.226
point: 0.262
point: 0.081
point: 0.749
point: 0.708
point: 0.048
point: -0.035
point: 0.392
point: 0.015
point: 0.593
point: 0.793
point: 0.111
point: 0.011
point: 0.477
point: 0.079
point: 0.639
point: 0.838
point: 0.218
point: 0.04
point: 0.522
point: 0.185
point: 0.667
point: 0.814
point: 0.247
point: 0.117
point: 0.568
point: 0.221
point: 0.604
point: 0.741
point: 0.169
point: 0.155
point: 0.558
point: 0.15
point: 0.517
point: 0.64
point: 0.119
point: 0.154
point: 0.5
point: 0.105
point: 0.433
point: 0.303
point: 0.227
point: 0.523
point: 0.296
point: 0.367
point: 0.698
point: 0.313
point: 0.21
point: 0.571
point: 0.3
point: 0.461
point: 0.792
point: 0.323
point: 0.145
point: 0.574
point: 0.301
point: 0.577
point: 0.797
point: 0.41
point: 0.551
point: 0.385
point: 0.605
point: 0.711

TrHud
type: NamedIndividual
type: Transform
has parent: Scene
has children: Collision 2 14 1
DEF: TrHud

Collision 2 14 1
type: NamedIndividual
type: Collision
has parent: TrHud
has children: Transform 2 14 1 1
enabled: false

Transform 2 14 1 1
type: NamedIndividual
type: Transform
has parent: Collision 2 14 1
has children: TchNavi
has children: Shape 2 14 1 1 2
scale: 0.5
translation: 0.0
translation: -0.2

TchNavi
type: NamedIndividual
type: TouchSensor
has parent: Transform 2 14 1 1
DEF: TchNavi
description: touch to activate

Material 2 14 1 1 2 1 1
type: NamedIndividual
type: Material
has parent: Appearance 2 14 1 1 2 1
diffuse color: 0.0
emissive color: 0.3
transparency: 1.0

IndexedFaceSet 2 14 1 1 2 2
type: NamedIndividual
type: IndexedFaceSet
has parent: Shape 2 14 1 1 2
has coord: Coordinate 2 14 1 1 2 2 1
coord index: 0
coord index: 1
coord index: 2
coord index: 3
coord index: -1

Coordinate 2 14 1 1 2 2 1
type: NamedIndividual
type: Coordinate
has parent: IndexedFaceSet 2 14 1 1 2 2
point: -1.0
point: 0.0
point: 1.0

ROUTE 2 15
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: position_changed
from node: Proxi
to field: translation
to node: TrHud

ROUTE 2 16
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: orientation_changed
from node: Proxi
to field: rotation
to node: TrHud

ScrNaviSens
type: NamedIndividual
type: Script
has parent: Scene
has field: field 2 17 1
has field: field 2 17 2
has field: field 2 17 3
has field: field 2 17 4
has field: field 2 17 5
has field: field 2 17 6
has field: field 2 17 7
DEF: ScrNaviSens
source code: ecmascript: function set_hitCoord(C) { hitCoord= C; if(SensIsActive) { userInput= C.subtract(ActivationCoords).multiply(cScale); } } function set_activated(a) { SensIsActive= a; if(a) ActivationCoords= hitCoord; else userInput= new SFVec2f(0, 0); }

field 2 17 1
type: NamedIndividual
type: field
has parent: ScrNaviSens
access type: initializeOnly
name: hitCoord
type: SFVec2f
value: 0.0

field 2 17 2
type: NamedIndividual
type: field
has parent: ScrNaviSens
access type: outputOnly
name: userInput
type: SFVec2f

field 2 17 3
type: NamedIndividual
type: field
has parent: ScrNaviSens
access type: inputOnly
name: set_hitCoord
type: SFVec2f

field 2 17 4
type: NamedIndividual
type: field
has parent: ScrNaviSens
access type: inputOnly
name: set_activated
type: SFBool

field 2 17 5
type: NamedIndividual
type: field
has parent: ScrNaviSens
access type: initializeOnly
name: cScale
type: SFFloat
value: 15.0

field 2 17 6
type: NamedIndividual
type: field
has parent: ScrNaviSens
access type: initializeOnly
name: ActivationCoords
type: SFVec2f
value: 0.0

field 2 17 7
type: NamedIndividual
type: field
has parent: ScrNaviSens
access type: initializeOnly
name: SensIsActive
type: SFBool
value: false

ROUTE 2 18
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: hitTexCoord_changed
from node: TchNavi
to field: set_hitCoord
to node: ScrNaviSens

ROUTE 2 19
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: isActive
from node: TchNavi
to field: set_activated
to node: ScrNaviSens

DieAwayMoveDamper
type: NamedIndividual
type: ProtoInstance
has parent: Scene
has field value: fieldValue 2 20 1
has field value: fieldValue 2 20 2
DEF: DieAwayMoveDamper
name: ScalarDamper

fieldValue 2 20 1
type: NamedIndividual
type: fieldValue
has parent: DieAwayMoveDamper
name: order
value: 4

fieldValue 2 20 2
type: NamedIndividual
type: fieldValue
has parent: DieAwayMoveDamper
name: tau
value: 0.2

DieAwayRotateDamper
type: NamedIndividual
type: ProtoInstance
has parent: Scene
has field value: fieldValue 2 21 1
has field value: fieldValue 2 21 2
DEF: DieAwayRotateDamper
name: ScalarDamper

fieldValue 2 21 1
type: NamedIndividual
type: fieldValue
has parent: DieAwayRotateDamper
name: order
value: 3

fieldValue 2 21 2
type: NamedIndividual
type: fieldValue
has parent: DieAwayRotateDamper
name: tau
value: 0.1

ScrNavi
type: NamedIndividual
type: Script
has parent: Scene
has field: field 2 22 1
has field: field 2 22 2
has field: field 2 22 3
has field: field 2 22 4
has field: field 2 22 5
has field: field 2 22 6
has field: field 2 22 7
has field: field 2 22 8
has field: field 2 22 9
has field: field 2 22 10
has field: field 2 22 11
has field: field 2 22 12
has field: field 2 22 13
has field: field 2 22 14
has field: field 2 22 15
has field: field 2 22 16
has field: field 2 22 17
has field: field 2 22 18
has field: field 2 22 19
has field: field 2 22 20
has field: field 2 22 21
has field: field 2 22 22
has field: field 2 22 23
has field: field 2 22 24
DEF: ScrNavi
direct output: true
source code: ecmascript: function NonLin(x) { var cAmount= .3; var cBmount= 1 - cAmount; return (x * x * (x>0? 1:-1)) * cAmount + (x) * cBmount; // TBD: Some exponential function would be better. } function userInput(inp) { lastUserInput= inp; if(sensorIsActive) { ProcessMoveInput(inp.y); ProcessRotateInput(inp.x); } } function damperedMoveInput(inp) { if(!sensorIsActive) ProcessMoveInput(inp); } function damperedRotateInput(inp) { if(!sensorIsActive) ProcessRotateInput(inp); } function ProcessMoveInput(inp) { MoveSpeed= NonLin(inp / cInputNominalX) * cNominalMoveSpeed; } function ProcessRotateInput(inp) { OriSpeed= NonLin(inp / cInputNominalY) * cNominalOriSpeed; } function set_sensorIsActive(a) { sensorIsActive= a; if(!a) { DieAwayMoveDamper.set_value= lastUserInput.y; DieAwayMoveDamper.set_destination= 0; DieAwayRotateDamper.set_value= lastUserInput.x; DieAwayRotateDamper.set_destination= 0; // They now creates a transition from lastUserInput.y to 0. } } function Tick(Now) { if(!lastTick) { lastTick= Now; return; } var DeltaT= Now - lastTick; lastTick= Now; if(OriSpeed || MoveSpeed) { ObjectOri= ObjectOri.multiply(new SFRotation(0, 1, 0, -OriSpeed * DeltaT)); ObjectPos= ObjectPos.add(ObjectOri.multVec(new SFVec3f(0, 0, -MoveSpeed * DeltaT))); objectPos_changed= AddGroundHeight(ObjectPos); objectOri_changed= ObjectOri; } } // receives an SFVec3f of a position over ground, evaluates the ground height at that // position and adds it to the y value of the vector. function AddGroundHeight(Vec) { var PosOnGrid= Vec.subtract(GroundTrans.translation); var FloatIdxX= PosOnGrid.x / GroundGrid.xSpacing; var FloatIdxZ= PosOnGrid.z / GroundGrid.zSpacing; var FracX= FloatIdxX - Math.floor(FloatIdxX); var FracZ= FloatIdxZ - Math.floor(FloatIdxZ); // We do linear interpolation in the square we have. var IdxLowerX= Math.floor(FloatIdxX); var IdxLowerZ= Math.floor(FloatIdxZ); var IdxHigherX= IdxLowerX + 1; var IdxHigherZ= IdxLowerZ + 1; if(IdxLowerX < 0) IdxLowerX= 0; if(IdxLowerZ < 0) IdxLowe…

field 2 22 1
type: NamedIndividual
type: field
has parent: ScrNavi
access type: inputOnly
name: Tick
type: SFTime

field 2 22 2
type: NamedIndividual
type: field
has parent: ScrNavi
has children: TrGround-USE-2
access type: initializeOnly
name: GroundTrans
type: SFNode

field 2 22 3
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: cInputNominalY
type: SFFloat
value: 1.0

field 2 22 4
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: cNominalMoveSpeed
type: SFFloat
value: 10.0

field 2 22 5
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: cInputNominalX
type: SFFloat
value: 1.0

field 2 22 6
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: ObjectOri
type: SFRotation
value: 0.0
value: 1.0

field 2 22 7
type: NamedIndividual
type: field
has parent: ScrNavi
access type: outputOnly
name: objectOri_changed
type: SFRotation

field 2 22 8
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: cNominalOriSpeed
type: SFFloat
value: 1.0

field 2 22 9
type: NamedIndividual
type: field
has parent: ScrNavi
has children: DieAwayMoveDamper-USE-1
access type: initializeOnly
name: DieAwayMoveDamper
type: SFNode

field 2 22 10
type: NamedIndividual
type: field
has parent: ScrNavi
access type: inputOnly
name: damperedMoveInput
type: SFFloat

field 2 22 11
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: MoveSpeed
type: SFFloat
value: 0.0

field 2 22 12
type: NamedIndividual
type: field
has parent: ScrNavi
access type: inputOnly
name: set_sensorIsActive
type: SFBool

field 2 22 13
type: NamedIndividual
type: field
has parent: ScrNavi
access type: inputOnly
name: damperedRotateInput
type: SFFloat

field 2 22 14
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: ObjectPos
type: SFVec3f
value: 0.0

field 2 22 15
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: lastTick
type: SFTime
value: 0.0

field 2 22 16
type: NamedIndividual
type: field
has parent: ScrNavi
access type: inputOnly
name: userInput
type: SFVec2f

field 2 22 17
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: sensorIsActive
type: SFBool
value: false

field 2 22 18
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: initial_objectOri
type: SFRotation
value: 0.02
value: -0.999
value: 0.027
value: 2.08

field 2 22 19
type: NamedIndividual
type: field
has parent: ScrNavi
has geometry: EvGridGround-USE-3
access type: initializeOnly
name: GroundGrid
type: SFNode

field 2 22 20
type: NamedIndividual
type: field
has parent: ScrNavi
access type: outputOnly
name: objectPos_changed
type: SFVec3f

field 2 22 21
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: lastUserInput
type: SFVec2f
value: 0.0

field 2 22 22
type: NamedIndividual
type: field
has parent: ScrNavi
has children: DieAwayRotateDamper-USE-1
access type: initializeOnly
name: DieAwayRotateDamper
type: SFNode

field 2 22 23
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: initial_objectPos
type: SFVec3f
value: -37.577
value: 1.65
value: -83.856

field 2 22 24
type: NamedIndividual
type: field
has parent: ScrNavi
access type: initializeOnly
name: OriSpeed
type: SFFloat
value: 0.0

ROUTE 2 23
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: userInput
from node: ScrNaviSens
to field: userInput
to node: ScrNavi

ROUTE 2 24
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: isActive
from node: TchNavi
to field: set_sensorIsActive
to node: ScrNavi

ROUTE 2 25
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: value_changed
from node: DieAwayMoveDamper
to field: damperedMoveInput
to node: ScrNavi

ROUTE 2 26
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: value_changed
from node: DieAwayRotateDamper
to field: damperedRotateInput
to node: ScrNavi

ROUTE 2 27
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: objectPos_changed
from node: ScrNavi
to field: translation
to node: TransObject

ROUTE 2 28
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: objectOri_changed
from node: ScrNavi
to field: rotation
to node: TransObject

Timer
type: NamedIndividual
type: TimeSensor
has parent: Scene
DEF: Timer
loop: true

ROUTE 2 30
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: time
from node: Timer
to field: Tick
to node: ScrNavi

ScriptThirdPersonView
type: NamedIndividual
type: Script
has parent: Scene
has field: field 2 31 1
has field: field 2 31 2
has field: field 2 31 3
has field: field 2 31 4
has field: field 2 31 5
has field: field 2 31 6
has field: field 2 31 7
has field: field 2 31 8
DEF: ScriptThirdPersonView
source code: ecmascript: function set_avatarPos(Pos) { avatarPos= Pos; Update(); } function set_avatarOri(Ori) { avatarOri= Ori; Update(); } function Update() { var viewPos= avatarPos.add(avatarOri.multVec(cCameraOffsetPos)); var viewOri= cCameraOffsetOri.multiply(avatarOri); if( viewPos_changed != viewPos) viewPos_changed= viewPos; if( viewOri_changed != viewOri) viewOri_changed= viewOri; }

field 2 31 1
type: NamedIndividual
type: field
has parent: ScriptThirdPersonView
access type: initializeOnly
name: avatarPos
type: SFVec3f
value: 0.0

field 2 31 2
type: NamedIndividual
type: field
has parent: ScriptThirdPersonView
access type: initializeOnly
name: cCameraOffsetPos
type: SFVec3f
value: 0.0
value: 4.0
value: 8.0

field 2 31 3
type: NamedIndividual
type: field
has parent: ScriptThirdPersonView
access type: inputOnly
name: set_avatarPos
type: SFVec3f

field 2 31 4
type: NamedIndividual
type: field
has parent: ScriptThirdPersonView
access type: initializeOnly
name: avatarOri
type: SFRotation
value: 0.0
value: 1.0

field 2 31 5
type: NamedIndividual
type: field
has parent: ScriptThirdPersonView
access type: initializeOnly
name: cCameraOffsetOri
type: SFRotation
value: 1.0
value: 0.0
value: -0.2

field 2 31 6
type: NamedIndividual
type: field
has parent: ScriptThirdPersonView
access type: outputOnly
name: viewPos_changed
type: SFVec3f

field 2 31 7
type: NamedIndividual
type: field
has parent: ScriptThirdPersonView
access type: inputOnly
name: set_avatarOri
type: SFRotation

field 2 31 8
type: NamedIndividual
type: field
has parent: ScriptThirdPersonView
access type: outputOnly
name: viewOri_changed
type: SFRotation

ROUTE 2 32
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: objectPos_changed
from node: ScrNavi
to field: set_avatarPos
to node: ScriptThirdPersonView

ROUTE 2 33
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: objectOri_changed
from node: ScrNavi
to field: set_avatarOri
to node: ScriptThirdPersonView

ROUTE 2 34
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: viewPos_changed
from node: ScriptThirdPersonView
to field: position
to node: VP

ROUTE 2 35
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: viewOri_changed
from node: ScriptThirdPersonView
to field: orientation
to node: VP

TrShadow
type: NamedIndividual
type: Transform
has parent: Scene
has children: Shape 2 36 1
DEF: TrShadow
scale: 1.75
scale: 1.0
scale: 1.2

Material 2 36 1 1 1
type: NamedIndividual
type: Material
has parent: Appearance 2 36 1 1
diffuse color: 0.0
emissive color: 1.0
transparency: 0.9

ImageTexture 2 36 1 1 2
type: NamedIndividual
type: ImageTexture
has parent: Appearance 2 36 1 1
url: "MonkeyShadow.png" "https://www.web3d.org/x3d/content/examples/Basic/Followers/MonkeyShadow.png"

IndexedFaceSet 2 36 1 2
type: NamedIndividual
type: IndexedFaceSet
has parent: Shape 2 36 1
has tex coord: TextureCoordinate 2 36 1 2 1
has coord: Coordinate 2 36 1 2 2
coord index: 0
coord index: 1
coord index: 2
coord index: 3
coord index: -1
solid: false

TextureCoordinate 2 36 1 2 1
type: NamedIndividual
type: TextureCoordinate
has parent: IndexedFaceSet 2 36 1 2
point: 1.0
point: 0.0

Coordinate 2 36 1 2 2
type: NamedIndividual
type: Coordinate
has parent: IndexedFaceSet 2 36 1 2
point: -1.0
point: 0.0
point: 1.0

ScrShadowMgr
type: NamedIndividual
type: Script
has parent: Scene
has field: field 2 37 1
has field: field 2 37 2
has field: field 2 37 3
has field: field 2 37 4
has field: field 2 37 5
has field: field 2 37 6
has field: field 2 37 7
has field: field 2 37 8
DEF: ScrShadowMgr
source code: ecmascript: function set_MonkeyPos(Pos) { MonkeyPos= Pos; Update(); } function set_MonkeyOri(Ori) { MonkeyOri= Ori; Update(); } function Update() { ShadowPos_changed= AddGroundHeight(new SFVec3f(MonkeyPos.x, .4, MonkeyPos.z)); var ViewDir= MonkeyOri.multVec(new SFVec3f(0, 0, -1)); ViewDir.y= 0; // make it horizontal. var HorzOri= new SFRotation(new SFVec3f(0, 0, -1), ViewDir); // now we have a horizontal orientation only. // figure out the normal vector of the ground. // for this, figure out three points on the ground around the monkey position. var cRadius= 2.3; var EvGridPointA= AddGroundHeight((new SFVec3f(MonkeyPos.x, 0, MonkeyPos.z)).add(HorzOri.multVec((new SFVec3f( 0, 0, -1 )).multiply(cRadius)))); var EvGridPointB= AddGroundHeight((new SFVec3f(MonkeyPos.x, 0, MonkeyPos.z)).add(HorzOri.multVec((new SFVec3f( .866, 0, .5)).multiply(cRadius)))); var EvGridPointC= AddGroundHeight((new SFVec3f(MonkeyPos.x, 0, MonkeyPos.z)).add(HorzOri.multVec((new SFVec3f(-.866, 0, .5)).multiply(cRadius)))); var Normal= EvGridPointC.subtract(EvGridPointA).cross(EvGridPointB.subtract(EvGridPointA)); var NormalOri= new SFRotation(new SFVec3f(0, 1, 0), Normal); ShadowOri_changed= HorzOri.multiply(NormalOri); } // receives an SFVec3f of a position over ground, evaluates the ground height at that // position and adds it to the y value of the vecotr. function AddGroundHeight(Vec) { var PosOnGrid= Vec.subtract(GroundTrans.translation); var FloatIdxX= PosOnGrid.x / GroundGrid.xSpacing; var FloatIdxZ= PosOnGrid.z / GroundGrid.zSpacing; var FracX= FloatIdxX - Math.floor(FloatIdxX); var FracZ= FloatIdxZ - Math.floor(FloatIdxZ); // We do linear interpolation in the square we have. var IdxLowerX= Math.floor(FloatIdxX); var IdxLowerZ= Math.floor(FloatIdxZ); var IdxHigherX= IdxLowerX + 1; var IdxHigherZ= IdxLowerZ + 1; if(IdxLowerX < 0) IdxLowerX= 0; if(IdxLowerZ < 0) IdxLowerZ= 0; if(IdxHigherX < 0) IdxHigherX= 0; if(IdxHigherZ < 0) IdxHigherZ= 0; if(IdxLowerX >= GroundGrid.xDimension) IdxLower…

field 2 37 1
type: NamedIndividual
type: field
has parent: ScrShadowMgr
access type: outputOnly
name: ShadowPos_changed
type: SFVec3f

field 2 37 2
type: NamedIndividual
type: field
has parent: ScrShadowMgr
access type: inputOnly
name: set_MonkeyPos
type: SFVec3f

field 2 37 3
type: NamedIndividual
type: field
has parent: ScrShadowMgr
access type: outputOnly
name: ShadowOri_changed
type: SFRotation

field 2 37 4
type: NamedIndividual
type: field
has parent: ScrShadowMgr
access type: initializeOnly
name: MonkeyPos
type: SFVec3f
value: 0.0

field 2 37 5
type: NamedIndividual
type: field
has parent: ScrShadowMgr
has children: TrGround-USE-3
access type: initializeOnly
name: GroundTrans
type: SFNode

field 2 37 6
type: NamedIndividual
type: field
has parent: ScrShadowMgr
access type: inputOnly
name: set_MonkeyOri
type: SFRotation

field 2 37 7
type: NamedIndividual
type: field
has parent: ScrShadowMgr
has geometry: EvGridGround-USE-4
access type: initializeOnly
name: GroundGrid
type: SFNode

field 2 37 8
type: NamedIndividual
type: field
has parent: ScrShadowMgr
access type: initializeOnly
name: MonkeyOri
type: SFRotation
value: 0.0
value: 1.0

ROUTE 2 38
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: objectPos_changed
from node: ScrNavi
to field: set_MonkeyPos
to node: ScrShadowMgr

ROUTE 2 39
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: objectOri_changed
from node: ScrNavi
to field: set_MonkeyOri
to node: ScrShadowMgr

ROUTE 2 40
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: ShadowPos_changed
from node: ScrShadowMgr
to field: translation
to node: TrShadow

ROUTE 2 41
type: NamedIndividual
type: ROUTE
has parent: Scene
from field: ShadowOri_changed
from node: ScrShadowMgr
to field: rotation
to node: TrShadow