Lê Tn Hùng CNTT- ĐHBK ni
Email: hunglt@it-hut.edu.vn
(c) SE/FIT/HUT 2002
Ng«n ng÷ 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 ®Ó c¸c m«i trêng t¬ng t¸c
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÷ t Silicon Graphics 3D gäi lµ “Open Inventor”. VRML
1.0 cho phÐp c¸c c¶nh tØnh vµ kh«ng t¬ng t¸c.
VRML 2.0 lµ mét ng«n ng÷ 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 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õ ®Üang , 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Ó 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µ h×nh hãa 3D
Mét ng«n ng÷ t¹o vËt thÓ (nhng«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 c thÝch
cñan
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Þ
. . .
#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
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ö b¶n cña VRML: Nót
Mét file VRML gåm cãt danh s¸ch c¸c nót, mçi nót chøa mét phÇn
th«ng tin m« 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 , nhmµu mµu s¾c vµ 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ã t ®îc viÕt theo c¸c trË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Ý dvnót
Shape, Box, Appearance, Material,lights, sounds, .
Lê Tn Hùng CNTT- ĐHBK ni
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 appearance, mçi trêng l¹i
chøa c¸c nót kh¸c ®îc coi nhgi¸ 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 nhng kh«ng cã trêng
geometry (vÝ dô nhc¸c vËt thÓ kh«ng nh×n thÊy!)
Trêng geometry chøa nót Box trêng appearance coi nót
Appearance nh 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µ 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, 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µ dông mét trong c¸c trêng geometries sau
zShape
geometry
appearance zAppearance
material
zBox
zMaterial
diffuseColor
(c) SE/FIT/HUT 2002
b¶n vÒ nót shape
Box
{size 8 12 10 # x, y, z (=w, h,
d)
}
Xem code Ch¹y
Cone
{ bottomRadius 5 # so 10
units wide
height 12
side TRUE
bottom TRUE
Xem code Ch¹y vÝ dô
}
Nót Shape 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,
nhng cã thÓ bÊt cø ®¬n vÞ g×
(c) SE/FIT/HUT 2002
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 # nhng kh«ng cã ®Ønh
}
Xem code Ch¹y vÝ dô
Sphere # ®¬n gi¶n nhÊt trong c¸c nót shape
{ radius 2 # nhng 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¶ thuËt Web-based 3D/VR.
Text rt hu Ých ë c¸c hÖ chuyªn gia,vÝ dô nhtrong 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ö
kh¸lµkülìng.
Lê Tn Hùng CNTT- ĐHBK ni
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?
repeatTTRUE
}
} Xem code Ch¹y vÝ dô
C¸c Texturecã thÓlµmét URL ®Çy ®ñhoÆc chØlµmét URLt¬ng ®èi ®¬n
gi¶n nh 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
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 kho¶ng c¸ch trong VRML 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û
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
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
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
to¹ ®é dùa vµu hÖ tû ë
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
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 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ø gi÷a c¸c trêng ®îc Ên ®Þnh, ®éc lËp víi trËt cña c¸c trêng
Xem code Ch¹y vÝ
Lê Tn Hùng CNTT- ĐHBK ni
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
h×nh d¹ng cña vËt thÓ
Trêng material gåm c¸c
thuéc tÝnh nhcolor,
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 mµu næi bËt nhÊt
shininess kÝch cë chç næi t nhÊt
ambientIntensity hiªu øng ¸nhng 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
shininess
specular
Color
diffuse
Color
ambient
Intensity
(c) SE/FIT/HUT 2002
nót Group
Th«ng thêng chóng ta cÈn nhãmc
®è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 nót
group .
Cã c¸c kiÓu nót group sau:
n cã thÓ nm 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 nhtrong 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 liÖu hîp lÖ , bao gåm c¸c trang VRML
kh¸c, c¸c trang HTML 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.
Lê Tn Hùng CNTT- ĐHBK ni
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 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 ®îc hiÓn t
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 Inline
Nót Anchor t¹o ra mét nhãm mµ ho¹t
®éng nhkiÓu cã thÓ kÝch chuét ®îc
ChØ nót child ®î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 ®î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 ®ã, dông n ®Êy ®Ó chia sÎ
cho nót t¬ng ë trong ng÷ c¶nh
míi
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Ó hÇu hÕt c¸c chuçi ký
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
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Ó
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µ dông nót:
Lu 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 t 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 nhBillboard Anchor cã c¸c hµnh ®éng x©y dùng s½n
B¹n cã thÓ o ra hµnh ®éng cña riªng b¹n nhlµm cho c¸c vËt thÓ
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 ®Ó 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Ó thµnh phÇn trong mét dßng ho¹t c¶nh
Nót ho¹t ®éng nhc¸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 dÞch chuyÓn)
Thêi gian hoµn thµnh (Khi sù kiÖn ®îc chøng nhËn lµ ®· ®îc göi)