93376337-doantn-vrml

75
HC VIN CÔNG NGHBƢU CHÍNH VIỄN THÔNG KHOA CÔNG NGHTHÔNG TIN 1 ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài: “Tìm hiểu ngôn ngmô hình hóa thc ti o và xây dựng chƣơng trình mô phỏng” Giảng viên hƣớng dn : THS. TRNH THVÂN ANH Sinh viên thc hin : NGUYN VIT LINH Lp : D07HTT2 Khoá : 2007-2012 H: ĐẠI HC CHÍNH QUY Hà Ni, tháng 12 /2011

Upload: xuanthu-saigon

Post on 27-Nov-2015

52 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 93376337-DoAnTN-VRML

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

Page 2: 93376337-DoAnTN-VRML

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

Page 3: 93376337-DoAnTN-VRML

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

Page 4: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 5: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 6: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 7: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 8: 93376337-DoAnTN-VRML

ĐỒ Á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ứ

Page 9: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 10: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 11: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 12: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 13: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 14: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 15: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 16: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 17: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 18: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 19: 93376337-DoAnTN-VRML

ĐỒ Á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 :

Page 20: 93376337-DoAnTN-VRML

ĐỒ Á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…

Page 21: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 22: 93376337-DoAnTN-VRML

ĐỒ Á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 :

Page 23: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 24: 93376337-DoAnTN-VRML

ĐỒ Á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. . .

}

Page 25: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 26: 93376337-DoAnTN-VRML

ĐỒ Á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

}

Page 27: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 28: 93376337-DoAnTN-VRML

ĐỒ Á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ụ :

Page 29: 93376337-DoAnTN-VRML

ĐỒ Á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, )

}

Page 30: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 31: 93376337-DoAnTN-VRML

ĐỒ Á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ụ:

Page 32: 93376337-DoAnTN-VRML

ĐỒ Á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],(- , )

Page 33: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 34: 93376337-DoAnTN-VRML

ĐỒ Á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ụ:

Page 35: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 36: 93376337-DoAnTN-VRML

ĐỒ Á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ụ :

Page 37: 93376337-DoAnTN-VRML

ĐỒ Á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

}

Page 38: 93376337-DoAnTN-VRML

ĐỒ Á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

}

Page 39: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 40: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 41: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 42: 93376337-DoAnTN-VRML

ĐỒ Á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ụ:

Page 43: 93376337-DoAnTN-VRML

ĐỒ Á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ụ:

Page 44: 93376337-DoAnTN-VRML

ĐỒ Á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ự

Page 45: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 46: 93376337-DoAnTN-VRML

ĐỒ Á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

}

Page 47: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 48: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 49: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 50: 93376337-DoAnTN-VRML

ĐỒ Á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

}

Page 51: 93376337-DoAnTN-VRML

ĐỒ Á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

}

Page 52: 93376337-DoAnTN-VRML

ĐỒ Á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ụ :

Page 53: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 54: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 55: 93376337-DoAnTN-VRML

ĐỒ Á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.

Page 56: 93376337-DoAnTN-VRML

ĐỒ Á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ợ

Page 57: 93376337-DoAnTN-VRML

ĐỒ Á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)

Page 58: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 59: 93376337-DoAnTN-VRML

ĐỒ Á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ụ

Page 60: 93376337-DoAnTN-VRML

ĐỒ Á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"

Page 61: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 62: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 63: 93376337-DoAnTN-VRML

ĐỒ Á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}

Page 64: 93376337-DoAnTN-VRML

ĐỒ Á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ụ

Page 65: 93376337-DoAnTN-VRML

ĐỒ Á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

]

}

Page 66: 93376337-DoAnTN-VRML

ĐỒ Á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 :

Page 67: 93376337-DoAnTN-VRML

ĐỒ Á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 }

}

Page 68: 93376337-DoAnTN-VRML

ĐỒ Á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ị

Page 69: 93376337-DoAnTN-VRML

ĐỒ Á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ợ"}

Page 70: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 71: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 72: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 73: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 74: 93376337-DoAnTN-VRML

ĐỒ Á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

Page 75: 93376337-DoAnTN-VRML

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