ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đinh Nhật Minh NGHIÊN CỨU PHÁT TRI
Ể
N HỆ TH
Ố
NG
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Đinh Nhật Minh
NGHIÊN CỨU PHÁT TRI
Ể
N HỆ TH
Ố
NG
THỬ NGHIỆM CUNG CẤP QUANG CẢNH
tận tình cho em trong suốt quá trình thực hiện khoá luận này.
Em xin gửi lời cảm ơn và biết ơn sâu sắc tới các thầy, cô đã dạy dỗ em trong suốt 4
năm học tập tại trường Đại học Công Ngh
ệ. Những kiến thức các thầy, cô dạy là vô cùng
quý báu và sẽ là hành trang để em vững bước vào đời.
Em cũng xin chân thành cảm ơn các anh, chị trong phòng Công nghệ phần mềm –
Trung tâm Công nghệ phần mềm – Tập đoàn Điện lực Việt Nam đã tạo điều kiện, giúp đỡ
về mặt kỹ thuật và động viên tinh thần cho em trong quá trình làm khoá luận.
Tôi xin gửi lời cảm ơn tới các bạn sinh viên trong lớp K50HTTT hiện nay và các
thành viên lớp K50CA trước đây, cùng bạn bè đã ủng hộ và khuyến khích tôi trong quá
trình nghiên cứu và làm khoá luận này.
Và cuối cùng, con xin gửi lời cảm ơn và lòng biết ơn tới bố, mẹ, anh chị, cảm ơn
những người thân yêu của tôi, đã nuôi nấng, dạy dỗ và luôn động viên, làm chỗ dựa tinh
thần cho tôi trong cuộc sống cũng như trong học tập và làm việc.
Xin chân thành cảm ơn!
Hà Nội, ngày 25 tháng 05 năm 2006
Sinh viên Đinh Nhật Minh
Tóm tắt nội dung:
Tên đề tài của khóa luận là : Nghiên cứu phát triển hệ thống thử nghiệm cung cấp
quang cảnh đường phố Hà Nội.
Cung cấp quang cảnh đường phố Hà Nội có nghĩa là cho phép người sử dụng quan
sát được các hướng xung quanh tại một điểm, tạo cho người sử dụng cảm giác đang đứng
tại vị trí đó, đồng thời cho phép họ di chuyển tới các vị trí khác.
Nội dung khóa luận này sẽ
giới thiệu về các dịch vụ nổi tiếng trên thế giới trong
lĩnh vực tương tự, nêu lên phương pháp và công cụ mà họ sử dụng, từ đó nêu lên tính cần
3.2. Phân tích bài toán 23
3.3. Các lý thuyết liên quan 23
3.3.1. Adobe Flash 23
3.3.2. Flex builder 3.0 26
3.3.3. Action Script 28
3.3.4. Open Sources 28
3.4. Giải quyết bài toán 28
3.4.1.
Xây dựng chương trình cho phép người sử dụng nhìn xung quanh 360° .29
3.4.2.
Xử lý việc cho phép người sử dụng dịch chuyển tới các vị trí khác nhau .31
3.4.3. Cách lưu trữ Cơ sơ dữ liệu 35
3.5. Thực nghiệm 36
3.5.1. Môi trường thực nghiệm 36
3.5.2. Công cụ thực nghiệm 37
3.5.3. Quá trình thực nghiệm 37
3.6. Kết quả thực nghiệm 40
Chương 4. Kết luận 43
4.1. Đóng góp của mình 43
4.2. Hướng phát triển của đề tài 43
Tài liệu tham khảo 45
LỜI MỞ ĐẦU
Du lịch là nhu cầu khá phổ biến hiện nay tại nhiều quốc gia, trong đó có Việt Nam,
nhưng thật khó khăn cho khách hàng trong việc lựa chọn địa điểm du lịch, nếu chỉ thông
qua tranh ảnh, các tờ rơi, quảng cáo thì chắc chắn sẽ không được chính xác. Còn gì tiện
lợi hơn khi bạn có thể “xem” “tận mắt” những địa điểm mà bạn đang đắn đo, để xem
mình thích nơi nào hơn khi mà b
ạn chẳng phải đến tận nơi, vẫn ngồi nhà, nhâm nhi cốc
café hay đang tán gẫu cùng bạn bè về chuyến du lịch sắp tới. Tất cả những gì bạn cần làm
là một trình duyệt web và kết nối internet.
Như chúng ta đã biết, Google Maps Street View là một dịch vụ khá nổi tiếng trên
thế giới hiện nay. Dịch vụ này cho phép người sử dụng “đi lại” trên đường phố tại một
n
ơi nào đó. “Đi lại” ở đây được hiểu theo nghĩa bạn có thể thấy được phong cảnh, đường
phố tại nơi bạn chọn, những cảnh này được chụp lại nên tính trung thực rất cao, bạn hoàn
toàn có thể yên tâm không phải lo nghĩ rằng phong cảnh nơi sắp đến có làm bạn thất vọng
hay không.
Tuy nhiên, do hạn chế về mặt quy mô, nên Google Maps Street View mới chỉ thực
hiện được trên m
ột số thành phố tại một số quốc gia. Còn tại Việt Nam thì sao? Nếu
Google để mắt tới Việt Nam, thì may chăng chỉ có một số thành phố lớn được đưa vào
CSDL của Google Maps. Vậy tại sao chúng ta không tự xây dựng một dịch vụ tương tự
như vậy trên chính đất nước của mình?
Với thực trạng đó, mục tiêu chính của khoá luận tốt nghiệp của tôi được tậ
p trung
xoay quanh tìm câu trả lời cho câu hỏi trên. Trong quá trình nghiên cứu, tìm hiểu và thực
hiện khóa luận này, những kết quả bước đầu thu được chứng minh được việc cung cấp
dịch vụ quang cảnh đường phố là hoàn toàn có thể thực hiện được với những công nghệ
và kỹ thuật hiện nay của Việt Nam.
SVTH: Đinh Nhật Minh 6 GVHD: TS. Nguyễn Ngọc Hóa
Hình 1. Hình ảnh quang cảnh đường phố của Google Maps Street View
Google Maps Street View cho phép người sử dụng nhìn xung quanh bằng cách sử
dụng chuột hoặc các button phía trên bên trái của bản đồ, cũng có thể dùng 2 phím mũi
tên sang trái, sang phải để nhìn 2 bên cùng với 2 phím page up và page down để nhìn bên
trên và bên dưới.
Người sử dụng có thể di chuyển đến địa điểm khác, có các cách sau:
- Sử dụng 2 phím mũi tên lên và xuống để di chuyển đến điểm liền kề trước hoặc
sau trên bản đồ
- Sử dụ
ng mũi tên có trên màn hình để di chuyển đến điểm liền kề trước hoặc sau
trên bản đồ
- Di chuyển hình người trên bản đồ nhỏ (mini map) tới vị trí cần đến (không giới
hạn là chỉ đi đến những điểm ngay kề với vị trí hiện tại)
Chế độ zoom của Google Maps Street View khá tốt, cho ảnh có độ nét chấp nhận
được khi phóng to. Tương tự như khi nhìn xung quanh, có thể s
ử dụng chuột giữa (wheel
mouse) hoặc 2 button + và – có trên bản đồ.
Nghiên cứu phát triển hệ thống thử nghiệm cung cấp quang cảnh đường phố Hà Nội SVTH: Đinh Nhật Minh 7 GVHD: TS. Nguyễn Ngọc Hóa
Ngoài ra, trên mini map có thể zoom in hoặc zoom out để hiển thị chi tiết cũng như
thu gọn đường phố.
1.2. MapJack
MapJack là một công ty, làm việc giống như Google. Mục đích của MapJack, theo
như những gì được nói trên trang chủ của mình là cung cấp một bức tranh toàn cảnh về
các thành phố trên toàn thế giới. Nhưng hiện tại MapJack mới chỉ cung cấp quang cảnh
Hình 3. Giao diện công cụ của MapJack
Nghiên cứu phát triển hệ thống thử nghiệm cung cấp quang cảnh đường phố Hà Nội SVTH: Đinh Nhật Minh 9 GVHD: TS. Nguyễn Ngọc Hóa
Chương 2. Một số lý thuyết về đồ họa 3D
2.1. Giới thiệu
Đồ họa máy tính 3D là công việc tạo ra nghệ thuật đồ họa, nghĩa là tạo ra với sự
trợ giúp của máy tính kĩ thuật số và các phần mềm 3D. Nói chung thuật ngữ này có thể
hiểu như là tiến trình tạo ra đồ họa, hoặc việc nghiên cứu công nghệ đồ họa máy tính 3D
và liên quan tới công nghệ đó.
Đồ họa máy tính 3D khác với đồ họa máy tính 2D vì nó có chiều thứ 3 và các dữ
liệu hình học được máy tính lư
u trữ với mục đính để tính toán và tạo lại các hình ảnh 2D
của đối tượng mô phỏng 3D. Đôi khi các hình ảnh này sẽ hiển thị sau theo dạng được tạo
ảnh trước, và đôi khi chúng được tạo trong quá trình trực tiếp luôn (real-time).
Nói chung nghệ thuật của các mô hình 3D, được tạo bởi các dữ liệu hình học được
máy tính lưu trữ gần giống với các hình ảnh vật thể đó ở bên ngoài thực tế
hay các ảnh
chụp, trong khi đồ họa 2D là phần tính để tô lại giống thì đồ họa 3D là vẽ lại theo các
công thức toán học để tạo ra các hình ảnh 2D về vật thể 3D đó.
Trong các phần mềm đồ họa máy tính sự phân biệt này thi thoảng là mờ nhạt; một
số ứng dụng 2D sử dụng công nghệ 3D để tạo các hiệu ứng như ánh sáng, trong khi một
số phần mềm 3D lại sử
dụng công nghệ 2D để tạo 3D ảo.
2.2. Một số kiến thức cơ bản
Đồ hoạ 3D cho phép mô phỏng không gian 3 chiều trong máy tính. Về mặt toán
học, đây là một công việc cực kỳ phức tạp, tuy nhiên hầu hết những công việc phức tạp
này được thực hiện bởi phần cứng chuyên dụng với tốc độ rất cao.
Để biểu diễn không gian 3 chiều, người ta dùng hệ trục toạ độ Đề các, với các trục
u vuông
góc với tia chiếu và phép chiếu phối cảnh với mặt phẳng chiếu vuông góc với tia chiếu.
Phép chiếu song song thường được dùng trong các ứng dụng kỹ thuật, hay tạo giao diện
người dùng còn phép chiếu phối cảnh thường được dùng trong các trò chơi hoặc các ứng
dụng mô phỏng. Cụ thể về 2 phép chiếu này sẽ được nói rõ hơn trong phần sau.
Như vậy để có thể thể hiện hình ảnh cơ bả
n của vật thể trên mặt phẳng chiếu, thì
một điểm trong không gian phải được biến đổi qua 3 bước với 3 phép nhân ma trận. Tuy
Nghiên cứu phát triển hệ thống thử nghiệm cung cấp quang cảnh đường phố Hà Nội SVTH: Đinh Nhật Minh 11 GVHD: TS. Nguyễn Ngọc Hóa
nhiên trên thực tế tích của 3 ma trận được tính sẵn, khi đó toạ độ điểm trong không gian
chỉ phải nhân một lần với ma trận tích mà thôi.
Ba bước trên đều được xử lý bởi ma trận (Matrix3D).
Sau ba bước trên chúng ta mới chỉ thu được toạ độ các đỉnh được chiếu lên mặt
phẳng chiếu, chưa thấy được vật thể. Cách đơn giản nhất là nối các đỉnh vớ
i nhau, khi đó
chúng ta sẽ thu được một mạng các đoạn thẳng biểu diễn vật thể (wireframe).
Để có thể thu được hình ảnh thật hơn, các bước sau tiếp tục được áp dụng:
Bước 4: Depth test
Với hình ảnh thu được ở trên, chúng ta không biểu diễn được việc các vật thể ở
gần che lấp các vật thể ở xa. Có 2 kỹ thuật để thực hiện được việc này, đ
ó là dùng z-
buffer và dùng cây BSP.
Trong kỹ thuật dùng z-buffer, một vùng nhớ với kích thước màn hình được tạo ra
để lưu độ sâu của các điểm. Phép chiếu thực chất là một phép nhân ma trận, do đó sau
phép nhân một toạ độ một điểm trong không gian 3 chiều với ma trận chiếu chúng ta vẫn
thu được 3 toạ độ x, y, và z. Các toạ độ x, y là toạ độ trên mặt phẳng chiếu, biểu diễn vị trí
của điểm chúng ta sẽ
(tốc độ nhanh, chất lượng thấp do thấy đường giao giữa các tam giác) hay Phong Shading
(tốc độ thấp, chất lượng cao).
Hiệu ứng ánh sáng có thể được đưa vào việc tạo hình. Hình ảnh thu được phụ
thuộc vào chất liệu bề mặt (độ bóng, độ phản xạ ánh sáng, độ nhiễu xạ ánh sáng…) và các
nguồn sáng (vị trí nguồn sáng, kiểu nguồn sáng, cường độ sáng, hướng chiếu sáng…).
Hiệ
u ứng ánh sáng cho phép tạo hình ảnh thật hơn, mô tả được không gian sáng tối.
Hiệu ứng sương mù cho phép mô phỏng sương mù vào không gian ba chiều. Vật
thể càng gần thì nhìn càng rõ, vật thể càng xa càng mù. Thông thường độ mù sẽ tăng theo
hàm mũ của khoảng cách, và được điều khiển bởi hệ số mật độ sương mù đặc trưng cho
sương dày hay mỏng.
Texture mapping là kỹ thuật cho phép dùng một ảnh thật lát lên một bề mặ
t trong
không gian. Kỹ thuật này cho phép thể hiện các vật thể thật hơn, ví dụ như việc sử dụng
ảnh vân gỗ để lát lên bề mặt bàn trong không gian 3 chiều.
Blending cho phép thể hiện một vật thể với độ trong nào đó. Các vật thể đặc không
cho phép nhìn qua, còn các vật thể trong thì có thể nhìn xuyên qua và thấy được các vật
Nghiên cứu phát triển hệ thống thử nghiệm cung cấp quang cảnh đường phố Hà Nội SVTH: Đinh Nhật Minh 13 GVHD: TS. Nguyễn Ngọc Hóa
đằng sau vật đó. Tham số đặc trưng cho độ trong suốt thường gọi là Alpha, trong đó
Alpha bằng 0 có nghĩa là vật trong hoàn toàn, Alpha càng lớn thì vật càng đặc.
Ngoài ra còn có một số hiệu ứng đặc biệt khác đem lại chất lượng hình ảnh cao
như phản xạ gương, đổ bóng, tạo bề mặt sần sùi…
2.3. Lý thuyết về phép chiếu
2.3.1. Phép chiếu song song
Các hình ảnh được hình thành bằng phép chiếu song song có thể được xác định
dựa vào góc hợp bởi hướng của phép chiếu hợp với mặt phẳng chiếu. Khi hướng của phép
chiếu vuông góc với mặt phẳng, ta có phép chiếu trực giao (hay phép chiếu vuông góc
SVTH: Đinh Nhật Minh 15 GVHD: TS. Nguyễn Ngọc Hóa
Các phương trình biến đổi để thực hiện một phép chiếu song song trực giao thì dễ hiểu.
Đối với điểm bất kỳ (x, y, z), điểm chiếu (x
p
, y
p
, x
p
) trên bề mặt chiếu được tính như sau:
x
p
= x, y
p
= y, z
p
= 0
Hình 5. Phép chiếu cùng kích thước của một đối tượng lên bề mặt quan sát
Một phép chiếu xiên đạt được bằng việc chiếu các điểm theo các đường thẳng song
song, các đường thẳng này không vuông góc với mặt phẳng chiếu. Hình 6 trình bày hình
chiếu xiên của điểm (x, y, z) theo một đường thẳng chiếu đến vị trí (x
p
, y
p
). Các tọa độ
chiếu trực giao trên mặt phẳng chiếu là (x, y). Đường thẳng của phép chiếu xiên tạo một
góc α với đường thẳng trên mặt phẳng chiếu (đây là đường nối điểm (x
p
, y
p
p
, y
p
) khi z = 1.
Từ phương trình trên, chúng ta có
L = z L
1
và các phương trình của phép chiếu xiên có thể được viết lại như sau
x
p
= x + z(L
1
cosφ)
y
p
= y + z(L
1
sinφ)
Ma trận biến đổi để tạo ra bất kỳ việc chiếu song song có thể được viết như sau
Nghiên cứu phát triển hệ thống thử nghiệm cung cấp quang cảnh đường phố Hà Nội SVTH: Đinh Nhật Minh 17 GVHD: TS. Nguyễn Ngọc Hóa
Một phép chiếu trực giao có thể đạt được khi L
1
= 0 (xảy ra ở góc chiếu α=90
o
).
(x, y, z). Ở đầu mút kia của đường thẳng u =1, và chúng ta có các tọa độ của tâm chiếu,
(0, 0, d). Để thu được các tọa độ trên mặt phẳng chiếu, chúng ta đặt z’ = 0 và tìm ra tham
số u:
u = z / (z + d)
Giá trị của tham số u tạo ra giao điểm của đường chiếu với mặt phẳng chiếu tại (x
p
, y
p
, 0).
Thế giá trị của u vào phương trình trên, ta thu được các phương trình biến đổi của phép
chiếu phối cảnh.
Nghiên cứu phát triển hệ thống thử nghiệm cung cấp quang cảnh đường phố Hà Nội SVTH: Đinh Nhật Minh 19 GVHD: TS. Nguyễn Ngọc Hóa
Khi các đối tượng ba chiều đựợc chiếu lên một mặt phẳng dùng các phương trình
biến đổi phối cảnh, bất kỳ tập hợp các đường thẳng song song nào của đối tượng mà
không song song với mặt phẳng chiếu được chiếu thành các đường hội tụ (đồng quy). Các
đường thẳng song song với mặt phẳng khi chiếu sẽ tạo ra các đường song song. Điểm mà
tại đó tập hợp các đường th
ẳng song song được chiếu xuất hiện hội tụ về đó được gọi là
điểm ảo (vanishing point). Mỗi tập hợp các đường thẳng song song được chiếu như thế sẽ
có một điểm ảo riêng (xem hình 8).
Nghiên cứu phát triển hệ thống thử nghiệm cung cấp quang cảnh đường phố Hà Nội SVTH: Đinh Nhật Minh 20 GVHD: TS. Nguyễn Ngọc Hóa
sẽ tìm hiểu kỹ hơn về cách làm này ngay sau đây.
Trong bước pre-rendered, chúng ta có thể dùng Swift3D và Plasma, chúng là
những sản phẩm dùng để vẽ ra một quang cảnh 3D mà bạn muốn xây dựng bên trong
chương trình, chúng sẽ được xuấ
t ra thành file swf, file phim như .avi, .mov hay một số
định dạng như dãy các hình ảnh, các file này sẽ được đưa vào trong và thao tác bên trong
Flash. Hiển nhiên, với file swf, bạn không cần phải sử dụng đến Flash nữa nếu như kết
quả của file swf là những gì bạn muốn (ví dụ với Plasma, đó là một môi trường phát triển
rất tốt, có thể bạn sẽ không cần phải sử dụng đến Flash để tạo ra một phim Flash với đầy
đủ
các hàm). Những sản phẩm đó là một giải pháp hay cho các vòng lặp 3D hay phim
ảnh, tuy nhiên chúng mang tính chất tuyến tính, tính chất này có thể giới hạn mức độ
tương tác mà bạn muốn. Nói cách khác, bạn có thể thực hiện được một số lượng rất ít cá
thao tác khi mà phim đã chạy. Mọi thứ nằm trong quá trình pre-rendered và không thể
thay đổi trong lúc được chạy bằng Flash player.
Tuy vậy, điều đáng mừng ở đây là mọi kỹ thuật tr
ả về 3D cũng như tính toán trên
3D đều dựa trên toán học, và Flash biết toán! Điều đó có nghĩa là chính ta có thể bắt đầu
của mình làm việc, từ sơ khai, sử dụng Flash ActionScript để tạo nên 3D cơ bản sở dụng
cơ sở toán học. Chúng ta có thể tạo ra các kiểu vector riêng sử dụng những tính toán và