Bài giảng Đồ họa hiện thực ảo - Bài 8: Ngôn ngữ mô hình hóa thực tại ảo VRML - Lê Tấn Hùng
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
# example1.wrl - a yellow box
Mét øng dông hç trî VRML
§Çu ®Ò cña file
Mét øng dông VRML nhóng
B¹n cã thÓ xem c¸c file VRML t
eometry
Box{ } # default box
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
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
ance Appearance
appearance
# override
{material Material
material
# with a new
{diffuseColor 1.0 1.0 0.0
yellow
#
B¹n cã thÓ t¹o c¸c file VRML nhê :
Values – c¸c thuéc tÝnh
gi¸ trÞ
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 )
}
}
Vµ . . .
}
(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
h 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ã.
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).
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.
VÝ dụ về nót
Lêi chó thÝch vµ kho¶ng tr¾ng cã thÓ kh«ng ®−îc b¶o toµn
bëi VRML document server.
Shape, Box, Appearance, Material,lights, sounds, .
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội
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
chøa c¸c nót kh¸c ®−îc coi nh− gi¸ trÞ cña chóng.
Shape
z Shape
z Box
geometry
appearance
z Appearance
{
appearance
geometry
NULL exposedField
NULL exposedField
SFNode
SFNode
material
z 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
c¸c líp phøc t¹p.
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 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
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¸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
(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
t¹o nªn thÕ giíi VRML C¸c nót
Shape gèc lµ c¸c khèi chuÈn :
Box
Cylinder
{size 8 12 10
# x, y, z (=w, h,
{
radius
4
# chiÒu réng lµ 8
•
•
•
•
•
Box
Cone
Cylinder
Sphere
Text
cã c¹nh vµ ®¸y
Cone
side
top
TRUE
FALSE # nh−ng kh«ng cã ®Ønh
{
bottomRadius
5
# so 10
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×
}
units wide
height
12
TRUE
TRUE
Xem code
Ch¹y vÝ dô
side
Sphere
# ®¬n gi¶n nhÊt trong c¸c nót shape
# nh−ng còng lµ phøc t¹p
Ch¹y vÝ dô
bottom
{
}
radius
2
Xem code
Ch¹y vÝ dô
Xem code
}
(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
length
“Hi!”
0
# multi-field
# stretch to this width (0=natural width)
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.
fontStyle
{ family“SERIF”
style
size
}
FontStyle
# or SANS or TYPEWRITER
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.
“PLAIN”
4
# or BOLD ITALIC
}
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
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
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.
{
texture ImageTexture
{
url
“skin.gif”
# GIF, JPG or PNG
repeatSTRUE
repeatTTRUE
# repeat or stretch?
}
}
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
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.
Xem code
Ch¹y vÝ dô
(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 nhãm víi hª to¹ ®é cña chÝnh
Mét nót transform t¹o ra mét hÖ to¹
®é cã:
Tr−êng children bao gåm mét danh s¸ch mét hay nhiÒu nót
Positioned :gèc
Rotated :gãc quay
Scaled :tû lÖ
• translation – vÞ trÝ
• children – c¸c vËt thË t¹o
Shape { . . . }
Shape { . . . }
Transform { . . . } . . . ] }
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ã.
Transform {
translation . . .
rotation . . .
scale . . .
children [ . . . ] }
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Nót transform
Nót transform
é, 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
Tr−êng Translation ®Þnh vÞ hÖ to¹
®é bëi X,Y vµ Z
Tr−êng Rotation ®nh h−íng hÖ to¹ ®é
quay quoanh mét c¹nh bëi mét gãc
quay
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
• Gãc th−êng ®−îc ®u b»ng ®¬n
vÞ radian
•
radian = ®é/ 180.0 * 3.141
children [ . . . ] }
C¸c thao t¸c ®−îc thùc hiÖn tõ d−íi lªn bottom-up:
Transform { # X Y Z Angle
rotation 0.0 0.0 1.0 0.52
children [ . . . ] }
Tr−êng children ®−îc co gi·n ,xoay råi sau ®ã míi dÞch
Transform { # X Y Z scale 0.5
0.5 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
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
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Ó
• 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 }
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
bé h×nh d¹ng cña vËt thÓ
B¹n cã thÓ ®iÒu khiÓn mµu cña mét
• Tr−êng material gåm c¸c
thuéc tÝnh nh− color,
transparency, etc.
vËt thÓ:
• Mµu bãng
Shape {
• Mµu ph¸t ra
appearance Appearance {
material . . . }
• TÝnh trong suèt
• TÝnh kh«ng chiÕu s¸ng
geometry . . . }
• C−êng ®é ¸nh s¸ng bao
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
or
specular
Color
¶
shininess
• specularColor – ®i
• shininess – kÝch cë
• ambientIntensity –
0.50
0.70 0.70 0.80
0.10
Shape {
appearance Appearance {
material Material {
Copper
0.26
0.40
0.17
0.15
0.10
0.30 0.11 0.00
0.22 0.15 0.00
0.10 0.03 0.22
0.27 0.00 0.00
0.20 0.20 0.71
0.75 0.33 0.00
0.71 0.70 0.56
0.64 0.00 0.98
0.61 0.13 0.18
0.83 0.83 0.83
0.08
0.16
0.20
0.20
0.12
Gold
Metalic Purple
Metalic Red
Plastic Blue
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
(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
®èi t−îng l¹i víi nhau. VRML dïng nót
Group ®Ó thùc hiÖn ®iÒu nµy
B¹n cã thÓ nhãm c¸c vËt thÓ l¹víi
nhau ®Ó t¹o thµnh mét vËt thÓ phøc
t¹p .
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 .
Nót Group cã thÓ cã c¸c nót con.
VRML cã nhiÒu nót group bao gåm
Group { . . . }
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.
Cã thÓ chÝnh c¸c nót con lµ c¸c nót
group .
Switch { . . . }
Cã c¸c kiÓu nót group sau:
Transform { . . . }
Billboard { . . . }
Transform
Group
Inline
LOD
Anchor { . . . }
Anchor
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
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
hiÓn thÞ
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 [ . . . ] }
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
Nót con ®äc tõ file ®−îc chän bëi
URL
Group { children [ . . . ] }
Mçi nót child lµ ®−îc hiÓn thÞ
Inline { url "table.wrl" }
Nót nhãm Switch t¹o ra mét nhãm cã
thÓ chuyÓn cho nhau.
Inline {
ChØ cã mét nót child group is
trong nhãm lµ ®−îc hiÓn thÞ
Nót nhãm Billboard t¹o ra mét nhãm
url "table.wrl" } . . .
Transform {
víi hÖ to¹®é ®Æc biÖt
B¹n chän nót child nµo
Anchor {
• Mçi nót child ®−îc hiÓn thÞ
displayed
• HÖ to¹ ®é trë l¹i mÆt xem
• Nót con ®−îc ®¸nh sè t−êng
minh tõ 0
• A -1 kh«ng chän nót con nµo
url "stairwy.wrl"
description "Twisty Stairs"
children [ . . . ] }
translation -0.95 0.0 0.0
rotation 0.0 1.0 0.0 3.14
children [ Inline { url "chair.wrl" } ] }
Billboard {
Switch { whichChoice 0 choice [ . . . ]
axisOfRotation 0.0 1.0 0.0
children [ . . . ] }
Xem code
Ch¹y vÝ dô
Xem code
Ch¹y vÝ dô
}
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
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
Thay vµo ®ã , ®Þnh nghÜa mét t
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
Tõ kho¸ USE cho phÐp sö dông
mét nót ®· ®−îc ®Æt tªn tr−íc
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
nót
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è
material
USE RedColor }
geometry . . . }
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
Xem code
Ch¹y vÝ dô
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 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
dïng vµ thÕ giíi bªn ngoµi
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
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
Tªn còng cÇn thiÕt cho c¶nh ®éng...
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
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ø :
Mét nót göi 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ó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
• Nèi nót göi sù kiÖn color víii tr−êng diffuseColor cña nót
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
C©u lÖnh ROUTE cho phÐp kÕt nèi
C¸c quy −íc vÒ ®Æt tªn
HÇu hÕt c¸c nót ®Òu cã exposedFields
Nót OrientationInterpolator
Nót Transform cã c¸c sù kiÖn
hai nót l¹i víi nhau :
vµo:
cã sù kiÖn ra :
NÕu tr−êng exposed tªn lµ xxx, th×:
set_scale
value_changed ®−a ra g
gãc xoay
• set_xxx lµ mét sù kiÖn vµo
®−îc g¸n cho tr−êng
MySender.rotation_changed
• 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 PositionInterpolator cã
TO MyReceiver.set_rotation
sù kiÖn ra :
Nót Material cã c¸c sù kiÖn vµu:
ROUTE vµ TO b¾t buéc ph¶i lµ
value_changed ®−a ra vÞ trÝ
Nót TimeSensor cã sù kiÖn ra:
time ®−a ra thêi gian
ký tù hoa
set_diffuseColor
set_emissiveColor
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 ®æqua thêi gian:
• VÞ trÝ – mét « t« ®ang ®i
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
• H−íng - mét m¸y bay ®ang l−în
• Mµu s¾c – ®æi mïa
§Ó 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
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
• 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Ó
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội
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µ
thêi gian kÕt thóc_ stopTime khi
ch¹y
stopTime <= startTime
KÕt thóc mét chu kú_ cycle, ®Çu ra cña nã lµ 1.0
Khi stop time <= start time,th× stop
time bÞ bá qua
Sè gi©y gi÷a 0.0 vµ 1.0 ®−îc x¸c ®Þnh bëi xung tuÇn hoµn_ cycle
Thêi gian tuÇn
interval
Ch¹y cho tíi khi stop time:
hoµn_cycleInterval thêi gian cho
loop TRUE
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
mét chu kú lµ bao l©u
stopTime > startTime
LÆp_loop – cã lÆp l¹i hay kh«ng
§Ó ch¹y mét vßng råi sau ®ã dõng:
TimeSensor {
cycleInterval 1.0
loop FALSE
startTime 0.0
stopTime 0.0 }
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
(c) SE/FIT/HUT 2002
Tr−êng ra d÷ liÖu
ChuyÓn ®æi thêi gian ra to¹ ®é
§Ó kÝch ho¹t vÞ trÝ cña mét vËt thÓ
Interpolating positions
Mçi kho¸ vÞ trÝ cïng víi ®−êng
dÉn cã:
Tr−êng ra d÷ liÖu isActive :
VRML cung cÊp:
Ra d÷ liÖu lµ TRUE khi bé thêi gian b¾t
• Thêi gian b¾t ®Çu ë mçi vÞ
trÝ
®Çu
Mét kho¸ gi¸ trÞ key value
(nh− lµ mét vÞ trÝ)
Ra d÷ liÖu lµ FALSE kh
kÕt thóc
Mét kho¸ thêi gian ph©n ®o¹n
Tr−êng ra d÷ liÖu time :
§−a ra thêi gian tuyÖt ®èi
PhÐp néi suy sÏ ®iÒn vµu c¸c gi¸
trÞ vµu gi÷a c¸c gi¸ trÞ kho¸:
Nót interpolator cã thÓ chuyÓn ®æi
mét ®Çu vµu thêi gian thµnh mét
®Çu ra to¹ ®é
Fractional TimePosition
0
0.1
..
1
Tr−êng ra d÷ liÖu fraction_changed :
• Khi thêi gian ë gi÷a hai
kho¸ vÞ trÝ, nót interpolator
sÏ tÝnh to¸n vÞ trÝ trung gian
§−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
(c) SE/FIT/HUT 2002
Nót positioninterpolator
Sö dông c¸c nót interpolator kh¸c
Nót PositionInterpolator mªu
t¶ vÞ trÝ cña ®−êng dÉn
Sù kiÖn ®Çu vµo set_fraction :
KÝch ho¹t vÞ trÝ
KÝch ho¹t h−íng
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
PositionInterpolator
OrientationInterpolator
• §Æt thêi gian ph©n ®o¹n
hiÖn thêi theo kho¸ ®−êng
dÉn
• key – kho¸ thêi gian ph©n
®o¹n
• keyValue – kho¸ vÞ trÝ
Sù kiÖn ®Çu ra value_changed :
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
• §−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
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội
Colorinterpolator-scalarinterpotator
OrientationInterpolator
PositionInterpolator
ColorInterpolator
ScalarInterpolator
Nót ScalarInterpolator m« t¶
®−êng dÉn v« h−íng
Nót OrientationInterpolator m«
Nót PositionInterpolator m« t¶
Nót ColorInterpolator m« t¶ ®−êng
t¶ ®−êng dÉn h−íng
®−êng dÉn vÞ trÝ hay tû lÖ
dÉn mµu s¾c
• 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«
h−íng (dïng cho bÊt cø
vËt thÓ nµo)
(gåm c¹nh vµ gãc)
vÞ trÝ (hoÆc tû lÖ)
(®á,xanh d−¬ng,xanh da trêi)
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 {
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
ColorInterpolator { key [ 0.0, . . . ]
keyValue [ 1.0 1.0 0.0, . . . ] }
ScalarInterpolator { key [ 0.0, . .
. ] keyValue [ 4.5, . . . ] }
Th−êng göi vµu sù kiÖn ®Çu vµo
set_diffuseColor hay
set_emissiveColor cña nót
Material
Th−êng göi vµo sù kiÖn
set_transparency cña nót
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
kiÖn kÝch chuét
i gian
Nót sensor dß c¸c hµn
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¶.
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Ó.
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.
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
(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
• 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 ®ã
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 :
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
• Sù kiÖn exitTime – göi thêi gian vµo vïng ra hay lóc kh«ng h÷u
h×nh
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
• 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
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
isActive – göi gi¸ trÞ true/false nÕu vµo vïng vµo/ vïng ra
• 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 ProxSense ProximitySensor { center 0.0 0.0 0.0 size 14.0 14.0 14.0 }
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
} ROUTE VisSense.enterTime TO Clock.set_startTime
• 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
(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
Sù kiÖn collision lu«n ®−îc kÝch ho¹t
theo ngÇm ®Þnh
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Ó
Cã 4 nót sensor hµnh ®éng
chÝnh:
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
collide – cho phÐp/kh«ng c
phÐp c¶m biÕn
proxy – vËt thÓ ®¬n gi¶n ®−
c¶m biÕn thay cho c¸c nót con
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
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
• SphereSensor khi kÐo chuét
• CylinderSensor khi kÐo
chuét
children – c¸c nót con ®−îc c¶m
biÕn
collideTime – göi thêi gian khi
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
ng−êi dïng ch¹m vµo vËt thÓ
• PlaneSensor khi kÐo chuét
DEF Collide Collision { collide TRUE
proxy Shape { geometry Box { . . . } }
children [ . . . ] } ROUTE
Collide.collideTime TO
OuchSound.set_startTime
B¹n cã thÓ t¹o ra nhiÒu
nótvisibility, proximity, and
collision sensor
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
Xem code
Ch¹y vÝ dô
C¸c vïng c¶m biÕn cã thÓ ch«ng
lªn nhau
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á
®−îc rª vµ lµm dÞch chuyÓn vËt thÓ
trªn mét mÆt ph¼ng
Nót TouchSensor c¶m biÕn s
con trá ®−îc rª vµ lµm cho vËt
thÓ xoay quanh h×nh trô
SphereSensor
dich chuyÓn con trá t¹o ra sù
xoayquanh h×nh cÇu
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¶
•
isActive – göi c¸c gi¸ trÞ
true/false khi chuét ®−îc
nhÊn hay th¶
• isActive – göi gi¸ trÞ
true/false khi chuét ®−îc
nhÊn hay th¶
• 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
•
translation_changed – lµm
cho vËt thÓ dÞch chuyÓn khi
rª chuét
• rotation_changed – lµm
cho vËt thÓ quay khi kÐo
Transform { children [ DEF
Mover PlaneSensor { } DEF
MoveMe Transform { . . . } ] }
ROUTE
Transform { children [ DEF
Rotator CylinderSensor { }
DEF RotateMe Transform { .
. . } ] } ROUTE
touchTime –®−a ra thêi gian
khi chuét ®−îc th¶
Transform { children [ DEF
Rotator SphereSensor { }
DEF RotateMe Transform { .
. . } ] } ROUTE
Transform { children [ DEF
Touched TouchSensor { }
Shape { . . . } . . . ] }
Mover.translation_changed TO
MoveMe.set_translation
Rotator.rotation_changed
TO RotateMe.set_rotation
Xem code
Ch¹y vÝ dô
Xem code
Ch¹y vÝ dô
Xem code
Ch¹y vÝ dô
Rotator.rotation_changed
TO RotateMe.set_rotation
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Lê Tấn Hùng CNTT- ĐHBK Hà nội
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 }
# 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
•
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
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
ch−¬ng tr×nh kÞch b¶n øng
dông
kÞch b¶n ®Ó ch¹y:
•
•
•
TÝnh to¸n ®−êng ®i (vÝ dô lùc hÊp dÉn)
Gi¶i thuËt vÒ vËt thÓ (e
C¸c m«i tr−êng cÇn sù
Nót Script còng khai b¸o giao
tiÕp ch−¬ng tr×nh kÞch b¶n
B¹n cã thÓ t¹o ra c¸c nót sens
c¸c ch−¬ng tr×nh kÞch b¶n viÕt b»ng c¸c ng«n ngö
• 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
url "bouncer.class" or...
url "bouncer.js" or...
url "javascript: ..." or...
url "vrmlscript: ..." }
•
•
•
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
• C¸c tr−êng cã mét gi¸ trÞ
khëi ®Çu
Xem code
Ch¹y vÝ dô
VRMLScript = JavaScript = ECMAScript
DEF Bouncer Script { field
SFFloat bounceHeight 3.0
eventIn SFFloat set_fraction
eventOut SFVec3f
•
•
•
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
value_changed }
(c) SE/FIT/HUT 2002
(c) SE/FIT/HUT 2002
Java
Java class
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
So víi c¸c ng«n ng÷ nh−
JavaScript/VRMLscript, Java cã
kh¶ n¨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
import vrml.*;
• 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
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
• file class ®−îc biªn dÞch
b»ng ch−¬ng tr×nh kÞch
b¶n Java
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:
• Truy cËp m¹ng
DEF Bouncer Script { field
SFFloat bounceHeight 3.0
eventIn SFFloat
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
•
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 :
set_fraction eventOut
SFVec3f value_changed url
"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
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
Mçi tr−êng giao tiÕp cã thÓ ®−îc
®äc vµ viÕt
Truy nhËp tr−êng eventOuts tõ
VÝ dô Java script
Java
• Ph−¬ng thøc
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 { . . . }
processEvent ®−îc gäi
Mçi giao tiÕp eventOut cã thÓ ®äc
vµ ghi
mçi khi mét sù kiÖn nhËn
®−îc , chuyÓn mét ®èi
t−îng sù kiÖn chøa
• Gäi getField ®Ó ®äc
tr−êng cña ®èi t−îng
• gäi getEventOut ®Ó ®äc
tr−êng eventOut cña ®èi
t−îng
obj = (SFFloat) getField(
"bounceHeight" );
•
Gi¸ trÞ cña sù kiÖn
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
Xem code java
cho mét tr−êng
obj.setValue( newval );
lastval = obj.getValue( );
• 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
Bạn đang xem tài liệu "Bài giảng Đồ họa hiện thực ảo - Bài 8: Ngôn ngữ mô hình hóa thực tại ảo VRML - Lê Tấn Hùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_do_hoa_hien_thuc_ao_bai_8_ngon_ngu_mo_hinh_hoa_thu.pdf

