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)
Chưa có bình luận nào. Hãy là người đầu tiên!