Ngôn ngữ mô hình hóa thực tại ảo VRML

VRML ? Lịch sử 􀂄 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 􀂄 Các file text VRML có đuôi là .wrl 􀂄 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. 􀂄 VRML 2.0 là một ngôn ngữ mô tả dựa trên Silicon Graphics và được goi là “Moving Worlds”. 􀂄 VRML1 (1994) & VRML2 (1997) có mở rộng thêm các chủ đề liên quan

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

Các file đính kèm theo tài liệu này:

  • pdfgiao_trinh_do_hoa_8__4214.pdf
Tài liệu liên quan