Cũng như nhiều ngành công nghệ khác, công nghệ thực tại ảo đang thực sự phát triển ứng dụng rộng rãi trong những năm gần đây nhờ vào sự phát triển của tin học và máy tính. Ngày nay thực tại ảo đã trở thành một ngành công nghiệp và thị trường thực tại ảo tăng trưởng hang năm khoảng 21%. Công nghệ thực tại ảo được ứng dụng trong nhiều lĩnh vực như khoa học kĩ thuật, quân sự, kiến trúc, giải trí,….Với sự hướng dẫn của thầy giáo Vũ Đức Huy và những gì học được nhóm chúng em chọn đề tài mô phỏng tòa nhà A10 của trường Đại học Công nghiệp Hà Nội trong bài tập lớn môn Công nghệ thực tại ảo. Đề tài này sẽ mô phỏng về hình dáng bên ngoài, các vật dụng, các chi tiết bên trong tòa nhà,…Mặc dù đã cố gắng tìm hiểu, hoàn thành đầy đủ yêu cầu của bài tập lớn song không tránh khỏi những sai sót, khuyết điểm, nhóm chúng em mong nhận được những góp ý của thầy giáo và của tất cả các bạn để chúng em làm tốt hơn.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
Khoa công nghệ thông tin
Bài tập lớn môn Công nghệ thực tại ảo
Đề tài: mô phỏng tòa nhà A10 trường Đại học Công nghiệp Hà Nội
Giảng viên hướng dẫn: ThS Vũ Đức Huy
Lớp: KTPM2 – K7
Nhóm 9:
Vũ Đình HoanDương Văn ThịnhNguyễn Hữu Trượng
Hà Nội - 2015
Trang 2Lời nói đầu
Cũng như nhiều ngành công nghệ khác, công nghệ thực tại ảo đang thực sự pháttriển ứng dụng rộng rãi trong những năm gần đây nhờ vào sự phát triển của tin học vàmáy tính Ngày nay thực tại ảo đã trở thành một ngành công nghiệp và thị trường thựctại ảo tăng trưởng hang năm khoảng 21% Công nghệ thực tại ảo được ứng dụng trongnhiều lĩnh vực như khoa học kĩ thuật, quân sự, kiến trúc, giải trí,…
Với sự hướng dẫn của thầy giáo Vũ Đức Huy và những gì học được nhóm chúng
em chọn đề tài mô phỏng tòa nhà A10 của trường Đại học Công nghiệp Hà Nội trongbài tập lớn môn Công nghệ thực tại ảo Đề tài này sẽ mô phỏng về hình dáng bênngoài, các vật dụng, các chi tiết bên trong tòa nhà,…
Mặc dù đã cố gắng tìm hiểu, hoàn thành đầy đủ yêu cầu của bài tập lớn songkhông tránh khỏi những sai sót, khuyết điểm, nhóm chúng em mong nhận được nhữnggóp ý của thầy giáo và của tất cả các bạn để chúng em làm tốt hơn
Chúng em xin chân thành cảm ơn!
Trang 3Mục lục
Chương 1: Giới thiệu về thực tại ảo 4
1 Khái niệm 4
2 Lịch sử phát triển 4
3 Một số ứng dụng chính 4
Chương 2: Công cụ VRML 5
1 Định nghĩa 5
2 Lịch sử ra đời và phát triển 5
3 Đặc điểm cơ bản 6
4 Các vấn đề cơ bản của VRML 6
5 Các thành phần cơ bản trong VRML 8
Chương 3: Mô phỏng tòa nhà A10 21
1 Giới thiệu về đề tài 21
2 Phân tích thiết kế hệ thống 21
3 Hình ảnh các phần chính 22
Chương 4: Kết luận 26
Tài liệu tham khảo 27
Trang 4Chương 1: Giới thiệu về thực tại ảo
1 Khái niệm
Thực tế ảo là thuật ngữ miêu tả một môi trường mô phỏng bằng máy tính Đaphần các môi trường thực tại ảo chủ yếu là hình ảnh hiển thị trên màn hình máytính hay thông qua kính nhìn ba chiều
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áytính Hệ thống này mô phỏng các sự vật hiện tượng theo thời gian thực và tươngtác với người sử dụng qua tổng hợp các kênh cảm giác
2 Lịch sử phát triển
Ngay từ năm 1962 Morton Heilig( Mỹ) đã phát minh ra thiết bị mô phỏngSENSORAMA Tuy nhiên cũng như nhiều ngành công nghệ khác thực tế ảo chỉthực sự phát triển ứng dụng rộng rãi trong những năm gần đây nhờ vào sự pháttriển của tin học và máy tính Ngày nay thực tế ảo đã trở thành một ngành côngnghiệp và thị trường thực tế ảo tăng trưởng hàng năm khoảng 21% và ước tínhđạt khoảng 3.4 tỷ đô la năm 2005
3 Một số ứng dụng chính
Thực tế ảo được ứng dụng trong mọi lĩnh vực: khoa học kĩ thuật, kiến trúc,quân sự, giải trí, du lịch, địa ốc,… đáp ứng mọi nhu cầu nghiên cứu – giáo dục-thương mại- dịch vụ
Y học, du lịch là lĩnh vực ứng dụng truyền thống của thực tế ảo Bên cạnh
đó thực tế ảo cũng được ứng dụng trong giáo dục nghệ thuật, giải trí, du lịch ảo,bất động sản Trong quân sự, thực tế ảo cũng được ứng dụng rất nhiều ở cácnước phát triển Gần đây cũng có một số ứng dụng mới nổi lên trong thời giangần đây như: ứng dụng trong sản xuất, ứng dụng trong ngành robot, ứng dụnghiển thị thông tin
Trang 5Chương 2: Công cụ VRML
1 Định nghĩa
VRML (Virtual Reality Modeling Language) là ngôn ngữ mô hình hóa thựctại ảo, một định dạng tập tin được sử dụng trong việc mô tả thế giới thực và cácđối tượng đồ họa tương tác ba chiều, sử dụng mô hình phân cấp trong việc thểhiện tương tác với các đối tượng của mô hình, được thiết kế dùng trong môitrường Internet, Intranet và các hệ thống máy khách cục bộ (local client) màkhông phụ thuộc vào hệ điều hành
Các ứng dụng 3D của VRML có thể truyền đi một cách dễ dàng trên mạngvớ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ếu HTML là định dạng văn bản thì VRML là định dạng đối tượng 3D
có thể tương tác và điều khiển thế giới ảo
Hiện nay, VRML có lợi thế là sự đơn giản, hỗ trợ dịch vụ Web3D, có cấutrúc chặt chẽ, với khả năng mạnh mẽ, giúp cho việc xây dựng các ứng dụng đồhọa ba chiều một cách nhanh chóng và chân thực nhất
VRML là một trong những chuẩn trao đổi đa năng cho đồ họa ba chiều tíchhợp và truyền thông đa phương tiện, được sử dụng trong rất nhiều lĩnh vực ứngdụ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ìnhdiễ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ới mục đích xây dựng định dạng chuẩn cho phép mô tả thế giới thực trên máytính và cho phép chạy trên môi trường web, VRML đã trở thành chuẩn ISO từnăm 1997
Trang 6Sau phiên họp BOF một thời gian ngắn thì tổ chức WWW-VRML đượcthành lập để tập trung vào xây dựng phiên bản VRML đầu tiên
Vào tháng 3/ 1995, Công ty Silicon Graphics cộng tác với hãng SonyResearch và Mitra để đưa ra phiên bản mới cho VRML Bản đệ trình củaSilicon Graphics có tên là “Moving Worlds” gửi đến tổ chức Request forProposals cho việc xây dựng phiên bản mới VRML, bản đệ trình này là mộtminh chứng cho sự cộng tác thành công của tất cả các thành viên của SiliconGraphics, Sony và Mitra Năm 1996 tại New Orleans, phiên bản đầu tiên củaVRML 2.0 được đưa ra
Vào tháng 7/1996, tổ chức tiêu chuẩn quốc tế (ISO) đã thống nhất ý kiếnlấy phiên bản năm 1996 của VRML 2.0 để đưa ra xem xét vào tháng 4/1997.Sau khi bỏ phiếu về chuẩn ISO thì VRML97 được đưa ra như một chuẩn ISOvào năm 1997
Trình duyệt VRML cũng giống như trình duyệt Internet (Internet Explorer hay
Fire Fox) và được tích hợp trong các trình duyệt này
Bộ soạn thảo VRML cho phép người dùng gõ mã VRML Hiện nay có nhiều bộsoạn thảo nhưng VRML Pad là khá thông dụng khi có thể cho xem trực tiếp kết
quả mà không cần qua trình duyệt Internet
Trang 74.2 Công cụ hiển thị VRML
Để hiển thị các file VRML thì ta sử dụng chương trình Cortona VRML Clientcủa hãng Parallrl Graphics Chương trình sẽ giúp bạn thuận tiện hơn khi xem các
mô hình ảo trên máy tính một cách trực quan sinh động
Yêu cầu khi cài đặt Cortona VRML Client:
- Hệ điều hành Microsoft Windows ME/2000/XP/7…
- Trình duyệt Web Internet Explorer 6.0 trở lên, Netscape Navigator 8.0 trở
lên, Mozilla Firefox 1.5 trở lên, Opera 8.5 trở lên
- CPU Pentium II 300 MHz trở lên
- Ram tối thiểu 64 Mb
- Độ phân giải màn hình tối thiểu 1024x768
- Card đồ họa hỗ trợ 3D và cài đặt DirectX 9
Cortona VRML Client tương thích hầu hết với các trình duyệt và các công cụ
văn phòng như Word, PowerPoin,…
Tính năng của Cortona VRML Client sẽ trình diễn toàn bộ mô hình 3D trênmáy tính một cách hoàn hảo như khi người tạo ra đó Ứng dụng hoàn chỉnh trêntoàn bộ hiệu ứng trên nhiều hệ thống như Flash, DirectX 9, MPEG4,… Khi bạntruy xuất vào một ứng dụng VRML, toàn bộ hình mô phỏng sẽ được trình diễn
tương tác trên nền 3D dạng mở Rất ấn tượng và bắt mắt
4.3 Tập tin VRMLTập tin của VRML có thể tạo ra từ nhiều cách: dùng một trình soạn thảo vănbản như Notepad để soạn thảo, sau đó lưu file với phần mở rộng là wrl Hoăc ta
có thể soạn thảo trên một trình soạn thảo dành riêng cho VRML như VRML Pad
và chạy trực tiếp ứng dụng
Một file VRML gồm có các phần như: header, scene graph, prototype và event
routing
- Header: dùng để nhận dạng tập tin VRML và cách mã hóa Header của file
VRML bắt đầu bằng dấu # Ngoài lần xuất hiện đầu tiên ra thì dấu # đánhdấ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
Trang 8- Scene Graph: chứa những node mo tả các đối tượng và các thuộc tính đi
kèm Nó gần như một cây phả hệ gồm các nhóm đối tượng
- Prototype: cho phép một tập các nút kiểu VRML được mở rộng bởi người
sử dụng Các định danh kiểu này có thể được bao hàm trong file (mà chúng
được sử dụng) hay định nghĩa ở bên ngoài file đó
- Event routing: một số nút có thể phát sinh những sự kiện đáp trả những
thay đổi môi trường do tương tác phía người dùng “Event routing” chophép một sự kiện phát sinh được truyền đến các “đích” – những nút trong hệthống, từ đó gây ra những thay đổi cho riêng nút đó và hệ thống
5 Các thành phần cơ bản trong VRML
5.1 Xây dựng các đối tượng hình học cơ bản
Một thế giới VRML được cấu tạo nên từ các đối tượng hình học như: hình hộp,hình trụ, hình nón, hình cầu,…
Shape là thẻ mà các đối tượng trong nó đều được hiển thị Trong node Shape cónode con là geometry chỉ rõ dạng hình học được vẽ ra như thế nào Node geometry
}
Các tham số
height X : chiều cao của hình nón
bottomRadius Y: bán kính của đáy
Trang 9bottom TRUE / FALSE: hiện / ẩn đáy
side TRUE / FALSE: hiện / ẩn mặt bên
}
Các tham số
height X : chiều cao
radius Y: bán kính mặt đáy
bottom TRUE / FALSE: hiện / ẩn mặt đáy
top TRUE / FALSE: hiện / ẩn mặt nắp
side TRUE / FALSE: hiện / ẩn các mặt bên
Trang 10family “SERIF”
style “BOLD” }}
}
Các tham số
String [“Nội dung văn bản”]
family SERIF / SANS / TYPEWRITER
style BOLD / ITALIC / BOLDITALIC / PLAIN
…
- Xây dựng các đường thẳng trong hệ tọa độ ba chiều
Thẻ IndexedLineSet xác định một tập hợp các đường thẳng trong hệ tọa độkhông gian ba chiều của thế giới VRML và tập hợp các màu tương ứng cho cácđường thẳng đó
Thẻ này có các thuộc tính:
Coord và Color: số thành phần trong trường Color không nhất thiết
phải bằng với số thành phần trong trường Coord Chẳng hạn khicolorPerVexter nhận giá trị là FALSE
CoordIndex: bao gồm một dãy chỉ số thứ tự cho các điểm ảnh tạo
nên đường thẳng Ví dụ colorIndex [0 1 2 3] có nghĩa là đường thẳngđược tạo bởi điểm thứ nhất nối với điểm thứ hai, thứ hai nối với thứ
ba, thứ ba nối với thứ tư, các điểm ảnh được xác định trong thẻCoordinate Một ví dụ khác coordIndex [0 1 -1 2 3] ở dãy ký hiệu -1cho biết hình ảnh được tạo trong VRML gồm hai đường thẳng: mộtđường thẳng tạo bởi điểm thứ nhất nối với điểm thứ hai và mộtđường thẳng khác tạo bởi điểm thứ ba nối với điểm thứ tư
ColorIndex: được sử dụng khi colorPerVexter nhận giá trị FALSE,
khi colorPerIndex nhận giá trị TRUE thì có thể bỏ qua trườngcolorIndex trong thẻ IndexedLineSet bởi vì nếu colorPerIndex nhậngiá trị TRUE thì bắt buộc phải thiết lập màu cho mỗi điểm ảnh
ColorPerVexter: có giá trị boolean Khi colorPerVexter nhận giá trị
TRUE thì màu của đường thẳng sẽ là màu trung bình cả hai màu tạihai điểm ảnh tạo nên đường thẳng
Cú pháp
IndexedLineSet {
Coord coordinate[]
coordIndex
Trang 11color Color[]
colorIndex[]
colorPerVexter TRUE}
color[1 1 1, 1 0 0, 0 0 1]
}coordIndex[0 1 2 0]
colorPerVexter TRUE}
}
- Xây dựng khung bề mặt trong không gian
Thẻ IndexedFaceSet sẽ tạo nên bề mặt bằng cách kết hợp các điểm với nhau
solid TRUE}
Chú ý là bề mặt luôn luôn được xác định bởi các đường thẳng khépkín vì thế không phải chỉ ra điểm đầu tiên lại một lần nữa trongtrường coord
Ví dụ
coord Coordinate {
point[0 0 0, 1 0 0, 1 1 0, 0 1 0]
}
Trang 12Đã có bốn điểm xác định, khi liên kết các điểm này sẽ tạo ra hình vuôngbằng cách sử dụng thuộc tính coordIndex[] và coordIndex[0 1 2 3].
Convex định nghĩa bề mặt là lồi hay lõm, trường này có giá trị kiểuboolean Bộ trình duyệt VRML chỉ vẽ bề mặt lồi, trong trường hợp
vẽ bề mặt lõm, bộ trình duyệt chia bề mặt đó thành các bề mặt lồi béhơn để vẽ
coordIndex[0 1 2 3 -1 4 5 6]
color Color {
color[1 1 1, 1 0 0]
}colorIndex[0 1]
colorPerVexter FALSEconvex FALSE
solid FALSE}
}
- Xây dựng khung lưới và bản đồ trong không gian
Thẻ ElevationGrip cho phép xây dựng khung lưới được tạo bởi các điểm có
độ cao xác định trong không gian Thẻ này rất hữu ích cho việc xây dựng cácmạng lưới hoặc địa hình
Hình ảnh xây dựng được đặt trong không gian của mặt phẳng Oxyz Điểmbắt đầu là gốc tọa độ, các điểm còn lại tạo nên lưới phải nằm theo hướng dươngcủa các trục Ox và Oz
Cú pháp
ElevationGrip {
xDimension 0xSpacing 0.0zDimension 0zSpacing 0.0height[]
Trang 13 xDimension chứa số điểm bên trong lưới nằm trên trục X.
zDimension chứa số điểm bên trong lưới nằm trên trục Z
xSpacing là khoảng cách của hai điểm liên tiếp nhau theo hướng củatrục X
zSpacing là khoảng cách của hai điểm liên tiếp nhau theo hướng củatrục Z
Các điểm này được tính theo thứ tự từ trái sang phải, từ trên xuống dưới
}
}
Trang 14Kết quả
Hình 2.1: Ví dụ về xây dựng khung lưới và bản đồ
5.3 Các phép biến đổi trong VRML
Một file VRML xây dựng các thành phần của thế giới ảo Mặc định mọi hìnhảnh được xây dựng trong VRML đều được đặt ở tọa độ gốc Biến đổi là tạo ra một
hệ thống hệ trục tọa độ mới mà hệ trục này có vị trí tương đối so với hệ tọa độ mặcđịnh Có các phép biến đổi như: di chuyển, co giãn, xoay
Hình 2.2: Trục XYZ với một hình cơ bản và một hình phức tạp
Nhóm Node Transform quản lý các phép biến đổi trong VRML như: dịch chuyển, co giãn, xoay Node Transform gồm có các node con: translation, rotation, scale, children.
Trang 15- Co giãn đối tượng (Scale)
Trang 16geometry Cylinder {
radius 0.3 height 6.0 top FALSE }
} ]
Node materialnằm trong node appearance quản lý việc này Node material
có các node con như:
- diffuseColor: màu sắc khuyết tán.
- emissiveColor: màu sắc của ánh sáng phát ra đối tượng.
- transparency: độ trong suốt (0 – tối mờ, 1 – nét).
- ambientIntensity: xác định hàm lượng ánh sáng mà đối tượng phản chiếu.
- specularColor: cho biết màu sắc của các pixel trên bề mặt của đối tượng.
- shininess: cường độ sáng.
Ví dụ
Trang 17Shape {
appearance Appearance {
material Material {
diffuseColor 0.8 0.8 0.8emissiveColor 0.0 0.0 0.0transparency 0.0
specularColor 0.71 0.70 0.56shininess 0.16
ambientIntensity 0.4}
}}
5.5 Các nút trong VRML
Ta có thể nhóm các đối tượng đơn lẻ thành những đối tượng phức tạp Việcđặt một nhóm này vào nhóm kia tạo thành một lược đồ cấu trúc các node Mộtnode trong nhóm có thể có bất kỳ các node con nào đặt bên trong trường children
Có các node nhóm sau được hỗ trợ trong VRML: Anchor, Billboard, Group, Switch, Transform, Inline.
- Anchor: cho phép xác định một tập hợp các đối tượng và cách 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, đếnmộ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 Khi kích vào một trong các đối tượng bên trong node Anchor thìtoàn bộ trình duyệt sẽ đưa đến địa chỉ url Khi đưa chuột qua đối tượng nào
đó chứa trong node thì có thể nhìn thấy được địa chỉ url của nó
]url http://www.picturevn.info
description “Tới trang web tranh ảnh”
}
Các thuộc tính
Trang 18 Children: chứa tất cả các node bên trong nhóm
url: cho biết địa chỉ url được tìm kiếm Có thể có nhiều vị trí đặt
trong url, khi đó bộ trình duyệt sẽ tìm kiếm dữ liệu trong các vị trínày theo thứ tự ưu tiên giảm dần
parameter: cung cấp thông tin thêm vào cho bộ trình duyệt Cho
ví dụ có thể chỉ rõ là cửa sổ cần xem mà url hiển thị vào đó
Description: đưa ra một xâu, xâu này sẽ hiển thị khi người dùng
di chuột qua đối tượng chứa trong node Anchor
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
bboxSize: xác định kích thước của một hình hộp chữ nhật mà nó
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ácnode con không nằm trong hình hộp thì kết quả không xác định.Hai trường bboxCenter và bboxSize là tùy chọn
- Group: tạo ra một tập hợp các vật thể như là một thực thể đơn Node này có các trường: children, bboxCenter, bboxSize Các trường này tương tự như
của node Anchor Tất cả các node con trong Group đều hiển thị
Ví dụ
Group {
children [ ]bboxCenter 0 0 0bboxSize -1 -1 -1}
- Switch: tạo ra một nhóm chuyển đổi 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 Node con tuyệt đối đượcđánh số từ 0, không lựa chọn là -1
- Transform: Xác định hệ trục tọa độ mới cho các đối tượng trong cùng một
nhóm
- Billboard: tạo ra một nhóm với hệ trục tọa độ đặc biệt Tất cả các node
trong nhóm đều được hiển thị Hệ tọa độ này luôn được quay về đối diện vớingười dùng
Ví dụ
Billboard {