Xem mẫu
- 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 {material Material # with a new
Fields – c¸c thuéch tÝnh
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
®è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.
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).
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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.
geometry z Box
Shape
{ 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 : { radius 4 # chiÒu réng lµ 8
d)
• Box height 6
}
• Cone
Xem code Ch¹y vÝ dô bottom TRUE # “cup” cã c¹nh vµ ®¸y
• Cylinder
• 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× Sphere # ®¬n gi¶n nhÊt trong c¸c nót shape
bottom TRUE
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
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Email: hunglt@it-hut.edu.vn
Page 2
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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
nã
Positioned :gèc
• rotation – h−íng Transform { . . .
Rotated :gãc quay
• scale – kÝch cì children [
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
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Email: hunglt@it-hut.edu.vn
Page 3
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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 • emissiveColor – mµu ph¸t chÝnh
• Tr−êng material gåm c¸c
vËt thÓ: thuéc tÝnh nh− color, • transparency – Trong suèt hay kh«ng
transparency, etc. Shape {
• Mµu bãng
Shape {
appearance Appearance {
• Mµu ph¸t ra
material Material {
• TÝnh trong suèt appearance Appearance {
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¶ shininess
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 {
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
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Email: hunglt@it-hut.edu.vn
Page 4
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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
thÓ chuyÓn cho nhau. Tr−êng description ®Æt tªn cho nót Inline { url "table.wrl" }
scale 1.0 1.0 1.0 children [ . . . ] } anchor
ChØ cã mét nót child group is Inline {
trong nhãm lµ ®−îc hiÓn thÞ Nót nhãm Billboard t¹o ra mét nhãm
víi hÖ to¹®é ®Æc biÖt url "table.wrl" } . . .
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 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" 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ô
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
Sau ®ã, sö dông tªn ®Êy ®Ó chia sÎ material mét vµi thÓ hiÖn
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
geometry . . . } miªu t¶ vÒ nót ®Êy
} } geometry . . . }
ChØ cã thÓ cã thÓ hiªn mµ tªn
DEF b¾t buéc ph¶i ký tù hoa
Xem code Ch¹y vÝ dô cña nót ®· ®−îc ®Þnh nghÜa
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
−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
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Email: hunglt@it-hut.edu.vn
Page 5
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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
set_scale
MySender.rotation_changed
Nót PositionInterpolator cã TO MyReceiver.set_rotation • xxx_changed lµ sù kiÖn ra
sù kiÖn ra : ®−îc göi ®i khi tr−êng ®ã thay
Nót Material cã c¸c sù kiÖn vµu: 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
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Email: hunglt@it-hut.edu.vn
Page 6
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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
- 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ø
0.0, . . . ] keyValue [ 0.0 1.0 0.0 key [ 0.0, . . . ] keyValue [ ColorInterpolator { key [ 0.0, . . . ] vËt thÓ nµo)
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 ®ã
• size – kÝch th−íc vïng
• Khi ng−êi dïng va ch¹m víi mét vËt thÓ nµo ®ã
LOD vµ Billboard lµ c¸c nót ®Æc biÖt cã c¸c ®¸p øng víi viewer sensors C¶ 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
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Email: hunglt@it-hut.edu.vn
Page 8
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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 }
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
Nót Collision c¶m biÕn ®−îc khi tÇm Tèi −u ho¸ viÖc ph¸t hiÖn xung ®ét
quan s¸t cña ng−êi dïng v−íng c¸c vËt
Cã 4 nót sensor hµnh ®éng C¶m biÕn c¸c vËt thÓ
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Ó!
®é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 • TouchSensor c¶m biÕn khi
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 C¶m biÕn ®−îc kÝch ho¹t khi
dïng va ch¹m víi mét vËt thÓ chø
• SphereSensor khi kÐo chuét
children – c¸c nót con ®−îc c¶m
kh«ng ph¶i lµ vËt thÓ va ch¹m víi • CylinderSensor khi kÐo khi con trá cña ng−êi dïng
biÕn ng−êi dïng
collideTime – göi thêi gian khi Sö dông nhiÒu nót sensor chuét ch¹m ph¶i vËt thÓ ®−îc c¶m
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 Xem code Ch¹y vÝ dô
Collide.collideTime TO collision sensor hµnh ®éng cã môc ®Ých ®Æc biÖt
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
lªn nhau
Xem code Ch¹y vÝ dô
NÕu nhiÒu nót sensor ®−îc kÝch
s½n
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Ó
thÓ xoay quanh h×nh trô trªn mét mÆt ph¼ng
• isOver – göi gi¸ trÞ true/false xoayquanh h×nh cÇu
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
ë ngoµi vïng vËt thÓ true/false khi chuét ®−îc nhÊn hay th¶
true/false khi con chuét nhÊn hay th¶
• isActive – göi gi¸ trÞ ®−îc nhÊn hay th¶ • translation_changed – lµm
true/false khi chuét ®−îc • rotation_changed – lµm 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
DEF RotateMe Transform { . MoveMe Transform { . . . } ] }
Transform { children [ DEF Transform { children [ DEF
. . } ] } ROUTE ROUTE
Touched TouchSensor { } Rotator SphereSensor { } Mover.translation_changed TO
Shape { . . . } . . . ] } DEF RotateMe Transform { . Rotator.rotation_changed MoveMe.set_translation
TO RotateMe.set_rotation
Xem code Ch¹y vÝ dô . . } ] } ROUTE
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
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Email: hunglt@it-hut.edu.vn
Page 9
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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 :
• §−î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.*;
• CÊu tróc d÷ liÖu tèt h¬n Script T¹o ra c¸c file Java class
C¸c ch−¬ng tr×nh kÞch b¶n ph¶i ®Þnh nghÜa mét líp cã tÝnh public kÕ thõa tõ líp
• Kh¶ n¨ng thùc hiÖn nhanh • file class ®−îc biªn dÞch 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
• 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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 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
lastval = obj.getValue( );
obj.setValue( newval );
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
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Email: hunglt@it-hut.edu.vn
Page 11
CuuDuongThanCong.com https://fb.com/tailieudientucntt
nguon tai.lieu . vn