93376337-doantn-vrml
TRANSCRIPT
HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề tài: “Tìm hiểu ngôn ngữ mô hình hóa thực tại ảo
và xây dựng chƣơng trình mô phỏng”
Giảng viên hƣớng dẫn : THS. TRỊNH THỊ VÂN ANH
Sinh viên thực hiện : NGUYỄN VIẾT LINH
Lớp : D07HTT2
Khoá : 2007-2012
Hệ : ĐẠI HỌC CHÍNH QUY
Hà Nội, tháng 12 /2011
NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
Ngày tháng năm 2011
Giáo viên hƣớng dẫn
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
……………………………….……………………………………………………..
Ngày tháng năm 2011
Giáo viên phản biện
ĐỒ ÁN TỐT NGHIỆP MỤC LỤC
MỤC LỤC
CHƢƠNG I : TỔNG QUAN VỀ THỰC TẠI ẢO .......................................................... 2
1.1. Khái niệm thực tại ảo ......................................................................................... 2
1.2. Một số ứng dụng quan trọng của thực tại ảo ..................................................... 2
1.1.1 Quân sự ....................................................................................................... 2
1.1.2 Giáo dục ...................................................................................................... 3
1.1.3 Y học ........................................................................................................... 4
1.1.4 Xây dựng ..................................................................................................... 4
CHƢƠNG II : TỔNG QUAN NGÔN NGỮ MÔ HÌNH THỰC TẠI ẢO VRML ......... 5
2.1. VRML là gì ? ..................................................................................................... 5
2.2. Lịch sử ra đời và phát triển của VRML ............................................................. 5
2.3. Các tính năng cơ bản của VRML ...................................................................... 7
2.3.1. Scene Graph Structure – C u tr c Scene Graph ......................................... 7
2.3.2. Event rchitecture – Kiến tr c sự kiện ....................................................... 7
2.3.3. Sensor – Cảm biến ...................................................................................... 7
2.3.4. Scripts và Interpolators ............................................................................... 8
2.3.5. Protyping : Encapsulation and Reuse – Đ ng g i và tái sử dụng ............... 8
2.3.6. Distributed Scenes – Ph n tán cảnh ............................................................ 8
2.4. Ứng dụng VRML trong thời đại hiện nay – X3D.............................................. 8
2.4.1. VRML và web 3d ........................................................................................ 8
2.4.2. X3D – phát triển của VRML ...................................................................... 9
CHƢƠNG III : TÌM HIỂU CHI TIẾT NGÔN NGỮ MÔ HÌNH THỰC TẠI ẢO
VRML............................................................................................................................ 11
3.1. Tập tin VRML ................................................................................................. 11
3.1.1. Làm việc với file VRML........................................................................... 11
3.1.2. C u trúc file VRML *.wrl ......................................................................... 11
3.1.3. Trƣờng ( field), eventIn, eventOut trong VRML ...................................... 12
3.1.4. Các kiểu dữ liệu trong VRML .................................................................. 12
3.1.3.1. SFBool ................................................................................................... 13
ĐỒ ÁN TỐT NGHIỆP MỤC LỤC
3.1.3.2. SFColor và MFColor : .......................................................................... 13
3.1.3.3. SFFloat và MFFloat .............................................................................. 13
3.1.3.4. SFInt32 và MFInt32 ............................................................................. 13
3.1.3.5. SFString và MFString ........................................................................... 13
3.1.3.8. SFTime và MFTime .............................................................................. 13
3.1.3.9. SFVec2f và MFVec2f ........................................................................... 14
3.1.3.10. SFVec3f và MFVec3f ........................................................................... 14
3.1.3.11. SFNode và MFNode ............................................................................. 14
3.1.5. C u trúc DEF/USE trong VRML .............................................................. 14
3.2. Các đối tƣợng hình học cơ bản ........................................................................ 15
3.3.1. Box – Hình hộp chữ nhật .......................................................................... 15
3.3.2. Sphere – Hình cầu ..................................................................................... 16
3.3.3. Cylinder – Hình trụ ................................................................................... 16
3.3.4. Cone – Hình nón ....................................................................................... 18
3.3.5. Text ........................................................................................................... 19
3.3. Các phép biến đổi trong VRML ...................................................................... 22
3.2.1. Translation – phép dịch ............................................................................. 23
3.2.2. Scale – phép tỷ lệ ...................................................................................... 23
3.2.3. Rotation – phép quay ................................................................................ 23
3.4. Một số loại node thƣờng dùng trong VRML ................................................... 23
3.4.1. Nhóm 1 – Nhóm node xây dựng thế giới ảo ............................................. 24
3.4.1.1. Shape .................................................................................................. 24
3.4.1.2. Geometry ............................................................................................ 25
3.4.1.3. Appearance ......................................................................................... 25
3.4.1.4. Material .............................................................................................. 26
3.4.1.5. Texture ............................................................................................... 27
3.4.1.6. ImageTexture ..................................................................................... 27
3.4.1.7. MovieTexture ..................................................................................... 28
3.4.1.8. IndexedFaceset ................................................................................... 30
ĐỒ ÁN TỐT NGHIỆP MỤC LỤC
3.4.1.9. BackGround ....................................................................................... 32
3.4.1.10. Viewpoint ........................................................................................... 33
3.4.1.11. PointLight ........................................................................................... 34
3.4.2. Nhóm 2 – Nhóm node mô tả tƣơng tác thế giới ảo với thế giới thực ....... 34
3.4.2.1. CylinderSensor ................................................................................... 35
3.4.2.2. SphereSensor ...................................................................................... 36
3.4.2.3. TouchSensor ....................................................................................... 37
3.4.2.4. TimeSensor ......................................................................................... 39
3.4.3. Nh m các node đặc biệt ............................................................................ 40
3.4.3.1. Anchor ................................................................................................ 40
3.4.3.2. Group .................................................................................................. 41
3.4.3.3. Switch ................................................................................................. 42
3.4.3.4. Transform ........................................................................................... 42
3.4.3.5. Inline ................................................................................................... 42
3.4.3.6. BillBoard ............................................................................................ 43
CHƢƠNG IV : ỨNG DỤNG VRML – VIẾT CHƢƠNG TRÌNH MÔ PHỎNG KHU
CHỢ ĐÊM ĐỒNG XUÂN ............................................................................................ 45
4.1. Phát biểu bài toán ............................................................................................. 45
4.2. Yêu cầu bái toán .............................................................................................. 45
4.2.1. Yêu cầu chính ............................................................................................ 45
4.2.2. Khảo sát : .................................................................................................. 46
4.2.2.1. Sơ đồ toàn cảnh khu vực chợ : ........................................................... 46
4.2.2.2. Cổng chợ ............................................................................................ 46
4.2.2.3. Khu vực sân kh u và mặt tiền chợ ..................................................... 47
4.2.2.4. Các gian hàng ..................................................................................... 48
4.3. Thiết kế khu chợ .............................................................................................. 48
4.3.1. Cổng chợ ................................................................................................... 49
4.3.2. Dãy nhà hai bên đƣờng ............................................................................. 51
4.3.3. Gian hàng .................................................................................................. 53
ĐỒ ÁN TỐT NGHIỆP MỤC LỤC
4.3.4. Mặt tiền chợ Đồng Xuân ........................................................................... 56
4.3.5. Sân kh u .................................................................................................... 57
4.4. V n đề di chuyển và quan sát trong khu chợ ................................................... 59
4.4.1. Di chuyển và quan sát trong khu chợ ........................................................ 59
4.4.2. Ánh sáng ................................................................................................... 60
4.5. Hình ảnh khu vực chợ mô phỏng ..................................................................... 61
4.4.1. Toàn cảnh nhìn từ trên xuống ................................................................... 61
4.4.2. Lối vào cổng chợ đêm ............................................................................... 61
4.4.3. Mặt tiền chợ Đồng Xuân và sân kh u ....................................................... 62
4.4.4. Dãy hàng nhìn từ sân kh u ........................................................................ 63
KẾT LUẬN ................................................................................................................... 64
TÀI LIỆU THAM KHẢO ............................................................................................. 65
ĐỒ ÁN TỐT NGHIỆP DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT
DANH MỤC CÁC THUẬT NGỮ VÀ TỪ VIẾT TẮT
Thuật ngữ,
từ viết tắt
Tên đầy đủ Ý nghĩa, giải thích
VR Virtual reality Thực tại ảo
VRML Virtual Reality Modeling
Language
Ngôn ngữ mô hình hóa thực tại
ảo
www Word wide web Mạng lƣới toàn cầu
HTML Hypertext Markup Language Ngôn ngữ đánh d u siêu văn bản
API Application Programming
Interface
Giao diện lập trình ứng dụng
Cắt 2 dòng đi chứ
ĐỒ ÁN TỐT NGHIỆP DANH MỤC HÌNH VẼ
DANH MỤC HÌNH VẼ
Hình 1.1 Binh lính học nhảy dù bằng thực tại ảo……………………………………..3
Hình 1.2 Lớp học ảo ………………………………………………………………….4
Hình 3.1 Giới thiệu wrl ……………………………………………………………...12
Hình 3.2 Ví dụ node Box …………………………………………………………...15
Hình 3.3 Ví dụ node Sphere ………………………………………………………...16
Hình 3.4 Hỉnh trụ trong VRML ……………………………………………………..17
Hình 3.5 Ví dụ node Cylinder ……………………………………………………….17
Hình 3.6 Hình nón trong VRML ……………………………………………………18
Hình 3.7 Ví dụ node Cone …………………………………………………………..19
Hình 3.8 Trƣờng maxExtent và length ……………………………………………...20
Hình 3.9 Trƣờng side và space ……………………………………………………...21
Hình 3.10 Ví dụ node Text …………………………………………………………...22
Hình 3.11 Ví dụ node Shape ………………………………………………………….25
Hình 3.12 Ví dụ node Material ……………………………………………………….27
Hình 3.13 Ví dụ node ImageTexture …………………………………………………28
Hình 3.14 Ví dụ node MovieTexture …………………………………………………29
Hình 3.15 Mặt phẳng trong VRML …………………………………………………..31
Hình 3.16 Ví dụ node IndexedFaceSet ……………………………………………….31
Hình 3.17 Ví dụ node BackGround …………………………………………………..33
Hình 3.18 Ví dụ node ViewPoint …………………………………………………….34
Hình 3.19 Ví dụ node CylinderSensor ……………………………………………….35
Hình 3.20 Ví dụ node TouchSensor ………………………………………………….37
Hình 3.21 Ví dụ node TimeSense ……………………………………………………39
Hình 3.22 Ví dụ node Anchor ………………………………………………………..40
Hình 3.23 Ví dụ node Inline ………………………………………………………….42
Hình 4.1 Sơ đồ toàn cảnh …………………………………………………………...44
Hình 4.2 Cổng chợ(ảnh chụp) ………………………………………………………45
Hình 4.3 Sân kh u và mặt tiền chợ( ảnh chụp) ……………………………………..45
Hình 4.4 Gian hàng( ảnh chụp) ……………………………………………………...46
ĐỒ ÁN TỐT NGHIỆP DANH MỤC HÌNH VẼ
Hình 4.5 Cột trụ ……………………………………………………………………...47
Hình 4.6 Khung lƣới …………………………………………………………………47
Hình 4.7 Dòng chữ ………………………………………………………………….48
Hình 4.8 Cổng chợ ………………………………………………………………….51
Hình 4.9 Tạo file wrl từ 3Ds Max …..………………………………………………52
Hình 4.10 Dãy nhà …………………………………………………………………...53
Hình 4.11 Cột trụ gian hàng…………………………………………………….…….54
Hình 4.12 Gian hàng …………………………………………………………………56
Hình 4.13 Mặt tiền chợ Đồng Xuân…….…………………………………………….57
Hình 4.14 Sân kh u ……………………………………………………….………….59
Hình 4.15 PointLight ………………………………………………………..……….60
Hình 4.16 Toàn cảnh mô hình………………………………………………..……….61
Hình 4.17 Lối vào cổng chợ…………………………………………………..………62
Hình 4.18 Mặt tiền và sân kh u…………………………………………..……….….62
Hình 4.19 Dãy hàng nhìn từ sân kh u ………………………………………...……..63
ĐỒ ÁN TỐT NGHIỆP LỜI MỞ ĐẦU
NGUYỄN VIẾT LINH 1
LỜI MỞ ĐẦU
Đồ họa máy tính luôn là một trong những lĩnh vực đƣợc quan tâm nh t trong
ngành công nghệ thông tin nói chung và khoa học máy tính nói riêng. Chúng ta có thể
bắt gặp nhiều ứng dụng của đồ họa máy tính trên nhiều lĩnh vực của đời sống nhƣ :
khoa học – y tế ( nghiên cứu, chuẩn đoán từ các hình ảnh mô phỏng ) , quân sự ( hu n
luyện trong môi trƣờng ảo), xây dựng – kiến trúc ( tạo không gian, mô hình ảo), giải trí
v.v…
Trong những ứng dụng y, 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 luôn là một v n đề lớn mà đồ họa máy tính hƣớng
tới giải quyết. Từ đ mà công nghệ “thực tại ảo” ra đời, 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.
Nội dung của đồ án đƣợc chia thành 4 chƣơng, cụ thể nhƣ sau :
Chƣơng I : Tổng quan về thực tại ảo : giới thiệu chung về thực tại ảo và ứng
dụng của thực tại ảo
Chƣơng II : Tổng quan ngôn ngữ mô hình hóa thực tại ảo VRML : giới
thiệu chung về VRML, lịch sử phát triển, các tính năng cơ bản, ứng dụng
Chƣơng III : Tìm hiểu chi tiết ngôn ngữ mô hình hóa thực tại ảo VRML :
giới thiệu về c u trúc các file VRML, cách xây dựng và hoạt động của các thành phần
trong VRML.
Chƣơng IV : Ứng dụng VRML – Viết chƣơng trình mô phỏng khu chợ đêm
Đồng Xuân
Do kiến thức hiểu biết cũng nhƣ kinh nghiệm của bản thân còn hạn chế nên đồ
án không tránh khỏi những thiếu sót. Em r t mong nhận đƣợc sự đ ng g p của quý
thầy cô để hoàn thiện thêm nội dung của đồ án.
Em xin chân thành cảm ơn cô giáo ThS. Trịnh Vân Anh đã hƣớng dẫn, cùng các
thầy giáo trong khoa Công Nghệ Thông Tin I, Học Viện Công Nghệ Bƣu Chính Viễn
Thông đã tận tình gi p đỡ em hoàn thành đồ án này.
Hà Nội, ngày … tháng … năm …
Sinh viên thực hiện
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ THỰC TẠI ẢO
NGUYỄN VIẾT LINH 2
CHƢƠNG I : TỔNG QUAN VỀ THỰC TẠI ẢO
1.1. Khái niệm thực tại ảo (cỡ chữ này có chuẩn không?)
Thực tại ảo ( Virtual reality – VR ) là thuật ngữ mô tả một môi trƣờng đƣợc tạo
mô phỏng bằng máy tính. Trong đ đồ họa máy tính đƣợc sử dụng để đảm báo yếu tố
“real”- “ nhƣ thật” của môi trƣờng này .
Có thể mô tả yếu tố “ nhƣ thật “ này tức là 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 ,v.v...
Có thể nói, VR- Thực Tế Ả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 ví dụ nhƣ thị
giác, thính giác, x c giác,v.v…
1.2. Một số ứng dụng quan trọng của thực tại ảo
Ngày nay,tại nhiều nƣớc phát triển, thực tại ảo đã và đang đƣợc ứng dụng trong
r t nhiều lĩnh vực : khoa học kỹ thuật, kiến tr c, qu n sự, giải trí,... và đáp ứng mọi
nhu cầu: nghiên cứu- giáo dục- thƣơng mại. Lĩnh vực ứng dụng mang lại nhiều hiệu
quả nh t của thực tại ảo đầu tiên phải kể đến là y học. Bên cạnh đ thực tại ảo cũng
đƣợc ứng dụng trong giáo dục, nghệ thuật, giải trí. Trong lĩnh vực qu n sự, thực tại ảo
cũng đƣợc ứng dụng r t nhiều ở các nƣớc phát triển. Bên cạnh các ứng dụng truyền
thống ở trên, cũng c một số ứng dụng mới nổi lên trong thời gian gần đ y của thực tại
ảo nhƣ: thực tại ảo ứng dụng trong sản xu t, thực tại ảo ứng dụng trong ngành rôbốt,
thực tại ảo ứng dụng trong hiển thị thông tin (thăm dò dầu mỏ, hiển thị thông tin
khối,....) thực tại ảo c tiềm năng ứng dụng vô cùng lớn. C thể n i t m lại một điều:
Mọi lĩnh vực "c thật " trong cuộc sống đều c thể ứng dụng "thực tế ảo" để nghiên
cứu và phát triển hoàn thiện hơn.
1.1.1 Quân sự
Với việc phát triển của thực tại ảo, các binh sĩ sẽ đƣợc hu n luyện 1 cách trực
quan nh t các kĩ năng c n thiết nhƣ : lái máy bay, lai xe tăng, . .. trƣớc khi tham gia
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ THỰC TẠI ẢO
NGUYỄN VIẾT LINH 3
công việc thực tế. Điều này vừa bảo đảm an toàn cho binh sĩ, vừa tiết kiệm đƣợc chi
phí cho các khoa hu n luyện thực tế. Lầu Năm G c đã từng đầu tƣ 36 triệu USD cho
việc một game đặc biệt nhằm hu n luyện binh sĩ trong qu n đội Mỹ chống lại khủng
bố dƣới dạng chiến thuật thực tế ảo.Với hệ thống trò chơi đặc biệt này, những binh sĩ
c thể tập luyện những bài tập của mình ngay tại nhà nhằm chống lại những tình huống
c thể phát sinh ra trong thực tế. Đ y sẽ là một game r t sống động, c tình hành động
cao với môi trƣờng và bối cảnh bám sát với thực tế. Những ngƣời lính sẽ phải vận
dụng t t cả những kỹ năng đã đƣợc rèn giũa trong qu n đội.
Hình 1.1 Binh lính học nhảy dù bằng thực tế ảo
1.1.2 Giáo dục
Ở các nƣớc phƣơng T y việc ở nhà học qua Internet không còn là điều mới mẻ
nữa. Và công nghệ thực tại ảo sẽ làm cho việc này trở nên th vị hơn r t nhiều. Giống
nhƣ một game MMORPG (game nhập vai trực tuyến nhiều ngƣời chơi) ,bạn điều
khiển 1 nh n vật đại diện cho bạn đi lại trong 1 trƣờng học ảo đƣợc x y dựng trên máy
tính. Bạn c thể tham gia vào b t cứ lớp học ảo nào mà bạn thích, n i chuyện với
những thành viên khác trong lớp.
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ THỰC TẠI ẢO
NGUYỄN VIẾT LINH 4
Hình 1.2. Lớp học ảo
1.1.3 Y học
Đ y là lĩnh vực mà thực tại ảo đem lại nhiều lợi ích thiết thực và cần thiết nh t
trong cuộc sống. Thực tại ảo giải quyết đƣợc r t nhiều v n đề trong y học: cung c p
môi trƣờng thực hành cho nghiên cứu và học tập, r t hữu ích trong việc mô phỏng các
ca phẫu thuật tránh g y rủi ro trong thực tế. Nhiều phƣơng pháp chuẩn đoán và chữa trị
trong y học đã đƣợc ra đời dựa trên các nghiên cứu trong môi trƣờng thực tại ảo.
1.1.4 Xây dựng
Xiệc thiết kế và x y dựng một ngôi nhà ngày nay đã đƣợc hỗ trợ r t nhiều bởi
công nghệ thực tại ảo. Kiến tr c sƣ không chỉ hoàn thiện các bản vẽ của mình trên gi y
theo ý tƣởng của khách hàng nữa mà c thể x y dựng hoàn toàn một không gian ngôi
nhà, công trình mà khách hàng mong muốn, thêm vào đ là các thao tác đi lại, quan sát
: “ sống thử “ trong không gian ảo đƣợc tao ra với sự hỗ trợ của công nghệ thực tại ảo.
Ngoài một số lĩnh vực quan trọng kể trên, thực tại ảo trong thời đại hiện nay
còn c mặt trong r t nhiều trong các lĩnh vực khác trong cuộc sống mà trong phạm vi
tài liệu này không thể kể hết đƣợc. Những điều này cho th y, thực tại ảo c ứng dụng
trong hầu hết các lĩnh vực của cuộc sống, từ đ cho th y ý nghĩa , đ ng g p quan trọng
mà thực tại ảo đem lại cho con ngƣời : nếu không c thực tại ảo, nhiều v n đề kh
khăn sẽ r t kh giải quyết đƣợc, hoặc c thể nhƣng với hiệu quả th p và chi phí tốn
kém hơn r t nhiều.
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 5
CHƢƠNG II : TỔNG QUAN NGÔN NGỮ MÔ HÌNH THỰC
TẠI ẢO VRML
2.1. VRML là gì ?
VRML (Virtual Reality Modeling Language) là ngôn ngữ mô hình h a thực tế
ả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ộ (local client). 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.
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ụ web3D.
2.2. Lịch sử ra đời và phát triển của VRML
Năm 1989, một dự án với tên gọi là Scenario đƣợc bắt đầu đƣợc triển khai tại
công ty Silicon Graphics (Hoa K ), do Rikk Carey và Paul Strauss thiết kế nhằm x y
dựng một cơ sở hạ tầng cho các ứng dụng đồ họa 3D c khả năng tƣơng tác với ngƣời
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 6
sử dụng. Hai mục tiêu ban đầu của dự án là x y dựng một môi trƣờng phát triển mới,
gi p tạo ra một loạt các tƣơng tác, các ứng dụng 3D ph n tán, và sử dụng chính môi
trƣờng này để x y dựng nên một loại giao diện desktop 3D mới. Giai đoạn đầu của dự
án tập trung vào thiết kế, x y dựng ngôn ngữ và cơ chế cho các khung (frame work)
nền tảng.
Năm 1992, sản phẩm đầu tiên của dự án – công cụ Iris Inventor 3D đƣợc phát
hành. Iris Inventor là một bộ công cụ C , nó đã chỉ ra đƣợc nhiều ngữ nghĩa của vẫn
dùng trong VRML ngày nay. Kết quả quan trọng của bộ công cụ này là đã định dạng
đƣợc các file đƣợc dùng để lƣu trữ các đối tƣợng ứng dụng. Ngay từ ban đầu, các định
dạng file Inventor đã đƣợc thiết kế để c dung lƣợng nhỏ và dễ sử dụng.
Tới năm 1994, phiên bản thứ hai của Iris Inventor đƣợc phát hành, và đƣợc gọi
là “Open Inventor” – bởi khả năng tƣơng thích trên r t nhiều nền tảng khác nhau và vì
n đƣợc dựa trên công nghệ OpenGL của Silicon Graphics. Gavin Bell đã nghiên cứu
và soạn ra các bản thảo đầu tiên gồm các tài liệu tham khảo, hƣớng dẫn sử dụng, mô tả
các đối tƣợng và định dạng file trong bộ công cụ Open Inventor. Từ đ VRML 1.0 ra
đời.
Trong năm 1994, Mark Pesce và Tony Parisi đã x y dựng một nguyên mẫu ban
đầu cho một trình duyệt 3D với World Wide Web (WWW) gọi là Labyrinth. Cuối năm
này , Mark và Brian Behlendorf đã tạo danh mục mail VRML, www - vrml, và đƣa ra
đề nghị về việc công nhận một chuẩn chính thức cho đồ họa 3D trên WWW. Garin
Bell đã nhận th y sự phù hợp giữa Open Inventor của ông với www – vrml, nên đã
nhanh ch ng đƣa ra ý tƣởng phát triển các yếu tố cơ bản của định dạng file Inventor
kết hợp với các tính năng WWW cần thiết. Trải qua một cuộc bầu chọn, phát minh
Inventor đã đƣợc chọn để xây dựng các tài liệu đặc tả kỹ thuật. Sau đ , Gavin, với sự
gi p đỡ của Tony và Rikk cùng một loạt các kỹ sƣ của Inventor, đã sửa đổi và hoàn
thiện bản dự thảo đầu tiên cho chuẩn VRML 1.0. Tháng 10 năm 1994, tại hội nghị
Quốc tế thứ 2 về World Wide Web đƣợc tổ chức tại Chicago (Hoa K ), đặc tả về
VRML 1.0 đƣợc ch p nhận.
Trong suốt nửa đầu năm 1995, VRML 1.0 đã trải qua một loạt các bản sửa đổi,
chú thích, làm rõ tuy nhiên chức năng thì không hề thay đổi. Tháng 8 năm 1995, c r t
nhiều tranh cãi về việc tạo ra bản VRML mới mang tên VRML 1.1 hoặc VRML 2.0.
Một số nhà nghiên cứu cho rằng VRML chỉ cần phát triển thêm một vài tính
năng,trong khi một số khác lại cho rằng VRML cần phải c sự tu sửa hoàn toàn.
Nhƣng t t cả họ đều đồng quan điểm chung là VRML 1.0 vẫn còn thiếu tính năng
chính (nhƣ hiệu ứng, tƣơng tác, hành vi), vậy nên việc x y dựng phiên bản mới cho
VRML là điều cần thiết. Các cuộc thảo luận, tranh cãi tiếp tục nổ ra từ suốt tháng 9 tới
tháng 12 mà không đem lại kết quả nào r ràng.
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 7
Tháng 1 năm 1996, ý tƣởng về một phiên bản VRML mới của Silicon Graphics
kết hợp với tập đoàn Sony và Mitra với một đặc tả kỹ thuật về VRML 2.0 đã nhận
đƣợc nhiều sự ủng hộ trên toàn thế giới. Tháng 8 năm 1996 tại SIGGR PH 96 ở New
Orleans, phiên bản đầu tiên của VRML 2.0 đƣợc công bố.
Tại một cuộc họp vào tháng 7 năm 1996 ở Tokyo, Tổ chức ISO (Internaltional
Standards Organization s) đã đồng ý công bố phiên bản VRML 2.0. Và tới tháng 4
năm 1997, VRML 2.0 chính thức đƣợc là một chuẩn 3D trên WWW.
2.3. Các tính năng cơ bản của VRML
2.3.1. Scene Graph Structure – C u tr c Scene Graph
VMRL mô tả các đối tƣợng 3D và thế giới ảo bằng cách sử dụng một đồ thị
cảnh ph n c p. Các đối tƣợng trong đồ thị Scene Graph đƣợc gọi là các node. VRML
2.0 định nghĩa 54 loại node khác nhau, bao gồm các hình khối cơ bản, các thuộc tính
appearance, m thanh, và các kiểu khác nhau của node Group. Node lƣu trữ dữ liệu
của n ở trong các trƣờng (fields), VRML 2.0 định nghĩa 20 loại trƣờng khác nhau.
VRML scene graph là một đồ thị phi chu trình. Các node c thể chứa các node
khác (một số loại node c thể chứa node con (children)) và c thể đƣợc chứa trong
nhiều node (mỗi node c thể c nhiều hơn một node cha (parent)), nhƣng một node
phải bao gồm chính n . C u tr c đồ thị scene graph này c tác dụng làm cho ngƣời lập
trình dễ dàng tạo ra một thế giới ảo bao gốm r t nhiều đối tƣợng và c các c u tr c
phức tạp.
2.3.2. Event Architecture – iến tr c sự iện
VRML 2.0 định nghĩa cơ chế sự kiện thông qua các node trong Scene Graph,
các sự kiện c thể giao tiếp đƣợc với nhau. Mỗi loại node xác định tên và loại của các
sự kiện mà các sự kiện đ c thể tạo ra hoặc nhận vào, và xác định tuyến (ROUTE) –
đƣờng dẫn sự kiện giữa các đối tƣợng phát (hay nhận) sự kiện.
2.3.3. Sensor – Cảm biến
Cảm biến (Sensor) là tƣơng tác cơ bản giữa ngƣời dùng và đối tƣợng 3D. Node
TimeSensor tạo ra các sự kiện (nhƣ thời gian trôi) và là cơ sở cho t t cả các hành vi
hoạt ảnh. Những cảm biến khác đều là cơ sở cho t t cả các tƣơng tác giữa ngƣời dùng
với thể giới, các cảm biến tạo ra các sự kiện với tƣ cách ngƣời xem, c khả năng di
chuyển thông qua thế giới, hay khi ngƣời dùng tƣơng tác với một số thiết bị đầu vào do
ngƣời lập trình định s n. Cảm biến chỉ tạo ra các sự kiện, n cần phải kết hợp với các
node khác thông qua node ROUTE để c hiệu lực – l c này sự kiện tƣơng tác cảm biến
đ mới c tác dụng.
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 8
2.3.4. Scripts v Interpo ators
Các node kịch bản (Scripts) c thể đƣợc chèn vào giữa các máy phát sự kiện
(đối tƣợng đƣợc đặt để tạo ra sự kiện) (ở đ y thƣờng gắn với cảm biến là các n t) và
máy thu sự kiện. Scipts cho phép ngƣời sáng tạo ra thế giới định nghĩa đƣợc các hành
vi – sự kiện b t k . VRML 2.0 quy định các ràng buộc node Script với ngôn ngữ java
hoặc javaScript.
Node Interpolators (ngƣời xen vào) đƣợc x y dựng trong Script để tính toán tạo
ra các hình ảnh động đơn giản. Interpolators thƣờng đƣợc kết hợp với một TimeSensor
và một số node trong Scene Graph để làm cho các đối tƣợng di chuyển.
2.3.5. Protyping : Encapsulation and Reuse – Đ ng g i v tái sử dụng
VRML 2.0 cung c p một cơ chế tạo mẫu cho đ ng g i và tái sử dụng một Scene
Graph (the PROTO statement). Các hình cơ bản, thuộc tính và hình ảnh động
( nimation) đều c thể đƣợc đ ng g i, đ ng g i riêng rẽ hoặc đ ng g i cùng nhau.
Protyping cho phép định nghĩa một loại node mới để kết hợp các node hiện tại, n làm
cho VRML dễ dàng sử dụng và c thể làm giảm kích thƣớc file VRML
2.3.6. Distributed Scenes – Phân tán cảnh
VRML 2.0 sử dụng node Inline cho phép file VRML c thể đƣợc lƣu trữ b t cứ
nơi nào trên mạng và the EXTERNPROTO statement cho phép định nghĩa node mới
đƣợc l y từ b t cứ đ u trên WWW. N i chung EXTERNPROTO cho phép các node
đƣợc định nghĩa bên ngoài file VRML và n là cơ chế cơ bản để mở rộng cho VRML.
2.4. Ứng dụng VRML trong thời đại hiện nay – X3D
2.4.1. VRML và web 3d
File VRML c thể tham chiếu tới các file ở nhiều định dạng khác nhau để phục
vụ cho việc “ảo h a” các yếu tố thực, ví dụ nhƣ : JPEG, PNG, GIF cho các yếu tố hình
ảnh, W V và MIDI cho các yếu tố m thanh trong thế giới , hay file MPEG cho yếu tố
hình động ( video). Ngoài ra, một file VRML c thể chứa code Java hoặc JavaScript,
các đoạn code Java hay JavaScript này đƣợc sử dụng để lập trình cho các đối tƣợng
trong VRML.
Từ các ƣu điểm vốn có của mình cùng với sự phát triển của nền tạng mạng
internet , VRML có thể đƣợc sử dụng để phục vụ cho việc xây dựng web 3 chiều –
web 3D. Kể từ khi ra đời cho đến nay, VRML đã đƣợc sử dụng để xây dựng , phát
triển các hình ảnh 3 chiều , xây dựng một thế giới ảo có khả năng tƣơng tác với ngƣời
dùng. VRML phù hợp với hầu hết các kết c u hạ tầng hiện c của Internet và word
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 9
wide web. VRML đƣợc kết hợp với HTML và Java để tạo ra những trải nghiệm trên
website mới và th vị cho ngƣời sử dụng.
C r t nhiều cách để kết hợp VRML, HTML và Java với nhau :
: Sử dụng chuẩn bán HTML, bằng
cách dùng EMBED hay OBJECT HTML tag.
: Đ y là một chuẩn không bắt buộc của VRML 2.0 . Sử dụng n t Script để soạn thảo
đoạn mã Java
y
Sử dụng một file HTML nhƣ một
texture map để hiển thị n bên trong thế giới 3D - VRML
Tƣơng tự, sử dụng java applet
nhƣ một texture map
2.4.2. X3D – phát triển của VRML
Mặc dù đã đƣợc sử dụng để xây dựng nhiều mô hình 3D để đem lại nhiều tiện
ích, trải nghiệm có giá trị cho ngƣời dùng. Tuy nhiên, tại thời điểm n ra đời, cơ sở hạ
tầng máy tính và mạng internet chƣa đủ đáp ứng đƣợc nhu cầu cho việc đƣa các ứng
dụng 3D đ lên môi trƣờng web một cách hoàn thiện. Mà theo Toni Parisi- một trong
những nhà đồng sáng lập nên VRML thì : “mọi thứ đều chƣa chín muồi: đƣờng truyền
không đủ lớn, máy tính không đủ nhanh, trình duyệt Web và hệ điều hành chƣa c đủ
tính năng để xây dựng 3D”.
Sau đ , trong những năm cuối thế kỷ 20 đầu thế kỷ 21 với sự phát triển mạnh
mẽ của máy tính cũng nhƣ nền tảng web, khả năng hiển thị và truyền tải 3D trở nên
mạnh mẽ hơn trƣớc r t nhiều. VRML khi đ đã c thể đáp ứng đƣợc nhu cầu của một
nền tảng xây dựng web 3D.
Tuy nhiên, VRML mới những nhƣợc điểm còn tồn tại lại chƣa thực sự phù hợp
với nền tảng mạnh mẽ hiện tại, do đ , một chuẩn đồ họa dụa trên nền tảng VRML đã
ra đời . Đ là X3D .
Là một phát triển của VRML, X3D đã khắc phục đƣợc các nhƣợc điểm nhƣ
kích thƣớc cồng kềnh, c u trúc phức tạp của VRML, nó cung c p một cơ sở hoàn thiện
hơn VRML, cho phép các nhà phát triển có thể mở rộng mà không làm vụn c u trúc
của bản vẽ kỹ thuật – lỗi thƣờng mắc phải trong VRML.
Đặc biệt, X3D là một nền tảng phù hợp để phát triển các ứng dụng web 3d bởi
khả năng tƣơng thích cao với XML hoặc các giao diên lập trình ứng dụng nâng cao
API. Ví dụ về một đoạn mã X3D :
ĐỒ ÁN TỐT NGHIỆP TỔNG QUAN VỀ NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 10
<?xml version = "1.0" encoding = "UTF-8"?>
<DOCTYPE X3D CÔNG "ISO / / Web3D / / DTD X3D 3,2 / / EN" "http://www.web3d.org/specifications/x3d-
3.2.dtd">
http://www.web3d.org/specifications/x3d-3.2.xsd ">
<Scene>
<Shape>
<IndexedFaceSet CoordIndex = "0 1 2">
<Coordinate point = "0 0 0 1 0 0 0,5 1 0" />
</ IndexedFaceSet>
</ Shape>
</ Scene>
</ X3D>
Ngoài ra, X3D còn mang một số ƣu điểm nội trội so với nền tảng của nó là
VRML nhƣ : tăng khả năng tƣơng tác giữa các đối tƣợng đồ họa , tạo ra khả năng kết
nối ứng dụng 3d với cơ sở dữ liệu cũng nhƣ các nguồn thông tin bên ngoài , v.v…
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 11
CHƢƠNG III : TÌM HIỂU CHI TIẾT NGÔN NGỮ MÔ HÌNH
THỰC TẠI ẢO VRML
3.1. Tập tin VRML
3.1.1. Làm việc với file VRML
Chúng ta có thể tạo một file VRML đơn giản bằng cách dùng một trình soạn
thảo văn bản nhƣ Notepad hay WordPad, rồi sau đ lƣu file với phần mở rộng wrl. Bên
cạnh đ , giúp cho việc soạn thảo code VRML hiệu quả hơn , còn c một số công cụ
khác nhƣ VrmlPad – đ y là công cụ sẽ đƣợc sử dụng để tạo các file VRML trong các
phần sau của tài liệu.( Download công cụ VrmlPad tại
http://www.parallelgraphics.com/products/vrmlpad/download/ )
Việc dịch và chạy một file *.wrl lại yêu cầu một bộ Player trợ giúp cho hiển thị
các đối tƣợng và hiệu ứng trong VRML . Trong nhiều bộ Player hỗ trợ VRML hiện
nay, em chọn sử dụng bộ Cortona 3D Viewer đƣợc cung c p miễn phí tại địa chỉ
http://www.cortona3d.com/Products/Cortona-3D-Viewer.aspx
Sau khi cài đặt bộ player trên, chúng ta có thể mở file .wrl với đầy đủ các đối
tƣợng và hiệu ứng VRML cùng các trình duyệt web nhƣ IE, FireFox,Chrome hoặc
build thông qua bộ debug trong VrmlPad .
3.1.2. C u trúc file VRML *.wrl
1 file VRML (*.wrl) có 3 thành phần cơ bản :
Tiêu đề (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.
Phần chú thích (comment) : bắt đầu bằng d u # và đƣợc chƣơng trình bỏ
qua khi dịch và chạy
Các node : hay còn gọi là các thẻ , là thành phần chính của một file VRML,
bao gồm các phần tổng quát sau:
o Loại node ( bắt buộc ) . Tên node phải viết hoa
o Các cặp d u đ ng mở ngoặc {…} ( bắt buộc phải có)
o Các trƣờng (field) : có thể có nhiều trƣờng trong một node, các node này
là tùy chọn, không bắt buộc. Thứ tự các trƣờng trong node không bắt buộc
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 12
o Các trƣờng gồm nhiều giá trị thì phải nằm trong các cặp […] , tên các
trƣờng luôn bắt đầu bằng chữ thƣờng
Hình 3.1 Giới thiệu file wrl
3.1.3. Trƣờng ( field), eventIn, eventOut trong VRML
Field : Trong một file VRML, các trƣờng đƣợc đặt trong các node và chúng xác
định trạng thái của các đối tƣợng trong thế giới ảo. Trạng thái của các đối tƣợng sẽ
không xác định nếu nhƣ một trƣờng trong cùng một node chứa nhiều giá trị khác nhau
. Ví dụ nhƣ khai báo Box { size 1 1 1 size 2 2 2} là không hợp lệ.
EventIn, eventOut : Các node trong VRML cũng c thể tƣơng tác với nhau
qua đ quy định đƣợc trạng thái của đối tƣợng mà chúng xây dựng thông qua các sự
kiện đƣợc quy định theo eventIn và eventOut : eventIn và eventOut định nghĩa các loại
và tên của các sự kiện mà mỗi loại node có thể nhận biết hoặc tạo ra. Các sự kiện này
có tính ch t tạm thời và giá trị của n không đƣợc ghi trong file VRML.
Quy tắc đặt tên trƣờng, eventIn, eventOut
T t cả các trên có chứa nhiều từ phải bắt đầu bằng chữ thƣờng , và ký tự đầu
tiên của mỗi từ sau đ phải viết hoa . Ví dụ : addChildren.
Tên của các eventIn sẽ chứa tiền tố “set_” trừ hai loại eventIn là
addChildren và removeChildren.
Tên của các eventOut sẽ chứa hậu tố “_changed” trừ ngoại lệ eventOut của
kiểu SFBool là bắt đầu vàng tiền tố “is”
Ngoài ra có một số eventIn và eventOut với kiểu SFTime không sử dụng
tiền tố hoặc hậu tố.
3.1.4. Các kiểu dữ liệu trong VRML
Việc xây dựng một đối tƣợng trong VRML đƣợc thực hiện thông qua các node
và thuộc tính của đối tƣợng đƣợc quy định thông qua giá trị của các trƣờng trong node.
Các trƣờng trong VRML lại có nhiều kiểu dữ liệu khác nhau :
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 13
3.1.3.1. SFBool
Là giá trị boolean đơn lẻ, nhận giá trị TRUE hoặc FALSE.
3.1.3.2. SFColor và 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á trị trong khoảng từ 0 đến 1, tƣơng ứng với các giá trị màu Red, Green, Blue.
Ví dụ 1 0 0 là màu đỏ, 0 1 0 là màu xanh lục.
MFColor là một trƣờng chứa nhiều giá trị. Ví dụ [1 0 0 , 0 1 0 , 0 0 1]
3.1.3.3. SFFloat và MFFloat
SFFloat là giá trị d u ch m động đơn lẻ, ví dụ : 1.1.
MFFloat là một số các giá trị d u ch m động, ví dụ [1.0, 2.0, 4.5].
3.1.3.4. SFInt32 và MFInt32
Các số nguyên đơn lẻ hoặc chuỗi 32bit có thể theo dạng thập phân hoặc hexa.
Các số hexa bắt đầu với 32 bit, ví dụ 0xFF là 255 hệ thập phân.
3.1.3.5. SFString và MFString
Chứa danh sách các ký tự trong tập ký tự utf-8.
Chuỗi SFString nhƣ “Đồ án tốt nghi p”, là một chuỗi ký tự trong d u nháy
kép.
Chuỗi danh sách MFString ví dụ nhƣ : [ “Đồ án”, “Khoa” ].
3.1.3.6. SFRotation và MFRotation
SFRotation là một bộ 4 giá trị định nghĩa phép quay tùy ý, 3 giá trị đầu quy
định giá trị quay theo các trục, còn giá trị cuối cùng quy định góc quay tính bằng
radian theo nguyên tắc quay “bàn tay phải “
MFRotation quy định một danh sách các phép quay tùy ý.
3.1.3.7. SFImage
Xác định một điểm ảnh – pixel – không nén 2 chiều
Giá trị pixel đƣợc giới hạn đến 256 mức cƣờng độ . Ví dụ 0-255 trong hệ thập
phân hoặc 0x00-0xFF trong hệ 16
3.1.3.8. SFTime và MFTime
Thời gian đơn lẻ hoặc một danh sách thời gian
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 14
3.1.3.9. SFVec2f và MFVec2f
Các vector đơn lẻ hoặc danh sách các vector 2D. Một vector 2D là một cặp các
số thực d u ch m động.
3.1.3.10. SFVec3f và MFVec3f
Các vector hoặc danh sách các vector 3D. Một vector 3D là một bộ 3 các số
thực d u ch m động.
3.1.3.11. SFNode và MFNode
SFNode là một node đơn lẻ. MFNode là danh sách các node. Ví dụ : Trƣờng
children với nhiều node là kiểu MFNode.
3.1.5. C u trúc DEF/USE trong VRML
Khi làm việc với các node trong VRML, chúng ta có thể sử dụng c u trúc
DEF/USE để định nghĩa một node với tên riêng và sử dụng lại chúng khi cần.
Cú pháp : DEF nodeName nodeType {fields}
USE nodeName
Trong đ :
nodeName là tên node do ngƣời sử dụng đặt ( tên này là duy nh t không
trùng nhau ).
nodeType là kiểu node.
Ví dụ :
Shape {
appearance Appearance {
material DEF RedColor Material {
diffuseColor 1 0 0 }
}
geometry. . .
}
Shape {
appearance Appearance {
material USE RedColor
}
geometry. . .
}
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 15
Việc sử dụng c u trúc này cho phép sử dụng lại các node phức tạp mà không
cần khai báo lại, tạo ra sự trong sáng, rành mạch và ngắn gọn cho chƣơng trình.
Chú ý : c u trúc USE không tạo ra bản sao của node, mà đƣa chính node đ
dùng lại trong chƣơng trình.
3.2. Các đối tƣợng hình học cơ bản
Thế giới ảo xây dựng từ các file VRMl đƣợc tạo nên từ các đối tƣợng hình học
cơ bản bao gồm : hình hộp, hình cầu, hình trụ, hình n n và văn bản. Các đối tƣợng này
đƣợc tạo ra trong node Shape với hai trƣờng appearance và geometry trong đ cụ
thể, geometry là trƣờng chỉ ra đối tƣợng đƣợc vẽ ( chúng ta sẽ tìm hiểu rõ hơn về node
Spahe trong phần sau của tài liệu).
3.3.1. Box – Hình hộp chữ nhật
Box {
field SFVec3f size 2 2 2 # (0, )
}
Hình hộp chữ nhật tạo ra từ node Box c t m tại tọa độ ( 0,0,0) và có kích
thƣớc đƣợc quy định qua trƣờng “size x y z” với x,y,z lần lƣợt là kích thƣớc hình hộp
theo các trục Ox, Oy, Oz trong hệ trục tọa độ Đê – các.
Nếu để mặc định size của hình hộp( không khai báo giá trị của trƣờng), thì hình
hộp c kích thƣớc mặc định từ -1 đến +1.
Ví dụ :
Hình 3.2. Ví dụ node Box
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 16
3.3.2. Sphere – Hình cầu
Sphere {
field SFFloat radius 1 # (0, )
}
Hình cầu đƣợc tạo ra từ node Sphere có tâm tại tọa độ (0,0,0) và có bán kính
đƣợc quy định qua trƣờng “radius”.
Giá trị trƣờng radius phải lớn hơn 0.0.
Ví dụ :
Hình 3.3 Ví dụ node Shpere
3.3.3. Cylinder – Hình trụ
Cylinder {
field SFBool bottom TRUE
field SFFloat height 2 # (0, )
field SFFloat radius 1 # (0, )
field SFBool side TRUE
field SFBool top TRUE
}
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 17
Hình trụ đƣợc tạo ra từ node Cylinder có tâm tại tọa độ (0,0,0) , có bán kính quy
định qua trƣờng radius và có chiều cao quy định qua trƣờng height.
Hình 3.4. Hình trụ trong VRML
Ba trƣờng còn lại trong node quy định sự tồn tại( nếu mang giá trị TRUE) hoặc
không tồn tại ( khi mang giá trị F LSE ): tƣơng ứng là mặt đáy trên – top, mặt đáy
dƣới – bottom ,và mặt bên – side.
Các mặt không tồn tại sẽ không đƣợc xét tới nếu toàn khối trụ tham gia vào các
sự kiện (ví dụ nhƣ phát hiện ra va chạm hoặc kích hoạt cảm biến).
Ví dụ :
Hình 3.5 Ví dụ node Cylinder
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 18
3.3.4. Cone – Hình nón
Cone {
field SFFloat bottomRadius 1 # (0, )
field SFFloat height 2 # (0, )
field SFBool side TRUE
field SFBool bottom TRUE
}
Hình n n đƣợc tạo ra từ node Cone có tâm tại (0,0,0) , có bán kính mặt đáy quy
định qua trƣờng bottomRadius và có chiều cao quy định qua trƣờng height.
Hình 3.6 Hình nón trong VRML
Hai trƣờng còn lại trong node quy định sự tồn tại( nếu mang giá trị TRUE) hoặc
không tồn tại ( khi mang giá trị F LSE ): mặt đáy – bottom ,và mặt bên – side.
Các mặt không tồn tại sẽ không đƣợc xét tới nếu toàn khối n n tham gia vào các
sự kiện (ví dụ nhƣ phát hiện ra va chạm hoặc kích hoạt cảm biến).
Ví dụ :
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 19
Hình 3.7 Ví dụ node Cone
3.3.5. Text
Text {
exposedField MFString string []
exposedField SFNode fontStyle NULL
exposedField MFFloat length [] # [0, )
exposedField SFFloat maxExtent 0.0 # [0, )
}
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 20
Chuỗi văn bản đƣợc tạo từ node Text sẽ đƣợc quy định trong trƣờng string,
chuỗi này đƣợc mã h a theo chuẩn mã h a utf-8.
Trƣờng length là một giá trị kiểu Float xác định độ dài mỗi chuỗi văn bản. Nếu
chuỗi quá ngắn, nó kéo dài (bằng cách thêm khoảng trắng vào giữa các ký tự). Nếu
chuỗi quá dài, n đƣợc nén bằng cách trừ đi khoảng không gian giữa các ký tự. Nếu
một giá trị chiều dài bị m t (ví dụ : nếu có 4 chuỗi nhƣng chỉ có 3 giá trị chiều dài), giá
trị bị m t đƣợc coi là 0. Trƣờng length nhận các giá trị >= 0.0.
Trƣờng maxExtent giới hạn và nén t t cả các chuỗi văn bản nếu chiều dài của
chuỗi tối đa dài hơn so với mức độ tối đa đƣợc xác định. Mức độ tối đa đƣợc đo theo
chiều ngang cho văn bản ngang, và theo chiều dọc cho văn bản dọc. Trƣờng
maxExtent nhận giá trị >= 0.0.
Hình 3.8. Trƣờng maxExtent và length
Trƣờng fontStyle
Đặc biệt ,trƣờng fontStyle có kiểu SFNode tức là nó sẽ chứa thêm các trƣờng
khác để quy định font, kiểu chữ của chuỗi văn bản gồm c : kích thƣớc, kiểu chữ, font
chữ,v.v… Cụ thể nhƣ sau:
FontStyle {
field MFString family ["SERIF"]
field SFBool horizontal TRUE
field MFString justify "BEGIN"
field SFString language ""
field SFBool leftToRight TRUE
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 21
field SFFloat size 1.0 # (0, )
field SFFloat spacing 1.0 # [0, )
field SFString style "PLAIN"
field SFBool topToBottom TRUE
}
Trƣờng family c thể mang các giá trị SERIF, S NS, TYPEWRITER quy định
nh m các font chữ đƣợc trình duyệt hỗ trợ . SERIF là nh m mặc định , là nh m kiểu
Times Roman, S NS là nh m c kiểu đại diện là Helvetica, còn TYPEWITER c kiểu
đại diện là Courier.
Trƣờng size quy định kích thƣớc của chữ.
Trƣờng spacing quy định khoảng các dòng giữa các dòng liền kề.
Hình 3.9 Trƣờng side và trƣờng space
Trƣờng style nhận giá trị kiểu String : “PL IN” (mặc định) đối với loại chữ
mặc định đơn giản, “BOLD” cho loại chữ in đậm, “IT LIC” cho loại nghiêng, hoặc
“BOLDIT LIC” cho loại cả in đậm và nghiêng. Nếu style là NULL thì kiểu chữ đƣợc
quy định ở dạng mặc định “PL IN”.
Trƣờng horizontal, leftToRight và topToBottom chỉ ra hƣớng của văn bản.
Trƣờng horizontal xác định phƣơng của văn bản theo chiều ngang (TRUE) hoặc dọc
(F LSE). Trƣờng leftToRight và topToBottom cho th y hƣớng tiến của văn bản
tƣơng ứng là từ trái qua hoặc từ phải sang.
Trƣờng language quy định bối cảnh sử dụng ngôn ngữ của chuỗi văn bản. Nó
có thể mang các giá trị là các từ khóa ngôn ngữ tiêu chuẩn ví dụ nhƣ “jp” là Nhật Bản,
“cn” là Trung Quốc. Nếu giá trị của nó là NULL, thì nó sẽ đƣợc gán cho ngôn ngữ mà
khu vực đ đang sử dụng ( ngôn ngữ của máy tính soạn thảo file VRML).
Ví dụ:
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 22
Hình 3.10 Ví dụ node Text
3.3. Các phép biến đổi trong VRML
Mặc định mọi đối tƣợng đƣợ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, quay, tỷ lệ(co
giãn).
Các phép biến đổi trong VRML đƣợc thực hiên trên các đối tƣợng thông qua
node Transform:
Transform {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField SFVec3f center 0 0 0 # (- , )
exposedField MFNode children []
exposedField SFRotation rotation 0 0 1 0#[-1,1],(- , )
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 23
exposedField SFVec3f scale 1 1 1 # (0, )
exposedField SFRotation scaleOrientation 0 0 1 0
# [- 1,1],(- , )
exposedField SFVec3f translation 0 0 0 # (- , )
field SFVec3f bboxCenter 0 0 0 # (- , )
field SFVec3f bboxSize -1 -1 -1# (0, )# or -1,-1,-1
}
Trong đ trƣờng children c kiểu MFNode sẽ chứa các nh m node là các nh m
đối tƣợng của phép biến đổi với center quy định t m quy chiếu hệ tọa độ của phép
biến đổi. Các phép biến đổi sẽ đƣợc thực hiện trên các đối tƣợng nằm trong trƣờng
node children.
Ch ng ta chỉ quan t m tới 3 trƣờng translation, scale, rotation là các trƣờng
thể hiện cho 3 phép biến đổi cơ bản sau đ y:
3.2.1. Translation – phép dịch
Là phép biến đổi tọa độ xác định của vật thể trong hệ tọa độ.
Cấu trúc: translation x y z
Trong đ x y z là tọa độ mong muốn di chuyển vật thể tới.
3.2.2. Scale – phép tỷ lệ
Là phép biến đổi kích thƣớc của vật thể theo ý muốn.
Cấu trúc: scale x y z
Trong đ x y z là tỷ lệ mong muốn thay đổi các chiều tƣơng ứng của vật thể:
Ox, Oy, Oz.
3.2.3. Rotation – phép quay
Là phép quay một vật thể quanh một trục .
Cấu trúc: rotate x y z t
Trong đ x y z là các giá trị các định trục quay và t là góc quay tính bằng
radian.
Đặc biệt : node Transform còn chứa một trƣờng scaleRotation cùng là một
phép biến đổi : nó mô tả một phép quay của đối tƣợng trƣớc khi thực hiện phép tỷ lệ.
Nó chỉ đƣợc sử dụng khi thực hiện phép tỷ lệ.
3.4. Một số loại node thƣờng dùng trong VRML
Việc xây dựng nên thế giới ảo bằng VRML đều đƣợc thông qua thao tác với các
node. VRML 2.0 gồm khoảng hơn 60 loại node khác nhau r t đa dạng và phức tạp.
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 24
Việc phân loại các node cũng c thể dựa trên nhiều cơ sở khác nhau ví dụ nhƣ dựa trên
c u trúc, dựa trên chức năng ,v.v…
Trong phạm vi tài liệu này, chúng ta sẽ xem xét phân loại các node theo chức
năng , nhiệm vụ của chúng. Có thể chia thành 2 nhóm chính sau:
Nhóm 1 : bao gồm các node có chức năng x y dựng hoặc hỗ trợ để dựng
nên các đối tƣợng hình ảnh và không gian.
Nhóm 2 : bao gồm các node có chức năng tạo ra tƣơng tác giữa thế giới
ảo và thế giới bên ngoài.
Ngoài ra còn một số node có chức năng đặc biệt là nh m các đối tƣợng đơn lẻ
thành các đối tƣợng phức tạp hơn, đ là các node nh m.
Vi c phân chia các nhóm node khác nhau này chỉ có tính chấ ươ đối : một
số loại node có thể có nhiều chức năng khác nhau thuộc các nhóm khác nhau .
3.4.1. Nhóm 1 – Nhóm node xây dựng thế giới ảo
Thế giới ảo trƣớc hết phải đƣợc xây dựng nên từ những đối tƣợng hình học cơ
bản nh t cùng với các thuộc tính của ch ng nhƣ màu sắc, bề mặt, ánh sáng, v.v…Tập
hợp các đối tƣợng đ sẽ đƣợc liên kết với nhau và tạo nên một thế giới hoàn chỉnh.
Các loại node sau sẽ có chức năng chủ yếu xây dựng nên các đối tƣợng đ và quy định
rõ các thuộc tính đặc trƣng của chúng.
3.4.1.1. Shape Shape {
exposedField SFNode appearance NULL
exposedField SFNode geometry NULL
}
Các đối tƣợng đƣợc tạo ra từ node Shape đều đƣợc hiển thị với các đặc tính
đƣợc quy định theo 2 trƣờng : geometry và appearance , chúng đƣợc sử dụng để tạo
các đối tƣợng và cho đối tƣợng xu t hiện.
Trƣờng appearance có chứa một node Appearance quy định cụ thể các thuộc
tính hình ảnh (ví dụ : material và texture) đƣợc áp dụng cho đối tƣợng Shape.
Trƣờng geometry có chứa một node Geometry. Nút này tạo ra các đối tƣợng sẽ
xu t hiện.
Nếu trƣờng geometry nhận giá trị NULL, thì đối tƣợng không xu t hiện.
Ví dụ:
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 25
Hình 3.11 Ví dụ node Shape
3.4.1.2. Geometry
Nhƣ đã n i ở phần 3.2, node Geometry sẽ bao gồm các node Box, Cone,
Cylinder, Sphere, Text tƣơng ứng với các đối tƣợng đƣợc tạo ra trong node Shape đ
là : hình hộp, hình nón, hình trụ, hình cầu, và văn bản.
Ngoài ra node Geometry còn chứa node IndexedLineSet và IndexedFaceSet
để tạo nên tƣơng ứng là đƣờng thẳng và mặt phẳng trong không gian.
3.4.1.3. Appearance
Appearance {
exposedField SFNode material NULL
exposedField SFNode texture NULL
exposedField SFNode textureTransform NULL
}
Các trƣờng trong node Appearance sẽ quy định cụ thể cách xu t hiện của các
đối tƣợng đƣợc tạo từ node Geometry – tức là chỉ ra các đặc tính trực quan của đối
tƣợng đ bao gồm : Material (vật liệu) và các node kết c u (texture). Giá trị của mỗi
trƣờng trong node này có thể nhận giá trị là NULL. Nếu trƣờng này không phải là
NULL thì phải có một node của loại thích hợp để xác định.
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 26
Trƣờng material – quy định đặc tính vật liệu bề mặt của đối tƣơng, nếu xác
định thì phải có một node Material. Nếu trƣờng material là NULL hoặc không xác
định thì ánh sáng và màu sách của đối tƣợng đƣợc mặc định là màu (1,1,1) (tƣơng ứng
trong hệ màu RGB).
Trƣờng texture – quy định đặc tính bề mặt mở rộng của đối tƣợng, nếu xác
định thì phải có một trong các loại khác nhau của node texture (ImageTexture,
MovieTexture, hoặc PixelTexture). Nếu trƣờng texture NULL hoặc không xác định
thì Node Apperance này không xu t hiện texture.
Trƣờng textureTransform nếu xác định thì phải có một node
TextureTransform. Trƣờng này mô tả những phép biến đổi đặc biệt cho các đối
tƣợng Texture kể trên .Nếu là NULL hoặc không xác định thì trƣờng
textureTransform không có tác dụng.
3.4.1.4. Material
Material {
exposedField SFFloat ambientIntensity 0.2 # [0,1]
exposedField SFColor diffuseColor 0.8 0.8 0.8 # [0,1]
exposedField SFColor emissiveColor 0 0 0 # [0,1]
exposedField SFFloat shininess 0.2 # [0,1]
exposedField SFColor specularColor 0 0 0 # [0,1]
exposedField SFFloat transparency 0 # [0,1]
}
Node Material quy định đặc tính vật liệu bề mặt cho các đối tƣợng hình học
liên quan. Đặc tính này bao gồm các thông số về màu sắc và ánh sáng.
diffuseColor : Màu sắc thông thƣờng của đối tƣợng.
specularColor và shininess : xác định màu sắc phản chiếu nổi bật của các đối
tƣợng ( ví dụ điểm sáng b ng trên quả táo đƣợc chiếu sáng).
emissiveColor : màu sắc của ánh sáng phát ra từ đối tƣợng.
transparency : xác định mức độ trong suốt của đối tƣợng. thay đổi trong
khoảng từ 0.0 – 1.0, 1.0 r nh t, 0.0 hoàn toàn mờ đục.
ambientIntensity : xác định hàm lƣợng ánh sáng mà đối tƣợng phản chiếu.
Ví dụ :
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 27
Hình 3.12 Ví dụ node Material
3.4.1.5. Texture
Node Texture – quy định đặc tính bề mặt mở rộng của đối tƣợng nếu xác định
thì phải có một trong các loại khác nhau của node texture (ImageTexture,
MovieTexture, hoặc PixelTexture). Nếu trƣờng texture NULL hoặc không xác định
thì Node Apperance này không xu t hiện texture.
Khi đƣa các node nhƣ ImageTexture, MovieTexture, PixelTexture vào sử
dụng để quy định bề mặt của đối tƣợng, node Texture sẽ thay thế cho node Material
để xác định đặc tính bề mặt cho đối tƣợng đ .
3.4.1.6. ImageTexture
ImageTexture {
exposedField MFString url []
field SFBool repeatS TRUE
field SFBool repeatT TRUE
}
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 28
Node ImageTexture quy định bề mặt của vật thể bằng cách xác định một file
hình ảnh gắn với một đối tƣợng đ . Node này cho phép “dán” lên đối tƣợng các bề mặt
từ các file hình ảnh c định dạng nhƣ GIF, PNG, JPEG theo đƣờng dẫn đƣợc đƣa ra
trong trƣờng url.
Ví dụ :
Hình 3.13 Ví dụ node ImageTexture
3.4.1.7. MovieTexture
MovieTexture {
exposedField SFBool loop FALSE
exposedField SFFloat speed 1.0 # (- , )
exposedField SFTime startTime 0 # (- , )
exposedField SFTime stopTime 0 # (- , )
exposedField MFString url []
field SFBool repeatS TRUE
field SFBool repeatT TRUE
eventOut SFTime duration_changed
eventOut SFBool isActive
}
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 29
Node MovieTexture tƣơng tự nhƣ ImageTexture cho phép gắn lên đối tƣợng
một bề mặt tuy nhiên bề mặt này lại thay đổi theo thời gian tức là một 1 file movie và
các thông số cho việc kiểm soát đoạn movie này thông qua file movie đƣợc chỉ ra
trong trƣờng url.
loop : cho biết có lặp lại movie sau khi nó chạy hết.
speed : tốc độ chạy file.
startTime và stopTime : thời gian bắt đầu và kết th c đoạn phim.
Chú ý :Một node MovieTexture cũng c thể đƣợc sử dụng là nguồn của dữ
liệu âm thanh cho một node âm thanh (Sound). Vì node MovieTexture khi sử dụng
trong node Texture sẽ không bao gồm m thanh do đ muốn sử dụng âm thanh trong
một file movie , chúng ta phải sử dụng node Sound với nguồn âm thanh là node
MovieTexture kể trên.
Ví dụ :
Hình 3.14 Ví dụ node MovieTexture
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 30
3.4.1.8. IndexedFaceset
IndexedFaceSet {
eventIn MFInt32 set_colorIndex
eventIn MFInt32 set_coordIndex
eventIn MFInt32 set_normalIndex
eventIn MFInt32 set_texCoordIndex
exposedField SFNode color NULL
exposedField SFNode coord NULL
exposedField SFNode normal NULL
exposedField SFNode texCoord NULL
field SFBool ccw TRUE
field MFInt32 colorIndex [] # [-1, )
field SFBool colorPerVertex TRUE
field SFBool convex TRUE
field MFInt32 coordIndex [] # [-1, )
field SFFloat creaseAngle 0 # [0, )
field MFInt32 normalIndex [] # [-1, )
field SFBool normalPerVertex TRUE
field SFBool solid TRUE
field MFInt32 texCoordIndex [] # [-1, )
}
Node IndexedFaceSet đƣợc sử dụng để xây dựng các bề mặt trong không gian
3 chiều.
Trƣờng coord chứa một node Coordinate xác định tập các điểm đƣợc dùng để
xây dựng các bề mặt. Số thứ tự của các điểm trong trƣờng Cordinate đƣợc tham chiếu
tới trƣờng coordIndex, số thứ tự tham chiếu này bắt đầu từ số 0. Node
IndexedFaceSet sử dụng các chỉ số trong trƣờng coordIndex để xác định các mặt
phẳng bằng cách xác định tọa độ của các đỉnh biên.Giá trị của trƣờng coordIndex “-1”
để nhận biết đ y đỉnh cuối cùng của đa giác.
Mỗi mặt IndexedFaceSet đều phải thoải mãn 3 điều kiện nếu muốn xác định là
- có ít nh t 3 đỉnh không trùng nhau.
- đỉnh xác định một đa giác phẳng.
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 31
- đỉnh xác định một đa giác không tự giao nhau
Hình 3.15 Mặt phẳng trong VRML
Ví dụ:
Hình 3.16 Ví dụ node IndexedFaceSet
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 32
3.4.1.9. BackGround
Background {
eventIn SFBool set_bind
exposedField MFFloat groundAngle [] # [0, /2]
exposedfield MFColor groundColor [] # [0,1]
exposedField MFString backUrl []
exposedField MFString bottomUrl []
exposedField MFString frontUrl []
exposedField MFString leftUrl []
exposedField MFString rightUrl []
exposedField MFString topUrl []
exposedField MFFloat skyAngle [] # [0, ]
exposedField MFColor skyColor [ 0 0 0 ] # [0,1]
eventOut SFBool isBound
}
Node Background sử dụng để xác định một khung cảnh màu sắc mô phỏng
“mặt đ t” và “bầu trời”, ở đ t t cả các đối tƣợng trong thế giới đều đƣợc đặt trƣớc
khung cảnh đ .
Trƣờng skyColor quy định màu sắc của bầu trời ở các g c độ khác nhau trên
mặt cầu bầu trời. Giá trị đầu tiên của trƣờng skyColor xác định màu sắc của bầu trời ở
0.0 radian (vị trí thằng lên từ ngƣời xem).
Trƣờng backUrl, bottomUrl, frontUrl, leftUrl, rightUrl và topUrl chỉ định
một tập các hình ảnh để xác định một bức tranh làm nền. Bức tranh toàn cảnh bao gồm
hình ảnh, mỗi một hình ảnh trong số đ ánh xạ vào một mặt của khối lập phƣơng vô
cùng lớn, có tâm chính tại vị trí ngƣời xem.
Ví dụ:
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 33
Hình 3.17 Ví dụ node BackGround
3.4.1.10. Viewpoint Viewpoint {
eventIn SFBool set_bind
exposedField SFFloat fieldOfView 0.785398 # (0, )
exposedField SFBool jump TRUE
exposedField SFRotation orientation 0 0 1 0 #[-1,1],(- , )
exposedField SFVec3f position 0 0 10 # (- , )
field SFString description ""
eventOut SFTime bindTime
eventOut SFBool isBound
}
Node Viewpoint xác định g c nhìn của ngƣời dùng đối với các đối tƣợng trong
không gian 3D. C thể c nhiều node Viewpoint trong một file VRML, mỗi Viewpoint
khác nhau tồn tại độc lập và đƣợc bộ 3D Cortona hỗ trợ chuyển đổi giữa các
Viewpoint trong quá trình trình chiếu.
Trong đ , position là vị trí điểm nhìn trong không gian 3 chiều.
orientation là g c quay của điểm nhìn so với điểm mặc định.
Nếu mặc định, thì điểm nhìn quy định qua hai trƣờng này sẽ là g c nhìn từ
chiều dƣơng của trục Z tới chiều m từ trục Z, chiều dƣơng của trục X sẽ nằm tay phải
và chiều dƣơng của trục Y sẽ là hƣớng thẳng đứng lên trên.
Ví dụ:
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 34
Hình 3.18 Ví dụ node Viewpoint
3.4.1.11. PointLight PointLight {
exposedField SFFloat ambientIntensity 0 # [0,1]
exposedField SFVec3f attenuation 1 0 0 # [0, )
exposedField SFColor color 1 1 1 # [0,1]
exposedField SFFloat intensity 1 # [0,1]
exposedField SFVec3f location 0 0 0 # (- , )
exposedField SFBool on TRUE
exposedField SFFloat radius 100 # [0, )
}
Node PointLight quy định một nguồn phát sáng đặt tại một trong không gian 3
chiều. Ánh sáng từ nguồn này phát ra theo t t cả các hƣớng.
Trƣờng location và radius quy định phạm vi ảnh hƣởng của nguồn sáng( tức là
phạm vi chiếu sáng của nguồn).
Trƣờng intensity, abientIntensity, color quy định các đặc tính của nguồn sáng
tƣơng ứng là cƣờng độ sáng , cƣờng độ sáng phản chiếu, màu sắc.
Trƣờng attenuation quy định mức độ suy giảm ánh sáng của nguồn sáng hay
còn gọi là hệ số suy giảm.
3.4.2. Nhóm 2 – Nhóm node mô tả tƣơng tác thế giới ảo với thế giới thực
Nh m node này còn đƣợc gọi là nhóm node cảm biết – sensor . Nhóm node này
cho phép ch ng ta định nghĩa đƣợc các tƣơng tác giữa ngƣời sử dụng với thế giới ảo .
Ví dụ nhƣ các thao tác cầm nắm , dịch chuyển đồ vật, các sự vật chuyển động biến đổi
theo thời gian ,v.v…
Các tƣơng tác này đƣợc thực hiện thông qua một bộ cảm biến . Bộ cảm biến này
hoạt động dựa trên các sự kiện đƣợc tạo ra hay đƣợc ghi nhận giữa các node , các sự
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 35
kiện sẽ làm thay đổi trạng thái của các đối tƣợng đƣợc tạo ra từ các node. Chính thay
đổi trạng thái này sẽ tạo ra đƣợc các hiệu ứng chuyển động hay các tƣơng tác từ ngƣời
dùng.
Có nhiều loại node cảm biến khác nhau, sau đ y là một số loại thƣờng đƣợc sử
dụng.
3.4.2.1. CylinderSensor
CylinderSensor {
exposedField SFBool autoOffset TRUE
exposedField SFFloat diskAngle 0.262 # (0, /2)
exposedField SFBool enabled TRUE
exposedField SFFloat maxAngle -1 # [-2 ,2 ]
exposedField SFFloat minAngle 0 # [-2 ,2 ]
exposedField SFFloat offset 0 # (- , )
eventOut SFBool isActive
eventOut SFRotation rotation_changed
eventOut SFVec3f trackPoint_changed
}
Node CylinderSensor cho phép một đối tƣợng chuyển động theo trục Y (thằng
đứng). Trƣờng enabled cho phép kích hoạt hoặc làm vô hiệu hóa node
CylinderSensor. Nếu là TRUE, cảm biến phản ứng thích hợp với các sự kiện của
ngƣời sử dụng. Nếu là FALSE, bộ cảm biến sẽ không theo dõi các sự kiện nhập vào
hoặc gửi.
Trƣờng maxAngle và minAngle xác định giá trị góc quay lớn nh t và nhỏ nh t
của đối tƣợng khi kích hoạt node CylinderSensor. Nếu maxAngle nhỏ hơn min ngle
thì góc quay không giới hạn.
Node CylinderSensor thƣờng đi với sự kiện nh n và giữ chuột. (isActive)
Ví dụ : Quay khối trụ quanh một trục
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 36
Hình 3.19 Ví dụ node CylinderSensor
3.4.2.2. SphereSensor
SphereSensor {
exposedField SFBool autoOffset TRUE
exposedField SFBool enabled TRUE
exposedField SFRotation offset 0 1 0 0 #[-1,1],(- , )
eventOut SFBool isActive
eventOut SFRotation rotation_changed
eventOut SFVec3f trackPoint_changed
}
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 37
Node SphereSensor cho phép một đối tƣợng chuyển động theo quỹ đạo hình
cầu (có tâm là gốc tọa độ). Node SphereSensor sử dụng các hình là hậu duệ của node
cha của n để xác định xem đối tƣợng nào chịu trách nhiệm tạo ra các sự kiện.
Trƣờng enabled xác định việc cho phép hoặc vô hiệu hóa node SphereSensor.
Nếu enable là TRUE cảm biến sẽ phản ứng thích hợp với các sự kiện của ngƣời sử
dụng. Nếu enable là FALSE, bộ cảm biến sẽ không theo dỗi ngƣời dùng nhập vào
hoặc gửi các sự kiện gì.
offset là trƣờng chứa giá trị góc quay bù.
Tƣơng tự nhƣ node CylinderSensor, node SphereSensor cũng thƣơng đi liền
với sự kiện nh n và giữ chuột (isActive).
3.4.2.3. TouchSensor
TouchSensor {
exposedField SFBool enabled TRUE
eventOut SFVec3f hitNormal_changed
eventOut SFVec3f hitPoint_changed
eventOut SFVec2f hitTexCoord_changed
eventOut SFBool isActive
eventOut SFBool isOver
eventOut SFTime touchTime
}
Node TouchSensor có khả năng theo d i vị trí và trạng thái của con trỏ chuột
khi ngƣời dùng sử dụng các thao tác với chuột. Node TouchSensor có thể đƣợc kích
hoạt hay vô hiệu hóa bằng các gửi đi một sự kiện kích hoạt nhận giá trị TRUE hay
FALSE. Nếu node TouchSensor bị vô hiệu h a, chƣơng trình sẽ không theo dõi các
thao tác của ngƣời dùng nữa (nhập vào hoặc gửi sự kiện).
Trƣờng isActive có khả năng nhận biết trạng thái nh n và giữ chuột vào một đối
tƣợng nào đ của ngƣời dùng.
Trƣờng isOver nhận biết trạng thái rê chuột qua đối tƣợng của ngƣời dùng.
Ví dụ: Click chuột để chạy đoạn video.
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 38
Hình 3.20 Ví dụ node TouchSensor
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 39
3.4.2.4. TimeSensor
TimeSensor {
exposedField SFTime cycleInterval 1 # (0, )
exposedField SFBool enabled TRUE
exposedField SFBool loop FALSE
exposedField SFTime startTime 0 # (- , )
exposedField SFTime stopTime 0 # (- , )
eventOut SFTime cycleTime
eventOut SFFloat fraction_changed
eventOut SFBool isActive
eventOut SFTime time
}
Node TimeSensor cho phép tạo ra các chuyển động phụ thuộc vào thời gian
bao gồm:
- Các hiệu ứng động, các mô phỏng tuần tự
- Các hoạt động c tính định k , ví dụ các hoạt động diễn ra theo mỗi phút
- Các hoạt động tự động khởi tạo giống nhƣ đồng hồ báo thức
Sự chuyển động tạo ra từ node TimeSensor đƣợc ghi nhận hoặc bỏ qua nếu giá
trị tƣơng ứng của trƣờng enabled là TRUE hoặc FALSE.
Tính lặp lại của chuyển động phụ thuộc vào giá trị TRUE hoặc FALSE của
trƣờng loop.
Trƣờng cycleInterval cho biết chu k của một chuyển động.
Ví dụ : hình hộp chuyển động quay
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 40
Hình 3.21 Ví dụ node TimeSensor
3.4.3. Nhóm các node đặc biệt
Ngoài hai nhóm node kể trên, trong VRML còn một nhóm node có nhiệm vụ
khác biệt so với hai nh m trên đ là : cho phép nh m các đối tƣợng đơn lẻ thành
những đối tƣợng phức tạp hơn.Loại node này đƣợc gọi là node nhóm.Việc một nhóm
này vào nhóm kia tọa thành một lƣợc đồ c u trúc các node. Đa số các node nhóm bao
gồm một trƣờng kiểu MFNode children chứa các node con.
Những node nh m này đƣợc sử dụng trong quá trình xây dựng thế giới ảo với
những chức năng khác nhau cho từng loại node nhóm.VRML cung c p những loại
node nhóm sau : anchor, group, switch, transform, billboard, inline.
3.4.3.1. Anchor
Anchor {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField MFNode children []
exposedField SFString description ""
exposedField MFString parameter []
exposedField MFString url []
field SFVec3f bboxCenter 0 0 0 # (- , )
field SFVec3f bboxSize -1 -1 -1 # (0, ) or -1,-1,-1
}
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 41
Node Anchor cho phép xác định một tập hợp các đối tƣợng c liên kết đến một
url, chẳng hạn nhƣ là một siêu liên kết đến thế giới VRML khác, đến một trang HTML
hoặc đến một dữ liệu nào đ mà toàn bộ trình duyệt c thể đọc đƣợc.
Node Anchor l y nội dung của URL khi ngƣời dùng kích hoạt (nh p chuột).
Nếu đƣờng dẫn URL hợp lệ, thế giới của URL sẽ thay thế thế giới ảo hiện tại. Node
ày à ạ đ ự s s
Trƣờng description đƣa ra x u ký tự mô tả cho đối tƣợng đƣợc đặt trong
Anchor khi ngƣời dùng rê chuột vào n .
Trƣờng bboxCenter xác định trung t m của một hình hộp chữ nhật mà n bao
quanh t t cả các node trong nh m. Giá trị của trƣờng này là một điểm trong không
gian.
Trƣờng bboxSize: xác định kích thƣớc của hình hộp chữ nhật bao quanh t t cả
các node trong nh m. Mặc định trƣờng này c giá trị -1 -1 -1 nghĩa là không c hình
hộp nào. T t cả các giá trị thành phần của trƣờng này là lớn hơn hoặc bằng 0.Nếu t t
cả các node con không nằm trong hình hộp thì kết quả không xác định.
Ví dụ :
Hình 3.21 Ví dụ node Anchor
3.4.3.2. Group Group {
eventIn MFNode addChildren
eventIn MFNode removeChildren
exposedField MFNode children []
field SFVec3f bboxCenter 0 0 0 #(- , )
field SFVec3f bboxSize -1 -1 -1 #(0, )# or -1,-1,-1
}
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 42
Node Group tạo ra một tập hợp các vật thể nhƣ là một thực thể đơn.
Giá trị các trƣờng trong node tƣơng tự nhƣ node Anchor đã trình bày ở trên.
Thao tác trên node Group tƣơng tự nhƣ thao tác trên một thực thể đơn bằng
cách sử dụng c u trúc DEF/USE
3.4.3.3. Switch Switch {
exposedField MFNode choice []
exposedField SFInt32 whichChoice -1 # [-1, )
}
Node Switch tạo ra bộ chuyển đổi tức là chỉ c một node con trong nh m đƣợc
hiển thị. Và node này là do ngƣời dùng lựa chọn.
Trƣờng choice đƣa ra danh sách các node đƣợc đánh số thứ tự lần lƣợt từ 0 và
tham chiếu tới giá trị trƣờng whichChoice, trƣờng này quy định không node nào hoặc
chỉ một node “đi qua đƣợc” node lựa chọn. Nếu whichChoice có giá trị là 0 hoặc lớn
hơn số node trong node choice, thì sẽ không node nào đƣợc đi qua.
3.4.3.4. Transform
Node Transform xác định hệ trục tọa độ mới cho các đối tƣợng trong cùng một
nh m. Node này đã đƣợc trình bày ở phần trên.
3.4.3.5. Inline
Inline {
exposedField MFString url []
field SFVec3f bboxCenter 0 0 0 # (- , )
field SFVec3f bboxSize -1 -1 -1 # (0, ) or -1,-1,-1
}
Node Inline đƣợc sử dụng trong việc kết nối các file VRML với nhau. Node
Inline cho phép gọi trực tiếp một đối tƣợng bên ngoài theo đƣờng dẫn từ trƣờng url
vào file hiện tại.
Ví dụ :
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 43
Hình 3.23 Ví dụ node Inline
3.4.3.6. BillBoard
Billboard {
eventIn MFNode addChildren
eventIn MFNode removeChildren
ĐỒ ÁN TỐT NGHIỆP TÌM HIỂU CHI TIẾT NGÔN NGỮ VRML
NGUYỄN VIẾT LINH 44
exposedField SFVec3f axisOfRotation 0 1 0 # (- , )
exposedField MFNode children []
field SFVec3f bboxCenter 0 0 0 # (- , )
field SFVec3f bboxSize -1 -1 -1 # (0, )
}
Node BillBoard tạo ra một nh m đối tƣợng với hệ tọa độ đặc biệt. Hệ tọa độ
này luôn đƣợc quay về đối diện với ngƣời dùng, tức là trục z của hệ trục tọa độ luôn
hƣớng về phía ngƣời nhìn.
Trƣờng axisOfRotation cho biết trục quay trong phép quay biến đổi hệ trục tọa
độ về hƣớng ngƣời nhìn.
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 45
CHƢƠNG IV : ỨNG DỤNG VRML – VIẾT CHƢƠNG
TRÌNH MÔ PHỎNG HU CHỢ ĐÊM ĐỒNG XUÂN
4.1. Phát biểu bài toán
Nƣớc Việt nam chúng ta có r t nhiều những di tích lịch sử , danh lam thắng
cảnh nổi tiếng, mà đi kèm với những di tích, danh lam đ là những nét đẹp văn h a đặc
trƣng của con ngƣời Việt Nam. Tuy nhiên cùng sự đổi mới mạnh mẽ của đát nƣớc, một
lối sống trong thời đại mới xu t hiện với những khác biệt lớn so với lối sống truyền
thống của con ngƣời Việt đã vô tình làm mai một đi những nét đẹp văn h a y. Đặc
biệt ở Hà Nội, thủ đô của nƣớc Việt Nam, là nơi khởi nguồn của nhiều hoạt động văn
h a đời sống tốt đẹp, tuy nhiên đ y cũng là nơi chịu ảnh hƣởng r t nhiều từ sự biến
động y. Công cuộc bảo tồn những di tích văn đ đ c ý nghĩa r t quan trọng đối với
việc giáo dục thế hệ trẻ : duy trì và phát triển những phong tục , lối sống tốt đẹp của
ngƣời Việt Nam
Với mong muốn góp phần nhỏ bé vào công cuộc bảo tồn y, tôi sẽ sử dụng
VRML làm công cụ để xây dựng khu chợ đêm Đồng Xuân để mọi ngƣời có thể
“sống “ trong một không gian văn h a truyền thống của ngƣời Hà Nội ngay trên máy
tính của mình. Đồng Xuân là một trong những chợ lớn và nổi tiếng nh t của Hà Nội và
từ năm 2003, Ủy ban Nhân dân thành phố Hà Nội đã mở một khu chợ đêm tại khu vực
xung quanh chợ Đồng Xuân với mong muốn duy trì một không gian văn h a đặc trƣng
cho đời sống của ngƣời Hà Nội. Các gian hàng trong khu chợ đêm bầy bán chủ yếu là
các sản phẩm thủ công mỹ nghệ truyền thống . Bên cạnh đ là các gian hàng ẩm thực
với nhiều m n ăn đặc sắc của Hà Nội. Đặc biệt, tại mặt tiền của chợ Đồng Xuân hàng
tuần sẽ mở sân kh u để biểu diễn nghệ thuật truyền thống, đặc biệt là ca trù và trèo cổ.
Khu chợ ảo đƣợc xây dựng từ VRML có thể đƣa lên một trang web cho phép
nhiều ngƣời truy cập và trải nghiệm, cũng g p phần vào phát triển du lịch cho Hà Nội
nói riêng và Việt Nam nói chung.
4.2. Yêu cầu bái toán
4.2.1. Yêu cầu chính
Yêu cầu chính của bài toán là xây dựng nên một khu chợ ảo mà ở đ ngƣời sử
dụng có thể :
Đi lại, di chuyển giữa các khu vực.
Xem hình ảnh và tìm hiểu thông tin về các mặt hàng đƣợc bày bán trong
các gian hàng.
Xem đƣợc các tiết mục nghệ thuật tại khu vực sân kh u.
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 46
4.2.2. Khảo sát :
Các gian hàng khu vực chợ đêm Đồng Xuân đƣợc dựng ngay trên con
phố Hàng Đƣờng và khu vực xung quanh chợ Đồng Xuân.
4.2.2.1. Sơ đồ toàn cảnh khu vực chợ :
Hình 4.1 Sơ đồ toàn cảnh
4.2.2.2. Cổng chợ
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 47
Hình 4.2 Cổng chợ( ảnh chụp)
4.2.2.3. Khu vực sân kh u và mặt tiền chợ
Hình 4.3 Sân kh u và mặt tiền( ảnh chụp)
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 48
4.2.2.4. Các gian hàng
Hình 4.4 Gian hàng( ảnh chụp)
4.3. Thiết kế khu chợ
Do toàn bộ khu vực chợ có không gian lớn và phức tạp, do đ khi dựng
với VRML chúng ta sẽ chia thành các khu vực khác nhau và dựng riêng biệt
tƣơng ứng là các file wrl khác nhau, sau đ dùng node Inline để ghép các phần
này lại.
Các khu vực cần dựng gồm :
1. Cổng chợ
2. Dãy nhà hai bên đƣờng
3. Gian hàng
4. Chợ Đồng Xuân ( mặt tiền )
5. Sân kh u
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 49
4.3.1. Cổng chợ
Từ tài liệu khảo sát, có thể chia cổng chợ thành 3 thành phần sau :
2 cột trụ
1 lƣới kẻ ô vuông
Dòng chữ “ CHỢ ĐÊM ĐỒNG XUÂN”
Chúng ta thực hiện dựng từng thành phần :
a) Dựng hình
2 cột trụ
Code:
Transform {
translation -170 0 0
children [
DEF cot Shape {
appearance Appearance {
material Material {
diffuseColor 0.3373 0.3373 0.3373
}
}
geometry Cylinder { radius 3.14 height 260}
}
]}
Transform {
translation 170 0 0
children [
USE cot
]}
Hình 4.5 Cột trụ
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 50
Khung lƣới
Hình 4.6 Khung lƣới
Dòng chữ
Code:
# Dòng chữ “ CHỢ ĐÊM”
Group { chidren [Shape {
appearance Appearance {
material DEF TEXT Material {
diffuseColor 0.3373 0.0549 0
ambientIntensity 1.0
specularColor 0 0 0
shininess 0.145
transparency 0
}
}
geometry Text {
string "CHỢ ĐÊM"
fontStyle FontStyle {
size 11.5 family “VNI-Ariston”
style “ITALIC”
}}
}]
}
#Dòng chữ ĐỒNG XUÂN
Transform{
translation 0 20 0
chidren [Shape {
appearance Appearance {
material USE TEXT
geometry Text {
string "ĐỒNG XUÂN"
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 51
fontStyle FontStyle {
size 8.66 family “.VN-avo”
style “BOLD”}}
}]
}
Hình 4.7 Dòng chữ
b) Kết quả hiển thị
Hình 4.8 Cổng chợ
4.3.2. Dãy nh hai bên đƣờng
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 52
Kết c u phía ngoài của các ngôi nhà r t phức tạp và đa dạng, số lƣợng ngôi nhà
cần dựng cũng lớn. Nếu sử dụng VRML để xây dựng sẽ tốn kém r t nhiều thời gian.
Do đ ở đ y, em sử dụng công cụ 3Ds Max để hỗ trợ cho việc dựng thành phần
này. Các đối tƣợng sẽ đƣợc vẽ một cách chi tiết bằng 3DS Max và chuyển sang ngôn
ngữ VRML ( chƣơng trình 3DS Max c hỗ trợ export sang đuôi .wrl ). L c này ta chỉ
cần đặt đoạn code này vào vị trí mong muốn thì hình ảnh về dãy nhà cần dựng sẽ hiện
lên
Hình 4.9 Tạo file wrl từ 3Ds Max
Kết quả sau khi export
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 53
Hình 4.10 Dãy nhà
4.3.3. Gian hàng
Kết c u của gian hàng đƣợc chia thành 4 phần
4 cột trụ
Mái
Màn hình : hiển thị hình ảnh về mặt hàng bày bán
Bục hàng : trên đ c một màn hình nhỏ trình chiếu thông tin chi tiết mặt
hàng
Trong đ sẽ có hiệu ứng sau :
Khi rê chuột vào màn hình, tên mặt hàng sẽ hiện ra
Khi click chuột vào màn hình này trang web giới thiệu về xu t xứ , quy
trình sản xu t ,v.v…của sản phẩm sẽ đƣợc hiển thị.
Chúng ta xây dựng từng thành phần và các hiệu ứng cụ thể nhƣ sau :
a) Dựng hình
4 cột trụ
DEF cotleu Group {children[
Transform {children[
Shape {
appearance DEF app1 Appearance {
material Material {
diffuseColor 0.3373 0.3373 0.3373 }
}
geometry Cylinder { radius 1.11 height 60}
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 54
}]}
Transform { translation 0 -30 0
children[
Shape {
geometry Box { size 3.14 1.2 3.14}
appearance USE app1
}]}
Transform { translation 0 -31.6 0
rotation 1 1 0 3.14
children[
Shape {
geometry Cylinder { radius 2 height 1}
appearance USE app1
}]}
]}
#Cot phai tren
Transform { translation 40 0 0
children [ USE cotleu]
}
#Cot trai duoi
Transform { translation 40 0 -40
children [ USE cotleu]
}
#Cot phai duoi
Transform { translation 0 0 -40
children [ USE cotleu]
}
Hình 4.11 Bốn cột trụ
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 55
Mái
Shape {
appearance Appearance {
material Material {
diffuseColor 0.8824 0.7765 0.3412 }
}
geometry Cone {
bottomRadius 82.68 height 59.06 }
}
Màn hình
DEF mh Shape {
appearance Appearance {
texture ImageTexture {url "BanhCom.jpg"}
textureTransform TextureTransform { rotation 3.14}
}
geometry IndexedFaceSet {
ccw TRUE
solid TRUE
coord DEF sp-COORD Coordinate { point [
-53.15 0 35.43 , -53.15 0 -35.43 , 53.15 0 -35.43, 53.15 0 35.43
]
}
coordIndex [ 1 2 3 4
]
}
Bục hàng
Shape {
appearance Appearance {
material Material {
diffuseColor 0.4745 0.3255 0.2275}
}
geometry Box { size 40 28 40 }
}
b) Hiệu ứng
Sử dụng node nchor để tạo ra hai hiệu ứng :
Anchor{
description "Banh Com - Dac san so 1 Ha Noi !"
url "htttp://banhcomhn.vn"
children [ USE mh
]
}
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 56
c) Kết quả hiển thị
Hình 4.12 Gian hàng
4.3.4. Mặt tiền chợ Đồng Xuân
Do kết c u mặt tiền chợ Đồng Xuân khá phức tạp, nếu sử dụng VRML thì quy
trình dựng sẽ phức tạp, hiệu quả lại không cao, do đ , ch ng ta sử dụng công cụ 3Ds
Max để dựng và xu t ra file wrl tƣơng tự nhƣ ở phần 4.3.2.
Sau đ y là kết quả thu đƣợc :
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 57
Hình 4.13 Mặt tiền chợ Đồng Xuân
4.3.5. Sân kh u
Phần sân kh u gồm 3 thành phần:
Một bục biểu diễn
Một màn hình
Các khối loa
Trong đ gồm các hiệu ứng :
Click vào màn hình, video “HatXam.mp4” sẽ chạy kèm theo nhạc phát
ra
Có thể click vào các khối loa để tắt âm thanh hoặc bật lại
a) Dựng hình
Bục biểu diễn
Shape {
appearance Appearance {
material Material {
diffuseColor 0.8784 0.3373 0.3373
}
}
geometry Box { size 393.7 0.1969 126 }
}
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 58
Màn hình
DEF manhinh Shape {
appearance Appearance {
texture DEF M1 MovieTexture {
url "HatXam.mp4"}
}
geometry Box {
size 393.7 0 126
}
}
b) Hiệu ứng
Sử dụng node TouchSensor để thể hiện hiệu ứng :
#Hiệu ứng bật video
Group{ children[
USE manhinh
DEF T1 TouchSensor {}
]}
ROUTE T1.touchTime TO M1.startTime
#Hiệu ứng tắt bật âm thanh
Group { children[
USE loa
Sound {
source M1}
DEF T2 TouchSensor {}
DEF T3 TouchSensor {}
]}
ROUTE T2.touchTime TO M1.startTime
ROUTE T3.touchTime TO M1.stopTime
c) Kết quả hiển thị
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 59
Hình 4.14 Sân kh u
4.4. V n đề di chuyển và quan sát trong khu chợ
4.4.1. Di chuyển và quan sát trong khu chợ
Chúng ta có thể di chuyển trong khu chợ ảo một cách dễ dàng và linh hoạt : có
thể tiến, lùi, quay trái,quay phải, tăng giảm tốc độ di chuyển,… nhờ vào hỗ trợ của bộ
player 3D Cortona Viewer .Từ đ ngƣời dùng có thể tự do xem các gian hàng cũng
nhƣ xem các tiếc mục ở khu vực sân kh u.
Tuy nhiên , vì khu vực chợ r t rộng, nên chúng ta có thể gặp kh khăn khi di
chuyển tới gian hàng hay sân kh u từ vị trí ban đầu. Do đ , ở đ y, em sử dụng thêm
node Viewpoint để quy định các góc nhìn tại các vị trí xu t phát mong muốn. Việc
chuyển đổi giữa các góc nhìn này sẽ cho phép ngƣời dùng chuyển nhanh đến các vị trí
muốn quan sát. Hai Viewpoint đƣợc đặt là :
DEF Cam1 Viewpoint {
position 515.2 165.6 45.26
orientation 0 -1 0.0007854 -3.142
fieldOfView 1.815
description "Camera tại vị trí sân khấu"
}
DEF Cam2 Viewpoint {
position -1090 85.82 232.7
orientation 0 -1 0 -4.712
fieldOfView 0.7363
description "Camera tại vị trí cổng chợ"}
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 60
Chú ý : Nên sử dụng công cụ 3Ds x để tạ các w để ă đ chính
xác và hi u quả cho các góc nhìn.
4.4.2. Ánh sáng
Một yếu tố quan trọng trong việc xây dựng thế giới ảo đ là ánh sáng. Ở đ y, để
tăng tính ch n thực trong việc quan sát các đối tƣợng, em sử dụng node PointLight để
quy định nguồn phát sáng tại một số điểm.
Hai PointLight đƣợc đặt là :
DEF PL1 PointLight {
intensity 30
color 1 1 0.9843
location -675.3 198.5 156.9
on TRUE
radius 5751
}
DEF PL2 PointLight {
intensity 30
color 1 1 0.9843
location 732.5 198.5 156.9
on TRUE
radius 5751
}
Hình 4.15 PointLight
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 61
4.5. Hình ảnh khu vực chợ mô phỏng
4.4.1. Toàn cảnh nhìn từ trên xuống
Hình 4.16 Toàn cảnh mô hình
4.4.2. Lối vào cổng chợ đêm
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 62
Hình 4.17 Lối vào cổng chợ
4.4.3. Mặt tiền chợ Đồng Xuân và sân kh u
Hình 4.18 Mặt tiền và sân kh u
ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG CHƢƠNG TRÌNH MÔ PHỎNG
NGUYỄN VIẾT LINH 63
4.4.4. Dãy hàng nhìn từ sân kh u
Hình 4.19 Dãy hàng nhìn từ sân kh u
ĐỒ ÁN TỐT NGHIỆP KẾT LUẬN
NGUYỄN VIẾT LINH 64
KẾT LUẬN
Kết quả đạt đƣợc
Sau quá trình nghiên cứu, tìm hiểu và ứng dụng, đồ án đã thu đƣợc những kết
quả sau:
Nắm bắt về công nghệ thực tại ảo: khái niệm, ứng dụng
Nắm bắt đƣợc cách thức làm việc với ngôn ngữ VRML, nắm bắt các cú pháp
và quy tắc hoạt động của các node thông dụng trong VRML
Xây dựng đƣợc chƣơng trình mô phỏng khu chợ đêm Đồng Xuân nhìn chung
mô phỏng lại đƣợc cảnh quan tổng thể, giới thiệu đƣợc các mặt hàng nổi bật của khu
chợ, mô phỏng đƣợc khu vực sân kh u với các hoạt động văn nghệ truyền thống.
Tuy nhiên còn một số hạn chế thiếu sót :
Chƣa nắm bắt đƣợc toàn bộ những đặc điểm và cơ chế hoạt động của một số
node trong VRML
Do hạn chế về kiến thức về màu sắc và ánh sáng trong đồ họa, do đ hai yếu
tố này trong chƣơng trình mô phỏng chƣa thật sự gây n tƣợng, có một số chi tiết sai
khác nhiều so với thực tế.
Đối tƣợng con ngƣời trong khu chợ còn “cứng”, tính tƣơng tác không cao,
hạn chế tới việc xây dựng không khí thực trong môi trƣờng ảo
Hƣớng phát triển
Hoàn thiện các yếu tố màu sắc, ánh sáng, con ngƣời trong chƣơng trình mô
phỏng, bổ sung thêm một số hiệu ứng về chuyển động để tăng tính giá trị thẩm mỹ và
sing động.
Triển khai chƣơng trình trên các website quảng bá và du lịch
Phát triển chƣơng trình mô phỏng với quy mô lớn hơn:
o Xây dựng thêm phần mô phỏng toàn bộ phía trong chợ Đồng Xuân
o Xây dựng mở rộng sang mô phỏng toàn bộ khu phố cổ
o Đƣa toàn bộ chƣơng trình mô phỏng vào thƣ viện các di tích lịch sử số,
lƣu trữ và upload lên các website về du lịch
TÀI LIỆU THAM HẢO
[1]” ỹ thuật đồ hoạ”, ấ ù , ỳ Q y ắ , Nhà xu t bản Khoa học
và Kỹ thuật – 2004
[2]“The Annotated VRML 97 Reference”, Rikk Carey, Gavil Bell, 1999
[3]”VRML Primer and Tutorial”, Daniel K. Schneider, Sylvere Martin-Michiellot,
University of Geneva, 1998
Danh sách địa chỉ website tham khảo :
http://vrmlworks.crispen.org/models.html
http://www.lighthouse3d.com/vrml/tutorial/
http://www.ocnus.com/models/
http://www.wiley.com/legacy/compbooks/vrml2sbk/toc/toc.htm