

VRML Script Tutorial
Full list
VRML Interactive Tutorial
Introduction
VRML File Structure
Drawing: Shape node
Geometry Nodes:
Appearance
Let there be Light
Materials with Colored Lights
Hierarchical Node Structures
Inlining Files
Defining and Instancing Nodes
Defining Levels of Detail
Events in VRML
Interpolators
Let the Music Play
Bindable Nodes
Adding Realism to the world
Information about your world
Definition for Auxiliary Nodes




[}8{)0
~Cv٫{Uf*%``'{{>`ml.51RwZVK"[?ftyO{x#fڢ{pj8T?މ<7q2by(9\c{yFKg~˒7rbžР =vv*=ڵ$65~oFª37/{= S[lt/0#ps,Jv96HbGg1rOF~GS,(
]WZh_ط,"I;Qx)p{L=1R
>nPA֔8ďh
(Ngx=I=/M(3&=&@1EPF yr]ʞm9oI4hr+h=L?x1
b>y0alc]O(q/b<;L)D8A Hq{^"2yX':gͮfh{o={]TDP8C4L0ri]&(%G+R:ݳN1
U0jmxi=1خ%I4R8]fΖuWBy)ǛvdJ8Nh2
!?S4GR X֞P$ {i
"owGK(Dey
qfn`0հPء
<EqdhQ`>%
<致mHZJXM&莚\ bKWro<&$ v^*ĶmOaN7N>3?P;Q8>um>=}zS(\~"$?QkWXʄ䛛VUN::~U}H:[qkrZ)ȳC6m?1'bM$uo3,(Bm=?4Y*<_h;'MOCЩ%{σq;6נĻe@3Oeل9[VAp+*P0B)QXJdKHct?`McF
<Şam+~~$>
@zy͋W'`S ),
;Q֟%=5JS`P
e(J}
U
,y B{R,Y?f2L7+2ߓhiU7va:`RjӶدfy]x3:1{&o}ZZ691
ĕmA 1FUG}'E0G ;,,9zwZLlQH;3&#!jd`jx$x^s]0H0C3{`'
[@E0@ھSjaue3`t0cu0$/jO"˪X4)TߑAc]6Cʞ3i.\Mi 8,\)vpwE 7?CUFDg9Pw}}BEMHg:k@mP4ڃ1~nAf#QR=]!uFQ#HhD#Y:g!ӇGɆ@8٫q۫0Q0#8Ka'3uJM&`NLʦlM̌?pQɇdKǳbt^N3zCê Sd,0[Vu&ck>R6LvM9&Lmm`N28%qHcdiU
yiW9DxI=+,a*;`_Ue3ƗLC1P,cm$zK0
13X]t*FaUL#o
8nc',AL(ԃ$9nXcLfOitV[x{`?s(dhCix,,*1
Y#K`{U'?yN!6't7(W+ 5
u+fu.j=_,N>\8{F4
?ӈ73 <g.kbd/>Ez/U$jCVXІ'ksoM"g=(y=^MoΗ
"!6E2$e[ AJGLILaX.=xzq2>;s^vgI3~ۙ*13
=$8Q ;'WOGR82sN7.XtX͓9C}(B:©;b)RkZ6)2y&s.v~y5cOjiQw=J
+?OBJ\ڋm/:7w_;F
KT"I@T#LB_g
/xd@+Q7!6?rqq$]Y4WǓn!1:1xTm& ,a~>.p:TuBaYLEYL"y? ,_DX I1OL9C䤱3=g߇ʠtk"Jyz:;;=ܠseX7dй+?\$ɤl%x:I6:H7<EG}C{hϪX^7VȈ$!rQXI)ÉPN ՁEƓy$cPJw]@2Pzq'"
;D3<)٩&'X0;3~ag? h dLE[v`e!DJNX[2$I)oTA+(T8ԾwWLe'üOs㫡
3v )3~bNS0":>p;cvǌnbj\Jmv0*1݂Jbj3aO7vK>sOCbkUI3šueYGgAVKIiűH/I=';^W0`Ao
`74I;?qOK1s6
zVEކ9cLG.I5ip?44VUUQQ{әA4gtgրuG̮LpV_܀,f[5n(5$\JgH휆\Jef}{=@CN`_
VѺEymb0L
? 7q:H?"C7Q<=)^1d%lut`7<g<ǲ%bc?=V
CV^d`nxJ1T8֛xPm2>]xhPLDA}&#'co0%"t8K8T
FXmI
sssfuXj˹'L@yNǁh8kk"
&t^%&S:WU1LA3#m۳Ŀں=j"8Z
]ύGvÎ(
C1AA"'w(l~a!Rˢ&P7ߴ0Q65^n"(ȞIփQqFGNyլȱZ[58
h?7`DY0Bz4wht60d)؟Mћ
tښxV1Nd)mE$=ڸph?JgZ)yh_bE`+360 T享T``R@bdㅹw[;VZmg! 3낊$
'؊g3#ْh0:Su"Y[ujLUUO_.Tdx]+O
M\*W3LpHQ悡C
e檅rK\\C!K0w 5']_s۸g8/SI$G$q'ĭCK1E(Ib@4/7}$?.ήjVth,tIa,A:[e*kQ`mЇ%֫yVoK9ťGY"Z\p#0e3^raU=IoGl+܁ySW@4j"$I$Gۚ/OEzS3_cA+㧣]
SXwz9$+=%3
2(g~sxKVnےY]3}#<͆tQzB덇Q%c/$>L}ڶ`'`V؇I¸/:ƀqOwnif0Y(uL"ZaٶzM)9rƆhA
8!,
+%sr0F[9Jb~Zrnj~STSYM/AFw?z3@ksFàft=tD,[ticee:͆970Fg(8O9X;Xf5t
^,~ǏrݐݼʪWQrqUpͳ#HDgy؏(!utR~K!^`$stS\W./1+.ĽQm7;ypp2WێYbrNeq%0tYa$GW]np\q~#g~7r}^ Y<\HV[=zt4rđ/B#
NrLҍΙ(v]eR0}o8^d$&CYuڊ.0&B
hp*I)ђ!6oF20͈JVf.^F`7sajrXA]uqL`p:`WƣXr;L辤m
~=3;^y+ :Q?ݕi\f&+HOһm#6Rs~RIĻzastZo6onU^PQq9#I"_<+yVOxgﭛsy"ң{Q*ejU#s#=hR2לj3^STtӆ*8{ܻ[N=_ VbDYL]ZuCOGy8[8 j$exbFO{sg3xjY,^Љ+k,*لdW煰N\x4kZM^Rj(\z# 5YkJՐ9+Xu8,^)@c`e7Zٍ9ՅH
P8^y&pZ:aA95`@T q1a+YD)jfz($ @Wq7W*F~y77M(ƆxA_ՠ{uwz@T'H{Ͽv+QI`
+]iwA$<fyhg'R{*ׁx^/̶lS'" 㤋pdϞ1ͺ%Ƴ`>1X<gpx@C9^]rgчwE
Yd,7G
)"X+vwAZd4 Bbn5uvMRrs BEB<klCZ9lFJHcOܪa1l8<])q36mnzCUwTxE*d%?p!ՔC#c]
eОV6`f7};WLqc4;9<<
7;yb4MBY!ONx[is};FS]]&i'i
/W>Y7)2?iIvvOBJ;tP"yҭli7:O=0e]
Transform Node
The transform node is a grouping node.
As a group node it can be used to define a set of nodes as a single object.
However this is not the main purpose of this node. This node allows you
to define a new local coordinate system for the nodes within the group.
This node can be used to perform the following geometric transformations:
Scale
Rotation
Translation
All the nodes inside a Transform group are affected by these transformations,
i.e. all coordinates are computed in the local coordinate system. Transform
groups inside Transforms groups accumulate the transformations specified
in each Transform. The inner Transform group defines a local coordinate
system based on the coordinate system defined in the outer transform group.
The following fields are present:
children which contains all the nodes included in the group.
scale specifies a 3D scaling transformation.
scaleOrientation defines a rotation of the axes for the scaling
operation.
center defines the center of the scaling transform.
rotation defines a rotation on an arbitrary axis.
translation defines the origin of the local coordinate system.
bboxCenter specifies the center of a box that encloses the nodes
in the group. The value for this field is a 3D point.
bboxSize specifies where the size of a box that encloses the
nodes in the group. By default this field has a value of 1 1 1, which
implies that no box is defined. The values for this field must be greater
than or equal to zero. If the children nodes do not fit inside the box
defined the results are undefined.
Syntax:

Transform { 
scale 1 1 1
scaleOrientation 0 0 1 0
center 0 0 0
rotation 0 0 1 0
translation 0 0 0
bboxCenter 0 0 0
bboxSize 1 1 1
children []
}

} 

Scale
A scaling operation allows you to resize a shape. You can enlarge or decrease
the size of a shape in any number of dimensions. The scale factors
must be positive. The next figure presents an example.
The left box is a cube defined using the Box node without any scaling operation.
The second is scaled in the X axis by 0.2, the third is scaled in the Y
axis also by 0.2, and the fourth is scaled both in the Y and Z axes by
0.2.
Sometimes, you may wish that the axes to which the scaling operation is
applied were not the standard axes. scaleOrientation field allows
you to rotate the axes, the scaling factors will be applied to the rotated
axes and not to the original axes. The scaleOrientation field specifies
a vector which defines the rotation axis, and the angle measure for rotation.
The cube from the right had a scale of 1.3 in the Y axis which was previously
rotated by 45 degrees in the Z axis. The next figure shows the computations
involved step by step.
The left figure shows the axes and a box prior to any geometric transformations.
The second shows the effect of the scaleOrientation, a rotation
of 45 degrees in the Z axis. The scaleOrientation used was 0 0 1
0.75, the first three values specify a vector, the fourth an angle (recall
that in VRML angles are defined in radians).
Note that after the third step the axes go back to normal, i.e. those in
the left figure.
Because translation is the last transformation to be applied, it
may sometimes be convenient to define a translated set of axes for the
scaling operation. Note that as for the scaleOrientation, this translation
is only effective for the scale transformation. The field center
allows you to perform such a translation.
The next figure shows a default box (in the middle) and two scaled boxes,
the one on the right using a center of (0,1,0) and the left one
without using center.
The effect of the center field in this case is that the final position
of the scaled boxes is different. Sometimes this can bring some advantage,
if for instance you need to know where a specific point of the shape will
be after scaling. In the above example, the base of the shape in the right
after scaling remains at the same position as the original unscaled shape
(in the middle).
You can combine all three scaling related fields together, in this case
the axes will be translated to the center point, rotated according to the
scaleOrientation, and finally scaled as defined in the scale field. Please
experiment in the right side frames at your will.
Rotation
A rotation is defined by a vector and an angle. The vector specifies the
axis of rotation, whereas the angle specifies the amount to rotate in a
counter clockwise direction. The following figure shows a dotted Box in
its default position and the Box rotated 45 degrees in the Z axis.
Rotations can be done in an arbitrary axis if desired. The following figure
shows some rotations applied to boxes.
The left box has no rotation applied to it, the second box has a rotation
of 45 degrees in the Y axis, the third is rotated in the X axis also by
45 degrees, the fourth is rotated 45 degrees using a vector (1 1 0).
The center field explained earlier in the Scale section has the
same effect in rotations.
In the above example a center of (2,2,0) was used, middle figure, and afterwards
a rotation of 45 degrees was performed on the Z axis, right figure.
Translation
Translations allow you to place a shape wherever you want to. The following
figure attempts to depict the concept.
The dotted lines represent the coordinate system outside the Transform
node. The full lines represent the local coordinate system inside a Transform
node which defines a translation as specified by the arrow vector. The
translation in the figure could be (1,1,0), i.e. the local coordinate system
in the Transform node would have has its origin the point (1,1,0) from
the coordinate system defined outside the Transform node.
You have probably already guessed that the two figures with a set of cubes
had several translations involved.
Composing Multiple Geometric Transformations
Up till now you've been playing with single transformations, but you can
combine two or all geometric transformations in a single transform node.
The transformations are independent of each other. For instance if you have both a
translation and an orientation in the same Transform, the translation is not affected by the orientation
and viceversa.
In the above example if you did want the translation to occur in the rotated axis system then you should define two
nested Transform nodes, placing the orientation in the outter Transform, and the translation in the
inner Transform node.
