intTypePromotion=1

Giáo trình đồ họa - Lesson 8

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:0

0
62
lượt xem
9
download

Giáo trình đồ họa - Lesson 8

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo Giáo trình đồ họa - Lesson 8 ngôn ngữ mô hình hóa thực tại ảo

Chủ đề:
Lưu

Nội dung Text: Giáo trình đồ họa - Lesson 8

  1. VRML ? LÞch sö Ng«n ng÷ m« h×nh hãa thùc t¹i ¶o 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 CÊu tróc file VRML TÝnh chÊt 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 cña b¹n B¹n cã thÓ xem c¸c file VRML tõ ®Üa cøng , hay qua m¹ng Internet { geometry Box{ } # default box Nodes – nót chøa c¸c Toµn bé trang Web appearance Appearance # override th«ng tin quan träng cña Nhóng vµo trang Web appearance c¶nh vËt Toµn bé khung cña trang Web {material Material # with a new Fields – c¸c thuéch tÝnh Nhóng vµo khung cña trang Web material cña nót mµ b¹n cã thÓ 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 gi¸ trÞ Mét tr×nh so¹n th¶o v¨n b¶n ®¬n gi¶n } Vµ . . . 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) SE/FIT/HUT 2002 Comments-chó thÝch 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 Lêi chó thÝch b¾t ®Çu víi ký tù # . 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 ®èi t−îng , nh− mµu mµu s¾c vµ hÖ täa ®é cña nã. Chó ý r»ng dßng ®Çu cña VRML 2.0 lµ : 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. Mét c©u lÖnh tr−êng gåm cã tªn tr−êng sau ®ã cã thÓ cã mét hay nhiÒu vµ lµ b¾t buéc ! 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ù th−êng (case sensitive). dïng trong file. VÝ dụ về nót Lêi chó thÝch vµ kho¶ng tr¾ng cã thÓ kh«ng ®−îc b¶o toµn Shape, Box, Appearance, Material,lights, sounds, . bëi VRML document server. (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 1
  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 Shape chøa c¸c nót kh¸c ®−îc coi nh− gi¸ trÞ cña chóng. Box geometry Shape Appearance appearance { appearance NULL exposedField SFNode geometry NULL exposedField SFNode Material material } diffuseColor §«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!) 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, { radius 4 # chiÒu réng lµ 8 Shape gèc lµ c¸c khèi chuÈn : d) • Box height 6 } • Cone bottom TRUE # “cup” cã c¹nh vµ ®¸y Xem code Ch¹y vÝ dô • Cylinder side TRUE • Sphere Cone top FALSE # nh−ng kh«ng cã ®Ønh • Text { bottomRadius 5 # so 10 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 Sphere # ®¬n gi¶n nhÊt trong c¸c nót shape nh−ng cã thÓ bÊt cø ®¬n vÞ g× bottom TRUE { radius 2 # nh−ng còng lµ phøc t¹p Xem code Ch¹y vÝ dô } 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 ®−îc nhiÒu thêi gian xö lý... Text rất hữu Ých ë c¸c hÖ chuyªn gia,vÝ dô nh− trong khoa häc vÒ trùc quan. Tuy vËy viÖc sö dông réng r·i ¶nh bitmap cã thÓ cã nh÷ng bÊt lîi sau: Text { 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 2
  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 Mét file thµnh ®−îc x©y dùng trong thÕ giíi hÖ to¹ ®é { url “skin.gif” # GIF, JPG or PNG 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. Mét vßng quay lµ 2π radian. Cã ba kiÓu nót texture lµ : ImageTexture, MovieTexture and PixelTexture 360 lµ 2π radian, kho¶ng 6.28 radian, Xem code Ch¹y vÝ dô 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 Nhãm c¸c nót Transform t¹o ra Mét nót transform t¹o ra mét hÖ to¹ Tr−êng children bao gåm mét danh s¸ch mét hay nhiÒu nót mét nhãm víi hª to¹ ®é cña chÝnh ®é cã: nã Positioned :gèc Transform { . . . • rotation – h−íng 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 Co gi·n , xoay vµ dÞch mét hÖ to¹ ®é, c¸i nµy sau c¸i kia Tr−êng Translation ®Þnh vÞ hÖ to¹ Tr−êng Rotation ®Þnh h−íng hÖ to¹ ®é ®é bëi X,Y vµ Z quay quoanh mét c¹nh bëi mét gãc Transform { quay translation 2.0 0.0 0.0 Transform { # X Y Z 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 • radian = ®é/ 180.0 * 3.141 children [ . . . ] } Tr−êng Scale ®Ó co hay gi¶n mét 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 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 children [ . . . ] } 0.5 0.5 children [ . . . ] } Xem code Ch¹y vÝ dô (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 3
  4. nót Appearance 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Ó 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 ngoµi lµ mµu tr¾ng • diffuseColor – mµu bãng chÝnh bé h×nh d¹ng cña vËt thÓ • emissiveColor – mµu ph¸t chÝnh B¹n cã thÓ ®iÒu khiÓn mµu cña mét • Tr−êng material gåm c¸c • transparency – Trong suèt hay kh«ng vËt thÓ: thuéc tÝnh nh− color, Shape { transparency, etc. • Mµu bãng appearance Appearance { Shape { • Mµu ph¸t ra material Material { appearance Appearance { • TÝnh trong suèt diffuseColor 0.8 0.8 0.8 material . . . } • TÝnh kh«ng chiÕu s¸ng emissiveColor 0.0 0.0 0.0 geometry . . . } • C−êng ®é ¸nh s¸ng bao 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 M« t¶ shininess • specularColor – ®iÓm cã mµu næi bËt nhÊt Intensity Color Color • 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 { Metalic Purple 0.17 0.10 0.03 0.22 0.64 0.00 0.98 0.20 specularColor 0.71 0.70 0.56 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 KÕt nèi tíi mét vÞ trÝ kh¸c nót Group 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 4
  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 { URL KÝch chuét vµo nót child theo sau 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 [ . . . ] } anchor Inline { ChØ cã mét nót child group is 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 Anchor { Transform { • Mçi nót child ®−îc hiÓn thÞ • Nót con ®−îc ®¸nh sè t−êng url "stairwy.wrl" displayed translation -0.95 0.0 0.0 minh tõ 0 • HÖ to¹ ®é trë l¹i mÆt xem description "Twisty Stairs" rotation 0.0 1.0 0.0 3.14 • A -1 kh«ng chän nót con nµo 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ô } children [ . . . ] } Xem code Chaþ vÝ dô (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 { appearance Appearance { Mét nót ®· ®−îc ®Æt tªn cã thÓ cã cho nót t×m thÊy ®Çu tiªn material mét vµi thÓ hiÖn material 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 Material { diffuseColor 1.0 0.0 0.0 míi miªu t¶ vÒ nót ®Êy geometry . . . } } } geometry . . . } ChØ cã thÓ cã thÓ hiªn mµ tªn DEF b¾t buéc ph¶i ký tù hoa cña nót ®· ®−îc ®Þnh nghÜa Xem code Ch¹y vÝ dô Cã thÓ ®Æt tªn cho mét nót nµo ®Êy 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 Giíi thiÖu ho¹t c¶nh −u ®iÓm C¸c nót nh− Billboard vµ Anchor cã c¸c hµnh ®éng x©y dùng s½n §Æt tªn vµ sö dông nót: 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ã L−u nh÷ng g× ®· ®¸nh vµo 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 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 Cho phÐp thay ®æi nhanh chãng c¸c vËt thÓ cã cïng thuéc tÝnh 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 ... Nót ho¹t ®éng nh− c¸c phÇn ®iÖn tö ¶o Tªn còng cÇn thiÕt cho c¶nh ®éng 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 5
  6. Thªm c¸c sù kiÖn Cµi ®Æt ho¹t c¶nh §Ó cµi ®Æt mét dßng ho¹t c¶nh , b¹n cÇn ba thø : §Ó quay mét vËt thÓ: Mét nót göi sù kiÖn • Nèi mét nót mµ göi sù kiÖn rotation víi tr−êng rotation cña nót Nót ph¶i ®−îc ®Æt tªn víi c©u lÖnh DEF Transform Mét nót nhËn sù kiÖn §Ó lµm mét vËt thÓ nhÊp nh¸y: Nót ph¶i ®−îc ®Æt tªn víi c©u lÖnh DEF • Nèi nót göi sù kiÖn color víii tr−êng diffuseColor cña nót Mét ®−êng d©y kÕt nèichóng l¹i Material 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 C©u lÖnh ROUTE cho phÐp kÕt nèi Nót OrientationInterpolator Nót Transform cã c¸c sù kiÖn C¸c quy −íc vÒ ®Æt tªn hai nót l¹i víi nhau : HÇu hÕt c¸c nót ®Òu cã exposedFields vµo: cã sù kiÖn ra : Tªn nót göi vµ sù kiÖn ra NÕu tr−êng exposed tªn lµ xxx, th×: set_translation value_changed ®−a ra gi¸ trÞ 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 MySender.rotation_changed set_scale Nót PositionInterpolator cã • xxx_changed lµ sù kiÖn ra TO MyReceiver.set_rotation ®−îc göi ®i khi tr−êng ®ã thay sù kiÖn ra : Material cã c¸c sù kiÖn vµu: Nót ROUTE vµ TO b¾t buéc ph¶i lµ ®æi value_changed ®−a ra vÞ trÝ ký tù hoa set_diffuseColor • C¸c tiÕp ng÷ set_ vµ _changed lµ tuú chän nh−ng nªn cã ®Ó Nót TimeSensor cã sù kiÖn ra: set_emissiveColor ph©n biÖt set_transparency time ®−a ra thêi gian 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 n¨m 1970! • Møc ®é nhanh chËm • RÊt cã Ých cho viÖc triÖu gäi mét sù kiÖn ë thêi gian cô thÓ (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 6
  7. sö dông thêi gian ph©n ®o¹n Nót timesensor Nót TimeSensor t¹o ra c¸c sù kiÖn §Ó t¹o ra bé thêi gian ch¹y liªn tôc: Sù kiÖn thêi gian ph©n ®o¹n nhËn c¸c gi¸ trÞ sè tõ 0.0 tíi 1.0 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
  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¸ • keyValue – kho¸ mµu • keyValue – kho¸ v« (gåm c¹nh vµ gãc) vÞ trÝ (hoÆc tû lÖ) (®á,xanh d−¬ng,xanh da trêi) h−íng (dïng cho bÊt cø OrientationInterpolator { key [ • PositionInterpolator { vËt thÓ nµo) ColorInterpolator { key [ 0.0, . . . ] 0.0, . . . ] keyValue [ 0.0 1.0 0.0 key [ 0.0, . . . ] keyValue [ 0.0, . . . ] } 0.0 0.0 0.0, . . . ] } keyValue [ 1.0 1.0 0.0, . . . ] } ScalarInterpolator { key [ 0.0, . . . ] keyValue [ 4.5, . . . ] } 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 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 Dïng visibilitysensor vµ proximitysensor nót Sensor viewer 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 ®ã • size – kÝch th−íc vïng • Khi ng−êi dïng va ch¹m víi mét vËt thÓ nµo ®ã C¶ hai nót cã ®Çu ra gièng nhau : 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 • 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 • Sù kiÖn isActive – göi true ë vïng vµo, false ë vïng ra • Nót ProximitySensor c¶m biÕn khi ng−êi dïng ®Õn ph¹m vi xung quanh vËt thÓ • Nót Collision c¶m biÕn xung ®ét gióp ®iÒu khiÓn vµ ph¸t hiÖn xung ®ét (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 8
  9. nót ProximitySensor Nót VisibilitySensor Nót ProximitySensor c¶m biÕn khi ng−êi dïng vµo/ rêi khái mét vïng nµo ®ã Nót VisibilitySensor c¶m biÕn nÕu ng−êi dïng nh×n thÊy hoÆc ngõng • center vµ size – kÝch th−íc vµ vÞ trÝ cña vïng quan s¸t mét vïng nµo ®ã • 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 } ROUTE ProxSense.enterTime TO Clock.set_startTime • isActive –göi gi¸ trÞ true/false vµo vïng vµo\vïng ra 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 Tèi −u ho¸ viÖc ph¸t hiÖn xung ®ét Nót Collision c¶m biÕn ®−îc khi tÇm C¶m biÕn c¸c vËt thÓ Cã 4 nót sensor hµnh ®éng 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 chÝnh: thÓ theo ngÇm ®Þ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Ó! ®éng c¶m biÕn ®−îc tÊt c¶ • TouchSensor c¶m biÕn khi phÐp c¶m biÕn Tuy nhiªn, mét khi nót collision cha c¸c vËt thÓ cïng nhãm t¾t th× nót child kh«ng thÓ bËt nã trë ch¹m vµo vËt thÓ proxy – vËt thÓ ®¬n gi¶n ®−îc l¹i! c¶m biÕn thay cho c¸c nót con C¶m biÕn ®−îc kÝch ho¹t khi KÕt qu¶ ph¸t hiÖn xung ®ét lµ tõ ng−êi • SphereSensor khi kÐo chuét dïng va ch¹m víi mét vËt thÓ chø children – c¸c nót con ®−îc c¶m khi con trá cña ng−êi dïng kh«ng ph¶i lµ vËt thÓ va ch¹m víi • CylinderSensor khi kÐo biÕn ng−êi dïng ch¹m ph¶i vËt thÓ ®−îc c¶m collideTime – göi thêi gian khi chuét Sö dông nhiÒu nót sensor biÕn ng−êi dïng ch¹m vµo vËt thÓ Mét sè nót sensor cã thÓ c¶m biÕn • PlaneSensor khi kÐo chuét cïng mét lóc DEF Collide Collision { collide TRUE B¹n cã thÓ t¹o ra nhiÒu proxy Shape { geometry Box { . . . } } Nót Anchor lµ nót c¶m biÕn nótvisibility, proximity, and Xem code Ch¹y vÝ dô children [ . . . ] } ROUTE hµnh ®éng cã môc ®Ých ®Æc biÖt collision sensor Collide.collideTime TO mµ c¸c ®¸p øng ®−îc x©y dùng C¸c vïng c¶m biÕn cã thÓ ch«ng OuchSound.set_startTime lªn nhau s½n Xem code Ch¹y vÝ dô 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 PlaneSensor nhËn biÕt con trá Nót CylinderSensor nhËn biÕt Nót TouchSensor c¶m biÕn sù va Nót SphereSensor c¶m biÕn sù ®−îc rª vµ lµm dÞch chuyÓn vËt thÓ con trá ®−îc rª vµ lµm cho vËt ch¹m cña con trá dich chuyÓn con trá t¹o ra sù trªn mét mÆt ph¼ng thÓ xoay quanh h×nh trô • isOver – göi gi¸ trÞ true/false xoayquanh h×nh cÇu • isActive – göi c¸c gi¸ trÞ • isActive – göi gi¸ trÞ khi con trá ®ang ë trong hay • 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Ó nhÊn hay th¶ true/false khi con chuét nhÊn hay th¶ • isActive – göi gi¸ trÞ • 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 • rotation_changed - ®−a cho vËt thÓ quay khi kÐo rª chuét nhÊn hay th¶ ra sù quay khi rª con Transform { children [ DEF Transform { children [ DEF • touchTime –®−a ra thêi gian chuét Mover PlaneSensor { } DEF Rotator CylinderSensor { } khi chuét ®−îc th¶ MoveMe Transform { . . . } ] } DEF RotateMe Transform { . Transform { children [ DEF Transform { children [ DEF ROUTE . . } ] } ROUTE Rotator SphereSensor { } Touched TouchSensor { } Mover.translation_changed TO Rotator.rotation_changed Shape { . . . } . . . ] } DEF RotateMe Transform { . MoveMe.set_translation TO RotateMe.set_rotation . . } ] } ROUTE Xem code Ch¹y vÝ dô Xem code Ch¹y vÝ dô Rotator.rotation_changed Xem code Ch¹y vÝ dô TO RotateMe.set_rotation (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 9
  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 §Þnh nghÜa giao tiÕp c¸c Nót Script chän mét ch−¬ng tr×nh ch−¬ng tr×nh kÞch b¶n øng kÞch b¶n ®Ó ch¹y: • TÝnh to¸n ®−êng ®i (vÝ dô lùc hÊp dÉn) dông • Gi¶i thuËt vÒ vËt thÓ (eg. fractals) url – chän ch−¬ng tr×nh kÞch b¶n Nót Script còng khai b¸o giao • C¸c m«i tr−êng cÇn sù c«ng t¸c (vÝ dô game) tiÕp ch−¬ng tr×nh kÞch b¶n 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 { c¸c ch−¬ng tr×nh kÞch b¶n viÕt b»ng c¸c ng«n ngö • field, eventIn, vµ url "bouncer.class" or... eventOut – lµ c¸c thao • Java – ng«n ngö lËp tr×nh rÊt m¹nh url "bouncer.js" or... t¸c xuÊt nhËp • JavaScript – ng«n ngö kÞch b¶n dÔ häc url "javascript: ..." or... • Mçi c¸i cã mét tªn vµ kiÓu • VRMLscript – gièng JavaScript url "vrmlscript: ..." } d÷ liÖu Ng«n ng÷ VRML kh«ng b¾t buéc ph¶i hç trî c¸c ng«n ng÷ kÞch b¶n • C¸c tr−êng cã mét gi¸ trÞ • HÇu hÕt c¸c tr×nh duyªt ®Òu hâ trî JavaScript vµ Xem code Ch¹y vÝ dô khëi ®Çu • NhiÒu tr×nh duyªt hç trî Java DEF Bouncer Script { field VRMLScript = JavaScript = ECMAScript SFFloat bounceHeight 3.0 • JavaScript kh«ng gièng Java eventIn SFFloat set_fraction • VRMLScript lµ phÇn mÒm cña Cosmo Software hç trî JavaScript eventOut SFVec3f • C¸c ®Æc t¶ kü thuËt cña ISO VRML gäi lµ ECMAScript, phiªn b¶n cã hç value_changed } tr¬ JavaScript (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Java Java class NhËp c¸c package cho líp Java Khai b¸o giao tiÕp ch−¬ng So víi c¸c ng«n ng÷ nh− File cña ch−¬ng tr×nh kÞch b¶nph¶i import c¸c package cña VRML : tr×nh kÞch b¶n JavaScript/VRMLscript, Java cã • §−îc cung cÊp c¸c c«ng ty ph©n phèi tr×nh duyÖt VRML kh¶ n¨ng: 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.*; Script T¹o ra c¸c file Java class • CÊu tróc d÷ liÖu tèt h¬n 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 • file class ®−îc biªn dÞch • Kh¶ n¨ng thùc hiÖn nhanh Script b»ng ch−¬ng tr×nh kÞch h¬n public class bounce2 extends Script { . . . } b¶n Java • Ph−¬ng thøc tuú chän initialize ®−îc gäi khi script ®−îc t¶i • Truy cËp m¹ng • public void initialize ( ) { . . . } DEF Bouncer Script { field Víi nh÷ng c«ng viÖc ®¬n gi¶n th× • Qu¸ tr×nh khëi t¹o xÈy ra khi: SFFloat bounceHeight 3.0 sö dông JavaScript/VRMLscript • Nót Script ®−îc t¹o (th−êng khi tr×nh duyÖt n¹p thÕ giíi c¸c vËt thÓ) eventIn SFFloat • Ph−¬ng thøc shutdown ®−îc gäi ®Õn khi script th«i n¹p Nh÷ng ch−¬ng tr×nh phøc t¹p th× set_fraction eventOut • public void shutdown ( ) { . . . } dïng Java 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 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 10
  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 VÝ dô Java script Truy nhËp tr−êng eventOuts tõ Java • Ph−¬ng thøc Mçi tr−êng giao tiÕp cã thÓ ®−îc 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 vµ ghi ®éng nÈy ngang tõ d÷ liÖu ®Çu • Gäi getField ®Ó ®äc ®−îc , chuyÓn mét ®èi vµo lµ thêi gian ph©n ®o¹n tr−êng cña ®èi t−îng • gäi getEventOut ®Ó ®äc t−îng sù kiÖn chøa tr−êng eventOut cña ®èi Nót cÇn: DEF Ball Transform { . obj = (SFFloat) getField( • Gi¸ trÞ cña sù kiÖn t−îng . . } DEF Clock TimeSensor { . . "bounceHeight" ); . } DEF Bouncer Script { . . . } • Thêi gian obj = (SFVec3f) • Gäi getValue ®Ó lÊy gi¸ trÞ getEventOut( public void processEvent( cña tr−êng "value_changed" ); Event event ) { . . . } lastval = obj.getValue( ); • Gäi getValue ®äc gi¸ trÞ • Gäi setValue ®Æt gi¸ trÞ cuèi cïng ®−îc göi Xem code vrml cho mét tr−êng lastval = obj.getValue( ); obj.setValue( newval ); • Gäi setValue ®Ó göi mét Xem code java sù kiÖn obj.setValue( newval ); (c) SE/FIT/HUT 2002 (c) SE/FIT/HUT 2002 Lê Tấn Hùng CNTT- ĐHBK Hà nội Email: hunglt@it-hut.edu.vn Page 11
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2