Page 1
Lờ Tn Hựng CNTT- HBK H ni
Email:
(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
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ự # .
Shape, Box, Appearance, Material,lights, sounds, .
Page 2
Lờ Tn Hựng CNTT- HBK H ni
Email:
(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 nhng 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
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,
nhng 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
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ờ Tn Hựng CNTT- HBK H ni
Email:
(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 sử dụng ở trên.
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 { . . . }
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ờ Tn Hựng CNTT- HBK H ni
Email:
(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
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
shininess
specular
Color
diffuse
Color
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ờ Tn Hựng CNTT- HBK H ni
Email:
(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.
(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 {
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ó
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)