ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
CÔNG NGHỆ THỰC TẠI ẢO
ĐỀ TÀI:
Giáo viên hướng dẫn:
Nhóm 4 - KTPM1 K6
Hà Nội 12/2014
1
Mục Lục
2
Lời nói đầu
Khi công nghệ thông tin phát triển, đồ họa máy tính cũng ngày càng phát triển và
có nhiều ứng dụng rộng rãi và mang tính thực tế cao. Một trong những ứng dụng
đó là việc mô phỏng lại thế giới thực bằng cách xây dựng những mô hình “ảo” trên
máy tính. Và công nghệ “thực tại ảo” ra đời và phát triển nhanh chóng, với khả
năng mô phỏng một cách sống động hầu hết những mô hình trong thế giới thực, từ
đơn giản cụ thể cho tới phức tạp trừu tượng. Ngôn ngữ mô hình hóa thực tại ảo
(Virtual Reality Modeling Language - VRML) đã được xây dựng từ nhu cầu phát
triển của công nghệ “ thực tại ảo” – mà dựa trên đó, con người có thể giải quyết bài
toán mô phỏng lại thế giới thực trên máy tính.
Với môn công nghệ thực tại ảo chúng em đã được học, mang lại cho chúng em
nhiều kiến thức bổ ích, hiểu rõ về công nghệ thực tại ảo cũng như các ứng dụng
rộng rãi của nó, nắm bắt các kiến thức cơ bản về ngôn ngữ mô phỏng thực tại ảo
VRML. Để hiểu rõ môn học và thêm phần nắm chắc kiến thức ngôn ngữ VRML
chúng em đã thực hiện đề tài “Mô phỏng tàu điện ngầm”. Chúng em xin gửi lời
cảm ơn chân thành nhất tới thầy Vũ Đức Huy , đã nhiệt tình truyền đạt cho chúng
em những kiến thức về môn học và đã luôn đồng hành cùng chúng em thực hiện đề
tài này. Tuy đã nỗ lực trong quá trình làm việc, nhưng với kinh nghiệm còn non
kém, kiến thức chưa thực sự vững vàng, đề tài còn tồn tại nhiều thiếu sót. Mong
thầy giáo cân nhắc, xem xét và cho ý kiến. Chúng em xin chân thành cảm ơn thầy.
3
Chương I: Tổng quan môn học
1.
Khái niệm thực tại ảo
Virtual reality (VR)- thực tại ảo là ngôn ngữ mô tả môi trường được tạo ra và
mô phỏng bởi máy tính. Đồ họa máy tính được sử dụng để đảm bảo tính “thực”
của của môi trường này.
Các thành phần trong môi trường ảo đó có thể thay đổi theo các tác động của
người sử dụng qua các hành động, lời nói, cái nhìn thậm chí là suy nghĩ. Đó chính
là đặc tính chính của thực tại ảo : tương tác thời gian thực (real-time interactivity).
Thời gian thực ở đây có nghĩa là máy tính có khả năng nhận biết được tín hiệu vào
của người sử dụng và thay đổi ngay lập tức các thành phần trong thế giới ảo.
Người sử dụng nhìn thấy sự vật thay đổi trên màn hình mô phỏng ngay theo ý
muốn của họ và bị thu hút bởi sự mô phỏng này. Sự thu hút này được tạo ra bởi
những thay đổi trong môi trường ảo đã tác động lên các cơ quan cảm giác của con
người thông qua một số thiết bị hiển thị cũng như tương tác đa dạng như : thị giác (
từ các hình ảnh 3D ), thính giác ( qua các âm thanh), xúc giác.
Có thể nói, VR- Thực Tại Ảo là một hệ thống giao diện cấp cao giữa người
sử dụng và máy tính. Hệ thống này mô phỏng các sự vật và hiện tượng theo thời
gian thực và tương tác với người sử dụng qua tổng hợp các kênh cảm giác như thị
giác, thính giác, xúc giác.
4
2.
Ứng dụng của thực tại ảo
Ngày nay, thực tại ảo đã được ứng dụng vào rất nhiều lĩnh vực như : Kiến
trúc, quân sự, cơ khí, khoa học kĩ thuật….. Đặc biệt, việc áp dụng thực tại ảo vào
lĩnh vực ý học là một bước tiến rất lớn cho con người, qua đó giúp chúng ta có cái
nhìn tổng quan hơn về cơ thể người. Một số ứng dụng lớn khác của thực tại ảo là
mô phỏng mô hình robot, hay trong thăm dò địa chất (dầu mỏ, khoáng sản…), cho
chúng ta thấy được tiền năng rất lớn của công nghệ thực tại ảo vào trong những
lĩnh vực lớn khác, hay trong đời sống con người. Nói một cách ngắn gọn: thực tại
ảo tạo ra được những cái rất “thật” trong thế giới “ảo”.
5
Chương II: Tổng quan về ngôn ngữ mô hình thực tại ảo – VRML
1.
Lịch sử ra đời và phát triển của VRML
VRML đã trở thành một ngôn ngữ chuẩn cho việc mô phỏng tương tác thế
giới 3D trên Web. Với mục đích xây dựng định dạng chuẩn cho phép mô tả thế
giới thực trên máy tính mà cho phép chạy trên môi trường web, VRML đã trở
thành chuẩn ISO từ năm 1997.
VRML ra đời vào mùa xuân năm 1994 ở hội nghị WWW được tổ chức đầu
tiên tại Gieneva, Thụy Sĩ. Tim Berners-Lee và Dave Raggett đã tổ chức ra phiên
họp có tên là Birds of a Feather (BOF) để mô tả giao diện thực tế ảo trên WWW.
Nhiều thành viên tham dự phiên họp BOF đã mô tả nhiều dự án thực hiện việc xây
dựng các công cụ hiển thị đồ họa 3D cho phép có nhiều thao tác hữu ích trên Web.
Những thành viên này đã nhất trí đồng ý sự cần thiết cho các công cụ này có một
ngôn ngữ chung, phổ biến cho đạnh dạng, xác định việc mô tả thế giới 3D và các
siêu liên kết WWW. Vì thế cụm từ “the Virtual Reality Markup Language” ra đời,
từ Markup sau đó đã được đổi thành Modelling để phản ánh bản chất tự nhiên của
VRML.
Sau phiên họp BOF một thời gian ngắn thì tổ chức www-vrml mailing list
được thành lập để tập trung vào xây dựng phiên bản VRML đầu tien. Sự hưởng
ứng lời mời của tổ chức này kéo dài đến một tuần và có trên một nghìn khách mời
tham dự. Tại buổi họp chủ tịch Mark Pesce đã thông báo ý kiến của mình là đưa ra
phiên bản phác thảo xây dựng VRML đã có sẵn ở hội nghị mùa xuân năm 1994
được tổ chức mới cách đó 5 tháng. Bản phác thảo của Mark Pesce đã có được sự
đồng ý chung.
Vào tháng 3/ 1995 thì có một thảo luận trên www-vrml mailing list liên quan
đến việc tạo ra những tương tác của người sử dụng với hoạt cảnh và tất cả mọi
người đều đi đến thống nhất ý kiến những thứ mới đưa ra đó thực sự cần thiết cho
VRML. Công ty Silicon Graphics cộng tác với hãng Sony Research và Mitra để
đưa ra phiên bản mới cho VRML. Bản đệ trình của Silicon Graphics có tên là
Moving Worlds đến tổ chức Request for Proposals cho việc xây dựng phiên bản
mới VRML, bản đệ trình này là một minh chứng cho sự cộng tác thành công của
6
tất cả các thành viên của Silicon Graphics, Sony và Mitra. Năm 1996 tại New
Orleans, phiên bản đầu tiên của VRML 2.0 được đưa ra.
Vào tháng 7/1996 tổ chức tiều chuẩn quốc tế (ISO) đã thông nhất ý kiến phiên
bản năm 1996 của VRML 2.0 như là một đề xuất mà sẽ được đưa ra xem xet vào
thang 4/1997. Sau khi bỏ phiếu về chuẩn ISO thì VRML97 được đưa ra như một
chuẩn ISO vào năm 1997.
2. Cơ bản về ngôn ngữ VRML
2.1 Khái niệm về VRML
VRML (Virtual Reality Modeling Language) là ngôn ngữ mô hình hóa thực
tại ảo, một định dạng tập tin được sử dụng trong việc mô tả các thế giới và các đối
tượng đồ họa tương tác ba chiều. VRML được thiết kế dùng trong môi trường
Internet, Intranet và các hệ thống máy khách cục bộ. VRML còn được dự trù trở
thành một chuẩn trao đổi đa năng cho đồ họa ba chiều tích hợp và truyền thông đa
phương tiện. VRML có thể được sử dụng trong rất nhiều lĩnh vực ứng dụng chẳng
hạn như trực quan hóa các khái niệm khoa học và kỹ thuật, trình diễn đa phương
tiện, giải trí và giáo dục, hỗ trợ web và chia sẻ các thế giới ảo.
Về căn bản VRML chỉ đơn giản là một định dạng trao đổi 3D. Nó định nghĩa
được các vấn đề thường được sử dụng trong các ứng dụng 3D, chẳng hạn như các
biến đổi phân cấp (hierarchical tranformations), nguồn ánh sáng (líght sources),
điểm nhìn (view points), hình học (geometry), sương mù (fog), thuộc tính của chất
liệu (material properties) và các bản đồ kết cấu (texture mapping).
Ngôn ngữ VRML là ngôn ngữ sử dụng mô hình phân cấp trong việc thể hiện
các tương tác với các đối tượng của mô hình, VRML được sử dụng để phát triển
những hình ảnh 3D và quang cảnh trên Web. Các file VRML có kích thức nhỏ,
thường không quá 1Mb.
Ngôn ngữ mô hình hóa thực tại ảo VRML là một chuẩn không chính thức để
mô tả thực tế ảo mà không phụ thuộc vào hệ điều hành thông qua Internet. Chỉ với
một file text bạn có thể mô tả, tương tác, điều khiển một thế giới ảo mà không bị
hạn chế nhiều.
7
VRML cho phép truyền đi trong mạng những hình ảnh 3D. Với kích thước
khả nhỏ so với băng thông, phần lớn giới hạn trong khoảng 100 - 200Kb nên các
file VRML được truyền đi một cách khá dễ dàng. Nếu HTML là định dạng văn bản
thì VRML là định dạng đối tượng 3D. Hiện nay VRML có lợi thế là sự đơn giản,
hỗ trợ dịch vụ web 3D.
2.2 Các thành phần cơ bản của VRML
Gồm các trình duyệt (Browses) và bộ soạn thảo dành riêng cho ngôn ngữ
VRML. Các file chỉ có thể đọc nếu hệ thống có trình duyệt VRML.
Trình duyệt VRML cũng giống như trình duyệt Internet( Internet Explorer
hay Fire Fox) và được tích hợp trong các trình duyệt này.
Bộ soạn thảo VRML cho phép người dùng gõ mã VRML. Hiện nay có nhiều
bộ soạn thảo nhưng VRML Pad là khá thông dụng khi có thể cho xem trực tiếp kết
quả mà không cần qua trình duyệt Internet.
2.3 Công cụ hiển thị VRML
Để hiển thị các file VRML thì ta sử dụng chương trình Cortona VRML Client
của hãng Parallrl Graphics. Chương trình sẽ giúp bạn thuận tiện hơn khi xem cắc
mô hình ảo trên máy tính một cách trực quan sinh động.
Yêu cầu trước khi cài đặt Cortona VRML Client:
•
•
•
•
•
•
Hệ điều hành Microsoft® Windows® XP trở lên
Trình duyệt Web Internet Explorer 6.0 trở lên, Netscape Navigator 8.0 trở
lên, Mozilla Firefox 1.5 trở lên, Opera 8.5 trở lên
CPU Pentium® II 300 MHz trở lên.
RAM tối thiểu 64 MB.
Độ phân giải màn hình tối thiểu 1024x768.
Card đồ họa hỗ trợ 3D và cài đặt DirectX 9
Cortona VRML Client tương thích với hầu hết các trình duyệt như Internet
Explorer, Chrome, Mozilla, Mozilla Firefox và các công cụ văn phòng như Word,
PowerPoint...
8
2.4 Tập tin của VRML
Tập tin của VRML có thể tạo ra từ nhiều cách: dùng một trình soạn thảo văn
bản như Nopepad để soạn thảo, sau đó lưu file với phần mở rộng là. wrl. Hoặc ta
có thể soạn thảo trên một trình soạn thảo dành riêng cho VRML như VRML Pad
và chạy trực tiếp ứng dụng.
Một file VRML gồm có các phần như: header, scene graph, prototype và
event routing.
Header: dùng để nhận dạng tập tin VRML và cách mã hóa. Header của file
VRML bắt đầu bằng dấu #. Ngoài lần xuất hiện đầu tiên ra thì dấu # đánh dấu
những gì theo sau nó là phần chú thích. File tiêu đề của VRML có dạng: #VRML
V1.0 ascii dành riêng cho phiên bản VRML 1.0 và #VRML V2.0 utf-8 dành cho
phiên bản 2.0.
Scene Graph: chứa những node mô tả các đối tượng và các thuộc tính đi
kèm. Nó gần như một cây phả hệ gồm các nhóm đối tượng.
Prototype: cho phép một tập các nút kiểu VRML được mở rộng bởi người sử
dụng. Các định danh kiểu này có thể được bao hàm trong file (mà chúng được sử
dụng) hay định nghĩa ở bên ngoài (file đó).
Event routing: một số nút có thể phát sinh những sự kiện đáp trả những thay
đổi môi trường do tương tác phía người dùng. “Event routing” cho phép một sự
kiện phát sinh được truyền đến các “đích”- những nút trong hệ thống, từ đó gây ra
những thay đổi cho riêng nút đó và hệ thống
2.5 Các kiểu dữ liệu trong VRML
Trong VRML, các nút có thể chứa các nút 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ị kiểu logic, có thể nhận giá trị “TRUE” hay “FALSE”.
SFColor & MFColor
SFColor là trường chứa màu sắc, được tạo nên từ ba số thực từ 0 đến 1 tương
ứng với các giá trị màu red, green và blue (RGB) (ví dụ: 0 1 0 là green).
9
MFColor là một tập hợp gồm các màu sắc (ví dụ: [0 1 0, 1 0 0, 0 0 1] là tập hợp
gồm ba màu green, red và blue).
SFFloat & MFFloat
SFFloat là giá trị kiểu số thực (ví dụ: 7.5). MFFloat là một tập các giá trị số
thực (ví dụ: [1.0, 3.4, 76.54]).
SFImage
SFImage là hình ảnh hai chiều được tạo nên từ các điểm ảnh. Nó bao gồm:
Hai số nguyên, đại diện chiều rộng và chiều cao của hình ảnh cũng chính
là số điểm nằm trên chiều rộng và chiều cao của hình.
Một số nguyên biểu thị số thành phần của hình ảnh. Số thành phần là 1 tức
hình ảnh trắng đen, là 2 cũng tương tự nhưng có thêm độ trong suốt, là 3 thì
hình sẽ có màu (RGB), và 4 là hình ảnh có màu kết hợp với độ trong suốt.
Sau đó, là các con số được biểu diễn dưới dạng thập lục phân đại diện cho
màu sắccủa từng điểm ảnh. Ví dụ 0xFF là màu trắng trong hình ảnh một thành
phần và 0xFF00007F sẽ là màu đỏ nhạt trong hình ảnh bốn thành phần.
Các điểm được chỉ rõ theo thứ tự từ trái sang phải, từ trên xuống dưới.
Ví dụ: 1 2 1 0xFF 0x00 # Hình ảnh một thành phần gồm 2 điểm màu trắng
và đen.
SFInt32 & MFInt32
Giá trị kiểu số nguyên hoặc dãy các số nguyên 32 bit có thể theo dạng thập
phân hoặc thập lục phân. Các số thập lục phân 32 bit bắt đầu bằng “0x”, ví dụ
0xFF là 255 hệ thập phân.
SFNode & MFNode
SFNode là một nút đơn lẻ và MFNode là danh sách các nút. Trường
children với nhiều nút là kiểu MFNode.
SFRotation & MFRotation
Các trường này chỉ ra một phép quay xung quanh một trục, nó được tạo
nên từ 4 số thực, ba số thực đầu tiên chỉ rõ các toạ độ X, Y và Z cho các vectơ
10
tương ứng với trục để quay, số thứ tư là góc (tính bằng radian) để quay.
SFRotation là một tập, MFRotation là một danh sách các tập.
SFString & MFString
Loại này chứa danh sách các kí tự trong tập kí tự utf-8, Nói đơn giản thì
SFString là một xâu kí tự và MFString là tập các xâu kí tự. Ví dụ SFString là
“Hello” (các kí tự nằm trong dấu nháy kép) còn MFString thì tham số truyền
vào có dạng là [“Hello” “VRML”].
SFTime & MFTime
Kiểu dữ liệu đặc trưng cho một mốc thời gian hoặc danh sách các mốc thời
gian.
SFVec2f & MFVec2f
Các vectơ 2D đơn lẻ hoặc danh sách các vectơ 2D. Một vectơ 2D được tạo
bởi một cặp các số thực.
SFVec3f & MFVec3f
Một vectơ 3D hoặc một danh sách các vectơ 3D. Một vectơ 3D là một bộ 3
số thực.
2.6 Các phép biến đổi trong VRML
Một file VRML xây dựng các thành phần của thế giới ảo. Mặc định mọi hình ảnh
được xây dựng trong VRML đều được đặt ở tọa độ gốc. Biến đổi là tạo ra một hệ
thống hệ trục tọa độ mới mà hệ truc này có vị trí tương đối so với hệ tọa độ mặc
định. Có các phép biến đổi như: di chuyển, co giãn, xoay.
Hình 2.2 Trục XYZ với 1 hình cơ bản và 1 hình phức tạp
Nhóm Node Transform quản lý các phép biến đổi trong VRML như : dịch chuyển,
co dãn, xoay. Node transform gồm có các node con: translation, rotation, scale,
children.
2.6.1 Phép di chuyển ( Translation )
Ví dụ :
Transform {
11
translation 2.0 0.0 0.0
children [. . . ]
}
Tham số :
translation X Y Z
2.6.2 Phép xoay ( Rotation )
Ví dụ :
Transform {
rotation 0.0 0.0 1.0 0.52
children [. . . ]
}
Tham số :
rotation X Y Z Góc
Góc = radians = degrees / 180.0 * 3.141
Lưu ý: để dẽ dàng trong việc xoay đối tượng theo đúng chiều ta có quy tắc bàn tay
phải.
Hình 2.3 Quay theo trục X, Y, Z
Nắm bàn tay phải lại, choãi ngón cái ra theo như hình vẽ. Ngón tay cái chỉ phương
của trục quay thì chiều từ cổ tay đến các ngón tay chi chiều dương khi quay đối
tượng.
12
2.6.3 Scale : co dãn đối tượng
Ví dụ :
Transform {
scale 0.5 0.5 0.5
children [. . . ]
}
Tham số :
scale X Y Z
2.6.4 Children : Các đối tượng đước vẽ trong này sẽ chịu ảnh hưởng của các
phép biến đổi trong node Transform.
Vi dụ :
Transform {
translation -2.0 -1.0 0.0
children [
Shape {
appearance Appearance {
material Material { }
}
geometry Cylinder {
radius 0.3
height 6.0
top FALSE
}
}
]
13
}
Shape {
Geometry Box { size 1.0 1.0 1.0}
}
Như ví dụ trên thì hình trụ sẽ dịch chuyển so với tọa độ gốc theo trục X là -2.0 và
theo trục Y là -1.0, còn hinh hộp thì nằm tại tọa độ gốc
Các nút trong VRML
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: Các nút nhóm đặc biệt
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 : Các nút hình dáng
Interpolators Nodes: 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.
Giá 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{
14
diffuColor 1 0 0
Shininess 0
}
textture ImageTextTure{}
}
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 có 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...
Các nút appearance
Nút Shape có một trường dọi là appearance, được 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 rất khó khăn, nhưng cho phép bạn định
nghĩa các hình dạng do sử dụng DEF và USE. Điều này rất 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
texture. Trường material chứa nút Material, nút texture chứa một số loại nút kết
cấu. những điều này được miêu tả trong các phần tiếp theo.
15
Các nút materieal
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 đối tượng chiếu sáng
emissiveColor : đối tượng ‘glows’ với ánh sáng của nó từ sắc màu này, nó
không 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 xung quanh mà đối tượng được
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 browser không hỗ
trợ từng phần cho các đối tượng không rõ ràng.
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 muốn từ việc kết hợp các màu red,
green, blue. Các giá trị màu đơn lẻ nằm giữ 0, và 1 là đầy đủ, được chỉ rõ trong các
các phần mềm hiển thị giá trị màu và có thể chuyển chúng thành ngôn ngữ VRML.
Vì vậy, nếu muốn tạo hình khối bạn đầu, với màu xanh bán trong suốt, ta đị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 {}
}
16
Image Texture
Các màu sắc thú vị là rất tốt, nhưng để trông thực sự hấp dẫn, chúng phải có
sơ đồ kết cấu các vật cụ thể. Điều này được thực hiện qua trường texture của
Apprearance. Trường này chứ ba loại nút kết cấu, loại đầu tiên chúng ta xem xét là
ImageTexture, chúng ta có thể nạp các hình ảnh dạng JPEG hoặc PNG(định dạng
cho vật được tạo ra bởi VRML). Hai trường khác là repeatS và repeatT, thông báo
liệu kết cấu lặp lại theo chiều ngang S hay chiều dọc T, dẫn đến kiểu giá trị của
chúng là boolean (True or False). Chúng chỉ thực sự hiệu quả khi kết hợp với
TextureTransform.
appearance Appearance {
texture ImageTexture {
url "hoa.brick"
}
Movie Texture
MovieTexture nhận phim MPEG và kết cấu như ImageTexture. Nó có ba
trường giống ImageTexture, ngoài ra có một số trường:
speed: mặc định là 1, 2 là tốc độ chiếu tang 2 lần, giá trị 0 luôn hiểu thị ở cơ
cấu đầu tiên.
loop : nhận giá trị boolean, chỉ rõ phim lặp hay không.
startTime và stopTime: chỉ định thời gia bắt đầu và kết thúc phim.
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 VRM, chứa
trường image, bao gồm hai con số, chỉ rõ chiều rộng và chiều cao của kết cấu, tiếp
theo là con số chỉ rõ số lượng các thành phần. Thành phần màu sắc tỉ lệ xám, thành
phần này tỉ lê 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í dụ được chỉ ra dưới đây:
DEF PIXMAP Appearance {
17
texture PixelTexture {
image 2 2 3 0xFF0000 0x00FF00 0x0000FF 0xFF0000
}
}
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
height cc
Chỉ bán kính của hình trụ
Chỉ chiều cao của hình hộp
bottom TRUE/FALSE
top
TRUE/FALSE
(TRUE) hay không
Hai giá trị này để chỉ xem hình trụ có nắp
(FALSE) ở đáy(bottom), đỉnh(top) của hình trụ
18
}
Nút Cone:
Cone{
radius
Một giá trị thực chỉ bán kính đáy của hình nón
height
Môt giá trị thực chỉ chiều cao của hình hộp
}
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
Chỉ sự biến đối của đối tượng
Translation
chỉ các giá trị dịch chuyển theo các trục x, y,
Rotation
chỉ góc quay và trục quay
Children[]
các nút con chịu tác động của translation và
z
rotation
}
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{
19
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..
Text và font size
Nút sử dụng để tạo ra văn bản 2D. Text bao gồm 4 trường :
string : có thể định nghĩa chuỗi, hoặc danh sách các chuỗi có thể hiện thị.
fontStyle:
chứa
nút
FontStyle.
MaxExtent: chỉ rõ độ rộng lớn nhất của văn bản (đơn vị mét).
length: 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 với mỗi chuỗi. Nếu các length được định dạng, thì mặc định sẽ chỉnh lại
kích thước của văn bản để cho với với kích thước đó.
geometry Text {
string ["Hello", "World"]
fontStyle USE HELLOFONT
maxExtent 5
length [3, 3]
}
FontStyle phức tạp hơn, vì có những trường nhỏ giúp chúng ta có thể định
dạng văn bản gần như trong Word. Các trường định dạng như sau :
size: chiều cao văn bản theo (mét)
family: có thể nhận 3 giá trị để thay đổi loại bề mặt của font, bao gồm SERIF,
SANS và TYPEWRITER .
20
style: nhận các giá trị PLAIN, BOLD, ITALIC và BOLD ITALIC.
horizontal: nhận giá trị TRUE thì văn bản hiện theo chiều ngang, FALSE sẽ
theo chiều dọc.
leftToRight và topToBottom cũng nhận giá trị TRUE, FALSE và định dang
như horizontal.
Spacing: là khoảng cách giữa các dòng trong văn bản, 1 là bình thường, 2 là
gấp đôi (theo định dạng mặc định).
Còn các trường như language, justify cũng như family, chúng ta sẽ thực sự sử
dụng FontStyle hiệu quả nếu như bỏ qua các trường này, vì dễ gây nhầm lẫn.
Để hiểu rõ hơn về VRML và công cụ thực tại ảo, chúng ta sẽ đi vào mô hình
thực tại ảo “Tàu điện ngầm”.
Chương III. Mô phỏng tàu điện ngầm
Giới thiệu đề tài
Tên đề tài:
Mục đích:
Mục tiêu:
1.1 Yêu cầu đặt ra
1.
21