Anda di halaman 1dari 11

Floppy's VRML97 Tutorial, http://web3d.vapourtech.

com/
Resumen de la estructura de un archivo
Este archivo es un sumario de la manera en que debe componerse un escenario VRML. Muestra los nodos de agrupamiento
vlidos, los que estn a nivel de raz y los nodos children, junto con algo ms de informacin til.

Cabecera de un archivo VRML97


La cabecera (La primera lnea) debe ser la que sigue:
#VRML V2.0 utf8
Cualquier cosa posterior a una # es interpretada como un comentario, e ignorada..

Tipos de MIME VRML97


Los tipos de MIME para VRML son:
x-world/x-vrml
model/vrml
La primera es antigua, y las aplicaciones recientes usarn la segunda.

Nodos de agrupamiento
Los siguientes nodos son de agrupamiento, lo que significa que slo podrn contener otros nodos en su campo children.

Anchor

Collision

LOD

Transform

Billboard

Group

Switch

Nodos Children
Los siguientes nodos son children legalmente, lo que significa que no necesitan estar contenidos dentro de un nodo de
agrupamiento, pero que pueden estarlo. Pueden ir en la raz del archivo, o en cualquier punto del grafo de la escena,
contenidos dentro de alguno de los nodos de agrupamiento descritos arriba.

Anchor
Background
Billboard
Collision
ColorInterpolator
CoordinateInterpol
ator
CylinderSensor
DirectionalLight
Fog

Group
Inline
LOD
NavigationInfo
NormalInterpo
lator
OrientationInte
rpolator
PlaneSensor
PointLight

PositionInterpo
lator
ProximitySenso
r
ScalarInterpola
tor
Script
Shape
Sound
SpotLight
SphereSensor

Switch
TimeSensor
TouchSensor
Transform
Viewpoint
VisibilitySensor
WorldInfo
Child
nodos
redefinidos
con
PROTO

Nodos Bindable
Los siguientes nodos son bindable.

Background

Fog

NavigationInfo
Viewpoint

Nodos Geomtricos
Los siguientes nodos son Geomtricos, y slo pueden estar contenidos dentro del campo geometry de un nodo Shape.

Box
Cone
Cylinder

ElevationGrid
Extrusion
IndexedFaceSet

IndexedLineSet
PointSet
Sphere

Text

Nodos Especiales
Los siguientes nodos son especiales, y slo pueden estar contenidos en determinados campos de determinados nodos.

Node
Appearance
AudioClip

Parent
Shape
Sound
ElevationGrid
IndexedFaceSet
IndexedLineSet
IndexedFaceSet
IndexedLineSet
PointSet
Text
Appearance
Appearance
Appearance
Sound
ElevationGrid
IndexedFaceSet
Appearance
ElevationGrid
IndexedFaceSet
Appearance

Color
Coordinate
FontStyle
ImageTexture
Material
MovieTexture
Normal
PixelTexture
TextureCoordinate
TextureTransform

Field
appearance
source
color
color
color
coord
coord
coord
fontStyle
texture
material
texture
source
normal
normal
texture
texCoord
texCoord
textureTransform

A Referencia Rpida de nodos


Esta referencia muestra la sintaxis de todos los nodos de la especificacin oficial del VRML 97. Muestra
eventIn, eventOut, campos y exposedFields para cada nodo, junto con su tipo y valores por defecto en cada
caso.
Anchor
Anchor {
eventIn
eventIn
exposedField
exposedField
exposedField
exposedField
field
field
}
Appearance
Appearance {
exposedField
exposedField
exposedField
}
AudioClip
AudioClip {
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
eventOut
eventOut
}
Background
Background {
eventIn
exposedField

MFNode
MFNode
MFNode
SFString
MFString
MFString
SFVec3f
SFVec3f

addChildren
removeChildren
children
description
parameter
url
bboxCenter
bboxSize

[]
""
[]
[]
0 0 0
-1 -1 -1

SFNode
SFNode
SFNode

material
texture
textureTransform

NULL
NULL
NULL

SFString
SFBool
SFFloat
SFTime
SFTime
MFString
SFTime
SFBool

description
loop
pitch
startTime
stopTime
url
duration_changed
isActive

""
FALSE
1.0
0
0
[]

SFBool
MFFloat

set_bind
groundAngle

[]

exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
eventOut

MFColor
MFString
MFString
MFString
MFString
MFString
MFString
MFFloat
MFColor
SFBool

groundColor
backUrl
bottomUrl
frontUrl
leftUrl
rightUrl
topUrl
skyAngle
skyColor
isBound

[]
[]
[]
[]
[]
[]
[]
[]
[0 0 0]

MFNode
MFNode
SFVec3f
MFNode
SFVec3f
SFVec3f

addChildren
removeChildren
axisOfRotation
children
bboxCenter
bboxSize

0 1 0
[]
0 0 0
-1 -1 -1

SFVec3f

size

2 2 2

MFNode
MFNode
MFNode
SFBool
SFVec3f
SFVec3f
SFNode
SFTime

addChildren
removeChildren
children
collide
bboxCenter
bboxSize
proxy
collideTime

MFColor

color

[]

{
SFFloat
MFFloat
MFFloat
SFFloat

set_fraction
key
keyValue
value_changed

[]
[]

SFBool
SFFloat
SFFloat
SFBool

bottom
bottomRadius
height
side

TRUE
1
2
TRUE

MFVec3f

point

[]

set_fraction
key
keyValue
value_changed

[]
[]

}
Billboard
Billboard {
eventIn
eventIn
exposedField
exposedField
field
field
}
Box
Box {
field
}
Collision
Collision {
eventIn
eventIn
exposedField
exposedField
field
field
field
eventOut
}
Color
Color {
exposedField
}
ColorInterpolator
ColorInterpolator
eventIn
exposedField
exposedField
eventOut
}
Cone
Cone {
field
field
field
field
}
Coordinate
Coordinate {
exposedField
}

CoordinateInterpolator
CoordinateInterpolator {
eventIn
SFFloat
exposedField
MFFloat
exposedField
MFVec3f
eventOut
MFVec3f

[]
TRUE
0 0 0
-1 -1 -1
NULL

}
Cylinder
Cylinder {
field
field
field
field
field
}
CylinderSensor
CylinderSensor {
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
eventOut
eventOut
eventOut
}

SFBool
SFFloat
SFFloat
SFBool
SFBool

bottom
height
radius
side
top

SFBool
SFFloat
SFBool
SFFloat
SFFloat
SFFloat
SFBool
SFRotation
SFVec3f

autoOffset
TRUE
diskAngle
0.262
enabled
TRUE
maxAngle
-1
minAngle
0
offset
0
isActive
rotation_changed
trackPoint_changed

DirectionalLight
DirectionalLight {
exposedField
SFFloat
exposedField
SFColor
exposedField
SFVec3f
exposedField
SFFloat
exposedField
SFBool
}
ElevationGrid
ElevationGrid {
eventIn
exposedField
exposedField
exposedField
field
field
field
field
field
field
field
field
field
field
}
Extrusion
Extrusion {
eventIn
eventIn
eventIn
eventIn
field
field
field
field
field
field
field
field
field
field
}
Fog
Fog {

TRUE
2
1
TRUE
TRUE

ambientIntensity
color
direction
intensity
on

0
1 1 1
0 0 -1
1
TRUE

MFFloat
SFNode
SFNode
SFNode
MFFloat
SFBool
SFBool
SFFloat
SFBool
SFBool
SFInt32
SFFloat
SFInt32
SFInt32

set_height
color
normal
texCoord
height
ccw
colorPerVertex
creaseAngle
normalPerVertex
solid
xDimension
xSpacing
zDimension
zSpacing

NULL
NULL
NULL
[]
TRUE
TRUE
0
TRUE
TRUE
0
0.0
0
0.0

MFVec3f
MFRotation
MFVec2f
MFVec3f
SFBool
SFBool
SFBool
SFFloat
MFVec2f
SFBool
MFRotation
MFVec2f
SFBool
MFVec3f

set_crossSection
set_orientation
set_scale
set_spine
beginCap
ccw
convex
creaseAngle
crossSection
endCap
orientation
scale
solid
spine

TRUE
TRUE
TRUE
0
[1 1, 1 -1, -1 -1, -1 1, 1 1]
TRUE
0 0 1 0
1 1
TRUE
[0 0 0, 0 1 0]

eventIn
exposedField
exposedField
exposedField
eventOut

SFBool
SFColor
SFString
SFFloat
SFBool

set_bind
color
fogType
visibilityRange
isBound

1 1 1
"LINEAR"
0

MFString
SFBool
MFString
SFString
SFBool
SFFloat
SFFloat
SFString
SFBool

family
horizontal
justify
language
leftToRight
size
spacing
style
topToBottom

"SERIF"
TRUE
"BEGIN"
""
TRUE
1.0
1.0
"PLAIN"
TRUE

MFNode
MFNode
MFNode
SFVec3f
SFVec3f

addChildren
removeChildren
children
bboxCenter
bboxSize

[]
0 0 0
-1 -1 -1

MFString
SFBool
SFBool

url
repeatS
repeatT

[]
TRUE
TRUE

MFInt32
MFInt32
MFInt32
MFInt32
SFNode
SFNode
SFNode
SFNode
SFBool
MFInt32
SFBool
SFBool
MFInt32
SFFloat
MFInt32
SFBool
SFBool
MFInt32

set_colorIndex
set_coordIndex
set_normalIndex
set_texCoordIndex
color
coord
normal
texCoord
ccw
colorIndex
colorPerVertex
convex
coordIndex
creaseAngle
normalIndex
normalPerVertex
solid
texCoordIndex

NULL
NULL
NULL
NULL
TRUE
[]
TRUE
TRUE
[]
0
[]
TRUE
TRUE
[]

MFInt32
MFInt32
SFNode
SFNode
MFInt32
SFBool
MFInt32

set_colorIndex
set_coordIndex
color
coord
colorIndex
colorPerVertex
coordIndex

NULL
NULL
[]
TRUE
[]

}
FontStyle
FontStyle {
field
field
field
field
field
field
field
field
field
}
Group
Group {
eventIn
eventIn
exposedField
field
field
}
ImageTexture
ImageTexture {
exposedField
field
field
}
IndexedFaceSet
IndexedFaceSet {
eventIn
eventIn
eventIn
eventIn
exposedField
exposedField
exposedField
exposedField
field
field
field
field
field
field
field
field
field
field
}
IndexedLineSet
IndexedLineSet {
eventIn
eventIn
exposedField
exposedField
field
field
field
}
Inline
Inline {

exposedField
field
field

MFString
SFVec3f
SFVec3f

url
bboxCenter
bboxSize

[]
0 0 0
-1 -1 -1

MFNode
SFVec3f
MFFloat

level
center
range

[]
0 0 0
[]

SFFloat
SFColor
SFColor
SFFloat
SFColor
SFFloat

ambientIntensity
diffuseColor
emissiveColor
shininess
specularColor
transparency

0.2
0.8 0.8 0.8
0 0 0
0.2
0 0 0
0

SFBool
SFFloat
SFTime
SFTime
MFString
SFBool
SFBool
SFTime
SFBool

loop
speed
startTime
stopTime
url
repeatS
repeatT
duration_changed
isActive

FALSE
1
0
0
[]
TRUE
TRUE

SFBool
MFFloat
SFBool
SFFloat
MFString
SFFloat
SFBool

set_bind
avatarSize
headlight
speed
type
visibilityLimit
isBound

[0.25, 1.6, 0.75]


TRUE
1.0
"WALK"
0.0

MFVec3f

vector

[]

set_fraction
key
keyValue
value_changed

[]
[]

set_fraction
key
keyValue
value_changed

[]
[]

image
repeatS

0 0 0
TRUE

}
LOD
LOD {
exposedField
field
field
}
Material
Material {
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
}
MovieTexture
MovieTexture {
exposedField
exposedField
exposedField
exposedField
exposedField
field
field
eventOut
eventOut
}
NavigationInfo
NavigationInfo {
eventIn
exposedField
exposedField
exposedField
exposedField
exposedField
eventOut
}
Normal
Normal {
exposedField
}

NormalInterpolator
NormalInterpolator {
eventIn
SFFloat
exposedField
MFFloat
exposedField
MFVec3f
eventOut
MFVec3f
}
OrientationInterpolator
OrientationInterpolator {
eventIn
SFFloat
exposedField
MFFloat
exposedField
MFRotation
eventOut
SFRotation
}
PixelTexture
PixelTexture {
exposedField
field

SFImage
SFBool

field

SFBool

repeatT

TRUE

SFBool
SFBool
SFVec2f
SFVec2f
SFVec3f
SFBool
SFVec3f
SFVec3f

autoOffset
TRUE
enabled
TRUE
maxPosition
-1 -1
minPosition
0 0
offset
0 0 0
isActive
trackPoint_changed
translation_changed

SFFloat
SFVec3f
SFColor
SFFloat
SFVec3f
SFBool
SFFloat

ambientIntensity
attenuation
color
intensity
location
on
radius

0
1 0 0
1 1 1
1
0 0 0
TRUE
100

SFNode
SFNode

color
coord

NULL
NULL

set_fraction
key
keyValue
value_changed

[]
[]

}
PlaneSensor
PlaneSensor {
exposedField
exposedField
exposedField
exposedField
exposedField
eventOut
eventOut
eventOut
}
PointLight
PointLight {
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
}
PointSet
PointSet {
exposedField
exposedField
}

PositionInterpolator
PositionInterpolator {
eventIn
SFFloat
exposedField
MFFloat
exposedField
MFVec3f
eventOut
SFVec3f
}
ProximitySensor
ProximitySensor {
exposedField
SFVec3f
exposedField
SFVec3f
exposedField
SFBool
eventOut
SFBool
eventOut
SFVec3f
eventOut
SFRotation
eventOut
SFTime
eventOut
SFTime
}
ScalarInterpolator
ScalarInterpolator {
eventIn
SFFloat
exposedField
MFFloat
exposedField
MFFloat
eventOut
SFFloat
}
Script
Script {
exposedField
field
field

MFString
SFBool
SFBool

center
0 0 0
size
0 0 0
enabled
TRUE
isActive
position_changed
orientation_changed
enterTime
exitTime

set_fraction
key
keyValue
value_changed

[]
[]

url
directOutput
mustEvaluate

[]
FALSE
FALSE

Also, any number of the following:


eventIn
Type
eventInName
field
Type
fieldName
eventOut
Type
eventOutName
}

default value

Shape
Shape {
exposedField
exposedField
}

appearance
geometry

NULL
NULL

SFVec3f
SFFloat
SFVec3f
SFFloat
SFFloat
SFFloat
SFFloat
SFFloat
SFNode
SFBool

direction
intensity
location
maxBack
maxFront
minBack
minFront
priority
source
spatialize

0 0 1
1
0 0 0
10
10
1
1
0
NULL
TRUE

SFFloat

radius

SFBool
SFBool
SFRotation
SFBool
SFRotation
SFVec3f

autoOffset
TRUE
enabled
TRUE
offset
0 1 0 0
isActive
rotation_changed
trackPoint_changed

SFFloat
SFVec3f
SFFloat
SFColor
SFFloat
SFVec3f
SFFloat
SFVec3f
SFBool
SFFloat

ambientIntensity
attenuation
beamWidth
color
cutOffAngle
direction
intensity
location
on
radius

0
1 0 0
1.570796
1 1 1
0.785398
0 0 -1
1
0 0 0
TRUE
100

MFNode
SFInt32

choice
whichChoice

[]
-1

MFString
SFNode
MFFloat
SFFloat

string
fontStyle
length
maxExtent

[]
NULL
[]
0.0

point

[]

Sound
Sound {
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
field
}

SFNode
SFNode

Sphere
Sphere {
field
}
SphereSensor
SphereSensor {
exposedField
exposedField
exposedField
eventOut
eventOut
eventOut
}
SpotLight
SpotLight {
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
}
Switch
Switch {
exposedField
exposedField
}
Text
Text {
exposedField
exposedField
exposedField
exposedField
}

TextureCoordinate
TextureCoordinate {
exposedField
MFVec2f
}
TextureTransform
TextureTransform {

exposedField
exposedField
exposedField
exposedField

SFVec2f
SFFloat
SFVec2f
SFVec2f

center
rotation
scale
translation

0 0
0
1 1
0 0

SFTime
SFBool
SFBool
SFTime
SFTime
SFTime
SFFloat
SFBool
SFTime

cycleInterval
enabled
loop
startTime
stopTime
cycleTime
fraction_changed
isActive
time

1
TRUE
FALSE
0
0

SFBool
SFVec3f
SFVec3f
SFVec2f
SFBool
SFBool
SFTime

enabled
TRUE
hitNormal_changed
hitPoint_changed
hitTexCoord_changed
isActive
isOver
touchTime

MFNode
MFNode
SFVec3f
MFNode
SFRotation
SFVec3f
SFRotation
SFVec3f
SFVec3f
SFVec3f

addChildren
removeChildren
center
children
rotation
scale
scaleOrientation
translation
bboxCenter
bboxSize

}
TimeSensor
TimeSensor {
exposedField
exposedField
exposedField
exposedField
exposedField
eventOut
eventOut
eventOut
eventOut
}
TouchSensor
TouchSensor {
exposedField
eventOut
eventOut
eventOut
eventOut
eventOut
eventOut
}
Transform
Transform {
eventIn
eventIn
exposedField
exposedField
exposedField
exposedField
exposedField
exposedField
field
field
}

Viewpoint
Viewpoint {
eventIn
SFBool
exposedField
SFFloat
exposedField
SFBool
exposedField
SFRotation
exposedField
SFVec3f
field
SFString
eventOut
SFTime
eventOut
SFBool
}
VisibilitySensor
VisibilitySensor {
exposedField
SFVec3f
exposedField
SFBool
exposedField
SFVec3f
eventOut
SFTime
eventOut
SFTime
eventOut
SFBool
}
WorldInfo
WorldInfo {
field
field

MFString
SFString

set_bind
fieldOfView
jump
orientation
position
description
bindTime
isBound

0 0 0
[]
0 0 1 0
1 1 1
0 0 1 0
0 0 0
0 0 0
-1 -1 -1

0.785398
TRUE
0 0 1 0
0 0 10
""

center
enabled
size
enterTime
exitTime
isActive

0 0 0
TRUE
0 0 0

info
title

[]
""

Las rotaciones
Las rotaciones en VRML funcionan con la regla de la mano derecha.
Imaginar que envuelven con su mano alrededor de uno de los ejes, con el dedo pulgar apuntando en direccin
positiva, la direccin de rotacin positiva es igual que la direccin en que los dedos se envuelven alrededor, es
decir igual que el sentido de las manecillas del reloj en una direccin positiva. Esto es para las rotaciones
sobre cualquier eje, entonces si se quiere rotar un objeto 90 grados fuera de nosotros alrededor del eje X, se
tendr que utilizar en 90 grados la rotacin negativa. Esto tambin aplica a las rotaciones sobre los ejes
arbitrarios.
Conversiones
Los ngulos se miden en radianes, por lo que es necesario hacer una conversin de grados a radianes: (No. de
grados * PI)/180.
Grados
0
45
90
135
180
225
270
315
360

Radianes
0
0.78
1.57
2.36
3.14 (Pi)
3.93
4.71
5.5
6.28 (2*Pi)

Tipos de datos y campos

SFBool
ste es un valor booleano simple que puede tomar el valor "TRUE" o "FALSE".
SFColor & MFColor
Este campo contiene un color simple conformado por tres nmeros de punto flotante
entre 0 y 1 que corresponden a los valores rojos, verdes y azules de ese color, por
ejemplo 0 1 0 es verde. MFColor es un campo que contiene colores mltiples, por
ejemplo [0 1 0, 1 0 0, 0 0 1].
SFFloat & MFFloat
SFFloat es un valor simple de punto flotante, por ejemplo 7.5. MFFloat son varios
valores de punto flotante, por ejemplo [1.0, 3.4, 76.54].
SFImage
SFImage es una imagen bidimensional, ya sea en color o gris. Consiste de:

Dos enteros, representando la anchura y altura de la imagen.

Un entero que representa el nmero de componentes en la imagen. 1 es slo los


niveles grises, 2 son grises con transparencia, 3 son el color en RGB, y 4 son
RGB con transparencia.

Despus de stos, hay anchura * altura en hexadecimales, consistiendo en 2


dgitos para cada componente. As que, 0xFF sera blanco en una imagen de un
componente, y 0xFF00007F sera rojo medio transparente en una imagen del 4
componente.

Los pixeles se especifican de izquierda a derecha y de abajo hacia arriba.


SFInt32 & MFInt32
Uno solo o una lista de nmeros enteros de 32 bits. stos pueden estar en formato
decimal o hexadecimal. Los nmeros en hexadecimal comienzan con el 0x, por ejemplo
el 0xFF es 255 en decimal.
SFNode & MFNode
SFNode es un solo nodo, y MFNode es una lista de nodos. Algunos de los campos
children en muchos nodos es del tipo MFNode.
SFRotation & MFRotation
Estos campos especifican una rotacin sobre un eje. Esto es realizado por cuatro
nmeros del punto flotante. Los primeros tres especifican las coordenadas X Y Z para el
vector correspondiente al eje sobre el cual rotar, y el cuarto es el nmero (ngulo) en
radianes para rotar. SFRotation es un solo set de valores, MFRotation es una lista.
SFString & MFString
Este tipo contiene una lista de caracteres en el set de caracteres utf-8. ASCII es un
subconjunto de utf-8, de modo que no necesitas preocuparte sobre carcteres diferentes
o algo as. Un string (SFString) se especifica como "Hola", entre comillas. Una lista
(MFString) se parecera a: ["Hola", "Mundo"].
SFTime & MFTime
Uno solo o una lista de valores de tiempo. Estos se especifican como nmeros de punto
flotante que representan el nmero de segundos transcurridos desde que pas la
medianoche del 1 de enero1970.
SFVec2f & MFVec2f
Uno solo o una lista de vectores 2D. Un vector 2D es un par de nmeros de punto
flotante.
SFVec3f & MFVec3f
Uno solo o una lista de vectores 3D. Un vector 3D es un triple de nmeros de punto
flotante.

Anda mungkin juga menyukai