VRML ? LÞch sö
Ng«n ng÷ m« h×nh hãa thùc t¹i ¶o VRML
(cid:132) VRML lµ mét ng«n ng÷ v¨n b¶n dïng ®Ó m« t¶ c¸c m«i tr−êng t−¬ng t¸c
vµ c¸c vËt thÓ 3-D
(cid:132) C¸c file text VRML cã ®u«i lµ .wrl (cid:132) VRML 1.0 dùa trªn ng«n ng÷ m« t¶ Silicon Graphics 3D gäi lµ “Open Inventor”. VRML
1.0 cho phÐp m« t¶ c¸c c¶nh tØnh vµ kh«ng t−¬ng t¸c.
(cid:132) VRML 2.0 lµ mét ng«n ng÷ m« t¶ dùa trªn Silicon Graphics vµ ®−îc goi lµ “Moving
Worlds”.
(cid:132) VRML1 (1994) & VRML2 (1997) cã më réng thªm c¸c chñ ®Ò liªn quan
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
CÊu tróc file VRML
TÝnh chÊt
(cid:132) B¹n cã thÓ xem c¸c file VRML nhê tr×nh duyÖt VRML :
(cid:132) Trong file VRML gåm cã :
(cid:132) Mét øng dông hç trî VRML (cid:132) Mét øng dông VRML nhóng vµo mét tr×nh duyÖt HTML
(cid:132) §Çu ®Ò cña file (cid:132) Comments – chó thÝch
(cid:132) B¹n cã thÓ xem c¸c file VRML tõ ®Üa cøng , hay qua m¹ng Internet
(cid:132) Nodes – nót chøa c¸c
(cid:132) Toµn bé trang Web (cid:132) Nhóng vµo trang Web (cid:132) Toµn bé khung cña trang Web (cid:132) Nhóng vµo khung cña trang Web (cid:132) Nhóng vµo c¸c øng dông ®a thêi gian
(cid:132) Fields – c¸c thuéch tÝnh cña nót mµ b¹n cã thÓ thay ®æi
(cid:132) B¹n cã thÓ t¹o c¸c file VRML nhê :
(cid:132) Values – c¸c thuéc tÝnh
cña b¹n geometry Box{ } # default box # override #VRML V2.0 utf8 # example1.wrl - a yellow box Shape { appearance Appearance appearance th«ng tin quan träng cña c¶nh vËt {material Material # with a new material {diffuseColor 1.0 1.0 0.0 #
(cid:132) Mét tr×nh so¹n th¶o v¨n b¶n ®¬n gi¶n (cid:132) Mét ch−¬ng tr×nh øng dông (cid:132) Mét tr×nh dÞch ®Þnh d¹ng vµ m« h×nh hãa 3D (cid:132) Mét ng«n ng÷ t¹o vËt thÓ (nh− ng«n ng÷ kÞch b¶n Perl )
gi¸ trÞ (cid:132) Vµ . . . yellow } } }
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Comments-chó thÝch
PhÇn tö c¬ b¶n cña VRML: Nót
(cid:132) Mét file VRML gåm cã mét danh s¸ch c¸c nót, mçi nót chøa mét phÇn
(cid:132) Mét nót cã thÓ ®Þnh nghÜa h×nh d¹ng vËt thÓ, hay thuéc tÝnh cña cña mét
(cid:132) Lêi chó thÝch b¾t ®Çu víi ký tù # . (cid:132) Ký tù # trong nh¸y kÐp kh«ng ph¶i b¾t ®Çu chó thÝch. (cid:132) Chó ý r»ng dßng ®Çu cña VRML 2.0 lµ :
(cid:132) Mçi nót cã mét tªn, theo sau lµ cÆp dÊu { } cã thÓ kh«ng chøa tr−êng nµo
th«ng tin m« t¶ toµn c¶nh. ®èi t−îng , nh− mµu mµu s¾c vµ hÖ täa ®é cña nã. hoÆc nhiÒu tr−êng.
#VRML 2.0 utf8
(cid:132) Mét c©u lÖnh tr−êng gåm cã tªn tr−êng sau ®ã cã thÓ cã mét hay nhiÒu
vµ lµ b¾t buéc !
(cid:132) Tõ khãa utf dïng ®Ó nãi ®Õn bé ký tù quèc tÕ UTF-8 ®−îc
(cid:132) Tªn cña nót b¾t ®Çu b»ng ký tù hoa, tªn tr−êng b¾t ®Çu b»ng ký tù
dïng trong file.
(cid:132) Lêi chó thÝch vµ kho¶ng tr¾ng cã thÓ kh«ng ®−îc b¶o toµn
(cid:132) VÝ dụ về nót (cid:132) Shape, Box, Appearance, Material,lights, sounds, .
bëi VRML document server.
gi¸ trÞ.C¸c tr−êng cã thÓ ®−îc viÕt theo c¸c trËt tù kh¸c nhau. th−êng (case sensitive).
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 1
CÊu tróc ph©n líp
CÊu tróc c¶nh
(cid:132) Nót Shape chøa hai tr−êng, geometry vµ appearance, mçi tr−êng l¹i
(cid:122) Shape chøa c¸c nót kh¸c ®−îc coi nh− gi¸ trÞ cña chóng. (cid:122) Box
geometry
(cid:132) Shape
appearance
(cid:122) Appearance { appearance geometry NULL exposedField NULL exposedField SFNode SFNode
material
(cid:122) Material }
diffuseColor
(cid:132) §«i khi nót Shape cã mét tr−êng Appearance nh−ng kh«ng cã tr−êng
(cid:132) VRML gióp b¹n chia mét líp thµnh c¸c khoanh cã thÓ qu¶n lý ®−îc . (cid:132) Mçi nót riªng lÎ th× rÊt ®¬n gi¶n, sù kÕt nèi gi÷a c¸c nót cho phÐp t¹o ra
(cid:132) Tr−êng geometry chøa nót Box vµ tr−êng appearance coi nót
geometry (vÝ dô nh− c¸c vËt thÓ kh«ng nh×n thÊy!)
(cid:132) Nót Appearance l¹i chøa mét nót kh¸c lµ Material. (cid:132) C©u tróc c©y cña nót mµ nót l¹i ®−îc chøa trong nót kh¸c gäi lµ scene
(cid:132) Nót shape ®−îc t¹o nªn trung t©m cña thÕ giíi VRML . (cid:132) Mét file VRML cã thÓ chøa nhiÒu nót shape (cid:132) C¸c nót shape cã thÓ trïng lªn nhau khi chóng ®−îc t¹o nªn ë cïng mét
c¸c líp phøc t¹p. Appearance nh− lµ gi¸ trÞ cña cã.
(cid:132) B¹n nªn xem vµ sö dông mét trong c¸c tr−êng geometries sau
graph. vÞ trÝ.
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
C¬ b¶n vÒ nót shape
C¬ b¶n vÒ nót shape
(cid:132) Box
(cid:132) Cylinder
(cid:132) Nót Shape lµ nh÷ng viªn g¹ch t¹o nªn thÕ giíi VRML C¸c nót Shape gèc lµ c¸c khèi chuÈn :
• Box • Cone • Cylinder • Sphere • Text
(cid:132) C¸c tr−êng cña nót Geometry
(cid:132) Cone { units wide
(cid:132) Sphere
(cid:132) KÝch th−íc th−êng cã ®¬n vÞ lµ m, nh−ng cã thÓ bÊt cø ®¬n vÞ g×
# x, y, z (=w, h, radius # chiÒu réng lµ 8 { height 4 6 {size 8 12 10 d) } # “cup” cã c¹nh vµ ®¸y Ch¹y vÝ dô Xem code bottom TRUE side top TRUE FALSE # nh−ng kh«ng cã ®Ønh bottomRadius 5 # so 10 } ®iÒu khiÓn kÝch th−íc Ch¹y vÝ dô Xem code height side bottom 12 TRUE TRUE radius 2 Ch¹y vÝ dô # ®¬n gi¶n nhÊt trong c¸c nót shape # nh−ng còng lµ phøc t¹p Ch¹y vÝ dô { } Xem code Xem code }
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Nót text
CÊu tróc ¶nh bitmap
(cid:132) Sö dông ¶nh bitmap thay cho mét m« h×nh 3D thËt cô thÓ cã thÓ tiÕt kiÖm
(cid:132) Tr¸nh t¹o ra c¸c ®Æc t¶ kü thuËt Web-based 3D/VR. (cid:132) Text rất hữu Ých ë c¸c hÖ chuyªn gia,vÝ dô nh− trong khoa häc vÒ trùc quan. (cid:132) Text {
(cid:132) Tuy vËy viÖc sö dông réng r·i ¶nh bitmap cã thÓ cã nh÷ng bÊt lîi sau: (cid:132) CÊu tróc cña ¶nh sÏ ®−îc gñi cho tr×nh duyÖt ,cã thÓ ph¶i qua mét
®−îc nhiÒu thêi gian xö lý...
(cid:132) ThiÕt kÕ mét ¶nh bitmap vµ ®−a nã lªn mµn h×nh lµ c«ng ®o¹n xö lý
# multi-field # stretch to this width (0=natural width) qu¸ tr×nh th«ng tin chËm. “Hi!” 0 FontStyle string length fontStyle { family“SERIF” # or SANS or TYPEWRITER kh¸ lµ kü l−ìng. # or BOLD ITALIC style size “PLAIN” 4 } Chaþ vÝ dô } Xem code
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 2
CÊu tróc trong VRML
HÖ täa ®é
(cid:132) Appearance
(cid:132) C¸c Texture cã thÓ lµ mét URL ®Çy ®ñ hoÆc chØ lµ mét URLt−¬ng ®èi ®¬n
(cid:132) Cã ba kiÓu nót texture lµ : ImageTexture, MovieTexture and PixelTexture
{ “skin.gif” # GIF, JPG or PNG texture ImageTexture { # repeat or stretch? url repeatSTRUE repeatT TRUE } } Xem code Ch¹y vÝ dô gi¶n nh− sö dông ë trªn.
(cid:132) Mét file VRML x©y dùng nªn c¸c thµnh phÇn cña thÕ giíi VRML (cid:132) Mét file thµnh ®−îc x©y dùng trong thÕ giíi hÖ to¹ ®é (cid:132) Theo mÆc ®Þnh , tÊt c¶ c¸c vËt thÓ ®−îc x©y dùng tõ gèc cña hÖ to¹ ®é (cid:132) VRML sö dông hÖ to¹ ®é thuËn .hÖ to¹ ®é §Ò C¸c (cid:132) §¬n vÞ chuÈn ®o chÒu dµi vµ kho¶ng c¸ch trong VRML lµ m. (cid:132) Gãc lµ radian. (cid:132) Mét vßng quay lµ 2π radian. (cid:132) 360 lµ 2π radian, kho¶ng 6.28 radian, 90 lµ π/2 radian, kho¶ng 1.57 radian.
Xem code Ch¹y vÝ dô
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
ChuyÓn ®æi mét hÖ to¹ ®é
Tr−êng children
(cid:132) Nhãm c¸c nót Transform t¹o ra
(cid:132) Mét nót transform t¹o ra mét hÖ to¹
(cid:132) Tr−êng children bao gåm mét danh s¸ch mét hay nhiÒu nót
(cid:132) Transform { . . .
mét nhãm víi hª to¹ ®é cña chÝnh nã
(cid:132) Liªn hÖ víi hÖ to¹ ®é cha cña nã (cid:132) C¸c vËt thÓ ®−îc x©y dùng trong hÖ
®é cã: (cid:132) Positioned :gèc (cid:132) Rotated :gãc quay (cid:132) Scaled :tû lÖ • rotation – h−íng • scale – kÝch cì • translation – vÞ trÝ • children – c¸c vËt thË t¹o Transform { children [ Shape { . . . } Shape { . . . } Transform { . . . } . . . ] } to¹ ®é míi ®−îc ®Þnh vÞ ,quay vµ tû lÖ cïng víi nã.
translation . . . rotation . . . scale . . . children [ . . . ] }
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Nót transform
Nót transform
(cid:132) Co gi·n , xoay vµ dÞch mét hÖ to¹ ®é, c¸i nµy sau c¸i kia
(cid:132) Tr−êng Translation ®Þnh vÞ hÖ to¹
(cid:132) Tr−êng Rotation ®Þnh h−íng hÖ to¹ ®é quay quoanh mét c¹nh bëi mét gãc quay
(cid:132) C¸c thao t¸c ®−îc thùc hiÖn tõ d−íi lªn bottom-up:
(cid:132) Tr−êng Scale ®Ó co hay gi¶n mét hÖ to¹ ®é dùa vµu hÖ sè tû lÖ ë c¸c trôc X, Y, vµ Z (cid:132) Transform { # X Y Z scale 0.5
(cid:132) Tr−êng children ®−îc co gi·n ,xoay råi sau ®ã míi dÞch (cid:132) Thø tù gi÷a c¸c tr−êng ®−îc Ên ®Þnh, ®éc lËp víi trËt tù cña c¸c tr−êng
®é bëi X,Y vµ Z (cid:132) Transform { # X Y Z • Gãc th−êng ®−îc ®u b»ng ®¬n translation 2.0 0.0 0.0 children [ . . . ] } vÞ radian radian = ®é/ 180.0 * 3.141 • Transform { translation 2.0 0.0 0.0 rotation 0.0 0.0 1.0 0.52 scale 0.5 0.5 0.5 children [ . . . ] }
Transform { # X Y Z Angle rotation 0.0 0.0 1.0 0.52 children [ . . . ] } 0.5 0.5 children [ . . . ] } Ch¹y vÝ dô Xem code
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 3
nót Appearance
nót Material
(cid:132) Mét nót Material ®iÒu khiÓn c¸c thuéc tÝnh vÒ chÊt liÖu cña vËt thÓ
(cid:132) C¸c vËt thÓ gèc cã mµu ph¸t ra tõ bÒ
(cid:132) Mét nót Appearance miªu t¶ toµn
(cid:132) B¹n cã thÓ ®iÒu khiÓn mµu cña mét
(cid:132) Shape {
ngoµi lµ mµu tr¾ng bé h×nh d¹ng cña vËt thÓ • Tr−êng material gåm c¸c • diffuseColor – mµu bãng chÝnh • emissiveColor – mµu ph¸t chÝnh • transparency – Trong suèt hay kh«ng vËt thÓ: thuéc tÝnh nh− color, transparency, etc.
(cid:132) Shape { appearance Appearance { material . . . } geometry . . . }
• Mµu bãng • Mµu ph¸t ra • TÝnh trong suèt • TÝnh kh«ng chiÕu s¸ng • C−êng ®é ¸nh s¸ng bao quanh appearance Appearance { material Material { diffuseColor 0.8 0.8 0.8 emissiveColor 0.0 0.0 0.0 transparency 0.0 } } geometry . . . }
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Nót material
B¶ng mµu th−êng dïng
(cid:132) Nót Material còng cã thÓ ®iÒu khiÓn tÝnh chiÕu s¸ng cña mét vËt thÓ
shininess M« t¶ ambient Intensity diffuse Color specular Color
(cid:132) Shape {
• specularColor – ®iÓm cã mµu næi bËt nhÊt • shininess – kÝch cë chç næi bËt nhÊt • ambientIntensity – hiªu øng ¸nh s¸ng xung quanh Aluminum 0.30 0.30 0.30 0.50 0.70 0.70 0.80 0.10 Copper 0.26 0.30 0.11 0.00 0.75 0.33 0.00 0.08 Gold 0.40 0.22 0.15 0.00 0.71 0.70 0.56 0.16 0.17 0.20 Metalic Purple 0.10 0.03 0.22 0.64 0.00 0.98 Metalic Red 0.15 0.27 0.00 0.00 0.61 0.13 0.18 0.20 Plastic Blue 0.10 0.20 0.20 0.71 0.83 0.83 0.83 0.12 Ch¹y vÝ dô appearance Appearance { material Material { specularColor 0.71 0.70 0.56 shininess 0.16 ambientIntensity 0.4 } } geometry . . . } Xem code
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
KÕt nèi tíi mét vÞ trÝ kh¸c
nót Group
(cid:132) Còng nh− trong trang Web , siªu liªn kÕt còng s½n cã trong VRML. (cid:132) Cã thÓ kÕt nèi tíi c¸c kiÓu d÷ liÖu hîp lÖ , bao gåm c¸c trang VRML
(cid:132) B¹n cã thÓ nhãm c¸c vËt thÓ l¹i víi nhau ®Ó t¹o thµnh mét vËt thÓ phøc t¹p .
(cid:132) VRML cã nhiÒu nót group bao gåm
(cid:132) VÞ trÝ (x, y, z) cña con trá cã thÓ ®−îc truyÒn tíi URL, chØ thùc sù cã Ých víi
(cid:132) Th«ng th−êng chóng ta cÈn nhãm c¸c ®èi t−îng l¹i víi nhau. VRML dïng nót Group ®Ó thùc hiÖn ®iÒu nµy (cid:132) Nót Group cã thÓ cã c¸c nót con. (cid:132) Cã thÓ chÝnh c¸c nót con lµ c¸c nót
kh¸c, c¸c trang HTML vµ c¸c øng dông CGI .
(cid:132) Cã c¸c kiÓu nót group sau:
c¸c øng dông CGI. group .
Transform Group LOD Anchor Inline Collision Switch Billboard Chaþ vÝ dô Group { . . . } Switch { . . . } Transform { . . . } Billboard { . . . } Anchor { . . . } Inline { . . . } Xem code
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 4
C¸c nót Group-Switch-Transform
Nót Anchor vµ Inline
(cid:132) Nót Group t¹o ra c¸c nót c¬ b¶n
(cid:132) Nót Transform t¹o ra mét nhãm dùa
(cid:132) Nót Anchor t¹o ra mét nhãm mµ ho¹t ®éng nh− kiÓu cã thÓ kÝch chuét ®−îc (cid:132) ChØ nót child lµ ®−îc hiÓn thÞ (cid:132) KÝch chuét vµo nót child theo sau
(cid:132) Group { children [ . . . ] }
(cid:132) Nót nhãm Switch t¹o ra mét nhãm cã
(cid:132) Tr−êng description ®Æt tªn cho nót
(cid:132) Mçi nót child lµ ®−îc hiÓn thÞ (cid:132) Inline { url "table.wrl" }
kh¸c (cid:132) Mçi nót child trong group lµ ®−îc Nót Inline t¹o ra mét nhãm ®Æc biÖt tõ néi dung cña mét file VRML kh¸c (cid:132) Nót con ®äc tõ file ®−îc chän bëi hiÓn thÞ URL bëi mét URL
(cid:132) B¹n chän nót child nµo
(cid:132) Inline { url "table.wrl" } . . . Transform { translation -0.95 0.0 0.0 rotation 0.0 1.0 0.0 3.14 children [ Inline { url "chair.wrl" } ] }
(cid:132)
anchor trªn chÝnh hÖ to¹ ®é cña nã (cid:132) Mçi nót child lµ ®−îc hiÓn thÞ Transform { translation 0.0 0.0 0.0 rotation 0.0 1.0 0.0 0.0 scale 1.0 1.0 1.0 children [ . . . ] } (cid:132) Nót nhãm Billboard t¹o ra mét nhãm thÓ chuyÓn cho nhau. (cid:132) ChØ cã mét nót child group is trong nhãm lµ ®−îc hiÓn thÞ víi hÖ to¹®é ®Æc biÖt • Mçi nót child ®−îc hiÓn thÞ • Nót con ®−îc ®¸nh sè t−êng displayed minh tõ 0 • HÖ to¹ ®é trë l¹i mÆt xem • A -1 kh«ng chän nót con nµo Switch { whichChoice 0 choice [ . . . ] Anchor { url "stairwy.wrl" description "Twisty Stairs" children [ . . . ] } Xem code Ch¹y vÝ dô Ch¹y vÝ dô Xem code }
(cid:132) Billboard { axisOfRotation 0.0 1.0 0.0 children [ . . . ] }
Xem code Chaþ vÝ dô
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
§Æt tªn
Tõ khãa use
(cid:132) Có ph¸p DEF t¹o ra tªn cho mét
(cid:132) NÕu nhiÒu vËt thÓ gièng nhau vÒ c¸c yÕu tè h×nh häc hay h×nh d¹ng , b¹n ph¶i dïng nhiÒu nót gièng hÖt nhau
(cid:132) Thay vµo ®ã , ®Þnh nghÜa mét tªn
(cid:132) USE b¾t buéc ph¶i lµ chö hoa (cid:132) Sö dông l¹i nót ®· ®−îc ®Æt tªn gäi lµ mét biÕn hay mét thÓ hiÖn (cid:132) Mét nót ®· ®−îc ®Æt tªn cã thÓ cã
cho nót t×m thÊy ®Çu tiªn
(cid:132) Sau ®ã, sö dông tªn ®Êy ®Ó chia sÎ cho nót t−¬ng tù ë trong ng÷ c¶nh míi
mét vµi thÓ hiÖn (cid:132) Mçi thÓ hiÖn chia sÎ cïng mét nót (cid:132) Shape { appearance Appearance { material DEF RedColor Material { diffuseColor 1.0 0.0 0.0 miªu t¶ vÒ nót ®Êy
(cid:132) Tõ kho¸ USE cho phÐp sö dông mét nót ®· ®−îc ®Æt tªn tr−íc (cid:132) Shape { appearance Appearance { material USE RedColor } geometry . . . }
(cid:132) ChØ cã thÓ cã thÓ hiªn mµ tªn cña nót ®· ®−îc ®Þnh nghÜa trong cïng mét file
Ch¹y vÝ dô Xem code } } geometry . . . } (cid:132) DEF b¾t buéc ph¶i ký tù hoa (cid:132) Cã thÓ ®Æt tªn cho mét nót nµo ®Êy (cid:132) Tªn cã thÓ lµ hÇu hÕt c¸c chuçi ký
tù vµ sè (cid:132) Trong mét file tªn ph¶i lµ duy nhÊt
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Giíi thiÖu ho¹t c¶nh
−u ®iÓm
(cid:132) §Æt tªn vµ sö dông nót:
(cid:132) C¸c nót nh− Billboard vµ Anchor cã c¸c hµnh ®éng x©y dùng s½n (cid:132) B¹n cã thÓ t¹o ra hµnh ®éng cña riªng b¹n nh− lµm cho c¸c vËt thÓ cã
(cid:132) Chóng ta cÇn mét ph−¬ng thøc ®Ó kÝch , thêi gian ho¸, vµ ®¸p øng mét
thÓ di chuyÓn,xoay, co gi·n vµ h¬n thÕ n÷a
(cid:132) L−u nh÷ng g× ®· ®¸nh vµo (cid:132) Gi¶m kÝch th−íc file (cid:132) Cho phÐp thay ®æi nhanh chãng c¸c vËt thÓ cã cïng thuéc tÝnh (cid:132) T¨ng tèc ®é cho qu¸ tr×nh xö lý trªn tr×nh duyÖt
(cid:132) HÇu hÕt c¸c nót ®Òu cã thÓ lµ thµnh phÇn trong mét dßng ho¹t c¶nh
(cid:132) Tªn còng cÇn thiÕt cho c¶nh ®éng...
(cid:132) Nót ho¹t ®éng nh− c¸c phÇn ®iÖn tö ¶o (cid:132) Nót cã thÓ göi vµ nhËn c¸c sù kiÖn (cid:132) C¸c ®−êng d©y nèi c¸c nót l¹i víi nhau
(cid:132) Mét sù kiÖn lµ mét th«ng b¸o ®−îc göi gi÷a c¸c nót (cid:132) Mét gi¸ trÞ d÷ liÖu (gièng nh− sù dÞch chuyÓn) (cid:132) Thêi gian hoµn thµnh (Khi sù kiÖn ®−îc chøng nhËn lµ ®· ®−îc göi)
chuçi c¸c sù kiÖn theo mét trËt tù ®Ó mét sù t−¬ng t¸c tèt h¬n gi÷a ng−êi dïng vµ thÕ giíi bªn ngoµi
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 5
Thªm c¸c sù kiÖn
Cµi ®Æt ho¹t c¶nh
(cid:132) §Ó quay mét vËt thÓ:
(cid:132) §Ó cµi ®Æt mét dßng ho¹t c¶nh , b¹n cÇn ba thø : (cid:132) Mét nót göi sù kiÖn
(cid:132) Nót ph¶i ®−îc ®Æt tªn víi c©u lÖnh DEF
(cid:132) Mét nót nhËn sù kiÖn
(cid:132) §Ó lµm mét vËt thÓ nhÊp nh¸y:
(cid:132) Nót ph¶i ®−îc ®Æt tªn víi c©u lÖnh DEF
• Nèi mét nót mµ göi sù kiÖn rotation víi tr−êng rotation cña nót Transform
(cid:132) Mét ®−êng d©y kÕt nèichóng l¹i (cid:132) Mçi nót cã c¸c tr−êng , th«ng tin vµo vµ th«ng tin cÇn cã:
(cid:132) field: Mét gi¸ trÞ d÷ liÖu ®−îc l−u trö (cid:132) eventIn: ®Çu vµo (cid:132) eventOut: ®Çu ra
(cid:132) Mét tr−êng exposedField viÕt gän cho mét gi¸ trÞ d÷ liÖu, ®Çu vµo vµ ®Çu
• Nèi nót göi sù kiÖn color víii tr−êng diffuseColor cña nót Material
ra
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
C¸c vÝ dô Vµo- ra
Tõ khãa route
(cid:132) C©u lÖnh ROUTE cho phÐp kÕt nèi
(cid:132) Nót OrientationInterpolator
(cid:132) Nót Transform cã c¸c sù kiÖn
(cid:132) C¸c quy −íc vÒ ®Æt tªn (cid:132) HÇu hÕt c¸c nót ®Òu cã exposedFields (cid:132) NÕu tr−êng exposed tªn lµ xxx, th×: • set_xxx lµ mét sù kiÖn vµo
(cid:132) Nót PositionInterpolator cã
(cid:132) Nót Material cã c¸c sù kiÖn vµu:
(cid:132) set_diffuseColor (cid:132) set_emissiveColor (cid:132) set_transparency
(cid:132) time ®−a ra thêi gian
cã sù kiÖn ra : (cid:132) value_changed ®−a ra gi¸ trÞ gãc xoay hai nót l¹i víi nhau : (cid:132) Tªn nót göi vµ sù kiÖn ra (cid:132) Tªn nót nhËn vµ s− kiÖn vµu (cid:132) ROUTE ®−îc g¸n cho tr−êng vµo: (cid:132) set_translation (cid:132) set_rotation (cid:132) set_scale • xxx_changed lµ sù kiÖn ra MySender.rotation_changed TO MyReceiver.set_rotation (cid:132) ROUTE vµ TO b¾t buéc ph¶i lµ ®−îc göi ®i khi tr−êng ®ã thay ®æi ký tù hoa sù kiÖn ra : (cid:132) value_changed ®−a ra vÞ trÝ (cid:132) Nót TimeSensor cã sù kiÖn ra:
• C¸c tiÕp ng÷ set_ vµ _changed lµ tuú chän nh−ng nªn cã ®Ó ph©n biÖt (cid:132) Nót Transform cã: Tr−êng rotation
• Sù kiÖn vµo set_rotation • Sù kiÖn ra rotation_changed
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Ho¹t c¶nh
®iÒu khiÓn thêi gian
(cid:132) Ho¹t c¶nh cho phÐp thay ®æi qua thêi gian:
(cid:132) Ho¹t c¶nh b¾t buéc ®iÒu khiÓn qua thêi gian:
(cid:132) Nót TimeSensor cho phÐp b¹n ®iÒu khiÓn thêi gian b¾t ®Çu vµ kÕt thóc (cid:132) Nót c¶m øng t¹o sù kiÖn thêi gian khi nã ®ang ch¹y (cid:132) §Ó kÝch ho¹t , dÉn c¸c sù kiÖn thêi gian tíi c¸c nót kh¸c (cid:132) Nót TimeSensor t¹o ra hai sù kiÖn thêi gian lµ absolute and fractional (cid:132) Sù kiÖn thêi gian Absolute t¹o ra thêi gian thùc
• VÞ trÝ – mét « t« ®ang ®i • H−íng - mét m¸y bay ®ang l−în • Mµu s¾c – ®æi mïa
• Thêi gian tuyÖt ®èi ®−îc ®u b»ng gi©y tõ 12:00h mång 1 th¸ng 1 n¨m 1970! • Khi nµo th× b¾t ®Çu vµ dõng • Møc ®é nhanh chËm • RÊt cã Ých cho viÖc triÖu gäi mét sù kiÖn ë thêi gian cô thÓ
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 6
sö dông thêi gian ph©n ®o¹n
Nót timesensor
(cid:132) Nót TimeSensor t¹o ra c¸c sù kiÖn
(cid:132) §Ó t¹o ra bé thêi gian ch¹y liªn tôc:
(cid:132) Sù kiÖn thêi gian ph©n ®o¹n nhËn c¸c gi¸ trÞ sè tõ 0.0 tíi 1.0
(cid:132) loop TRUE (cid:132) stopTime <= startTime
(cid:132) Khi stop time <= start time,th× stop
(cid:132) Khi nót c¶m øng thêi gian b¾t ®Çu , ®Çu ra cña nã lµ 0.0 (cid:132) KÕt thóc mét chu kú_ cycle, ®Çu ra cña nã lµ 1.0 (cid:132) Sè gi©y gi÷a 0.0 vµ 1.0 ®−îc x¸c ®Þnh bëi xung tuÇn hoµn_ cycle
(cid:132) Thêi gian tuÇn
(cid:132) Ch¹y cho tíi khi stop time:
(cid:132) C¶m biÕn thêi gian cã thÓ ch¹y m·i , hoÆc chØ ch¹y qua mét vßng råi
(cid:132) loop TRUE (cid:132) stopTime > startTime
(cid:132) LÆp_loop – cã lÆp l¹i hay kh«ng
(cid:132) §Ó ch¹y mét vßng råi sau ®ã dõng:
(cid:132) TimeSensor {
(cid:132) loop FALSE (cid:132) stopTime <= startTime
(cid:132)
(cid:132) Sù kiÖn vµo d÷ liÖu set_startTime : ®Æt khi bé thêi gian s¾p b¾t ®Çu
dùa vµo thêi gian (cid:132) Thêi gian b¾t ®Çu_ startTime vµ thêi gian kÕt thóc_ stopTime khi ch¹y time bÞ bá qua interval hoµn_cycleInterval thêi gian cho mét chu kú lµ bao l©u dõng
(cid:132) Sù kiÖn vµu d÷ liÖu set_stopTime : (cid:132) ®Æt khi bé thêi gian kÕt thóc
cycleInterval 1.0 loop FALSE startTime 0.0 stopTime 0.0 }
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Tr−êng ra d÷ liÖu
ChuyÓn ®æi thêi gian ra to¹ ®é
(cid:132) §Ó kÝch ho¹t vÞ trÝ cña mét vËt thÓ
(cid:132) Tr−êng ra d÷ liÖu isActive :
(cid:132) Interpolating positions (cid:132) Mçi kho¸ vÞ trÝ cïng víi ®−êng
(cid:132) Ra d÷ liÖu lµ TRUE khi bé thêi gian b¾t
(cid:132) Ra d÷ liÖu lµ FALSE khi bé thêi gian
(cid:132) Tr−êng ra d÷ liÖu time :
(cid:132) §−a ra thêi gian tuyÖt ®èi
(cid:132) Nót interpolator cã thÓ chuyÓn ®æi mét ®Çu vµu thêi gian thµnh mét ®Çu ra to¹ ®é
VRML cung cÊp: • Mét danh s¸ch kho¸ vÒ vÞ ®Çu dÉn cã: (cid:132) Mét kho¸ gi¸ trÞ key value trÝ key positions cho ®−êng di chuyÓn (nh− lµ mét vÞ trÝ) kÕt thóc • Thêi gian b¾t ®Çu ë mçi vÞ trÝ
(cid:132) Tr−êng ra d÷ liÖu fraction_changed : (cid:132) §−a ra c¸c gi¸ trÞ tõ 0.0 tíi 1.0 trong
(cid:132) §Æt l¹i gi¸ trÞ 0.0 lóc b¾t ®Çu mçi chu
(cid:132) Mét kho¸ thêi gian ph©n ®o¹n (cid:132) PhÐp néi suy sÏ ®iÒn vµu c¸c gi¸ trÞ vµu gi÷a c¸c gi¸ trÞ kho¸: (cid:132) Fractional TimePosition (cid:132) 0 (cid:132) 0.1 (cid:132) .. (cid:132) 1
• Khi thêi gian ë gi÷a hai suèt mét chu ký kho¸ vÞ trÝ, nót interpolator sÏ tÝnh to¸n vÞ trÝ trung gian kú Ch¹y vÝ dô Xem code
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Nót positioninterpolator
Sö dông c¸c nót interpolator kh¸c
(cid:132) Nót PositionInterpolator miªu
(cid:132) Sù kiÖn ®Çu vµo set_fraction : • §Æt thêi gian ph©n ®o¹n
(cid:132) Sù kiÖn ®Çu ra value_changed :
(cid:132) KÝch ho¹t vÞ trÝ (cid:132) KÝch ho¹t h−íng OrientationInterpolator (cid:132) KÝch ho¹t co gi·n Position Interpolator (cid:132) KÝch ho¹t mµu s¾c ColorInterpolator (cid:132) KÝch ho¹t tÝnh trong suèt ScalarInterpolator
PositionInterpolator t¶ vÞ trÝ cña ®−êng dÉn • key – kho¸ thêi gian ph©n ®o¹n hiÖn thêi theo kho¸ ®−êng dÉn • keyValue – kho¸ vÞ trÝ • §−a ra vÞ trÝ theo ®−êng
(cid:132) PositionInterpolator { key [ 0.0, . . . ] keyValue [ 0.0 0.0 0.0, . . . ] }
Ch¹y vÝ dô dÉn mçi khi fraction ®−îc ®Æt Xem code
(cid:132) Th−êng ®Ó göi vµo sù kiÖn ®Çu vµo set_translation cña nót Transform
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 7
Colorinterpolator-scalarinterpotator
(cid:132) OrientationInterpolator (cid:132) Nót OrientationInterpolator m«
(cid:132) PositionInterpolator (cid:132) Nót PositionInterpolator m« t¶
(cid:132) ColorInterpolator (cid:132) Nót ColorInterpolator m« t¶ ®−êng
(cid:132) ScalarInterpolator (cid:132) Nót ScalarInterpolator m« t¶
• key – kho¸ thêi gian ph©n ®u¹n • keyValue – kho¸ vÞ trÝ (hoÆc tû lÖ) • PositionInterpolator {
t¶ ®−êng dÉn h−íng ®−êng dÉn vÞ trÝ hay tû lÖ ®−êng dÉn v« h−íng dÉn mµu s¾c • key – kho¸ thêi gian ph©n • key – kho¸ thêi gian ph©n • key – kho¸ thêi gian ph©n ®o¹n ®o¹n ®o¹n • keyValue – kho¸ vÒ xoay • keyValue – kho¸ mµu • keyValue – kho¸ v« (gåm c¹nh vµ gãc) h−íng (dïng cho bÊt cø vËt thÓ nµo) (®á,xanh d−¬ng,xanh da trêi) (cid:132) ColorInterpolator { key [ 0.0, . . . ] key [ 0.0, . . . ] keyValue [ 0.0 0.0 0.0, . . . ] }
(cid:132) OrientationInterpolator { key [ 0.0, . . . ] keyValue [ 0.0 1.0 0.0 0.0, . . . ] }
(cid:132) ScalarInterpolator { key [ 0.0, . .
(cid:132) Th−êng göi gi¸ trÞ vÒ gãc xoay
keyValue [ 1.0 1.0 0.0, . . . ] } (cid:132) Th−êng göi vµu sù kiÖn ®Çu vµo . ] keyValue [ 4.5, . . . ] } (cid:132) Th−êng göi vµo sù kiÖn • Th−êng göi gi¸ trÞ vÞ trÝ vµo sù kiÖn set_scale cña nót Transform vµo sù kiÖn set_rotation cña nót Transform
set_diffuseColor hay set_emissiveColor cña nót Material (cid:132) Xem code Ch¹y vÝ dô set_transparency cña nót Material (cid:132) Xem code Ch¹y vÝ dô
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
nót Sensor
nót Sensor
(cid:132) Cã 7 kiÓu nót sensor . (cid:132) Nót sensor dß c¸c hµnh ®éng cña ng−êi dïng vµ ph¸t ra mét
sù kiªn.
(cid:132) B¹n cã thÓ liªn kÕt c¸c sù kiÖn nµy tíi c¸c nót kh¸c ®Ó t¹o ra
(cid:132) Nót ProximitySensor ph¸t hiÖn ra vÞ trÝ quan s¸t gÇn nhÊt (cid:132) Nót TouchSensor ph¸t hiÖn sù kiÖn kÝch chuét (cid:132) Nót TimeSensor lµ bé ®Õm thêi gian (cid:132) TÊt c¶ c¸c nót CylinderSensor, PlaneSensor and
chu kú ®¬n gåm cã nguyªn nh©n_kÕt qu¶.
SphereSensor ph¸t hiÖn tr¹ng th¸i kÐo c¸c vËt thÓ.
(cid:132) Nót VisibilitySensor nhËn biÕt mét ®èi t−îng lµ h÷u h×nh ®èi
víi ng−êi dïng
(cid:132) Bèn bµi cuèi cïng trong phÇn “VRML Resources | Example VRML Worlds” cña Website lµ nh−ng vÝ dô hay vÒ c¸c nót sensor vµ liªn kÕt víi c¸c sù kiÖn.
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
nót Sensor viewer
Dïng visibilitysensor vµproximitysensor
(cid:132) Hai nót VisibilitySensor vµ ProximitySensor c¶m biÕn vïng vËt thÓ
(cid:132) Motivation (cid:132) C¶m øng vÞ trÝ ng−êi dïng cho phÐp kÝch ho¹t c¸c ho¹t c¶nh
d¹ng hép
(cid:132) C¶ hai nót cã ®Çu ra gièng nhau :
(cid:132) LOD vµ Billboard lµ c¸c nót ®Æc biÖt cã c¸c ®¸p øng víi viewer sensors
(cid:132) Cã 3 kiÓu nót viewer sensor:
• center – t©m vïng • size – kÝch th−íc vïng • Khi mét vïng h÷u h×nh ®èi víi ng−êi dïng • Khi ng−êi dïng ë trong mét vïng nµo ®ã • Khi ng−êi dïng va ch¹m víi mét vËt thÓ nµo ®ã ®−îc x©y dùng s¨n • Sù kiÖn enterTime – göi thêi gian vµo vïng vµo hay lóc h÷u h×nh • Sù kiÖn exitTime – göi thêi gian vµo vïng ra hay lóc kh«ng h÷u • Nót VisibilitySensor c¶m biÕn nÕu ng−êi dïng cã thÓ thÊy mét h×nh vïng nµo ®ã a region • Sù kiÖn isActive – göi true ë vïng vµo, false ë vïng ra • Nót ProximitySensor c¶m biÕn khi ng−êi dïng ®Õn ph¹m vi xung quanh vËt thÓ • Nót Collision c¶m biÕn xung ®ét gióp ®iÒu khiÓn vµ ph¸t hiÖn xung ®ét
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 8
nót ProximitySensor
Nót VisibilitySensor
(cid:132) Nót ProximitySensor c¶m biÕn khi ng−êi dïng vµo/ rêi khái mét vïng nµo ®ã
(cid:132) Nót VisibilitySensor c¶m biÕn nÕu ng−êi dïng nh×n thÊy hoÆc ngõng
• center vµ size – kÝch th−íc vµ vÞ trÝ cña vïng • enterTime vµ exitTime –göi thêi gian vµo vïng vµo/vïng ra • isActive – göi gi¸ trÞ true/false nÕu vµo vïng vµo/ vïng ra
(cid:132) DEF ProxSense ProximitySensor { center 0.0 0.0 0.0 size 14.0 14.0 14.0 }
ROUTE ProxSense.enterTime TO Clock.set_startTime
quan s¸t mét vïng nµo ®ã
(cid:132) ProximitySensor
(cid:132) DEF VisSense VisibilitySensor { center 0.0 0.0 0.0 size 14.0 14.0 14.0
• center vµ size –t©m vµ kÝch th−íc cña vïng • enterTime vµ exitTime – göi thêi gian vµo\ra • isActive –göi gi¸ trÞ true/false vµo vïng vµo\vïng ra • Nót ProximitySensor c¶m biÕn khi ng−êi dïng ®ang ë trong } ROUTE VisSense.enterTime TO Clock.set_startTime vïng • position vµ orientation –göi vÞ trÝ vµ h−íng khi ng−êi dïng ®ang ë trong vïng
• DEF ProxSense ProximitySensor { . . . } ROUTE • ProxSense.position_changed TO PetRobotFollower.set_translation
Xem code Ch¹y vÝ dô
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
nót Collision
C¸c nót sensor hµnh ®éng
(cid:132) Nót Collision c¶m biÕn ®−îc khi tÇm
(cid:132) C¶m biÕn c¸c vËt thÓ
(cid:132) Cã 4 nót sensor hµnh ®éng
Tèi −u ho¸ viÖc ph¸t hiÖn xung ®ét (cid:132) (cid:132) Sù kiÖn collision lu«n ®−îc kÝch ho¹t
theo ngÇm ®Þnh
quan s¸t cña ng−êi dïng v−íng c¸c vËt thÓ (cid:132) collide – cho phÐp/kh«ng cho
phÐp c¶m biÕn
(cid:132) TÊt c¶ c¸c c¶m biÕn hµnh ®éng c¶m biÕn ®−îc tÊt c¶ c¸c vËt thÓ cïng nhãm
(cid:132) T¾t nã bÊt cø khi nµu cã thÓ! (cid:132) Tuy nhiªn, mét khi nót collision cha t¾t th× nót child kh«ng thÓ bËt nã trë l¹i!
(cid:132) proxy – vËt thÓ ®¬n gi¶n ®−îc c¶m biÕn thay cho c¸c nót con (cid:132) children – c¸c nót con ®−îc c¶m
chÝnh: • TouchSensor c¶m biÕn khi ch¹m vµo vËt thÓ
biÕn
(cid:132) KÕt qu¶ ph¸t hiÖn xung ®ét lµ tõ ng−êi dïng va ch¹m víi mét vËt thÓ chø kh«ng ph¶i lµ vËt thÓ va ch¹m víi ng−êi dïng
• SphereSensor khi kÐo chuét • CylinderSensor khi kÐo
Sö dông nhiÒu nót sensor
(cid:132) C¶m biÕn ®−îc kÝch ho¹t khi khi con trá cña ng−êi dïng ch¹m ph¶i vËt thÓ ®−îc c¶m biÕn
(cid:132) collideTime – göi thêi gian khi ng−êi dïng ch¹m vµo vËt thÓ
(cid:132) (cid:132) Mét sè nót sensor cã thÓ c¶m biÕn
cïng mét lóc
(cid:132) B¹n cã thÓ t¹o ra nhiÒu
(cid:132) Nót Anchor lµ nót c¶m biÕn
nótvisibility, proximity, and collision sensor
(cid:132) C¸c vïng c¶m biÕn cã thÓ ch«ng
(cid:132) DEF Collide Collision { collide TRUE proxy Shape { geometry Box { . . . } } children [ . . . ] } ROUTE Collide.collideTime TO OuchSound.set_startTime
lªn nhau
(cid:132)
Xem code
Ch¹y vÝ dô
chuét • PlaneSensor khi kÐo chuét Xem code Ch¹y vÝ dô
(cid:132) NÕu nhiÒu nót sensor ®−îc kÝch
ho¹t, chóng sÏ thùc hiÖn
hµnh ®éng cã môc ®Ých ®Æc biÖt mµ c¸c ®¸p øng ®−îc x©y dùng s½n
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Touchsensor vµ spheresensor
Cylindersensor-planesensor
(cid:132) Nót TouchSensor c¶m biÕn sù va
ch¹m cña con trá
(cid:132) Nót PlaneSensor nhËn biÕt con trá ®−îc rª vµ lµm dÞch chuyÓn vËt thÓ trªn mét mÆt ph¼ng
(cid:132) Nót CylinderSensor nhËn biÕt con trá ®−îc rª vµ lµm cho vËt thÓ xoay quanh h×nh trô
(cid:132) Nót SphereSensor c¶m biÕn sù dich chuyÓn con trá t¹o ra sù xoayquanh h×nh cÇu
• isActive – göi c¸c gi¸ trÞ true/false khi chuét ®−îc nhÊn hay th¶
• isOver – göi gi¸ trÞ true/false khi con trá ®ang ë trong hay ë ngoµi vïng vËt thÓ • isActive – göi gi¸ trÞ
• translation_changed – lµm cho vËt thÓ dÞch chuyÓn khi rª chuét
true/false khi chuét ®−îc nhÊn hay th¶
• touchTime –®−a ra thêi gian
• isActive – göi gi¸ trÞ true/false khi chuét ®−îc nhÊn hay th¶ • isActive –göi c¸c gi¸ trÞ true/false khi con chuét ®−îc nhÊn hay th¶
• rotation_changed - ®−a ra sù quay khi rª con chuét
khi chuét ®−îc th¶ (cid:132) Transform { children [ DEF Touched TouchSensor { } Shape { . . . } . . . ] }
(cid:132) Transform { children [ DEF Mover PlaneSensor { } DEF MoveMe Transform { . . . } ] } ROUTE Mover.translation_changed TO MoveMe.set_translation
Ch¹y vÝ dô
Xem code
(cid:132) Xem code
(cid:132)
Xem code
Ch¹y vÝ dô
• rotation_changed – lµm cho vËt thÓ quay khi kÐo (cid:132) Transform { children [ DEF Rotator CylinderSensor { } DEF RotateMe Transform { . . . } ] } ROUTE Rotator.rotation_changed TO RotateMe.set_rotation Ch¹y vÝ dô
(cid:132) Transform { children [ DEF Rotator SphereSensor { } DEF RotateMe Transform { . . . } ] } ROUTE Rotator.rotation_changed TO RotateMe.set_rotation
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 9
Sö dông nhiÒu nót sensor
vÝ dô sö dông c¸c nót sensor
• Nót sensor s©u nhÊt sÏ ®¸p øng • C¸c nót kh¸c kh«ng ®¸p øng
NhiÒu nót sensor cã thÓ c¶m biÕn cïng mét vËt thÓ nh−ng. . . • NÕu c¸c nót sensor ë trong cïng mét nhãm : • TÊt c¶ ®Òu cã thÓ ®¸p øng c¸c sù kiÖn • NÕu c¸c nót sensors cã ®é s©u kh¸c nhau trong cÊu tróc c©y cña nót :
SphereColour.set_diffuseColor
#Clock to drive animations DEF Clock TimeSensor { cycleInterval 10.0 loop TRUE } # Colour changes for sphere (red -> green -> blue -> red) DEF NewColour ColorInterpolator { key [0.0, 0.33, 0.66, 1.0 ] keyValue [1.0 0.2 0.2, 0.2 1.0 0.2, 0.2 0.2 1.0, 1.0 0.2 0.2 ] } . . . (Above is Grouped with the object we’re changing) # use clock to run a ColorInterpolator, generating smoothly varying colour ROUTE Clock.fraction_changed TO NewColour.set_fraction # use varying colour value to feed material's diffuseColor field ROUTE NewColour.value_changed TO
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
nót Script
c¸c ng«n ng÷kÞch b¶n
(cid:132) Nót Script chän mét ch−¬ng tr×nh
(cid:132) §Þnh nghÜa giao tiÕp c¸c
(cid:132) NhiÒu hµnh ®éng qu¸ phøc t¹p ®èi víi c¸c nót ho¹t c¶nh • TÝnh to¸n ®−êng ®i (vÝ dô lùc hÊp dÉn) • Gi¶i thuËt vÒ vËt thÓ (eg. fractals) • C¸c m«i tr−êng cÇn sù c«ng t¸c (vÝ dô game)
(cid:132) Nót Script còng khai b¸o giao tiÕp ch−¬ng tr×nh kÞch b¶n
(cid:132) B¹n cã thÓ t¹o ra c¸c nót sensors, interpolators, v©n v©n , b»ng c¸nh sö dông
c¸c ch−¬ng tr×nh kÞch b¶n viÕt b»ng c¸c ng«n ngö • Java – ng«n ngö lËp tr×nh rÊt m¹nh • JavaScript – ng«n ngö kÞch b¶n dÔ häc • VRMLscript – gièng JavaScript
(cid:132) DEF Bouncer Script { url "bouncer.class" or... url "bouncer.js" or... url "javascript: ..." or... url "vrmlscript: ..." }
Ng«n ng÷ VRML kh«ng b¾t buéc ph¶i hç trî c¸c ng«n ng÷ kÞch b¶n • HÇu hÕt c¸c tr×nh duyªt ®Òu hâ trî JavaScript vµ • NhiÒu tr×nh duyªt hç trî Java
(cid:132) VRMLScript = JavaScript = ECMAScript
• JavaScript kh«ng gièng Java • VRMLScript lµ phÇn mÒm cña Cosmo Software hç trî JavaScript • C¸c ®Æc t¶ kü thuËt cña ISO VRML gäi lµ ECMAScript, phiªn b¶n cã hç
ch−¬ng tr×nh kÞch b¶n øng dông kÞch b¶n ®Ó ch¹y: (cid:132) url – chän ch−¬ng tr×nh kÞch b¶n • field, eventIn, vµ eventOut – lµ c¸c thao t¸c xuÊt nhËp • Mçi c¸i cã mét tªn vµ kiÓu d÷ liÖu • C¸c tr−êng cã mét gi¸ trÞ Ch¹y vÝ dô Xem code
tr¬ JavaScript
khëi ®Çu (cid:132) DEF Bouncer Script { field SFFloat bounceHeight 3.0 eventIn SFFloat set_fraction eventOut SFVec3f value_changed }
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Java
Java class
(cid:132) Khai b¸o giao tiÕp ch−¬ng
(cid:132) So víi c¸c ng«n ng÷ nh−
(cid:132) NhËp c¸c package cho líp Java (cid:132) File cña ch−¬ng tr×nh kÞch b¶nph¶i import c¸c package cña VRML :
• §−îc cung cÊp c¸c c«ng ty ph©n phèi tr×nh duyÖt VRML
(cid:132) Víi ch−¬ng tr×nh kÞch b¶n viÕt
(cid:132) import vrml.*; (cid:132) import vrml.field.*; (cid:132) import vrml.node.*;
(cid:132) T¹o ra c¸c file Java class
(cid:132) C¸c ch−¬ng tr×nh kÞch b¶n ph¶i ®Þnh nghÜa mét líp cã tÝnh public kÕ thõa tõ líp
tr×nh kÞch b¶n JavaScript/VRMLscript, Java cã kh¶ n¨ng: • M« ®un ch−¬ng tr×nh tèt h¬n b»ng ng«n ng÷ Java t¹o ra mét file class trong tr−êng url cñanót Script • CÊu tróc d÷ liÖu tèt h¬n • Kh¶ n¨ng thùc hiÖn nhanh
Script
(cid:132) public class bounce2 extends Script { . . . }
• Ph−¬ng thøc tuú chän initialize ®−îc gäi khi script ®−îc t¶i • public void initialize ( ) { . . . } • Qu¸ tr×nh khëi t¹o xÈy ra khi:
• Nót Script ®−îc t¹o (th−êng khi tr×nh duyÖt n¹p thÕ giíi c¸c vËt thÓ)
(cid:132) Víi nh÷ng c«ng viÖc ®¬n gi¶n th× sö dông JavaScript/VRMLscript (cid:132) Nh÷ng ch−¬ng tr×nh phøc t¹p th×
h¬n • file class ®−îc biªn dÞch b»ng ch−¬ng tr×nh kÞch b¶n Java • Truy cËp m¹ng
• Ph−¬ng thøc shutdown ®−îc gäi ®Õn khi script th«i n¹p • public void shutdown ( ) { . . . } • Shutdown xÈy ra :
dïng Java
(cid:132) DEF Bouncer Script { field SFFloat bounceHeight 3.0 eventIn SFFloat set_fraction eventOut SFVec3f value_changed url "bounce2.class" }
• Nót Script bÞ xo¸ • Tr×nh duyÖt n¹p thÕ giíi míi
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn
Page 10
Sù kiÖn -event
Tr−êng eventout tõ java
(cid:132) §¸p øng mét sù kiÖn
(cid:132) Truy nhËp tr−êng eventOuts tõ
(cid:132) Truy nhËp c¸c tr−êng tõ Java (cid:132) Mçi tr−êng giao tiÕp cã thÓ ®−îc
(cid:132) Mçi giao tiÕp eventOut cã thÓ ®äc
(cid:132) VÝ dô Java script (cid:132) T¹o nót interpolator víiqu¶ bãng nÈy råi tÝnh träng lùc nh− chuyÓn ®éng nÈy ngang tõ d÷ liÖu ®Çu vµo lµ thêi gian ph©n ®o¹n
(cid:132) obj = (SFFloat) getField(
Java • Ph−¬ng thøc ®äc vµ viÕt vµ ghi • Gäi getField ®Ó ®äc tr−êng cña ®èi t−îng processEvent ®−îc gäi mçi khi mét sù kiÖn nhËn ®−îc , chuyÓn mét ®èi t−îng sù kiÖn chøa "bounceHeight" );
(cid:132) Nót cÇn: DEF Ball Transform { . . . } DEF Clock TimeSensor { . . . } DEF Bouncer Script { . . . }
• Gi¸ trÞ cña sù kiÖn • Thêi gian
(cid:132) public void processEvent(
(cid:132) lastval = obj.getValue( );
(cid:132) lastval = obj.getValue( );
(cid:132) obj.setValue( newval );
• Gäi getValue ®Ó lÊy gi¸ trÞ cña tr−êng • gäi getEventOut ®Ó ®äc tr−êng eventOut cña ®èi t−îng (cid:132) obj = (SFVec3f) getEventOut( "value_changed" ); Event event ) { . . . } • Gäi getValue ®äc gi¸ trÞ • Gäi setValue ®Æt gi¸ trÞ cuèi cïng ®−îc göi Xem code vrml cho mét tr−êng (cid:132) obj.setValue( newval ); • Gäi setValue ®Ó göi mét Xem code java sù kiÖn