Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
Tìm hiểu ngôn ngữ VRML
Lời nói đầu
Trong xu thế tin học hoá toàn bộ cuộc sống đang diễn ra
tấp nập hiện nay,lĩnh vực đồ hoạ đóng góp một vai trò cực kỳ
to lớn.Ở đâu ta cũng có thể tìm thấy những minh hoạ cho việc
áp dụng đồ hoạ máy tính vào cuộc sống : xử lý ảnh, phim hoạt
hình, đặc biệt là thực tại ảo(Virtual Reality_VR)..Thực tại
ảo,là một nghành công nghệ cao,có ứng dụng đặc biệt rộng
rãi.Từ các trò chơi 3D cực kì sống động đến những mô phỏng
phức tạp trong công nghiệp và khoa học công nghệ(mô phỏng
các vụ thử hạt nhân,mô phỏng thế giới ảo dùng để huấn luỵện
phi công…),từ những trường hợp đơn giản đến các trường hợp
cực kì quan trọng.
Một phần quan trọng của VR là mô phỏng thế giới thực
xung quanh chúng ta.Để làm được điều này, chúng ta có thể
dùng
ngôn
ngữ
VRML(Virtual
Reality
Modeling
Language).Đây là một ngôn ngữ tương đối đơn giản nhưmg
cực kỳ hiệu quả.Với VRML,kết hợp với trình duyệt IE hay
Nescape,chúng ta có thể mô phỏng thế giới quanh ta một cách
như ý.Trong thế giới đó,có các vật thể,có các tương tác và có
các cảm biến y như thế giới thực.Ứng dụng của VRML cũng
Nguyễn Vĩnh Thuận –CNPM K46
4
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
rất rộng rãi : mô phỏng nhà cửa,thiết kế các phòng học ảo,các
thiết bị thí nghiệm ảo, lập trình không gian ảo…
Trong bài tập lớn môn học này,em đã tìm hiểu về VRML
và dùng ngôn ngữ VRML để mô phỏng toà nhà C14-15 của
trường đại họcBKHN.Tuy được sự hướng dẫn tận tình của
thầy Hùng nhưng do thời gian và năng lực còn có hạn nên kết
quả còn nhiều thiếu sót.Tuy nhiên,em rất cám ơn thầy Hùng vì
môn học và bài tập lớn này đã đem lại cho em nhiều hiếu biết
về thế giới đồ hoạ,mở ra cho chúng em một hướng đi mới
trong lĩnh vực tin học.
Nguyễn Vĩnh Thuận –CNPM K46
5
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
BÁO CÁO BÀI TẬP LỚN
MÔN
HỌC "ĐỒ HOẠ MÁY TÍNH VÀ HIỆN THỰC ẢO"
I.Giới thiệu về VRML
1.Về ngôn ngữ VRML
a,VÒ tr×nh duyÖt
§iÒu ®Çu tiªn b¹n cÇn lµ VRML browser, ®Ó quan
s¸t c¸c thÕ giíi cña b¹n. PhÇn lín c¸c brower VRML
ho¹t ®éng cho Nescape vµ Internet Explorer, c¸c
browser cã s½n ®èi víi c¸c hÖ ®iÒu hµnh. §Ó biÕt
thªm th«ng tin b¹n h·y tra trong VRML Repository.
b,Soạn thảo VRML
§iÒu tiÕp theo b¹n cÇn lµ t¹o nªn c¸c thÕ giíi cña
b¹n. Cã hai c¸ch ®Ó thùc hiÖn ®iÒu nµy. §Çu tiªn
b¹n cã thÓ sö dông mét trong c¸c c«ng cô t¹o ra
VRML, chÝnh lµ c¸c m« h×nh 3D mµ b¹n cã thÓ t¹o
ra thÕ giíi cña b¹n. Mét ph¬ng ph¸p thùc hiÖn VRML
lµ m· ho¸ b»ng tay, tÊt c¶ b¹n cÇn lµ viÖc so¹n th¶o
v¨n b¶n wordpad hoÆc notepad. VrmlPad lµ bé so¹n
th¶o Vrml ®Æc biÖt hiÖu qu¶ víi ®Æc ®iÓm næi
bËt có ph¸p. Lo¹i ®¬n gi¶n ®îc m· ho¸ chØ ra, ®îc
cÊt díi file cã d¹ng filename.wrl. Sau ®ã b¹n cã thÓ
t¶i vµo browser vµ lÊy ra ®Ó xem. NÕu b¹n sö dông
bé so¹n th¶o phøc t¹p h¬n, nh Wordpad, h·y ®¶m
Nguyễn Vĩnh Thuận –CNPM K46
6
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
b¶o cÊt díi file ®¬n gi¶n hoÆc nÕu kh«ng nã sÏ
kh«ng lµm viÖc.
Lµm viÖc víi VRML cha cã kinh nghiÖm, nã cã
thÓ rÊt khã ®Ó t¹o ra c¸c ®èi tîng phøc t¹p. §Ó
thùc hiÖn ®iÒu nµy b¹n cÇn ph¶i sö dông hoÆc
c«ng cô b¶n quyÒn møc cao hoÆc ng«n ng÷ m«
h×nh ho¸. NÕu b¹n ®i ®Õn c¸c lùa chän muén h¬n,
b¹n cã thÓ sÏ cÇn vµi lo¹i file ch¬ng tr×nh biªn dÞch
®Ó chuyÓn gi÷a c¸c d¹ng m« h×nh ho¸ vµ VRML.
Bé biªn dÞch miÔn phÝ lµ crossroads. C¸c c«ng cô
VRML cÊp cao cã s½n ®èi víi nhiÒu c«ng ty.
c. Kü thuËt nÐn, MIME vµ xuÊt b¶n
Sù më réng th«ng thêng cho c¸c file VRML lµ .wrl
vµ .wrz sö dông cho viÖc nÐn VRML. Browser cã thÓ
®äc c¸c file VRML bÞ nÐn bëi GZIP. C¸c file nÐn cã
thÓ sö dông nh .wrz, .wrl.gz hoÆc sù më réng chuÈn
.wrl. GZIP lµ mét chuÈn c©n b»ng trªn c¸c hÖ thèng
UNIX nhng b¹n cã thÓ nhËn thÊy trªn phiªn b¶n PC
hoÆc Mac. C¸ch tèt nhÊt ®Ó nÐn c¸c file lµ sö dông
Chisel, lµ bé x¸c nhËn vµ bé ®¸nh gi¸ VRML cã thÓ
bÞ cÊt c¸c file VRML GZIP. §©y lµ mét c«ng cô tèt
®Ó cã bÊt kú c¸ch nµo cho viÖc gì rèi m· bëi v×
kh«ng cã ai viÕt VRML hoµn h¶o ngay tõ lÇn ®Çu
tiªn.
TÊt c¶ c¸c tµi liÖu internet theo chuÈn MIME, chuÈn
VRML MIME lµ model/vrml, t¬ng tù nã cã thÓ lµ xNguyễn Vĩnh Thuận –CNPM K46
7
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
world/x-wrml. Mçi khi b¹n t¹o thÕ giíi cña b¹n, b¹n
cÇn t¹o nã lªn trang web ®Ó mäi ngêi cã thÓ xem
nã. §èi víi viÖc nµy b¹n cÇn mét vµi ISP (Internet
Service Provider). B¹n cã thÓ sö dông kh«ng gian
nµy ®Ó ®a c¸c file lªn trang web, cã thÓ lµ c¸c file
HTML th«ng thêng.
d. Headers vµ chó thÝch.
VRML(Virtual Reality Modeling Language), là ngôn ngữ cho
phép mô tả các đối tượng 3D của thể giới thực, và chạy trên môi
trường web. Nó cho phép xây dựng nên các file . wrl có thể mở
được bằng các trình duyệt web như IE hay NESCAPE. Một file
vrml có dạng như sau:
Tiêu đề file: #VRML V2.0 utf8
trong đó utf8 là cụm từ cho phép dùng các ký tự quốc tế trong file
VRML sau đó là các nút. §iÒu nµy nãi cho c¸c browser
xem xÐt file VRML, vµ phiªn b¶n nµy nã ®ang sö
dông. Trong trêng hîp nµy nã lµ phiªn b¶n 2.0. VRML
lµ trêng hîp dÔ bÞ ¶nh hëng(case sensetive), viÖc
sö dông chÝnh x¸c nh b¹n ®· thÊy. PhÇn utf8 th«ng
b¸o cho browser chuÈn chuçi v¨n b¶n ®Ó sö dông.
VRML 1.0 hoÆc lµ ascii hoÆc utf8 nhng phiªn b¶n
2.0 chØ lµ utf8, tèt nhÊt ®Ó sö dông.
BÊt kú dßng nµo b¾t ®Çu víi kÝ tù # lµ chó
thÝch, vµ bÞ lê ®i khái bé ph©n tÝch có ph¸p VRML.
TiÕp theo lµ VRML hîp lÖ.
Nguyễn Vĩnh Thuận –CNPM K46
8
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
e,C¸c nót trong VRML
Nút đầu tiên thường là nút WORLDINFO chứa thông tin đặc
tả về file vrml sau đó là các loại nút khác để xây dựng nên file
vrml.
Nót nµy chøa th«ng tin chung vÒ thÕ giíi ( the
world) nh tiªu ®Ò cña thÕ giíi, ®îc hiÓn thÞ trong
thanh tiªu ®Ò cña cö sæ browser t¬ng tù nh cê
TITLE trong HTML. WorldInfo còng cã thÓ chøa mét
chuçi th«ng tin, chøa c¸c th«ng tin kh¸c vÒ file. B¹n
cã thÓ ®Æt vµo c¸c tõ kho¸ cho c¸c search engine.
Mét nót WorldInfo mÉu ®îc chØ ra ë díi ®©y:
WorldInfo {
title "Floppy's VRML97 Tutorial Example 1"
info ["(C) Copyright 1999 Vapour Technology"
"
[email protected]"]
}
Cã thÓ cã c¸c chuçi phøc t¹p trong trêng info,
b»ng c¸ch ®Æt chóng bªn trong ngoÆc vu«ng. Tiªu
®Ò kh«ng cÇn ngoÆc vu«ng, khi nã chØ lµ mét
chuçi ®¬n lÎ. File VRML cã thÓ cã nhiÒu nót
WorldInfo nhng chØ cã nót ®Çu tiªn ®îc ph©n
tÝch, c¸c phÇn sau bÞ lê ®i.
VRML có 54 loại nút khác nhau, và được chia làm 9 nhóm, bao
gồm:
. Grouping Nodes :
Các nút nhóm
. Special Group Nodes:
Nguyễn Vĩnh Thuận –CNPM K46
Các nút nhóm đặc biệt
9
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
. Common Nodes:
Các nút chung
. Sensor Nodes:
Các nút cảm biến
. Geometry :
Các nút hình học
. Geometric Properties Nodes:
Các nút thuộc tính hình
học
. Appearance Nodes :
. Interpolators Nodes
Các nút hình dáng
Các nút nội suy
. Bindable Nodes:
Các có thể ghép nối được
Một nút gồm có :
Tên nút: Thường bắt đầu bằng chữ in hoa và chỉ có thể là một
trong các tên chuẩn do vrml cung cấp, sau đó là đến các trường của
nút chúng thường bắt đầu là chữ thường, mổi loại nút có các
trường khác nhau. Gía trị của trường có thể là các giá trị thực hoặc
các bộ giá trị thực hoặc có thể là một nút cơ bản, ta có thể hình
dung các nút như các lớp trong lập trình hướng đối tượng. VRML
không cho bạn định nghĩa thêm các nút mới của mình mà chỉ được
dùng các nút cơ bản của nó. Một hình dạng hình học bất kỳ có thể
được xây dựng qua nút Shape. Cấu trúc của nút này có dạng như
sau:
Shape{
appearance Appearance{
material Material{
diffuColor 1 0 0
Shininess 0
}
textture ImageTextTure{}
}
Nguyễn Vĩnh Thuận –CNPM K46
10
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
geometry Box{}
}
trong đó appearance là thuộc tính của nút giá trị của nó chỉ có thể
là nút Appearance dùng chỉ dạng bề mặt của vật thể . Trong nút
Appearance co các trường material dùng để chỉ màu, độ bóng, độ
trong suốt của vật thể. Trường textture dùng để chỉ kết cấu của vật
thể, giá trị của trường này có thể là các nút
ImageTextture,MovieTextture...
Chúng ta điểm qua một số nút cơ bản
e1.C¸c nót appearrance
Khi chóng ta nh×n thÊy ®èi tîng FBOX chóng ta
®· ®Þnh nghÜa tríc ®©y, nót Shape cã mét trêng
gäi lµ appearance, nã sö dông ®Ó chøa trêng
Appearance ®îc chØ ra díi ®©y:
DEF FBOX Shape {
appearance Appearance {
material Material {
}
}
geometry Box {
}
}
VÝ dô nµy cã mét trêng bªn trong nót
Appearance, trêng material. Theo c¸ch nµy cã c¸c
nót bªn trong c¸c nót dêng nh lµ khã kh¨n, nhng cho
phÐp b¹n ®Þnh nghÜa c¸c h×nh d¹ng do sö dông
Nguyễn Vĩnh Thuận –CNPM K46
11
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
DEF vµ USE. §iÒu nµy lµ hiÖu qu¶ trong viÖc cã
nhiÒu ®èi tîng theo cïng mét c¸ch quan s¸t. Nót
Appearance cã thÓ chøa trêng material vµ texture.
trêng material chøa nót Material. Nót texture chøa
mét trong sè c¸c lo¹i nót kÕt cÊu. Nh÷ng ®iÒu nµy
®îc m« t¶ trong phÇn sau, tríc tiªn chóng ta gi¶i
quytÕt c¸c nót Material.
e2.C¸c nót Material
Nót Material cã thÓ chøa 6 trêng, ®ã lµ:
diffuseColor
mµu s¾c th«ng thêng cña ®èi tîng
specularColor
mµu s¾c næi bËt cña c¸c ®èi tîng chiÕu s¸ng
emissiveColor
§èi tîng 'glows' víi ¸nh s¸ng cña nã tõ mµu s¾c nµy,
nã kh«gn ph¶i lµ ¸nh s¸ng mÉu tõ c¸c ®èi tîng
kh¸c.
ambientIntensity
Sè lîng c¸c ¸nh s¸ng bao xung quanh mµ ®èi tîng
ph¶n chiÕu.
shininess
c¸ch ¸nh x¹ cña ®èi tîng
transparency
c¸ch lµm râ rµng ®èi tîng. chó ý mét vµi browsers
kh«ng hç trî c¸c ®èi tîng tõng phÇn kh«ng râ rµng.
Nguyễn Vĩnh Thuận –CNPM K46
12
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
Ba tham sè ®Çu tiªn lµ c¸c gi¸ trÞ mµu, ba tham
sè sau lµ c¸c gi¸ trÞ ®¬n gi¶n gi÷a 0 vµ 1. C¸c mµu
s¾c ®îc chØ râ nh c¸c thµnh phÇn red, green vµ
blue nh trong HTML. B¹n cã thÓ lÊy bÊt kú mµu nµo
b¹n thÝch tõ viÖc kÕt hîp c¸c mµu red, green vµ
blue. C¸c gi¸ trÞ mµu ®¬n lÎ n»m gi÷a 0( kh«ng
mµu) vµ 1(mµu ®Çy ®ñ), v× vËy red ®Çy ®ñ ®îc
®Þnh nghÜa lµ 1 0 0, tr¾ng lµ 1 1 1, x¸m lµ 0.5 0.5
0.5...C¸ch nµy cã thÓ chØ râ c¸c mµu trong khi sö
dông nhng b¹n cã thÓ sö dông bé lùa chän mµu
trong PaintShop Pro hoÆc mét vµi thø ®Ó cã thÓ
nhËn ®îc c¸c mµu b¹n thÝch vµ chuyÓn chóng thµnh
gi¸ trÞ VRML.
V× vËy nÕu b¹n muèn t¹o h×nh khèi ban ®Çu,
víi mµu xanh b¸n trong suèt, b¹n sÏ ®Þnh nghÜa
d¹ng cña nã nh sau:
Shape {
appearance Appearance {
material Material {
emissiveColor 0 0.8 0
transparency 0.5
}
}
geometry Box {
}
}
Nguyễn Vĩnh Thuận –CNPM K46
13
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
e3,KÕt cÊu h×nh ¶nh( image texture)
C¸c mµu s¾c thó vÞ lµ rÊt tèt nhng ®Ó tr«ng
thùc sù lµ hÊp dÉn, chóng ta ph¶i cã s¬ ®å kÕt cÊu
c¸c vËt thÓ. §iÒu nµy ®îc thùc hiÖn qua trêng
texture cña nót Appearance . trêng nµy chøa ba
lo¹i nót kÕt cÊu. Lo¹i ®Çu tiªn chóng ta xem xÐt lµ
ImageTexture. §©y lµ s¬ ®å kÕt cÊu c¬ së, ¸nh
x¹ toµn bé h×nh ¶nh vµo mét ®èi tîng. Nót cã thÓ
lµ s¬ ®å kÕt cÊu mét ®èi tîng víi file JPEG hoÆc
PNG. Mét vµi browser cã thÓ hç trî nã, nhng ®©y
kh«ng ph¶i lµ chuÈn. nót cã thÓ chøa ba trêng. §Çu
tiªn, url chØ râ h×nh ¶nh ®Ó sö dông chuÈn d¹ng
URL. B¹n cã thÓ chØ râ danh s¸ch h×nh ¶nh trong
c¸c ngoÆc vu«ng, browser sÏ hiÓn thÞ h×nh ¶nh
®Çu tiªn trong danh s¸ch mµ nã t×m thÊy. Hai trêng kh¸c lµ repeatS vµ repeatT, th«ng b¸o liÖu
kÕt cÊu lÆp l¹i theo híng trôc ngang (S) hay trôc
däc(T). §iÒu nµy dÉn ®Õn gi¸ trÞ boolean lµ TRUE
hoÆc FALSE. chóng chØ thùc sù hiÖu qu¶ khi kÕt
hîp víi TextureTransform, chóng ta kh«g tr×nh bµy
kü ë phÇn sau. B¹n cã thÓ chØ râ c¸c th«ng tin
trong suèt trong c¸c h×nh ¶nh ®· sö dông trong trêng hîp nã thay thÕ l¹i sù trong suèt cña c¸c ®èi tîng ban ®Çu. NÕu b¹n sö dông kÕt cÊu tØ lÖ x¸m,
diffuseColor ®îc nh©n lªn víi ®é dµy cña kÕt cÊu
®Ó t¹o ra kÕt cÊu thùc sù. Thùc tÕ, b¹n cã thÓ t¹o
nhiÒu hiÖu qu¶ do kÕt hîp nót Material
vµ
Nguyễn Vĩnh Thuận –CNPM K46
14
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
ImageTexture. Nãi chung, chóng chØ thùc hiÖn
nh÷ng g× b¹n mong muèn, v× vËy chØ cÇn quan
s¸t vµ mét chót kinh nghiÖm lµ b¹n cã thÓ t¹o ra ®îc.
V× vËy ®Ó ®Þnh d¹ng kÕt cÊu cña hép thø hai
víi kÕt cÊu g¹ch, chóng ta cã thÓ sö dông nh sau:
Appearance {
texture ImageTexture {
url "brick.jpg"
}
}
khi nót appearance cña hép thø hai.
e4. Movie Texture
MovieTexture nhËn lÊy phim MPEG vµ s¬ ®å
kÕt cÊu lªn mét ®èi tîng theo c¸ch nh
ImageTexture. Nã cã ba trêng gièng nhau, ngoµi ra
cã mét sè trêng kh¸c, ®ã lµ:
speed
Gi¸ trÞ speed mÆc ®Þnh lµ 1, 2 lµ tèc ®é t¨ng 2
lÇn. Gi¸ trÞ 0 lu«n hiÓn thÞ ë c¬ cÊu ®Çu tiªn.
loop
Gi¸ trÞ boolean ( (TRUE hoÆc FALSE), chØ râ liÖu
phim lÆp hay kh«ng.
startTime
Nguyễn Vĩnh Thuận –CNPM K46
15
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
Khi b¾t ®Çu phim, trong mét vµi gi©y tõ nöa ®ªm
cña ngµy 1 th¸ng giªng 1970.
stopTime
Khi kÕt thóc phim, trong mét vµi gi©y tõ nöa
®ªm cña ngµy 1 th¸ng giªng 1970.
e5. Pixel Texture
Nót nµy cho phÐp b¹n ®Þnh nghÜa c¸c kÕt cÊu
b»ng tay trong file VRML. §iÒu nµy dêng nh khã tin
lµ cã thÓ ®Çy ®ñ nhng nã kh«ng cã nh ®· sö dông,
b¹n sÏ thÊy sau ®©y. Nã cã trêng image thay thÕ
cho trêng URL.
Trêng image bao gåm hai con sè chØ râ chiÒu
réng vµ cao cña kÕt cÊu, tiÕp theo lµ mét con sè
chØ râ sè lîng c¸c thµnh phÇn. Thµnh phÇn mµu s¾c
lµ tØ lÖ x¸m, hai thµnh phÇn mµu s¾c lµ tØ lÖ x¸m
víi ®é trong suèt, thµnh phÇn thø ba lµ mµu RGB vµ
thø t lµ RGB víi ®é trong suèt. Sau c¸c ®èi sè nµy lµ
danh s¸ch c¸c ®iÓm pixel, lµ c¸c sè hexa víi mét
byte cho mçi thµnh phÇn. V× vËy pixel thµnh phÇn
thø t lµ red vµ 50 % ®é trong suèt lµ 0xFF00007F.
C¸c pixel ®îc s¾p xÕp theo thø tù tõ ®¸y tr¸i ®Õn
®Ønh bªn ph¶i. VÝ dô ®îc chØ ra díi ®©y:
DEF PIXMAP Appearance {
texture PixelTexture {
image 2 2 3 0xFF0000 0x00FF00 0x0000FF
0xFF0000
Nguyễn Vĩnh Thuận –CNPM K46
16
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
}
}
Chóng ta chØ cÇn m« t¶ nhanh vÒ c¸c sè hexa.
Th«ng thêng ë m¸y tÝnh thuËn tiÖn khi chØ râ c¸c
con sè lµ c¸c sè thËp ph©n th«ng thêng (0-9) hoÆc
nhÞ ph©n (0-1) vµ ngoµi ra cã mét lo¹i kh¸c lµ
hexadecimal, cã d¹ng nh sau:
Hexade Deci
cimal mal
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
A
10
B
11
C
12
D
13
E
14
F
15
Nguyễn Vĩnh Thuận –CNPM K46
17
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
F trong sè hexa lµ 15 trong sè thËp ph©n. 10
trong hexa lµ 16 trong sè thËp ph©n. Ch÷ sè hexa
th«ng thêng ®îc chØ râ 0x ë phÝa tríc ®Ó dÔ dµng
nhËn ra. VÝ dô 0x10 = 16, 0xFF = 255, vµ 0x7F =
12.
e6. V¨n b¶n vµ kiÓu font( text vµ fontstyle)
Nót nµy t¹o v¨n b¶n 2D trong thÕ giíi. TÊt c¶
®Òu thùc sù ®¬n gi¶n trõ phi b¹n muèn thùc hiÖn
c¸c ®iÒu phøc t¹p h¬n sö dông Fontstyle. Nót Text
cã 4 trêng. Trêng ®Çu tiªn lµ string, b¹n cã thÓ
®Þnh nghÜa chuçi hoÆc danh s¸ch c¸c chuçi ®Ó
hiÓn thÞ. Trêng fontStyle chøa nót FontStyle. Hai
trêng cuèi lµ maxExtent, b¹n chØ râ ®é réng lín
nhÊt ( theo ®¬n vÞ mÐt) cña v¨n b¶n vµ length lµ
danh s¸ch chiÒu dµi ®èi víi mçi chuçi, v× vËy b¹n cã
thÓ chØ râ ®é réng riªng biÖt cña mçi chuçi. NÕu
c¸c length ®îc chØ râ, browser sÏ ®Þnh l¹i kÝch thíc
cña v¨n b¶n ®Ó cho võa víi kÝch thíc ®ã.
geometry Text {
string ["Hello", "World"]
fontStyle USE HELLOFONT
maxExtent 5
length [3, 3]
}
Nguyễn Vĩnh Thuận –CNPM K46
18
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
Nót Text lµ phøc t¹p, FontStyle phøc t¹p h¬n.
C¸ch tèt nhÊt ®Ó thùc hiÖn ë ®©y lµ liÖt kª danh
s¸ch c¸c trêng.
FontStyle {
size
family
style
horizontal
leftToRight
topToBottom
language
justify
spacing
}
size lµ chiÒu cao cña dßng v¨n b¶n theo hÖ mÐt.
Trêng family cã thÓ nhËn 3 gi¸ trÞ vµ thay ®æi lo¹i
bÒ mÆt cuØa font. Ba lo¹i ®ã lµ "SERIF", "SANS",
hoÆc "TYPEWRITER", chóng rÊt râ rµng. §Ó thay
®æi c¸ch xem xÐt v¨n b¶n, b¹n cã thÓ sö dông trêng style, cã thÓ nhËn mét trong c¸c kiÓu sau:
"PLAIN", "BOLD", "ITALIC", hoÆc"BOLD ITALIC".
horizontal lµ gi¸ trÞ boolean chØ ra liÖu v¨n b¶n lµ
ngang horizontal ("TRUE") hoÆc däc vertical
("FALSE"). leftToRight vµ topToBottom còng lµ
gi¸ trÞ boolean vµ c©n b»ng trong c¸c ho¹t ®éng tríc. T¬ng tù chuçi utf-8 cã thÓ xuÊt hiÖn kh¸c nhau,
phô thuéc vµo ng«n ng÷ trong nã, v× vËy ®iÒu nµy
Nguyễn Vĩnh Thuận –CNPM K46
19
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
lµ m· ho¸ hai kÝ tù ®èi víi ng«n ng÷. Thùc sù kh«ng
biÕt c¸c m· lµ g×, tèt nhÊt lµ lê ®i trêng nµy.
justify lµ hiÖu qu¶ vµ cãthÓ lµ mét trong bÊt kú
"BEGIN", "MIDDLE", hoÆc "END". spacing lµ sè lîng
kh«ng gian tr«ngd gi÷a c¸c dßng trong v¨n b¶n. 1 lµ
b×nh thêng, 2 lµ gÊp ®èi kho¶ng c¸ch (dßng trång
gi÷a mçi dßng.
§ã lµ FontStyle , b¹n cã thÓ thùc sù lê ®i c¸c
trêng nhng style, family vµ justify thùc sù lµ hiÖu
qu¶.
e7,Các đối tượng cơ bản
Để chỉ hình dáng vật thể ta dùng trường geometry. Giá trị của
trường này là các nút hình học cơ bản.VRML hỗ trợ 4 đối tượng cơ
bản , đó là: Cone(hình nón), Cylinder(Hình trụ), Box(Hình hộp),
Sphere(Hình cầu). Đây là bốn đối tượng hình học cơ bản giúp ta
xây dựng nên các đối tượng hình học của mình .Cấu trúc của các
nút này như sau
Nút Box:
Box{size cd cc cr}. Trong đó cd, cc, cr là các số thực lần lượt là
chiều dài, chiều cao,
chiều rộng của hình hộp. Tâm của hình hộp là gốc tọa độ hệ thống
Nút Cylinder:
Cone{
radius dk
Nguyễn Vĩnh Thuận –CNPM K46
Chỉ bán kính của hình trụ
20
Đồ hoạ máy tính và thực tại ảo
height cc
Ngôn ngữ VRML
Chỉ chiều cao của hình hộp
bottom TRUE/FALSE
top
TRUE/FALSE
Hai giá trị này để chỉ xem hình trụ có
nắp (TRUE) hay
không(FALSE) ở đáy(bottom), đỉnh(top) của
hình trụ
}
Nút Cone:
Cone{
radius
Một giá trị thực chỉ bán kính đáy của hình
height
Môt giá trị thực chỉ chiều cao của hình hộp
nón
}
Nút Sphere:
Sphere{ radius } trường radius chỉ bán kính của hình cầu
Đây là bốn nút hình học cơ bản để bạn xây dựng nên các đối
tượng hình học cơ bản của mình.Chúng được gọi là các nút hình
học chuẩn. Để xây dựng nên các đối tượng hình học không chuẩn
bạn có thể dùng các nút IndexedFaceSet, IndexedLineSet,
IndexedPointSet,ElavationGrid, Extrusion
Thông thường khi bạn tạo ra một đối tượng tâm của nó trùng
với tâm của hệ toạ độ địa phương, để di chuểyn đối tượng bạn
dùng nút Transform.
Transform{
Scale
Nguyễn Vĩnh Thuận –CNPM K46
Chỉ sự biến đối của đối tượng
21
Đồ hoạ máy tính và thực tại ảo
Translation
theo các trục x, y, z
Rotation
Children[]
translation và rotation
Ngôn ngữ VRML
chỉ các giá trị dịch chuyển
chỉ góc quay và trục quay
các nút con chịu tác động của
}
Trong nút Transform Scale có tác động đầu tiên, sau đó đến
rotation và translation
Để gom nhiều nút lại với nhau ta sử dụng nút Group, cú pháp của
nó như sau:
Group{
Children[] chứa các nút con của nút này
}
Trong VRML còn có các nút cảm biến với đuôi là Sensor,
cho phép chúng ta mô phỏng một số loại cảm biến trong thực tế,
như TimerSensor, TouchSensor, PlaneSensor.... Các nút nội suy,
như PositionInterpolator, OrientationInterpolator,
ColorInterpolator, cho phép bạn chuyển các giá trị khác kiểu về
kiểu giá trị mà bạn mong muốn như chuyên sự thay đôi thời gian
về giá trị dịch chuyển của một vật thể. Các nút nội suy đóng vai trò
là các Engine trong luồng Animation của VRML. TRong VRML
còn có một số loại nút khác như LOD, Switch..
2.Các kiểu dữ liệu trong VRML
Nh ®· nãi ë phÇn tríc, c¸c file VRML bao gåm
mét nhãm c¸c nót. C¸c nót nµy cã thÓ chøa c¸ nót
Nguyễn Vĩnh Thuận –CNPM K46
22
Đồ hoạ máy tính và thực tại ảo
Ngôn ngữ VRML
kh¸c vµ cã thÓ chøa c¸c trêng. Mçi trêng cã c¸c kiÓu
d÷ liÖu kh¸c nhau. Sau ®©y lµ m« t¶ cña chóng.
SFBool
§©y lµ gi¸ trÞ boolean ®¬n lÎ, cã thÓ nhËn gi¸
trÞ "TRUE" or "FALSE".
SFColor & MFColor
SFColor lµ mét trêng chøa mµu ®¬n lÎ, ®îc t¹o
nªn tõ ba sè thùc dÊu chÊm ®éng gi÷a 0 vµ 1 t¬ng
øng víi c¸c gi¸ trÞ mµu red, green vµ blue, vÝ dô 0 1
0 lµ green. MFColor lµ mét trêng chøa c¸c sè nh©n,
vÝ dô [0 1 0, 1 0 0, 0 0 1].
SFFloat & MFFloat
SFFloat lµ gi¸ trÞ dÊu chÊm ®éng ®¬n lÎ, vÝ dô
7.5. MFFloat lµ mét sè c¸c gi¸ trÞ dÊu chÊm ®éng,
vÝ dô [1.0, 3.4, 76.54].
SFImage
SFImage lµ h×nh ¶nh hai chiÒu hoÆc lµ mµu
hoÆc lµ x¸m. Nã bao gåm:
Hai sè nguyªn, ®¹i diÖn chiÒu réng hoÆc chiÒu
cao cña h×nh ¶nh
Mét sè nguyªn biÓu thÞ sè thµnh phÇn cña
h×nh ¶nh. 1 chØ lµ c¸ møc x¸m, 2 lµ c¸c møc
x¸m víi ®é trong suèt, 3 lµ mµu RGB, 4 lµ RGB
víi ®é trong suèt.
Sau ®ã, cã c¸c con sè hexa are width * height
bao gåm ahi ch÷ sè cho mçi thµnh phÇn. V×
vËy 0xFF lµ mµu tr¾ng trong h×nh ¶nh 1Nguyễn Vĩnh Thuận –CNPM K46
23