VRML::VRML2::Standard.pm - implements VRML 2.0/97 standard nodes

- NAME
- SYNOPSIS
- DESCRIPTION

- Grouping Nodes
- Special Groups
- Common Nodes
- Geometry
- Geometric Properties
- Appearance
- Sensors
- Interpolators
- Bindable Nodes
- other

- SEE ALSO
- BUGS
- AUTHOR

# NAME

VRML::VRML2::Standard.pm - implements VRML 2.0/97 standard nodes

# SYNOPSIS

        use VRML::VRML2::Standard;

# DESCRIPTION

Following nodes are currently implemented.

[`Grouping Nodes`] [`Special Groups`] [`Common Nodes`]

[`Geometry`] [`Geometric Properties`] [`Appearance`]

[`Sensors`] [`Interpolators`] [`Bindable Nodes`]

## Grouping Nodes

These nodes NEED End if the $children parameter is empty !

Anchor
  `Anchor($url, $description, $parameter, $bboxSize, $bboxCenter, $children)`

  Currently only the first part of $parameter is supported.

Billboard
  `Billboard($axisOfRotation, $children)`

Collision
  `Collision($collide, $proxy, $children)`

Group
  `Group($bboxSize, $bboxCenter)`

Transform
  `Transform($translation, $rotation, $scale, $scaleOrientation, $center, $bboxSize, $bboxCenter)`

  $translation is a SFVec3f

  $rotation is a SFRotation

  $scale is a SFVec3f

  $scaleOrientation is a SFRotation

  $center is a SFVec3f

## Special Groups

Inline
  `Inline($url, $bboxSize, $bboxCenter)`

LOD
  `LOD($range, $center)`

  $range is a MFFloat

  $center is a SFVec3f

  Example: `LOD([1, 2, 5], '0 0 0')`

Switch
  `Switch($whichChoice)`

## Common Nodes

DirectionalLight
  `DirectionalLight($direction, $intensity, $ambientIntensity, $color, $on)`

PointLight
  `PointLight($location, $intensity, $ambientIntensity, $color, $on)`

SpotLight
  `SpotLight($location, $direction, $intensity, $color, $on)`

Sound
  `Sound($source, $location, $direction, $intensity, $maxFront, $maxBack, $minFront, $minBack, $priority, $spatialize)`

AudioClip
  `AudioClip($url, $description, $loop, $pitch, $startTime, $stopTime)`

WorldInfo
  `WorldInfo($title, $info)`

Shape
  `Shape($geometry, $appearance)`

## Geometry

Box
  `Box($size)`

Cone
  `Cone($radius, $height, $side, $bottom)`

Cylinder
  `Cylinder($radius, $height, $top, $side, $bottom)`

ElevationGrid
  `ElevationGrid($xDimension, $zDimension, $xSpacing, $zSpacing, $height, $creaseAngle, $color, $colorPerVertex, $solid)`

  $height should be a reference of a list of height values like `['0 1 3 2', '2 3 5 4', ...]`

  $color can be a reference to a subroutine or list of color values

Extrusion
  `Extrusion($crossSection, $spine, $scale, $orientation, $beginCap, $endCap, $creaseAngle, $solid, $convex, $ccw)`

  $crossSection must be a reference of a list of XY values like `[ '1 1', '1 -1', '-1 -1', '-1 1', '1 1' ]`

  $spine must be a reference of a list of spine values like `['0 0 0', '0 1 0', ...]`

IndexedFaceSet
  `IndexedFaceSet($coord, $coordIndex, $color, $colorIndex, $colorPerVertex, $normal, $normalIndex, $texCoord, $texCoordIndex)`

  $coordIndex can be a string with a list of point index like `'0 1 3 2', '2 3 5 4', ...` or a reference of list of point index

  $coordIndex can be a string or a reference of a list of colors index

  $normalIndex can be a string or a reference of a list of normals index

  $texCoordIndex can be a string or a reference of a list of textures index

IndexedLineSet
  `IndexedLineSet($coord, $coordIndex, $color, $colorIndex, $colorPerVertex)`

  $coord can be a string with the `Coordinate` node or a reference to a `Coordinate` method

  $coordIndex can be a string or a reference of a list of point index like `'0, 1, 3, 2', '2, 3, 5, 4', ...`

  $color can be a string with the <Color> node or a reference of a <Color> method

  $colorIndex can be a string or a reference of a list of color index

PointSet
  `PointSet($coord, $color)`

Sphere
  `Sphere($radius)`

  $radius have to be > 0

Text
  `Text($string, $fontStyle, $length, $maxExtent)`

## Geometric Properties

Coordinate
  `Coordinate(@point)`

  @point should be a list of points with strings like `'1.0 0.0 0.0', '-1 2 0'`

Color
  `Color(@color)`

  @color should be a list of colors with strings like `'1.0 0.0 0.0', '.3 .2 .1'`

Normal
  `Normal(@vector)`

  @vector should be a list of vectors with strings like `'1.0 0.0 0.0', '.4 .2 0'`

## Appearance

Appearance
  `Appearance($material, $texture, $textureTransform)`

Fontstyle
  `FontStyle($size, $family, $style, $justify, $language)` defines the current font style for the current `Text` Nodes

  $style can be 'PLAIN','BOLD','ITALIC','BOLD ITALIC'

  $familiy can be 'SERIF','SANS','TYPEWRITER'

  $justify can be 'BEGIN', 'MIDDLE', 'END'

Material
  `Material(%materials)`

ImageTexture
  `ImageTexture($url)`

MovieTexture
  `MovieTexture($url)`

## Sensors

CylinderSensor
  `CylinderSensor($maxAngle, $minAngle, $diskAngle, $offset, $autoOffset, $enabled)`

PlaneSensor
  `PlaneSensor($maxPosition, $minPosition, $offset, $autoOffset, $enabled)`

ProximitySensor
  `ProximitySensor($size, $center, $enabled)`

SphereSensor
  `SphereSensor($offset, $autoOffset, $enabled)`

TimeSensor
  `TimeSensor($cycleInterval, $loop, $startTime, $stopTime, $enabled)`

TouchSensor
  `TouchSensor($enabled)`

VisibilitySensor
  `VisibilitySensor($size, $center, $enabled)`

## Interpolators

ColorInterpolator
  `ColorInterpolator($key, $keyValue)`

CoordinateInterpolator
  `CoordinateInterpolator($key, $keyValue)`

OrientationInterpolator
  `OrientationInterpolator($key, $keyValue)`

NormalInterpolator
  `NormalInterpolator($key, $keyValue)`

PositionInterpolator
  `PositionInterpolator($key, $keyValue)`

ScalarInterpolator
  `ScalarInterpolator($key, $keyValue)`

  $key MFFloat $keyValue MFFloat

## Bindable Nodes

Background
  `Background($hash)`

  You only can use a hash. Parameter see VRML Spec

NavigationInfo
  `NavigationInfo($type, $speed, $headlight, $visibilityLimit, $avatarSize)`

  You can use a hash reference or all parameter in the same order above

Viewpoint
  `Viewpoint($description, $position, $orientation, $fieldOfView, $jump)`

PROTO
  `PROTO($name, $declaration, $definition)`

## other

USE
  `USE($name)`

DEF
  `DEF($name)`

ROUTE
  `ROUTE($from, $to)`

End
  `End($comment)`

  Close an open node with }

EndChildren
  `EndChildren($comment)`

  Close an open children part with ]

EndTransform
  `EndTransform($comment)`

  Close an open children part with ] and the node with }

# SEE ALSO

VRML::VRML2::Standard

VRML::Base

http://www.gfz-potsdam.de/~palm/vrmlperl/ for a description of VRML-modules and how to obtain it.

# BUGS

Compatibility with VRML1.pm is only given if you use `IndexedFaceSet` and `IndexedLineSet` with references

# AUTHOR

Hartmut Palm <palm@gfz-potsdam.de>

Homepage http://www.gfz-potsdam.de/~palm/