Lighthouse3d.com

uW(.JUMLO-O)ͭKLSW(L)ɰU7TWHL(3RRl bJP< Send me bugs and suggestions, please
VRML Script Tutorial
Full list

VRML Interactive Tutorial

Introduction
VRML File Structure
Drawing: Shape node
Geometry Nodes:
Box
Sphere
Cone
Cylinder
PointSet
IndexedLineSet
IndexedFaceSet
Extrusion
ElevationGrid
Example: Chessboard
Text
FontStyle
Appearance
Material
Textures
Image Texture
Movie Texture
Pixel Texture
Texture Coordinate
Texture Transform
Let there be Light
Directional Light
Point Light
Spot Light
Materials with Colored Lights
Hierarchical Node Structures
Group
Transform
Collision
Anchor
Billboard
Switch
Inlining Files
Defining and Instancing Nodes
Defining Levels of Detail
Events in VRML
Creating Paths between events: ROUTE
Generating Events based on Timers or User Actions
Timers
Touch Sensor
Visibility Sensor
Dragging Sensors
Plane Sensor
Sphere Sensor
Cylinder Sensor
Proximity Sensors
Example: Proximity sensor
Interpolators
Color
Coordinate
Normal
Orientation
Position
Scalar
Example
Let the Music Play
Sound
AudioClip
Bindable Nodes
Who Am I: NavigationInfo
Where Am I: ViewPoint
Adding Realism to the world
Background
Fog
Information about your world
WorldInfo
Definition for Auxiliary Nodes
Coordinate
Color
Normal

Z6y ];CƼ.YN%s*[Tlש-Ϭ "AcBёd<)Hu)n4ݛ0cյ~\׷B [튂OX(<~X1C]Kl:/e}ݝ8y6K9fԏu{jS[@O4t<^UմGiׯiZ¹[_Dk- Wf8{PF{F/*T  b ,n[tfQҖñA$xs1 y̧w2B1o5WzN{Ubߦ(avώ\C I5x)&gA{lJċ&cd12h@S=\7K(sRQ`EF@IN ~Ur]mohV(ƷyRL }|dJ!lvKO܁d,^M ’&^z!K0lɆB0I0;crUuq)gYЁTh+Qb$m%鬩,80Ds m2cc=3ϜG㠍E3u8! (IӗOxzVng_(uNIA.D7Q@x'b U'[\?I^{͵у28R~L|qXwSEN#zs;hf=g"^yKϷ@QT.EH?`nVv m?s! U٤0j-BH?6^Y",Ry0C)sg,k;WWļgQ`]F-E_߿o-;܅dygZmc 0P50j3P IAY:h>`O!!鷬,$A SDkJ2.):)JyP%4 N6 擗E''vKgks6xd* F#eNeu[wK .ŕgq/dL^ou\R] |ss]׬ IۀU[wL߫ZN =.";sPdVwmű:bd@^ܵ`$cQz!1'JhBvӛ#H;ׅTNi;Օ<4hd֧$HbբqAk?rDe9_gbxmd%KDC`ŢB4b0܏G|D c%e3(,IdGbGL2 !_B%73w VMf=/JXo+<廉?ѩrZ?~)H)>4f#N<[&p2\-$w{E>KX(Uv^xR.%tWZRmW k+R8^ ,$Y0IM,E`Ueh ֪ jkeZWW uEW fvsqycOrin1R704XX_W_"Uhr=D^(/L!!% e: w7榐"%m"͝G}<? |LR8B " P`VI])U2%$`n >Uхt+[x G6G&ɞ `XfS:;' 58XP>dRL*8`R0V܅LYncKj|F*i^ εTקOrJbt7L٦DBIYnmwC'(҂ qJ&ᵀ?^Q^nNv5@K mK6fu`iT̂*tfԬγx+k^~Wlkܼ~МAbSα7.95.~Z.7>9]yF|*.vˇvrX/ ᕗo~z;C 9 '3$@,]xz;uT=+gjUgu6t <*aˈS"N85.\sNUˇo^&;~'qߴ6]U\Gz~p쮸뫆our۸Jڗ]E0[pE5` .BY i ʃe&}s&{3ryOgK|jy:8 ?v5|,bg[L[aks=&՘(y=^MoΗCD">,+7]$HH:i2h]%rB ǁ G*-u)*y'CVhl9yij37Wcg<Nj8IVAܙs@%t0f>r~dkF;?a':Ѿⶻ lt6&ѥyp@#BϠ@+81i~5va8ӼձE@ΘS!t~vFIar,ޠą(&O24/1D6 z:/ySa8yӛR {L'Q߄#h"?t\IBO~,s؀jGS jR՝pyEEmi蚟x?ur/'}R*J3ےFlb%JD eTE&:PlSv!0Z~. 5߳1%[T=71N?9^0>kJb+I ]0DG>7N\Bċ_兟0gNz17d?@PM]@NlrM`&;k{0f(~f3 \'Y n 3ұۉ  Ds^+yAEx(xo[,o)Yʏ܌{ |r`zIdt@+_'g0lO_B^Aurr5FtC8lΠN8 ga3Х7hcUGk~1 cT'QY+(91Co0 ^@[u\InAS!U$GC ޯ ĸn@R>e_ T8-{ *C+aA ަ9z@8gv%E&As!O Kw9=&CC])#i ۘ^T"6 & pmtRS*N%{4Ԯc#A}A("_, qN'J: J-,Ȥ֭F,,gzzEZ),Çf纘[nWu=OFp\Kn~A{gt{-!k*%b:>7 Wv~]c쨔.ȹDXM6S^\wTz;.Umx֬HV_XWהjpj1|45χ?y 5r^!?ǵMy\ؔǵ59?Hڟ{_δZޔ踯WhDr2W6\\ynAB IZ$xU}w2̐f(| nρd]d%ׂ'% g޴ڲF1Utq&b^HQ {p[ZtP43~VBB]h](pOi;cT0sIRP>"s3_'u6ˍ-gF߃ɬb1TR49[Ka9g?ϞbQ j**B(s-^a9Fq/5ojd6%>ly_qЯQyn]րLؐ BF&p?P/g ۣbg"1ާuH/&8W_5`>bq_[!#rR2 G!S)5f% ^\f#8kO?VUfW%;>%Ozn T*mOCq@2GVSf:g9{{{5ۃPK~cr=ؙ#w~]1 L$ua;Q[|"!^X'ބL94= 7MzZC`r_{ ZomEX3a ҹLP u9XɔA j {L^Yw3Ȃs;#3e0RmPMҲ.TJ,0lg; }5Pwn4o,-&6,l'^$<$I&04 )dAÿ~A|܍+Лk#|QN & @5GtLo0GBj 4Ǘ)(a39M"#D[Rb.;$GZē gSy Q/(a+i:Q/9Mr`zn"k+ݺFDž%6N2N"156[uď_c:9N2D(Sه>\v" Dz]A(S/q69QYŶ4&|8eE1wQ ;@Oww"0rL@IV+~H[:t8;c}, Y +FS04?\mEV?}7Cl`oW6&kVj:;й(k Ѩ8yĀ2spK'S./}^UCyj3RmB74=ߙuX-j5˹'L JNǁh8kky+LMpSd  -O^7S]Ҷ]֭a, i tI=7Z ; $7E슊؟ߡq'GNf&KAo®R0.n~0@ݨi`Jxŷok^E7շ8ݺ3J (龨9RkGabJ('\(CrD4 05]) ZF:u0+|Cd?)3ܐ5j_YWf.8^ƅ33 x5GQ fߢa"W]%#R b'm<^em^I]$.+*0`+^f@gp%hKaCV^Yz%٘ڭҟdW*dx]r8>,OUI$YI8wd[DKP$gh{gȋ IPl LIBDnx† . @J(^y0lJ@H(?6ߧ --ǹq: t 8ҵwpJ-Cmj4 T:Gb[$l/${5ڗ<*YglxH;_\egx]V.Ӗ65RC) xMҢK+ġ"DC'Ϗ`7;~:s;y;p6\:L^׋ݡ{NאxAA]"46D;ra Y>`~ ĺ^%Y6rV.&OE%CDRp-ՐCz-PVMZOQY) o{ E3\@fk<E s2E5[>u:u,2~<9ѹ٠>nQ+Vm%GILDg4С_RVkJyj~bҟJ2!֘ 4;Ա|{j{d(,W3:Gi h bp]Xp%#" =  Ħ$9H}^^mҙ&DM48 R$'w.0J!/GC1QR)fwP>0\5:Ƣ38Z^ LQ5\TB+RrWCrH2O&D!=X)qN2C^I>P).<T@s9pLTBP}zy֑/sW(%\}ٛPewc]T)<4S{Z&`BQ4Lu5yaG5Jp,4`ǖk=J=4c*^!aQKנ#w}8$ZYg4ѐZR%q6ڤk Б}LH\h-=Ft 4}6$aBDi]<)Nl|,Y3.[U Xk%#JϭwP5Y!ְb ѰMN^wmʳu#t^g±1\łqJ^)l NsA.ٛ+Yءl ԀaƯwfuoʦb:MPըޞ1Wm[YC>':ŵ[BWEDQ" 1NFwqm ,!8G/BqY֣E. -XOuܺ!Y#NW78c^j#=F?jШДD&UMDtM[M޺-Er/4並zo7v_5ЕDİYgN:[#dۜ5p;X|2Hi0oqq iÎzBi)6,;6/MQ}: m͞5[id9A}|#d;ݪ9UH>@7p7dA~b-o*E?nt!"TQfMnr{A3lY 8>nm57y-5-eEAC )c]EjUj, S  =غa%e=p=3"O28Z`E竷VdB㬗o3eN' E.QL jT9GT9٨xYhvWh|܍KVPJ>cvY_PxFϭ];XVC*,xZli_+CS ۯtMVUMu d;JP'}H6~'ÌT#\Vм%+mv[lO@M O‡Bv &6!ltH!&}4L/+' ,9P'Y%\?nhrg 9@#avG霽| ̗H[=zr2 }/}jOsJb\'?e;}4GS91؝M{v)39[}ܜZh^7%67sUJzn4X4S=jxmo=sJyR%munh^oS%~,UJ ^zIɿhD>}|}c"l!45d8_nZ"-`jl , ]\`]ŕpq'C q=>6i:>6dJ2n{wXg%|37p$1Tˋ͢ݸb-`'?8uA[٧Y\['{Hmr'w.a: RNh{蟊O9b]ko)uE=(9؅͇yo RYl(R%)J6{ϝrHQZ'Ym(}̝!sb*eIT@i5Y[Fo^ N(>)ٯx񫤶.U 0gJLÔ79g`-&Kf舀 >D(,6YTIcK3 z1ҵ[26{+Z)Iڸ6x<;LFIjɿMe1e'Qlwt5l HHK= ؑ}N: !τO`%I\R$Crp']#V~| N?ZWDZ?x 4M܏QʕsC&ܮiB[K 4cN̾JINڒ~:IMֈ ^үUSj/ Ø{e/4K蚫9-Q]msJҲ0Σ$ xJ{65VaaW޾|{3yw䗟_SwIǒh6$bϘ+\xd0թ֊y L'^>Qʛ\Ǟ,-.m]i[_&3?Ӫj/ kikV$ka<x m;}H΂mSqβg3=rMfo`p% hRq =7u Z q5CkW|Iߙ2SEB艞fjSBOΰ}T'S@jYMԲfu}zB[x{op'G\I%42=Dyh,u8UԿgNIBe;"l4 uedj ySY2{ą-Ub=_ {NXzxqtq#*ea#ƕ!\RBhO,HQ3=d]v(wPJ2\X9 ?:'fDT4 UM$ef-j8@x* 7NU^(K0zh:sj_]g§jE`NiE_ְ#+k6t YX7yG a#끠@Ionbڴ;1T,Yʝb-Y JS)6MF;ْW{ 6R,'Ъ e%sAJouTmwmi⽩^Uٔb;6ڣ\z5 C^LQFzrw&]0KG?`4@N?B*V9{.2C%Ur /+kDbajِפI/8~G~ RM(Ou$ھ(%ʪ[㨾寔\FJ\l۵6T 3Q] KZ+;;:n.LR $Z@CV,Xx 6 Dͻ* xg `q/7c=nukqF` Ml ~w:U֏g#]h]eO>!LԪ0_ZM( {rff J`hs'#zq0HX}F/[|\Ƶ q  kXeyk 1 +9 ԏ8eX';HL۟ٺ}R{Y&m>\2]6Dэ%uρu8Ii˙Jռ"ίA|ę ـSMHڸRG=ZIzy}N^/T=h^ݟ~q 7T‡18٩<`?NMYMw4K_|:|6jNW nfW]WWͿ{ϒ =O yLgt'Ƴ p=gv,zO}9HTZ$Aȡu@%x=t{-$1^d@FK ]s6ָ;n4מgٖ@]Pn.A(Nl:')KS{ޙ=x( ɽ6`t}0[VtD[Fv#w}ʥ\QyM%^q^.'Zʠp~tu$}>EZ iiEl.s>@ .fOzp0ߟVop4z?g^r6>fo?5JK,zWÜZuL;NQ 4y}ũ<I}7^w

Grouping Nodes


A set of nodes can be defined as a group in VRML. The following grouping nodes are avalable in VRML:

  • Anchor: define a complex shape, built using a set of shapes, as a hyperlink to another VRML world, to a HTML page, or to any other data that your browser can read.
  • Billboard: specifying a set of nodes which are always turned to you regardeless of your position.
  • Collision: defining a set of nodes which the browser should be warned when collision occurs.
  • Group: defining a new node type composed by a set of nodes so that you can reuse it later without repeating the entire set of nodes.
  • Switch: defining a set of nodes in which at most one of the nodes is drawn.
  • Transform: defining a new coordinate system so that objects can be placed in locations other than the origin.
  • Grouping also can be used for scoping, i.e. some node types, when placed n a group, only affect the other nodes within the same group. For instance, Directional Lights only affect nodes within the same group (at least according to the official VRML 2.0 specification). Sensor nodes are also constrained to the group their defined in.

    You can place groups inside groups, creating a hierarchical structure of nodes. A group node can have any number of child nodes inside the children field.

    All grouping nodes accept the following events:
    addChildren: which add a new node to the group
    removeChildren: which removes a given node from the group
    To generate one of these events you have to use Scripts.