Đồ họa hiện thực ảo - Bài 8 (HUST) GV. Lê Tấn Hùng

LI
lienhejb
0 lượt tải
11
0

Nội dung tài liệu

Trang 1

Ng«n ng÷ m« h×nh hãa thùc t¹i ¶o VRML ? LÞch sö VRML „ 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 (c) SE/FIT/HUT 2002 TÝnh chÊt CÊu tróc file VRML „ B¹n cã thÓ xem c¸c file VRML nhê tr×nh duyÖt VRML : „ Trong file VRML gåm cã : #VRML V2.0 utf8 „ Mét øng dông hç trî VRML „ §Çu ®Ò cña file # example1.wrl - a yellow box „ Mét øng dông VRML nhóng vμo mét tr×nh duyÖt HTML „ Comments – chó thÝch Shape „ B¹n cã thÓ xem c¸c file VRML tõ ®Üa cøng , hay qua m¹ng Internet cña b¹n { geometry Box{ } # default box „ Toμn bé trang Web „ Nodes – nót chøa c¸c appearance Appearance # override Nhóng vμo trang Web th«ng tin quan träng cña „ c¶nh vËt appearance „ Toμn bé khung cña trang Web Fields – c¸c thuéch tÝnh {material Material # with a new Nhóng vμo khung cña trang Web „ „ cña nót mμ b¹n cã thÓ material „ Nhóng vμo c¸c øng dông ®a thêi gian thay ®æi {diffuseColor 1.0 1.0 0.0 # „ B¹n cã thÓ t¹o c¸c file VRML nhê : „ Values – c¸c thuéc tÝnh yellow „ Mét tr×nh so¹n th¶o v¨n b¶n ®¬n gi¶n gi¸ trÞ } „ Mét ch−¬ng tr×nh øng dông „ Vμ . . . } „ 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) SE/FIT/HUT 2002 Comments-chó thÝch PhÇn tö c¬ b¶n cña VRML: Nót „ Lêi chó thÝch b¾t ®Çu víi ký 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. „ Ký tù # trong nh¸y kÐp kh«ng ph¶i b¾t ®Çu chó thÝch. „ 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 Chó ý r»ng dßng ®Çu cña VRML 2.0 lμ : ®è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 „ #VRML 2.0 utf8 hoÆc nhiÒu tr−êng. vμ lμ b¾t buéc ! „ 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õ khãa utf dïng ®Ó nãi ®Õn bé ký tù quèc tÕ UTF-8 ®−îc „ 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. th−êng (case sensitive). Lêi chó thÝch vμ kho¶ng tr¾ng cã thÓ kh«ng ®−îc b¶o toμn „ VÝ dụ về nót „ Shape, Box, Appearance, Material,lights, sounds, . „ bëi VRML document server. (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 2

CÊu tróc ph©n líp CÊu tróc c¶nh „ Nót Shape chøa hai tr−êng, geometry vμ appearance, mçi tr−êng l¹i z Shape chøa c¸c nót kh¸c ®−îc coi nh− gi¸ trÞ cña chóng. z Box Shape geometry „ { appearance NULL exposedField SFNode appearance z Appearance geometry NULL exposedField SFNode material z Material } „ §«i khi nót Shape cã mét tr−êng Appearance nh−ng kh«ng cã tr−êng diffuseColor geometry (vÝ dô nh− c¸c vËt thÓ kh«ng nh×n thÊy!) 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 „ Tr−êng geometry chøa nót Box vμ tr−êng appearance coi nót c¸c líp phøc t¹p. Appearance nh− lμ gi¸ trÞ cña cã. Nót shape ®−îc t¹o nªn trung t©m cña thÕ giíi VRML . „ „ Nót Appearance l¹i chøa mét nót kh¸c lμ Material. Mét file VRML cã thÓ chøa nhiÒu nót shape „ „ 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 C¸c nót shape cã thÓ trïng lªn nhau khi chóng ®−îc t¹o nªn ë cïng mét graph. „ vÞ trÝ. „ B¹n nªn xem vμ sö dông mét trong c¸c tr−êng geometries sau (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 C¬ b¶n vÒ nót shape C¬ b¶n vÒ nót shape „ Nót Shape lμ nh÷ng viªn g¹ch „ Box Cylinder t¹o nªn thÕ giíi VRML C¸c nót {size 8 12 10 # x, y, z (=w, h, „ Shape gèc lμ c¸c khèi chuÈn : d) { radius 4 # chiÒu réng lμ 8 • Box } height 6 • Cone bottom TRUE # “cup” cã c¹nh vμ ®¸y • Cylinder Xem code Ch¹y vÝ dô • Sphere Cone side TRUE „ • Text { bottomRadius 5 # so 10 top FALSE # nh−ng kh«ng cã ®Ønh „ C¸c tr−êng cña nót Geometry units wide } ®iÒu khiÓn kÝch th−íc height 12 Xem code Ch¹y vÝ dô „ KÝch th−íc th−êng cã ®¬n vÞ lμ m, side TRUE nh−ng cã thÓ bÊt cø ®¬n vÞ g× bottom TRUE „ Sphere # ®¬n gi¶n nhÊt trong c¸c nót shape Xem code Ch¹y vÝ dô { radius 2 # nh−ng còng lμ phøc t¹p } } Xem code Ch¹y vÝ dô (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Nót text CÊu tróc ¶nh bitmap „ Tr¸nh t¹o ra c¸c ®Æc t¶ kü thuËt Web-based 3D/VR. „ Sö dông ¶nh bitmap thay cho mét m« h×nh 3D thËt cô thÓ cã thÓ tiÕt kiÖm „ Text rất hữu Ých ë c¸c hÖ chuyªn gia,vÝ dô nh− trong khoa häc vÒ trùc quan. ®−îc nhiÒu thêi gian xö lý... „ Text „ Tuy vËy viÖc sö dông réng r·i ¶nh bitmap cã thÓ cã nh÷ng bÊt lîi sau: { string “Hi!” # multi-field „ CÊu tróc cña ¶nh sÏ ®−îc gñi cho tr×nh duyÖt ,cã thÓ ph¶i qua mét length 0 # stretch to this width (0=natural width) qu¸ tr×nh th«ng tin chËm. fontStyle FontStyle „ ThiÕt kÕ mét ¶nh bitmap vμ ®−a nã lªn mμn h×nh lμ c«ng ®o¹n xö lý { family“SERIF” # or SANS or TYPEWRITER kh¸ lμ kü l−ìng. style “PLAIN” # or BOLD ITALIC size 4 } } Xem code Chaþ vÝ dô (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 3

CÊu tróc trong VRML HÖ täa ®é „ Appearance „ Mét file VRML x©y dùng nªn c¸c thμnh phÇn cña thÕ giíi VRML { texture ImageTexture { url “skin.gif” # GIF, JPG or PNG „ Mét file thμnh ®−îc x©y dùng trong thÕ giíi hÖ to¹ ®é repeatSTRUE # repeat or stretch? „ Theo mÆc ®Þnh , tÊt c¶ c¸c vËt thÓ ®−îc x©y dùng tõ gèc cña hÖ to¹ ®é repeatT TRUE } „ VRML sö dông hÖ to¹ ®é thuËn .hÖ to¹ ®é §Ò C¸c } Xem code Ch¹y vÝ dô „ §¬n vÞ chuÈn ®o chÒu dμi vμ kho¶ng c¸ch trong VRML lμ m. „ C¸c Texture cã thÓ lμ mét URL ®Çy ®ñ hoÆc chØ lμ mét URLt−¬ng ®èi ®¬n Gãc lμ radian. gi¶n nh− sö dông ë trªn. „ „ Cã ba kiÓu nót texture lμ : ImageTexture, MovieTexture and PixelTexture „ Mét vßng quay lμ 2π radian. Xem code Ch¹y vÝ dô „ 360 lμ 2π radian, kho¶ng 6.28 radian, 90 lμ π/2 radian, kho¶ng 1.57 radian. (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 ChuyÓn ®æi mét hÖ to¹ ®é Tr−êng children „ Mét nót transform t¹o ra mét hÖ to¹ „ Nhãm c¸c nót Transform t¹o ra „ Tr−êng children bao gåm mét danh s¸ch mét hay nhiÒu nót ®é cã: mét nhãm víi hª to¹ ®é cña chÝnh Positioned :gèc n㠄 • rotation – h−íng „ Transform { . . . „ Rotated :gãc quay children [ • scale – kÝch cì „ Scaled :tû lÖ • translation – vÞ trÝ Shape { . . . } „ Liªn hÖ víi hÖ to¹ ®é cha cña nã • children – c¸c vËt thË t¹o Shape { . . . } „ C¸c vËt thÓ ®−îc x©y dùng trong hÖ Transform { Transform { . . . } . . . ] } to¹ ®é míi ®−îc ®Þnh vÞ ,quay vμ tû lÖ translation . . . cïng víi nã. rotation . . . scale . . . children [ . . . ] } (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Nót transform Nót transform „ Tr−êng Translation ®Þnh vÞ hÖ to¹ „ Tr−êng Rotation ®Þnh h−íng hÖ to¹ ®é „ Co gi·n , xoay vμ dÞch mét hÖ to¹ ®é, c¸i nμy sau c¸i kia ®é bëi X,Y vμ Z quay quoanh mét c¹nh bëi mét gãc Transform { „ Transform { # X Y Z quay translation 2.0 0.0 0.0 translation 2.0 0.0 0.0 children • Gãc th−êng ®−îc ®u b»ng ®¬n rotation 0.0 0.0 1.0 0.52 [ . . . ] } vÞ radian scale 0.5 0.5 0.5 „ Tr−êng Scale ®Ó co hay gi¶n mét • radian = ®é/ 180.0 * 3.141 children [ . . . ] } hÖ to¹ ®é dùa vμu hÖ sè tû lÖ ë Transform { # X Y Z Angle „ C¸c thao t¸c ®−îc thùc hiÖn tõ d−íi lªn bottom-up: c¸c trôc X, Y, vμ Z rotation 0.0 0.0 1.0 0.52 „ Tr−êng children ®−îc co gi·n ,xoay råi sau ®ã míi dÞch „ Transform { # X Y Z scale 0.5 children [ . . . ] } „ 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 0.5 0.5 children [ . . . ] } Xem code Ch¹y vÝ dô (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 4

nót Appearance nót Material „ C¸c vËt thÓ gèc cã mμu ph¸t ra tõ b҄ Mét nót Appearance miªu t¶ toμn „ 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Ó ngoμi lμ mμu tr¾ng bé h×nh d¹ng cña vËt thÓ • diffuseColor – mμu bãng chÝnh „ B¹n cã thÓ ®iÒu khiÓn mμu cña mét • Tr−êng material gåm c¸c • emissiveColor – mμu ph¸t chÝnh vËt thÓ: thuéc tÝnh nh− color, • transparency – Trong suèt hay kh«ng • Mμu bãng transparency, etc. „ Shape { Shape { appearance Appearance { • Mμu ph¸t ra „ appearance Appearance { material Material { • TÝnh trong suèt diffuseColor 0.8 0.8 0.8 • TÝnh kh«ng chiÕu s¸ng material . . . } emissiveColor 0.0 0.0 0.0 • C−êng ®é ¸nh s¸ng bao geometry . . . } transparency 0.0 } quanh } geometry . . . } (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Nót material B¶ng mμu th−êng dïng „ Nót Material còng cã thÓ ®iÒu khiÓn tÝnh chiÕu s¸ng cña mét vËt thÓ ambient diffuse specular • specularColor – ®iÓm cã mμu næi bËt nhÊt M« t¶ Intensity Color Color shininess • 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 „ Shape { Copper 0.26 0.30 0.11 0.00 0.75 0.33 0.00 0.08 appearance Appearance { Gold 0.40 0.22 0.15 0.00 0.71 0.70 0.56 0.16 material Material { specularColor 0.71 0.70 0.56 Metalic Purple 0.17 0.10 0.03 0.22 0.64 0.00 0.98 0.20 shininess 0.16 Metalic Red 0.15 0.27 0.00 0.00 0.61 0.13 0.18 0.20 ambientIntensity 0.4 } } Plastic Blue 0.10 0.20 0.20 0.71 0.83 0.83 0.83 0.12 geometry . . . } Xem code Ch¹y vÝ dô (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 nót Group KÕt nèi tíi mét vÞ trÝ kh¸c „ Th«ng th−êng chóng ta cÈn nhãm c¸c „ B¹n cã thÓ nhãm c¸c vËt thÓ l¹i víi „ Còng nh− trong trang Web , siªu liªn kÕt còng s½n cã trong VRML. ®èi t−îng l¹i víi nhau. VRML dïng nót nhau ®Ó t¹o thμnh mét vËt thÓ phøc „ 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 Group ®Ó thùc hiÖn ®iÒu nμy t¹p . kh¸c, c¸c trang HTML vμ c¸c øng dông CGI . „ Nót Group cã thÓ cã c¸c nót con. „ VRML cã nhiÒu nót group bao gåm „ 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ã thÓ chÝnh c¸c nót con lμ c¸c nót Group { . . . } c¸c øng dông CGI. group . Switch { . . . } „ Cã c¸c kiÓu nót group sau: Transform { . . . } Billboard { . . . } Transform Group LOD Anchor { . . . } Anchor Inline Inline { . . . } Collision Switch Billboard Xem code Chaþ vÝ dô (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 5

C¸c nót Group-Switch-Transform Nót Anchor vμ Inline „ Nót Group t¹o ra c¸c nót c¬ b¶n „ Nót Transform t¹o ra mét nhãm dùa „ Nót Anchor t¹o ra mét nhãm mμ ho¹t Nót Inline t¹o ra mét nhãm ®Æc biÖt tõ kh¸c trªn chÝnh hÖ to¹ ®é cña nã ®éng nh− kiÓu cã thÓ kÝch chuét ®−îc néi dung cña mét file VRML kh¸c „ Mçi nót child trong group lμ ®−îc „ Mçi nót child lμ ®−îc hiÓn thÞ ChØ nót child lμ ®−îc hiÓn thÞ Nót con ®äc tõ file ®−îc chän bëi hiÓn thÞ „ „ Transform { KÝch chuét vμo nót child theo sau URL Group { children [ . . . ] } „ „ translation 0.0 0.0 0.0 bëi mét URL Mçi nót child lμ ®−îc hiÓn thÞ Nót nhãm Switch t¹o ra mét nhãm c㠄 „ rotation 0.0 1.0 0.0 0.0 Tr−êng description ®Æt tªn cho nót Inline { url "table.wrl" } thÓ chuyÓn cho nhau. scale 1.0 1.0 1.0 children [ . . . ] } „ „ ChØ cã mét nót child group is anchor „ Inline { „ Nót nhãm Billboard t¹o ra mét nhãm trong nhãm lμ ®−îc hiÓn thÞ „ url "table.wrl" } . . . víi hÖ to¹®é ®Æc biÖt „ B¹n chän nót child nμo • Mçi nót child ®−îc hiÓn thÞ Anchor { Transform { • Nót con ®−îc ®¸nh sè t−êng displayed url "stairwy.wrl" translation -0.95 0.0 0.0 minh tõ 0 • HÖ to¹ ®é trë l¹i mÆt xem description "Twisty Stairs" • A -1 kh«ng chän nót con nμo rotation 0.0 1.0 0.0 3.14 „ Billboard { children [ . . . ] } children [ Inline { url "chair.wrl" } ] } Switch { whichChoice 0 choice [ . . . ] axisOfRotation 0.0 1.0 0.0 } „ Xem code Ch¹y vÝ dô Xem code Ch¹y vÝ dô Xem code Chaþ vÝ dô children [ . . . ] } (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 §Æt tªn Tõ khãa use „ NÕu nhiÒu vËt thÓ gièng nhau vÒ c¸c „ Có ph¸p DEF t¹o ra tªn cho mét „ Tõ kho¸ USE cho phÐp sö dông „ USE b¾t buéc ph¶i lμ chö hoa yÕu tè h×nh häc hay h×nh d¹ng , b¹n nót mét nót ®· ®−îc ®Æt tªn tr−íc Sö dông l¹i nót ®· ®−îc ®Æt tªn ph¶i dïng nhiÒu nót gièng hÖt nhau „ „ Shape { Shape { gäi lμ mét biÕn hay mét thÓ hiÖn „ „ Thay vμo ®ã , ®Þnh nghÜa mét tªn appearance Appearance { cho nót t×m thÊy ®Çu tiªn appearance Appearance { „ Mét nót ®· ®−îc ®Æt tªn cã thÓ cã material material mét vμi thÓ hiÖn „ Sau ®ã, sö dông tªn ®Êy ®Ó chia sÎ DEF RedColor cho nót t−¬ng tù ë trong ng÷ c¶nh USE RedColor } „ Mçi thÓ hiÖn chia sÎ cïng mét míi Material { diffuseColor 1.0 0.0 0.0 miªu t¶ vÒ nót ®Êy } } geometry . . . } geometry . . . } DEF b¾t buéc ph¶i ký tù hoa „ ChØ cã thÓ cã thÓ hiªn mμ tªn „ Cã thÓ ®Æt tªn cho mét nót nμo ®Êy Xem code Ch¹y vÝ dô cña nót ®· ®−îc ®Þnh nghÜa „ trong cïng mét file „ 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 (c) SE/FIT/HUT 2002 −u ®iÓm Giíi thiÖu ho¹t c¶nh „ §Æt tªn vμ sö dông nót: „ C¸c nót nh− Billboard vμ Anchor cã c¸c hμnh ®éng x©y dùng s½n L−u nh÷ng g× ®· ®¸nh vμo „ 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 „ Gi¶m kÝch th−íc file „ Chóng ta cÇn mét ph−¬ng thøc ®Ó kÝch , thêi gian ho¸, vμ ®¸p øng mét „ Cho phÐp thay ®æi nhanh chãng c¸c vËt thÓ cã cïng thuéc tÝnh 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 „ T¨ng tèc ®é cho qu¸ tr×nh xö lý trªn tr×nh duyÖt 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 „ „ Tªn còng cÇn thiÕt cho c¶nh ®éng... „ 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) (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 6

Thªm c¸c sù kiÖn Cμi ®Æt ho¹t c¶nh „ §Ó quay mét vËt thÓ: „ §Ó cμi ®Æt mét dßng ho¹t c¶nh , b¹n cÇn ba thø : • Nèi mét nót mμ göi sù kiÖn rotation víi tr−êng rotation cña nót „ Mét nót göi sù kiÖn Transform „ Nót ph¶i ®−îc ®Æt tªn víi c©u lÖnh DEF „ §Ó lμm mét vËt thÓ nhÊp nh¸y: „ Mét nót nhËn sù kiÖn • Nèi nót göi sù kiÖn color víii tr−êng diffuseColor cña nót „ Nót ph¶i ®−îc ®Æt tªn víi c©u lÖnh DEF Material „ 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) SE/FIT/HUT 2002 C¸c vÝ dô Vμo- ra Tõ khãa route Nót OrientationInterpolator Nót Transform cã c¸c sù kiÖn „ C©u lÖnh ROUTE cho phÐp kÕt nèi „ C¸c quy −íc vÒ ®Æt tªn „ „ hai nót l¹i víi nhau : cã sù kiÖn ra : vμo: „ HÇu hÕt c¸c nót ®Òu cã exposedFields „ Tªn nót göi vμ sù kiÖn ra NÕu tr−êng exposed tªn lμ xxx, th×: value_changed ®−a ra gi¸ trÞ „ set_translation Tªn nót nhËn vμ s− kiÖn vμu „ „ „ • set_xxx lμ mét sù kiÖn vμo gãc xoay „ set_rotation „ ROUTE ®−îc g¸n cho tr−êng PositionInterpolator set_scale MySender.rotation_changed • xxx_changed lμ sù kiÖn ra „ Nót c㠄 TO MyReceiver.set_rotation sù kiÖn ra : Nót Material cã c¸c sù kiÖn vμu: ®−îc göi ®i khi tr−êng ®ã thay „ „ ROUTE vμ TO b¾t buéc ph¶i lμ ®æi „ value_changed ®−a ra vÞ trÝ „ set_diffuseColor ký tù hoa • C¸c tiÕp ng÷ set_ vμ _changed „ Nót TimeSensor cã sù kiÖn ra: set_emissiveColor lμ tuú chän nh−ng nªn cã ®Ó „ ph©n biÖt „ time ®−a ra thêi gian „ set_transparency 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 „ Ho¹t c¶nh cho phÐp thay ®æi qua 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 • VÞ trÝ – mét « t« ®ang ®i „ Nót c¶m øng t¹o sù kiÖn thêi gian khi nã ®ang ch¹y • H−íng - mét m¸y bay ®ang l−în „ §Ó kÝch ho¹t , dÉn c¸c sù kiÖn thêi gian tíi c¸c nót kh¸c • Mμu s¾c – ®æi mïa „ Nót TimeSensor t¹o ra hai sù kiÖn thêi gian lμ absolute and fractional „ Ho¹t c¶nh b¾t buéc ®iÒu khiÓn qua thêi gian: „ Sù kiÖn thêi gian Absolute t¹o ra thêi gian thùc • Khi nμo th× b¾t ®Çu vμ dõng • Thêi gian tuyÖt ®èi ®−îc ®u b»ng gi©y tõ 12:00h mång 1 th¸ng 1 • Møc ®é nhanh chËm n¨m 1970! • 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 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 7

sö dông thêi gian ph©n ®o¹n Nót timesensor „ Sù kiÖn thêi gian ph©n ®o¹n nhËn c¸c gi¸ trÞ sè tõ 0.0 tíi 1.0 „ Nót TimeSensor t¹o ra c¸c sù kiÖn „ §Ó t¹o ra bé thêi gian ch¹y liªn tôc: dùa vμo thêi gian „ loop TRUE „ Khi nót c¶m øng thêi gian b¾t ®Çu , ®Çu ra cña nã lμ 0.0 Thêi gian b¾t ®Çu_ startTime vμ „ „ stopTime <= startTime „ KÕt thóc mét chu kú_ cycle, ®Çu ra cña nã lμ 1.0 thêi gian kÕt thóc_ stopTime khi Khi stop time <= start time,th× stop ch¹y „ „ Sè gi©y gi÷a 0.0 vμ 1.0 ®−îc x¸c ®Þnh bëi xung tuÇn hoμn_ cycle time bÞ bá qua interval „ Thêi gian tuÇn Ch¹y cho tíi khi stop time: hoμn_cycleInterval thêi gian cho„ „ 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 mét chu kú lμ bao l©u „ loop TRUE dõng „ LÆp_loop – cã lÆp l¹i hay kh«ng „ stopTime > startTime „ TimeSensor { „ §Ó ch¹y mét vßng råi sau ®ã dõng: cycleInterval 1.0 „ loop FALSE loop FALSE „ stopTime <= startTime startTime 0.0 „ Sù kiÖn vμo d÷ liÖu set_startTime : stopTime 0.0 } „ ®Æ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 (c) SE/FIT/HUT 2002 Tr−êng ra d÷ liÖu ChuyÓn ®æi thêi gian ra to¹ ®é „ Tr−êng ra d÷ liÖu isActive : „ §Ó kÝch ho¹t vÞ trÝ cña mét vËt thÓ „ Interpolating positions VRML cung cÊp: „ Mçi kho¸ vÞ trÝ cïng víi ®−êng „ Ra d÷ liÖu lμ TRUE khi bé thêi gian b¾t • Mét danh s¸ch kho¸ vÒ vÞ dÉn cã: ®Çu trÝ key positions cho ®−êng „ Mét kho¸ gi¸ trÞ key value „ Ra d÷ liÖu lμ FALSE khi bé thêi gian di chuyÓn (nh− lμ mét vÞ trÝ) kÕt thóc • Thêi gian b¾t ®Çu ë mçi vÞ Mét kho¸ thêi gian ph©n ®o¹n trÝ „ „ Tr−êng ra d÷ liÖu time : „ PhÐp néi suy sÏ ®iÒn vμu c¸c gi¸ §−a ra thêi gian tuyÖt ®èi „ Nót interpolator cã thÓ chuyÓn ®æi trÞ vμu gi÷a c¸c gi¸ trÞ kho¸: „ mét ®Çu vμu thêi gian thμnh mét fraction_changed : ®Çu ra to¹ ®é „ Fractional TimePosition „ Tr−êng ra d÷ liÖu 0 • Khi thêi gian ë gi÷a hai „ „ §−a ra c¸c gi¸ trÞ tõ 0.0 tíi 1.0 trong 0.1 suèt mét chu ký kho¸ vÞ trÝ, nót interpolator „ sÏ tÝnh to¸n vÞ trÝ trung gian „ .. „ §Æt l¹i gi¸ trÞ 0.0 lóc b¾t ®Çu mçi chu 1 kú „ Xem code Ch¹y vÝ dô (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Nót positioninterpolator Sö dông c¸c nót interpolator kh¸c „ Nót PositionInterpolator miªu „ Sù kiÖn ®Çu vμo set_fraction : „ KÝch ho¹t vÞ trÝ PositionInterpolator t¶ vÞ trÝ cña ®−êng dÉn • §Æt thêi gian ph©n ®o¹n „ KÝch ho¹t h−íng OrientationInterpolator • key – kho¸ thêi gian ph©n hiÖn thêi theo kho¸ ®−êng „ KÝch ho¹t co gi·n Position Interpolator ®o¹n dÉn KÝch ho¹t mμu s¾c ColorInterpolator „ • keyValue – kho¸ vÞ trÝ „ Sù kiÖn ®Çu ra value_changed : KÝch ho¹t tÝnh trong suèt ScalarInterpolator „ „ PositionInterpolator { key [ 0.0, • §−a ra vÞ trÝ theo ®−êng . . . ] keyValue [ 0.0 0.0 0.0, . . . ] dÉn mçi khi fraction ®−îc } ®Æt „ Th−êng ®Ó göi vμo sù kiÖn ®Çu Xem code Ch¹y vÝ dô vμo set_translation cña nót Transform (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 8

Colorinterpolator-scalarinterpotator „ OrientationInterpolator „ PositionInterpolator „ ColorInterpolator „ ScalarInterpolator „ Nót OrientationInterpolator m« „ Nót PositionInterpolator m« t¶ „ Nót ColorInterpolator m« t¶ ®−êng „ Nót ScalarInterpolator m« t¶ t¶ ®−êng dÉn h−íng ®−êng dÉn vÞ trÝ hay tû lÖ dÉn mμu s¾c ®−êng dÉn v« h−íng • key – kho¸ thêi gian ph©n • key – kho¸ thêi • key – kho¸ thêi gian ph©n • key – kho¸ thêi gian ph©n ®o¹n gian ph©n ®u¹n ®o¹n ®o¹n • keyValue – kho¸ vÒ xoay • keyValue – kho¸ (gåm c¹nh vμ gãc) vÞ trÝ (hoÆc tû lÖ) • keyValue – kho¸ mμu • keyValue – kho¸ v« OrientationInterpolator { key [ • PositionInterpolator { (®á,xanh d−¬ng,xanh da trêi) h−íng (dïng cho bÊt cø „ vËt thÓ nμo) 0.0, . . . ] keyValue [ 0.0 1.0 0.0 key [ 0.0, . . . ] keyValue [ „ ColorInterpolator { key [ 0.0, . . . ] 0.0, . . . ] } 0.0 0.0 0.0, . . . ] } keyValue [ 1.0 1.0 0.0, . . . ] } „ ScalarInterpolator { key [ 0.0, . . „ Th−êng göi gi¸ trÞ vÒ gãc xoay • Th−êng göi gi¸ trÞ vÞ trÝ vμo „ Th−êng göi vμu sù kiÖn ®Çu vμo . ] keyValue [ 4.5, . . . ] } vμo sù kiÖn set_rotation cña nót sù kiÖn set_scale cña nót set_diffuseColor hay „ Th−êng göi vμo sù kiÖn Transform Transform set_emissiveColor cña nót set_transparency cña nót Material Material „ Xem code Ch¹y vÝ dô „ Xem code Ch¹y vÝ dô (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 nót Sensor nót Sensor „ Cã 7 kiÓu nót sensor . „ Nót ProximitySensor ph¸t hiÖn ra vÞ trÝ quan s¸t gÇn nhÊt „ Nót sensor dß c¸c hμnh ®éng cña ng−êi dïng vμ ph¸t ra mét „ Nót TouchSensor ph¸t hiÖn sù kiÖn kÝch chuét sù kiªn. „ Nót TimeSensor lμ bé ®Õm thêi gian „ 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 „ 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Ó. „ Bèn bμi cuèi cïng trong phÇn “VRML Resources | Example „ Nót VisibilitySensor nhËn biÕt mét ®èi t−îng lμ h÷u h×nh ®èi VRML Worlds” cña Website lμ nh−ng vÝ dô hay vÒ c¸c nót víi ng−êi dïng 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 „ Motivation „ Hai nót VisibilitySensor vμ ProximitySensor c¶m biÕn vïng vËt thÓ „ 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 • Khi mét vïng h÷u h×nh ®èi víi ng−êi dïng • center – t©m vï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 ®ã • size – kÝch th−íc vïng „ LOD vμ Billboard lμ c¸c nót ®Æc biÖt cã c¸c ®¸p øng víi viewer sensors „ C¶ hai nót cã ®Çu ra gièng nhau : ®−î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 „ Cã 3 kiÓu nót viewer sensor: • 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 • Nót ProximitySensor c¶m biÕn khi ng−êi dïng ®Õn ph¹m vi xung • Sù kiÖn isActive – göi true ë vïng vμo, false ë vïng ra 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 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 9

Nót VisibilitySensor nót ProximitySensor „ Nót VisibilitySensor c¶m biÕn nÕu ng−êi dïng nh×n thÊy hoÆc ngõng „ Nót ProximitySensor c¶m biÕn khi ng−êi dïng vμo/ rêi khái mét vïng nμo ®ã quan s¸t 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 • center vμ size –t©m vμ kÝch th−íc cña vïng • isActive – göi gi¸ trÞ true/false nÕu vμo vïng vμo/ vïng ra • enterTime vμ exitTime – göi thêi gian vμo\ra „ DEF ProxSense ProximitySensor { center 0.0 0.0 0.0 size 14.0 14.0 14.0 } • isActive –göi gi¸ trÞ true/false vμo vïng vμo\vïng ra ROUTE ProxSense.enterTime TO Clock.set_startTime „ ProximitySensor „ DEF VisSense VisibilitySensor { center 0.0 0.0 0.0 size 14.0 14.0 14.0 • 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 „ Nót Collision c¶m biÕn ®−îc khi tÇm „ Tèi −u ho¸ viÖc ph¸t hiÖn xung ®ét „ Cã 4 nót sensor hμnh ®éng „ C¶m biÕn c¸c vËt thÓ quan s¸t cña ng−êi dïng v−íng c¸c vËt „ Sù kiÖn collision lu«n ®−îc kÝch ho¹t thÓ theo ngÇm ®Þnh chÝnh: „ TÊt c¶ c¸c c¶m biÕn hμnh „ collide – cho phÐp/kh«ng cho „ T¾t nã bÊt cø khi nμu cã thÓ! • TouchSensor c¶m biÕn khi ®éng c¶m biÕn ®−îc tÊt c¶ phÐp c¶m biÕn „ Tuy nhiªn, mét khi nót collision cha proxy – vËt thÓ ®¬n gi¶n ®−îc t¾t th× nót child kh«ng thÓ bËt nã trë ch¹m vμo vËt thÓ c¸c vËt thÓ cïng nhãm „ l¹i! c¶m biÕn thay cho c¸c nót con KÕt qu¶ ph¸t hiÖn xung ®ét lμ tõ ng−êi • SphereSensor khi kÐo chuét „ C¶m biÕn ®−îc kÝch ho¹t khi „ „ children – c¸c nót con ®−îc c¶m dïng va ch¹m víi mét vËt thÓ chø khi con trá cña ng−êi dïng biÕn kh«ng ph¶i lμ vËt thÓ va ch¹m víi • CylinderSensor khi kÐo ng−êi dïng ch¹m ph¶i vËt thÓ ®−îc c¶m „ collideTime – göi thêi gian khi „ Sö dông nhiÒu nót sensor chuét ng−êi dïng ch¹m vμo vËt thÓ „ Mét sè nót sensor cã thÓ c¶m biÕn biÕn DEF Collide Collision { collide TRUE cïng mét lóc • PlaneSensor khi kÐo chuét „ proxy Shape { geometry Box { . . . } } „ B¹n cã thÓ t¹o ra nhiÒu „ Nót Anchor lμ nót c¶m biÕn children [ . . . ] } ROUTE nótvisibility, proximity, and hμnh ®éng cã môc ®Ých ®Æc biÖt Xem code Ch¹y vÝ dô Collide.collideTime TO collision sensor OuchSound.set_startTime „ C¸c vïng c¶m biÕn cã thÓ ch«ng mμ c¸c ®¸p øng ®−îc x©y dùng Xem code Ch¹y vÝ dô lªn nhau s½n „ 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) SE/FIT/HUT 2002 Touchsensor vμ spheresensor Cylindersensor-planesensor „ Nót TouchSensor c¶m biÕn sù va „ Nót SphereSensor c¶m biÕn sù „ Nót CylinderSensor nhËn biÕt „ Nót PlaneSensor nhËn biÕt con trá ch¹m cña con trá dich chuyÓn con trá t¹o ra sù con trá ®−îc rª vμ lμm cho vËt ®−îc rª vμ lμm dÞch chuyÓn vËt thÓ • isOver – göi gi¸ trÞ true/false xoayquanh h×nh cÇu thÓ xoay quanh h×nh trô trªn mét mÆt ph¼ng khi con trá ®ang ë trong hay • isActive – göi gi¸ trÞ • isActive – göi c¸c gi¸ trÞ • isActive –göi c¸c gi¸ trÞ true/false khi chuét ®−îc true/false khi chuét ®−îc ë ngoμi vïng vËt thÓ true/false khi con chuét nhÊn hay th¶ • isActive – göi gi¸ trÞ nhÊn hay th¶ • translation_changed – lμm ®−îc nhÊn hay th¶ • rotation_changed – lμm true/false khi chuét ®−îc cho vËt thÓ dÞch chuyÓn khi nhÊn hay th¶ • rotation_changed - ®−a cho vËt thÓ quay khi kÐo rª chuét • touchTime –®−a ra thêi gian ra sù quay khi rª con „ Transform { children [ DEF „ Transform { children [ DEF khi chuét ®−îc th¶ chuét Rotator CylinderSensor { } Mover PlaneSensor { } DEF Transform { children [ DEF DEF RotateMe Transform { . MoveMe Transform { . . . } ] } „ Transform { children [ DEF „ ROUTE Touched TouchSensor { } Rotator SphereSensor { } . . } ] } ROUTE Mover.translation_changed TO Shape { . . . } . . . ] } DEF RotateMe Transform { . Rotator.rotation_changed MoveMe.set_translation . . } ] } ROUTE TO RotateMe.set_rotation Xem code Ch¹y vÝ dô Rotator.rotation_changed „ Xem code Ch¹y vÝ dô Xem code Ch¹y vÝ dô „ TO RotateMe.set_rotation (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 10

Sö dông nhiÒu nót sensor vÝ dô sö dông c¸c nót sensor NhiÒu nót sensor cã thÓ c¶m biÕn cïng mét vËt thÓ nh−ng. . . #Clock to drive animations • NÕu c¸c nót sensor ë trong cïng mét nhãm : DEF Clock TimeSensor { cycleInterval 10.0 loop TRUE } • TÊt c¶ ®Òu cã thÓ ®¸p øng c¸c sù kiÖn # Colour changes for sphere (red -> green -> blue -> red) • NÕu c¸c nót sensors cã ®é s©u kh¸c nhau trong cÊu tróc c©y cña DEF NewColour ColorInterpolator { key [0.0, 0.33, 0.66, 1.0 ] nót : 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 ] } • Nót sensor s©u nhÊt sÏ ®¸p øng . . . (Above is Grouped with the object we’re changing) • C¸c nót kh¸c kh«ng ®¸p øng # 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) SE/FIT/HUT 2002 nót Script 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 „ Nót Script chän mét ch−¬ng tr×nh „ §Þnh nghÜa giao tiÕp c¸c • TÝnh to¸n ®−êng ®i (vÝ dô lùc hÊp dÉn) kÞch b¶n ®Ó ch¹y: ch−¬ng tr×nh kÞch b¶n øng • Gi¶i thuËt vÒ vËt thÓ (eg. fractals) „ url – chän ch−¬ng tr×nh kÞch dông • C¸c m«i tr−êng cÇn sù c«ng t¸c (vÝ dô game) b¶n „ Nót Script còng khai b¸o giao „ B¹n cã thÓ t¹o ra c¸c nót sensors, interpolators, v©n v©n , b»ng c¸nh sö dông „ DEF Bouncer Script { tiÕp ch−¬ng tr×nh kÞch b¶n c¸c ch−¬ng tr×nh kÞch b¶n viÕt b»ng c¸c ng«n ngö url "bouncer.class" or... • field, eventIn, vμ • Java – ng«n ngö lËp tr×nh rÊt m¹nh url "bouncer.js" or... eventOut – lμ c¸c thao • JavaScript – ng«n ngö kÞch b¶n dÔ häc t¸c xuÊt nhËp • VRMLscript – gièng JavaScript url "javascript: ..." or... • Mçi c¸i cã mét tªn vμ kiÓu Ng«n ng÷ VRML kh«ng b¾t buéc ph¶i hç trî c¸c ng«n ng÷ kÞch b¶n url "vrmlscript: ..." } d÷ liÖu • HÇu hÕt c¸c tr×nh duyªt ®Òu hâ trî JavaScript vμ • C¸c tr−êng cã mét gi¸ trÞ • NhiÒu tr×nh duyªt hç trî Java Xem code Ch¹y vÝ dô khëi ®Çu „ VRMLScript = JavaScript = ECMAScript „ DEF Bouncer Script { field • JavaScript kh«ng gièng Java SFFloat bounceHeight 3.0 • VRMLScript lμ phÇn mÒm cña Cosmo Software hç trî JavaScript eventIn SFFloat set_fraction • C¸c ®Æc t¶ kü thuËt cña ISO VRML gäi lμ ECMAScript, phiªn b¶n cã hç eventOut SFVec3f tr¬ JavaScript value_changed } (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Java Java class „ So víi c¸c ng«n ng÷ nh− „ Khai b¸o giao tiÕp ch−¬ng „ NhËp c¸c package cho líp Java JavaScript/VRMLscript, Java cã tr×nh kÞch b¶n „ File cña ch−¬ng tr×nh kÞch b¶nph¶i import c¸c package cña VRML : kh¶ n¨ng: • §−îc cung cÊp c¸c c«ng ty ph©n phèi tr×nh duyÖt VRML „ Víi ch−¬ng tr×nh kÞch b¶n viÕt import vrml.*; „ • M« ®un ch−¬ng tr×nh tèt b»ng ng«n ng÷ Java t¹o ra mét „ import vrml.field.*; h¬n file class trong tr−êng url cñanót „ import vrml.node.*; • CÊu tróc d÷ liÖu tèt h¬n Script „ T¹o ra c¸c file Java class • file class ®−îc biªn dÞch „ 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 • Kh¶ n¨ng thùc hiÖn nhanh Script h¬n b»ng ch−¬ng tr×nh kÞch public class bounce2 extends Script { . . . } „ • Truy cËp m¹ng b¶n Java • Ph−¬ng thøc tuú chän initialize ®−îc gäi khi script ®−îc t¶i „ DEF Bouncer Script { field • public void initialize ( ) { . . . } „ Víi nh÷ng c«ng viÖc ®¬n gi¶n th× • Qu¸ tr×nh khëi t¹o xÈy ra khi: sö dông JavaScript/VRMLscript SFFloat bounceHeight 3.0 eventIn SFFloat • Nót Script ®−îc t¹o (th−êng khi tr×nh duyÖt n¹p thÕ giíi c¸c vËt thÓ) „ Nh÷ng ch−¬ng tr×nh phøc t¹p th× set_fraction eventOut • Ph−¬ng thøc shutdown ®−îc gäi ®Õn khi script th«i n¹p dïng Java • public void shutdown ( ) { . . . } SFVec3f value_changed url • Shutdown xÈy ra : "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 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Trang 11

Sù kiÖn -event Tr−êng eventout tõ java „ §¸p øng mét sù kiÖn „ Truy nhËp c¸c tr−êng tõ Java „ Truy nhËp tr−êng eventOuts tõ „ VÝ dô Java script • Ph−¬ng thøc „ Mçi tr−êng giao tiÕp cã thÓ ®−îc Java „ T¹o nót interpolator víiqu¶ bãng processEvent ®−îc gäi ®äc vμ viÕt „ Mçi giao tiÕp eventOut cã thÓ ®äc nÈy råi tÝnh träng lùc nh− chuyÓn mçi khi mét sù kiÖn nhËn • Gäi getField ®Ó ®äc vμ ghi ®éng nÈy ngang tõ d÷ liÖu ®Çu ®−îc , chuyÓn mét ®èi tr−êng cña ®èi t−îng • gäi getEventOut ®Ó ®äc vμo lμ thêi gian ph©n ®o¹n t−îng sù kiÖn chøa obj = (SFFloat) getField( tr−êng eventOut cña ®èi „ Nót cÇn: DEF Ball Transform { . „ • Gi¸ trÞ cña sù kiÖn "bounceHeight" ); t−îng . . } DEF Clock TimeSensor { . . • Thêi gian • Gäi getValue ®Ó lÊy gi¸ trÞ „ obj = (SFVec3f) . } DEF Bouncer Script { . . . } „ public void processEvent( cña tr−êng getEventOut( Event event ) { . . . } lastval = obj.getValue( ); "value_changed" ); „ • Gäi setValue ®Æt gi¸ trÞ • Gäi getValue ®äc gi¸ trÞ Xem code vrml cho mét tr−êng cuèi cïng ®−îc göi obj.setValue( newval ); „ lastval = obj.getValue( ); „ Xem code java • Gäi setValue ®Ó göi mét sù kiÖn „ obj.setValue( newval ); (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 goupee.com fb.com/groups/goupee Lê Tấn Hùng CNTT- ĐHBK Hà nội

Hiển thị 11 trang đầu. Tải tài liệu để xem đầy đủ.

Bình luận (0)

Đăng nhập để tham gia bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!