Page 1
Lờ Tấn Hựng CNTT- ĐHBK Hà nội
Email: 
[email protected] 
(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, .
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Page 2
Lờ Tấn Hựng CNTT- ĐHBK Hà nội
Email: 
[email protected] 
(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.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Page 3
Lờ Tấn Hựng CNTT- ĐHBK Hà nội
Email: 
[email protected] 
(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ụ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Page 4
Lờ Tấn Hựng CNTT- ĐHBK Hà nội
Email: 
[email protected] 
(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.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Page 5
Lờ Tấn Hựng CNTT- ĐHBK Hà nội
Email: 
[email protected] 
(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)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Page 6
Lờ Tấn Hựng CNTT- ĐHBK Hà nội
Email: 
[email protected] 
(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ể
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Page 7
Lờ Tấn Hựng CNTT- ĐHBK Hà nội
Email: 
[email protected] 
(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