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