Community Place Version 2.0 Alpha 2

Functional Mapping for VRML2.0 Specification


History


Restrictions

General

  1. SE-VRML and draft versions of VRML 2.0 are not supported. Files in these formats may cause mulfunctioning of this product.

  2. JavaScript/VrmlScript are not supported.

DEF / USE

  1. If you use DEF/USE in a VRML 2.0 file, you can change the attributes of the DEFed node. However the corresponding attributes of the USEed object do not change.

  2. You can define SFNode fields in Script node and refer to other nodes using "USE". However you can not define MFNode fields in Script.

Browser.createVrmlFromString / Browser.createVrmlFromUrl

  1. Although the VRML 2.0 specification says that you can have multiple nodes inside a string given to createVrmlFromString API, this release only allows a single node whose type is Shape or Transform. A workaround is to use a Transform node and you can include arbitrary number of nodes in the Transform as follows:
        String vrmlString = "Transform{children[
                                 Shape{geometry Cone{}}
                                 Shape{geometry Box{}}
                                 ]}";
    

  2. The situation is the same for createVrmlFromUrl API. The included file should have only one top level node whose type is Shape or Transform.

addChildren Event of Grouping Nodes

  1. You can add new nodes created by Java APIs "createVrmlFromXXXX". However, you cannot share nodes by passing the nodes to a Transform's addChildren event-in dynamically.

PROTO / EXTERNPROTO

  1. Although the VRML 2.0 specification says that you can have multiple nodes inside a PROTO definition, this release only allows a single node whose type is Shape or Transform. A workaround is to use a Transform node and you can include arbitrary number of nodes in the Transform.

  2. You cannot use instances of PROTO / EXTERNPROTO as a value of Sony_BindSharedNode's transformNode field.

  3. It is impossible to access fields of a PROTO instance by getting the reference to the instance in the following way. To access the fields, you want to use ROUTE from the Script to the PROTO instance.

    #VRML V2.0 utf8 # THIS WORKS! PROTO SampleProto [exposedfield SFVec3f parameter 0 0 0] {.....} # instantiate a PROTO instance DEF PROTO_INST SampleProto{} # this Script can write the fields in PROTO_INST by routing. DEF SCRIPT Script{ url "foo.class" eventOut SFVec3f writeParam } ROUTE SCRIPT.writeParam TO PROTO_INST.set_parameter
    #VRML V2.0 utf8 # THIS DOES NOT WORK.... PROTO SampleProto [exposedfield SFVec3f parameter 0 0 0] {.....} # instantiate a PROTO instance DEF PROTO_INST SampleProto{} # this Script wants to access the fields in PROTO_INST. but... Script{ url "foo.class" field SFNode referenceToInstance USE PROTO_INST # fail!!! }

  4. You can route events from/to fields in PROTO instances. But it depends on nodes in the PROTO definition whether the events work correctly. Please refer to the table below to see which fields work properly.

  5. When you define SFNode/MFNode fields in a PROTO, instances of the PROTO can take only VRML2.0 built-in nodes as those fields' values. That is, you cannot use Sony original extension nodes such as Sony_BindSharedNode as the field value.

Nodes of VRML2.0

How to Read Tables

Columns Meaning of the marks

Implementation of each node

Following tables are categorized by VRML 2.0 Specification on Aug 4, 1996.

Anchor

func route read write
eventIn MFNode addChildren X X - X
eventIn MFNode removeChildren X X - X
exposedField MFNode children O X X X
exposedField SFString description O O O O
exposedField MFString parameter O O O O
exposedField MFString url * O O O
field SFVec3f bboxCenter * - - -
field SFVec3f bboxSize * - - -

Notes:
url field does not support the initial viewpoint described by "#ViewpointName". Even if you specify a viewpoint, it is ignored.
The place/size of bbox is calculated from the objects in an Anchor automatically. So, you cannot set them.

Appearance

func route read write
exposedField SFNode material O X X X
exposedField SFNode texture O X X X
exposedField SFNode textureTransform O X X X

AudioClip

func route read write
exposedField SFString description O O O O
exposedField SFBool loop O O O O
exposedField SFFloat pitch O O O O
exposedField SFTime startTime O O O O
exposedField SFTime stopTime O O O O
exposedField MFString url O X X X
eventOut SFTime duraction_changed - X X -
eventOut SFBool isActive - O X -

Background

func route read write
eventIn SFBool set_bind - X - X
exposedField MFFloat groundAngle X O O O
exposedField MFFloat groundColor X O O O
exposedField MFString backUrl O O O O
exposedField MFString bottomUrl O O O O
exposedField MFString frontUrl O O O O
exposedField MFString leftUrl O O O O
exposedField MFString rightUrl O O O O
exposedField MFString topUrl O O O O
exposedField MFFloat skyAngle X O O O
exposedField MFFloat skyColor * O O O
eventOut SFBool isBound - X X -

Notes:
Due to the restriction of our rendering engine, values except for skyColor[0] will be ignored and the background will be drawn with it.

Billboard

func route read write
eventIn MFNode addChildren - X - X
eventIn MFNode removeChildren - X - X
exposedField SFVec3f axisOfRotation * O O O
exposedField MFNode children * X X X
field SFVec3f bboxCenter * - - -
field SFVec3f bboxSize * - - -

Notes:
Regardless of the value in field "axisOfRotation", Billboard performs as if "axisOfRotation" field has a value (0, 0, 0).
The place/size of bbox is calculated from the objects in a Billboard automatically. So, you cannot set them.

Box

func route read write
field SFVec3f size O - - -

Collision

func route read write
eventIn MFNode addChildren X X - X
eventIn MFNode removeChildren X X - X
exposedField MFNode children O X X X
exposedField SFBool collide O X X X
field SFVec3f bboxCenter X - - -
field SFVec3f bboxSize X - - -
field SFNode proxy O - - -
eventOut SFTime collideTime - X X -

Color

func route read write
exposedField MFColor color O O O O

ColorInterpolator

func route read write
eventIn SFFloat set_fraction - O - O
exposedField MFFloat key O O O O
exposedField MFColor keyValue O O O O
eventOut SFColor value_changed - O O -

Cone

func route read write
field SFFloat bottomRadius O - - -
field SFFloat height O - - -
field SFBool side O - - -
field SFBool bottom O - - -

Coordinate

func route read write
exposedField MFVec3f point O O O O

CoordinateInterpolator

func route read write
eventIn SFFloat set_fraction - O - O
exposedField MFFloat key O O O O
exposedField MFVec3f keyValue O O O O
eventOut MFVec3f value_changed - O O -

Cylinder

func route read write
field SFBool bottom O - - -
field SFFloat height O - - -
field SFFloat radius O - - -
field SFBool side O - - -
field SFBool top O - - -

CylinderSensor

Not implemented yet.

DirectionalLight

func route read write
exposedField SFFloat ambientIntensity X O O O
exposedField SFColor color O O O O
exposedField SFVec3f direction O O O O
exposedField SFFloat intensity O O O O
exposedField SFBool on O O O O

Notes:
Our rendering engine doesn't support ambientIntensity function.

ElevationGrid

func route read write
eventIn MFFloat set_height - O - O
exposedField SFNode color O X X X
exposedField SFNode normal O X X X
exposedField SFNode texCoord O X X X
field MFFloat height O - - -
field SFBool ccw O - - -
field SFBool colorPerVertex * - - -
field SFFloat creaseAngle * - - -
field SFBool normalPerVertex O - - -
field SFBool solid O - - -
field SFInt32 xDimension O - - -
field SFFloat xSpacing O - - -
field SFInt32 zDimension O - - -
field SFFloat zSpacing O - - -

Extrusion

func route read write
eventIn MFVec2f set_crossSection - X - X
eventIn MFRotation set_orientation - X - X
eventIn MFVec2f set_scale - X - X
eventIn MFVec3f set_spine - X - X
field SFBool beginCap O - - -
field SFBool ccw O - - -
field SFBool convex * - - -
field SFFloat creaseAngle X - - -
field MFVec2f crossSection O - - -
field SFBool endCap O - - -
field MFRotation orientation O - - -
field MFVec2f scale O - - -
field SFBool solid O - - -
field MFVec3f spine O - - -

Notes:
Texture mapping has not been supported yet. Parameters of "convex" will not be evaluated.

Fog

func route read write
exposedField SFColor color * O O O
exposedField SFString fogType * O O O
exposedField SFFloat visibilityRange O O O O
eventIn SFBool set_bind - X - X
eventOut SFBool isBound - X X -

Notes:
When your PC is in 16 bit display mode, color field are automatically set to be (0, 0, 0).
'fogType' field is ignored and LINEAR blending is assumed.
Only last defined Fog node works.

FontStyle

func route read write
field SFString family O - - -
field SFBool horizontal X - - -
field MFString justify O - - -
field SFString language X - - -
field SFBool leftToRight O - - -
field SFFloat size O - - -
field SFFloat spacing O - - -
field SFString style O - - -
field SFBool topToBottom O - - -

Notes:
The current implementation does not support multi-byte characters.

Group

func route read write
eventIn MFNode addChildren - X - X
eventIn MFNode removeChildren - X - X
exposedField MFNode children O X X X
field SFVec3f bboxCenter * - - -
field SFVec3f bboxSize * - - -

Notes:
The place/size of bbox is calculated from the objects in a Group automatically. So, you cannot set them.

ImageTexture

func route read write
exposedField MFString url O O O O
field SFBool repeatS * - - -
field SFBool repeatT * - - -

Notes:
Our rendering engine supports only repeatS = repeatT = TRUE. It limits the number of texture tiling repetition to be less than 33. Due to the restriction of our rendering engine, ImageTexture whose height is any number of times larger than the width, is automatically treated as MovieTexture. And color of ImageTexture is not affected by total color of Material, but is affected by total 'brightness' of Material.

IndexedFaceSet

func route read write
eventIn MFInt32 set_colorIndex - X - X
eventIn MFInt32 set_coordIndex - X - X
eventIn MFInt32 set_normalIndex - X - X
eventIn MFInt32 set_texCoordIndex - X - X
exposedField SFNode color O * X *
exposedField SFNode coord O X X X
exposedField SFNode normal O X X X
exposedField SFNode texCoord O X X X
field SFBool ccw O - - -
field MFInt32 colorIndex O - - -
field SFBool colorPerVertex * - - -
field SFBool convex * - - -
field MFInt32 coordIndex O - - -
field SFFloat creaseAngle * - - -
field MFInt32 normalIndex O - - -
field SFBool normalPerVertex O - - -
field SFBool solid O - - -
field MFInt32 texCoordIndex O - - -

Notes:
You can change colors of faces by changing Color node's color field.
Even when colorPerVertex is specified TRUE, color per vertex is not supported. Instead, the average color of all vertex of a face is given to the face.
Parameters of "convex" will not be evaluated.
Parameter "normalPerVertex" effects as following:
When the normalPerVertex field is TRUE, smooth shading is used, and when the normalPerVertex field is FALSE, flat shading is used. Parameter "creaseAngle" effects as following:
When the normalPerVertex field is TRUE and the normal field is NULL, normal vectors of each vertex are calculated for smooth shading. The value of creaseAngle is ignored.

IndexedLineSet

func route read write
eventIn MFInt32 set_colorIndex - X - X
eventIn MFInt32 set_coordIndex - X - X
exposedField SFNode color O * X *
exposedField SFNode coord O X X X
field MFInt32 colorIndex O - - -
field SFBool colorPerVertex * - - -
field MFInt32 coordIndex O - - -

Notes:
You can change colors of lines by changing Color node's color field.
When the colorPerVertex field is TRUE, each line segment (PiPj) is not drawn with gradiation of two vertices colors (Ci, Cj) of the segment, but is drawn only with the first vertex color (Ci). Due to the restriction of our rendering engine, horizontal lines or vertical lines to the current Viewpoint may not be drawn.

Inline

func route read write
exposedField MFString url * X X X
field SFVec3f bboxCenter * - - -
field SFVec3f bboxSize * - - -

Notes:
If you set more than one URL, only the first one will be loaded. All the files consisting of a world are loaded at the first stage of entering the world.
The place/size of bbox is calculated from the objects in a Inline automatically. So, you cannot set them.

LOD

func route read write
exposedField MFNode level O X X X
field SFVec3f center O - - -
field MFFloat range O - - -

Notes:
You can specify "level" to be only Shape, Sound, or grouping nodes such as Transform.

Material

func route read write
exposedField SFFloat ambientIntensity * O O O
exposedField SFColor diffuseColor O O O O
exposedField SFColor emissiveColor O O O O
exposedField SFFloat shininess X O O O
exposedField SFColor specularColor * O O O
exposedField SFFloat transparency O O O O

Notes:
The value of shininess is ignored, and specularColor is converted into specular coefficience of our rendering engine with the equation (0.32r + 0.57g + 0.11b). Our rendering engine does not support ambientIntensity, and ambientIntensity (k) is converted into emissiveColor (k,k,k).

MovieTexture

func route read write
exposedField SFBool loop O O O O
exposedField SFFloat speed O O O O
exposedField SFTime startTime O O O O
exposedField SFTime stopTime O O O O
exposedField MFString url O X X X
field SFBool repeatS X - - -
field SFBool repeatT X - - -
eventOut SFFloat duration_changed - X X -
eventOut SFBool isActive - X X -

NavigationInfo

func route read write
eventIn SFBool set_bind - X - X
exposedField MFFloat avatarSize X O O O
exposedField SFBool headlight O O O O
exposedField SFFloat speed O O O O
exposedField MFString type O O O O
exposedField SFFloat visibilityLimit O O O O
eventOut SFBool isBound - X X -

Notes:
When the value of visibilityLimit is 0.0, it is replaced with 10000.0, which is the infinite visibility limit.

Normal

func route read write
exposedField MFVec3f vector O X X X

NormalInterpolator

func route read write
eventIn SFFloat set_fraction - O - O
exposedField MFFloat key O O O O
exposedField MFVec3f keyValue O O O O
eventOut MFVec3f value_changed - O O -

OrientationInterpolator

func route read write
eventIn SFFloat set_fraction - O - O
exposedField MFFloat key O O O O
exposedField MFRotation keyValue O O O O
eventOut SFRotation value_changed - O O -

PixelTexture

not implemented yet.

PlaneSensor

func route read write
exposedField SFBool autoOffset * X X X
exposedField SFBool enabled * X X X
exposedField SFVec2f maxPosition * X X X
exposedField SFVec2f minPosition * X X X
exposedField SFVec3f offset * X X X
eventOut SFBool isActive - X X -
eventOut SFVec3f trackPoint_changed - X X -
eventOut SFVec3f translation_changed - O X -

Notes:
All fields act as having default values.

PointLight

func route read write
exposedField SFFloat ambientIntensity X O O O
exposedField SFVec3f attenuation X O O O
exposedField SFColor color O O O O
exposedField SFFloat intensity O O O O
exposedField SFVec3f location O O O O
exposedField SFBool on O O O O
exposedField SFFloat radius X O O O

Notes:
Due to the restriction of our rendering engine, ambientIntensity has not been supported yet. To avoid confusing which comes from the semantic difference (*1) of radius between our rendering engine and VRML2.0 spec, radius field and attenuation field will be ignored and the radius is always infinity. (that is, not be attenuated.)
(*1) the radius of the former is the radius which begins to be attenuated. the latter one is the radius where intensity comes to 0.

PointSet

func route read write
exposedField SFNode color * X X X
exposedField SFNode coord O X X X

Notes:
The first value of the color field is used, and values after the second value are ignored.

PositionInterpolator

func route read write
eventIn SFFloat set_fraction - O - O
exposedField MFFloat key O O O O
exposedField MFVec3f keyValue O O O O
eventOut SFVec3f value_changed - O O -

ProximitySensor

func route read write
exposedField SFVec3f center O O O O
exposedField SFVec3f size O O O O
exposedField SFBool enabled O O O O
eventOut SFBool isActive - O O -
eventOut SFVec3f position_changed - O O -
eventOut SFRotation orientation_changed - O O -
eventOut SFTime enterTime - O O -
eventOut SFTime exitTime - O O -

ScalarInterpolator

func route read write
eventIn SFFloat set_fraction - O - O
exposedField MFFloat key O O O O
exposedField MFFloat keyValue O O O O
eventOut SFFloat value_changed - O O -

Script

func route read write
exposedField MFString url O X X X
field SFBool directOutput * - - -
field SFBool mustEvaluate * - - -

Notes:
The current implementation assumes 'directOutput' field is always TRUE. The current implementation assumes 'mustEvaluate' field is always TRUE.

Shape

func route read write
exposedField SFNode appearance O X X X
exposedField SFNode geometry O X X X

Sound

func route read write
exposedField SFVec3f direction O O O O
exposedField SFFloat intensity O O O O
exposedField SFVec3f location O O O O
exposedField SFFloat maxBack O O O O
exposedField SFFloat maxFront O O O O
exposedField SFFloat minBack O O O O
exposedField SFFloat minFront O O O O
exposedField SFFloat priority O O O O
exposedField SFNode source O X X X
field SFBool spatialize O - - -

Sphere

func route read write
field SFFloat radius O - - -

SphereSensor

func route read write
exposedField SFBool autoOffset * X X X
exposedField SFBool enabled * X X X
exposedField SFRotation offset * X X X
eventOut SFBool isActive - X X -
eventOut SFRotation rotation_changed - O X -
eventOut SFVec3f trackPoint_changed - X X -

Notes:
All fields act as having default values.

SpotLight

func route read write
exposedField SFFloat ambientIntensity X O O O
exposedField SFVec3f attenuation X O O O
exposedField SFFloat beamWidth * O O O
exposedField SFColor color O O O O
exposedField SFFloat cutOffAngle X O O O
exposedField SFVec3f direction O O O O
exposedField SFFloat intensity O O O O
exposedField SFVec3f location O O O O
exposedField SFBool on O O O O
exposedField SFFloat radius X O O O

Notes:
Due to the restriction of our rendering engine, ambientIntensity has not been supported yet. To avoid confusing which comes from the semantic difference (*1) of radius between our rendering engine and VRML2.0 spec, radius field and attention field will be ignored and the radius is always infinity. (that is, not be attenuated.) the beamWidth field will be default value defined by our rendering engine.

Switch

func route read write
exposedField MFNode choice O X X X
exposedField SFInt32 whichChoice O O O O

Notes:
You can specify "choice" to be only Shape, Sound, or grouping nodes such as Transform.

Text

func route read write
exposedField MFString string O O O O
exposedField SFNode fontStyle * X X X
exposedField MFFloat length O X X X
exposedField SFFloat maxExtent O X X X

Notes:
The current implementation does not support multi-byte characters.

TextureCoordinate

func route read write
exposedField MFVec2f point O X X X

TextureTransform

func route read write
exposedField SFVec2f center O O X X
exposedField SFFloat rotation O O X X
exposedField SFVec2f scale O O X X
exposedField SFVec2f translation O O X X

TimeSensor

func route read write
exposedField SFTime cycleInterval O O O O
exposedField SFBool enabled O O O O
exposedField SFBool loop O O O O
exposedField SFTime startTime O O O O
exposedField SFTime stopTime O O O O
eventOut SFTime cycleTime - O O -
eventOut SFFloat fraction_changed - O O -
eventOut SFBool isActive - O O -
eventOut SFTime time - O O -

TouchSensor

func route read write
exposedField SFBool enabled O O O O
eventOut SFVec3f hitNormal_changed - X X -
eventOut SFVec3f hitPoint_changed - X X -
eventOut SFVec2f hitTexCoord_changed - X X -
eventOut SFBool isActive - O O -
eventOut SFBool isOver - O O -
eventOut SFTime touchTime - O O -

Transform

func route read write
eventIn MFNode addChildren - * - X
eventIn MFNode removeChildren - X - X
exposedField SFVec3f center O O O O
exposedField MFNode children O X X X
exposedField SFRotation rotation O O O O
exposedField SFVec3f scale O O O O
exposedField SFRotation scaleOrientation O O O O
exposedField SFVec3f translation O O O O
field SFVec3f bboxCenter * - - -
field SFVec3f bboxSize * - - -

Notes:
The place/size of bbox is calculated from the objects in Transform automatically. So, you cannot set them. Refering to
Restrictions, addChildren is implemented with some restrictions

Viewpoint

func route read write
eventIn SFBool set_bind - O - O
exposedField SFFloat fieldOfView O O O O
exposedField SFBool jump O O O O
exposedField SFRotation orientation O O O O
exposedField SFVec3f position O O O O
field SFString description * - - -
eventOut SFTime bindTime - X X -
eventOut SFBool isBound - X X -

Notes:
"Go" Menu lists up Viewpoint's descriptions. You can select one of them to bind the viewpoint.

VisibilitySensor

func route read write
exposedField SFVec3f center O O O O
exposedField SFBool enabled O O O O
exposedField SFVec3f size O O O O
eventOut SFTime enterTime - O O -
eventOut SFTime exitTime - O O -
eventOut SFBool isActive - O O -

WorldInfo

func route read write
field MFString info O - - -
field SFString title O - - -