Luận văn, khóa luận, chuyên đề, tiểu luận, quản trị, khoa học, tự nhiên, kinh tế
Trang 1LUẬN VĂN CỬ NHÂN TIN HỌC
GIÁO VIÊN HƯỚNG DẪN Th.s ĐINH NGUYỄN ANH DŨNG
Trang 2Kế đến em xin chân thành cảm ơn các thầy cô trong Khoa Công Nghệ Thông Tin, trường Đại học Khoa học Tự nhiên đã tạo điều kiện thuận lợi cho chúng em trong suốt bốn năm học Đại học, tạo cho chúng em có nền tảng kiến thức vững chắc.
Và cũng không quên gởi lời cảm ơn sâu sắc đến gia đình, các anh chị và bạn bè
đã ủng hộ, giúp đỡ và động viên trong những lúc khó khăn trong suốt thời gian học tập cũng như nghiên cứu.
Mặc dù đã cố gắng hết hoàn thành luận văn trong phạm vi và khả năng cho phép, nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong sự thông cảm
và tận tình chỉ bảo của quý Thầy Cô và các bạn.
Sinh viên thực hiện Diệp Chí Cường
Trang 3KHOA CNTT –
ĐH KHTN
Bố cục
Luận văn gồm 6 chương:
• Chương 1: Tổng quan là chương mở đầu, giới thiệu về nhu cầu thực tế
và lý do thực hiện đề tài Chương này cũng nêu ra các hướng giải quyết
• Chương 6: Tổng kết là chương cuối cùng của đề tài Chương này nêu ra
kết quả đạt được khi thực hiện cài đặt chương trình
Trang 4KHOA CNTT –
ĐH KHTN
Mục lục
Chương 1 Tổng quan 6
1.1 Giới thiệu vấn đề 6
1.2 Các hướng giải quyết vấn đề 7
Chương 2 Các khái niệm 10
2.1 Đường ống đồ họa (graphics pipeline) 10
2.2 Cấu trúc biểu diễn đỉnh 11
2.3 Thu nhỏ khung cảnh (scene reduction) 11
2.4 Các mô hình hiển thị đồ họa 12
Chương 3 Thuật toán của Röttger 13
3.1 Cấu trúc dữ liệu 13
3.2 Hiển thị bản đồ địa hình 15
3.3 Phát sinh lưới tam giác 16
3.4 Geomorphing 22
3.5 Clipping 23
3.6 Ưu và khuyết điểm 23
Chương 4 Thuật toán ROAM 25
4.1 Biểu diễn 25
4.1.1 Cây nhị phân tam giác 25
4.1.2 Lưới tam giác động và liên tục 26
4.2 Tối ưu với hàng đợi kép 29
4.2.1 Hàng đợi phân chia (split queue) 29
4.2.2 Hàng đợi kết hợp (merge queue) 30
4.3 Các khái niệm lỗi (error metrics) 32
4.3.1 Các biên xếp chồng trong không gian thế giới 33
4.3.2 Sự méo mó hình học 33
4.3.3 Hiệu chỉnh Line-of-site (LOS) 36
4.3.4 Các khái niệm khác 36
4.4 Cải tiến quá trình hiển thị 37
4.4.1 View-frustum culling 37
4.4.2 T-stripping 38
4.4.3 Trì hoãn việc tính toán lại độ ưu tiên 38
4.4.4 Tối ưu lũy tiến (progressive optimazation) 39
4.5 Ưu điểm và khuyết điểm 40
4.5.1 Ưu điểm 40
4.5.2 Khuyết điểm 40
Trang 5KHOA CNTT –
ĐH KHTN
5.1.2 Các đặc tính 45
5.1.3 Tính liên tục (continuity) của lưới tam giác 45
5.2 Thuật toán Diamond 46
5.2.1 Các hàng đợi tam giác 47
5.2.2 Thuật toán 48
5.3 Ưu và khuyết điểm 51
Chương 6 Tổng kết 52
Trang 6KHOA CNTT –
ĐH KHTN
Danh sách hình
Hình 3-1: Lưới tam giác của bản đồ địa hình 9 × 9 Các mũi tên thể hiện các mối quan
hệ cha – con trong cây tứ phân 14
Hình 3-2: Các quạt tam giác được phát sinh đệ qui cho lưới tam giác trong hình 3.1 Dấu gạch chéo chỉ ra các đỉnh được bỏ qua 16
Hình 3-3: Tiêu chuẩn độ phân giải toàn cục: khoảng cách với kích thước ô trong cây tứ phân .17
Hình 3-4: Lưới tam giác của một hình phẳng căn cứ vào tiêu chuẩn độ phân giải toàn cục Các tâm của quạt tam giác có màu trắng và cạnh màu đen 17
Hình 3-5: Tính toán độ gồ ghề bề mặt .19
Hình 3-6: Hạn chế các giá trị d2 của các khối kề nhau nhằm thỏa mãn điều kiện (4) .20 Hình 3-7: Các giá trị d2 được lan truyền từ dưới lên (theo chiều mũi tên) .21
Hình 3-8: Lan truyền các giá trị d2 làm cho lưới tam giác tốt hơn gần các cực trị địa phương trong một bề mặt phẳng .22
Hình 4-1: Mức 0 → 5 của cây nhị phân tam giác .26
Hình 4-2: Phép phân chia và kết hợp trên lưới tam giác của cây nhị phân Quan hệ láng giềng được thể hiện trong tam giác T ở bên trái .28
Hình 4-3: Phép phân chia ép buộc cho tam giác T 28
Hình 4-4: Các nêm xếp chồng cho miền 1-D phụ thuộc vào v .33
Hình 4-5: Biên chênh lệch bởi việc chiếu nêm lên màn hình .35
Hình 4-6: Bên trái là trước khi hiệu chỉnh LOS, bên phải sau khi thực hiện .36
Hình 5-1: Vài mức ban đầu của cây tứ phân tam giác .43
Hình 5-2: Định nghĩa tam giác và các mối quan hệ của nó .44
Hình 5-3: Phép phân chia và kết hợp .44
Hình 5-4: Tính không liên tục của lưới tam giác .46
Hình 5-5: Hiệu chỉnh lại tính không liên tục cho lưới tam giác .46
Hình 6-1: Địa hình được hiển thị bằng thuật toán của Röttger 52
Hình 6-2 : Địa hình được hiển thị bằng thuật toán ROAM .53
Hình 6-3 : Địa hình được hiển thị bằng thuật toán Diamond 54
Hình 6-4 : Địa hình khi được phủ texture .55
Trang 7Giờ đây, khi Tin học đã và đang tiến bộ từng ngày làm cho mọi thứ trở nên hiện đại hơn và dễ sử dụng hơn Cùng với đà phát triển đó, chúng ta cũng phải kể đến sự phát triển của công nghệ ba chiều Trên thế giới, các hãng sản xuất phần cứng đồ họa hàng loạt tung ra những sản phẩm có tính năng mạnh mẽ và tốc độ xử lý vô cùng nhanh chóng Bên cạnh đó, công nghệ ba chiều đã ngày càng được ứng dụng rộng rãi
từ lĩnh vục thương mại, công nghiệp, giải trí, … đến cả quân sự, không gian, …
Do nhu cầu con người ngày càng tăng, việc mô phỏng thế giới thực là điều phải được thực hiện Từ những ứng dụng thiết kế ba chiều phục vụ cho việc chế tạo máy móc thiết bị, xây dựng nhà ở công trình kiến trúc, đến các ứng dụng mô phỏng thử nghiệm tính năng trong công nghiệp chế tạo xe hơi, máy bay, … Điều này cho thấy công nghệ ba chiều không thể thiếu được đối với cuộc sống
Trong đó chúng ta không thể nào không kể đến việc mô phỏng dữ liệu địa hình trong thế giới thực vào máy tính Đây là vấn đề được ứng dụng rất rộng rãi chẳng hạn như trong lĩnh vực không gian, máy tính mô phỏng địa hình bề mặt các hành tinh giúp
Trang 8KHOA CNTT –
ĐH KHTN
thông tin địa lý (Geographic Information System – GIS) thì vấn đề này càng không thể thiếu được; …
1.2 Các hướng giải quyết vấn đề
Trên thực tế, dữ liệu địa hình vô cùng phức tạp và to lớn, nhưng có nhiều ứng dụng đòi hỏi sự tương tác động thời gian thực từ phía người sử dụng và do đó đòi hỏi phải xử lý nhanh dữ liệu địa hình để thích nghi với dữ liệu đầu vào từ người dùng
Nhiều hệ thống máy tính xử lý đồ họa hiện đại cho phép hiển thị hàng ngàn đa giác được tô bóng hay phủ hình ảnh (texture) ở một tốc độ tương tác Tuy nhiên, nhiều ứng dụng chứa đựng các mô hình đồ họa với rất phức tạp về mặt hình học vẫn vượt quá khả năng của phần cứng đồ họa Vấn đề này khá phổ biến trong các ứng dụng xử lý các
mô hình bề mặt đa giác rộng lớn, như các chương trình mô phỏng và mô hình hóa địa hình số
Để phục vụ cho các mô hình bề mặt phức tạp mà vẫn quản lý được tốc độ hiển thị thời gian thực, vấn đề này có hai hướng giải quyết, nhưng cả hai đều hướng đến việc xấp xỉ các bề mặt đa giác hay đơn giản hóa dữ liệu ban đầu Thứ nhất, các phương pháp này sử dụng mô hình với đa độ phân giải Mô hình phức tạp ban đầu sẽ được tổ chức trong một cấu trúc dữ liệu đơn giản hơn (các mô hình ở nhiều độ phân giải khác nhau), và sau đó, trong quá trình hiển thị, tùy thuộc vào khoảng cách đến điểm nhìn mà quyết định mô hình sẽ được hiển thị ở độ phân giải nào (thường thì khi ở gần điểm nhìn hiển thị chi tiết hơn, khi ở xa điểm nhìn thì hiển thị ít chi tiết hơn) Hướng thứ hai
là cũng sử dụng một cấu trúc dữ liệu để đơn giản hóa địa hình ban đầu nhưng thường là cấu trúc dạng cây và điều khác biệt so với hướng trên là cấu trúc này sẽ được xây dựng không phải ở bước tiền xử lý mà ngay trong lúc hiển thị địa hình
Một vài phương pháp xử lý địa hình hiệu quả đã được đưa ra Cây tứ phân có lẽ
Trang 9đó các cây tứ phân thường được sử dụng ở trước các thuật toán địa hình để phục vụ như là một cơ chế lọc (view culling)
A James Stewart đã mô tả một tập hợp tính nhìn thấy phân cấp (hierarchical visibility) cho địa hình, nó được lưu trữ trong một cây tứ phân hoàn chỉnh và có thể được sử dụng để lọc (cull) các vùng rộng lớn một cách hiệu quả Phương pháp này hoạt động tốt nếu kết hợp với các thuật toán khác có dựa vào việc tính toán LOD
Willem H de Boer lại mô tả một thuật toán gần gũi hơn với phần cứng mà sử dụng các tập hợp mức độ chi tiết theo khối (block-based level-of-detail) được gọi là
GeoMipMaps Ông ta đã đề nghị một cải tiến cho thuật toán cơ bản để hạn chế hiện
tượng vertex poping (các đỉnh xuất hiện đột ngột) có dạng GeoMipMap tam tuyến (trilinear GeoMipMap), xác định LOD khối này với các khối khác; điều này biến đổi dần dần từ thuật toán mức độ ưu tiên theo khối sang thuật toán mức độ ưu tiên liên tục
Một số phương pháp theo hướng cổ điển, như thuật toán Diamond, đều tận dụng các mạng TINs để thực hiện quá trình hiển thị địa hình TINs là mạng các tam giác trong đó tất cả các tam giác có hình dạng giống nhau nhưng lại thay đổi về kích thước liên quan đến những tam giác khác Mạng này đã được Lindstrom, Röttger và Duchaineau tận dụng với các dạng khác nhau
Lindstrom đưa ra một thuật toán để có được mức độ chi tiết liên tục trong một lưới chữ nhật sử dụng cây tứ phân thay đổi động và chiến thuật từ dưới lên (bottom-up)
Röttger thực hiện ngược lại với Lindstrom, và đưa ra một thuật toán để có được
Trang 10KHOA CNTT –
ĐH KHTN
Duchaineau đưa ra thuật toán ROAM nhằm quản lý việc lập lưới tam giác có mức độ chi tiết liên tục bằng cách sử dụng các phép toán phân chia và kết hợp dựa trên đỉnh
Henri Hakl đưa ra thuật toán Diamond tương tự như thuật toán ROAM nhưng
có một số cải tiến nhằm tăng tốc độ hiển thị
Trang 11KHOA CNTT –
ĐH KHTN
Chương 2
Các khái niệm
2.1 Đường ống đồ họa (graphics pipeline)
Việc hiển thị đồ họa có liên quan đến việc đơn giản hóa khung cảnh (scene), một tập hợp dữ liệu không gian 3 chiều thành một tập hợp con nhỏ hơn và nhìn thấy được trên màn hình, rồi sau đó là hiển thị tập hợp này
Để hiển thị một khung cảnh chúng ta chú ý rằng một khung cảnh bao gồm nhiều
đa giác mà thường là tập hợp các tam giác với các mục đích hiển thị phần cứng Quá
trình hiển thị đi qua đường ống đồ họa thực hiện các phép biến đổi cho các đỉnh của tam giác tùy theo điểm nhìn (point-of-view) hiện tại và sau đó được chiếu từ không gian thế giới sang không gian màn hình tùy theo viewing frustum Điểm nhìn sẽ quyết định vị trí và hướng từ đó khung cảnh sẽ được hiển thị, trong khi đó viewing frustum lại quyết định phạm vi của vùng nhìn thấy (field-of-view – FOV)
Sau khi thực hiện xong phép biến đổi và phép chiếu, tam giác sẽ được chiếu sáng (nghĩa là tính toán độ sáng trên nó) và được cắt xén (clip – nghĩa là chỉ những phần nào nhìn thấy mới được vẽ) và sau đó cuối cùng là vẽ nó lên bộ đệm đồ họa Một
số phương pháp có thể được chấp nhận trong lúc đang vẽ các tam giác như wire-frame, solid, textured và bump-mapped
Wireframe chỉ hiển thị các đường thẳng nối các đỉnh đa giác, solid chỉ hiển thị thông tin màu sắc, texturing sử dụng hình ảnh hay dữ liệu thủ tục được chiếu lên đa
Trang 12KHOA CNTT –
ĐH KHTN
2.2 Cấu trúc biểu diễn đỉnh
Các đỉnh của tam giác được sử dụng trong đường ống đồ họa có thể được biểu
diễn theo một số cách, đơn giản nhất là danh sách tam giác (triangle-list) Danh sách
tam giác chỉ đơn giản là lưu trữ các đỉnh trong một tập hợp bộ ba tương ứng với ba
đỉnh của tam giác
Một danh sách tam giác có thể chứa các thông tin thừa, nếu như hầu hết các tam
giác đều có các đỉnh chung Dãy tam giác strip) và quạt tam giác
(triangle-fan) đều quan tâm đến điều này và đều đưa ra một cấu trúc biểu diễn đỉnh tiết kiệm
dung lượng bộ nhớ và thời gian xử lý
Cấu trúc biểu diễn đỉnh theo chỉ mục cung cấp chi phí lưu trữ và hiển thị tốt nhất bằng cách chỉ lưu các đỉnh duy nhất và sử dụng bộ đệm chỉ mục để kết hợp các đỉnh thành tam giác Bộ đệm chỉ mục tự nó cung cấp một số các biểu diễn tương ứng với danh sách chỉ mục (index-list), dãy chỉ mục (index-strip) và quạt chỉ mục (index-fan)
2.3 Thu nhỏ khung cảnh (scene reduction)
Một khung cảnh thường không được hiển thị toàn bộ mà giảm đi thành một tập
hợp con Việc rút gọn này thường được thực hiện bởi culling các tập hợp tam giác
Culling ngụ ý việc loại bỏ khỏi tập con đã hiển thị và quá trình culling có nhiều dạng;
ví dụ như khử mặt khuất (backface culling) sẽ loại bỏ đi tất cả các tam giác quay lưng lại với điểm nhìn (nghĩa là pháp tuyến của tam giác không chỉ về phía điểm nhìn Các
dạng khác của culling thường cố gắng loại bỏ đi các tập tam giác, ví dụ như hộp giới
hạn (bounding box) bao quanh một tập hợp các tam giác nếu nằm bên ngoài vùng nhìn thầy (field-of-view) thì không có một tam giác nào trong tập hợp đó được hiển thị cả
Một dạng khác của việc rút gọn tam giác được thực hiện trong mức độ chi tiết
Trang 13KHOA CNTT –
ĐH KHTN
LOD đơn giản có thể lưu trữ các đối tượng nhiều hay ít chi tiết của cùng một đối tượng
và sử dụng chúng cho phù hợp, trong khi các sơ đồ phức tạp hơn có thể tính toán LOD trong lúc đang thực hiện Một thuật toán LOD liên tục có thể tạo ra một tập hợp rất lớn các xấp xỉ mà có thể thay đổi chỉ một tam giác
2.4 Các mô hình hiển thị đồ họa
Hiển thị đồ họa cố gắng tạo ra cấu trúc biểu diễn ảo cho dữ liệu mô hình để sử dụng trong quá trình hiển thị Chúng ta phân loại một mô hình để biểu diễn một đối tượng, nội thất trong nhà, môi trường ngoài trời hay hỗn hợp
Một đối tượng có thể là các thực thể - bàn, ghế, con người,… Những đối tượng động tương tác với khung cảnh và sở hữu một trí thông minh nhân tạo đều được gọi là nhân vật Dữ liệu thô kết hợp với các đối tượng này thường là một tập hợp các đỉnh
Môi trường trong nhà biểu diễn cho các tòa nhà và kiến trúc, thường được nhìn
từ bên trong Một hệ thống cống rãng và một tòa thánh đường đều là ví dụ của môi trường trong nhà Tương tự như đối tượng, dữ liệu thô kết hợp với môi trường trong nhà thường là tập hợp các đỉnh
Môi trường ngoài trời bao gồm địa hình, núi, rừng và biển, … Dữ liệu địa hình thường được lưu trữ dưới dạng bản đồ chiều cao (height field) Bản đồ chiều cao là một hình ảnh 2 chiều trong đó giá trị tại mỗi điểm được diễn giải thành chiều cao tại điểm
đó Bất kỳ một hình ảnh nào cũng có thể là một bản đồ chiều cao
Các dạng khác nhau của mô hình sở hữu các tính chất khác nhau, nó sẽ làm cho một phương pháp cụ thể sẽ có được những thuận lợi cho từng mô hình cụ thể hơn là những mô hình khác Trong báo cáo này chúng ta chỉ chú trọng vào môi trường ngoài trời và đặc biệt là mô hình địa hình và sẽ mô tả các phương pháp quản lý và hiển thị hiệu quả
Trang 14KHOA CNTT –
ĐH KHTN
Chương 3
Thuật toán của Röttger
Năm 1998, Stefan Röttger đã đưa ra một thuật toán CLOD được xây dựng trên công việc của Peter Lindstrom đã thực hiện trước đó Giả thuyết cơ bản được Lindstrom đưa ra là việc sử dụng cây tứ phân để tận dụng được bản đồ chiều cao Sử dụng phương pháp từ dưới lên, cây tứ phân này được dùng để phát sinh việc khảm (tesselation) LOD liên tục của dữ liệu địa hình theo thời gian thực
Röttger đề xuất một cơ chế khác nhằm tận dụng việc làm mịn theo chiến thuật
từ trên xuống đối với cây tứ phân phân cấp để tạo một quá trình khảm CLOD thời gian thực cho dữ liệu landscape
3.1 Cấu trúc dữ liệu
Cấu trúc dữ liệu bên dưới của thuật toán là một cây tứ phân Trong thuật toán này, ta giả sử bản đồ địa hình có kích thước 2n +1×2n +1 Một lưới được tạo ra bởi thuật toán như trong hình 3.1
Cây tứ phân được biểu diễn bởi một ma trận các giá trị nhị phân với mỗi tập hợp các mục (entry) cho trọng tâm của khối (block), nếu một nút tương ứng được làm mịn
Ma trận cây tứ phân của lưới ví dụ trong hình 3.1 được thể hiện như sau:
Trang 15KHOA CNTT –
ĐH KHTN
Hình 3-1: Lưới tam giác của bản đồ địa hình 9×9 Các mũi tên thể hiện các mối quan
hệ cha – con trong cây tứ phân
Các mục trong ma trận đánh dấu bằng dấu chấm hỏi không cần được thiết lập trong quá trình tính toán cho lập lưới tam giác, từ đó thuật toán top-down không truy cập các giá trị này trong một lưới tam giác đã cho Bởi vì số lượng các nút được viếng thăm trong mỗi frame chỉ phụ thuộc vào chất lượng hiển thị, nhưng không phụ thuộc vào kích thước của bản đồ địa hình, yêu cầu băng thông bộ nhớ bị hạn chế bởi chất lượng hình ảnh mà ta mong muốn
Trang 16KHOA CNTT –
ĐH KHTN
3.2 Hiển thị bản đồ địa hình
Bản đồ địa hình được lập lưới tam giác sẽ được vẽ bằng cách duyệt đệ qui toàn
bộ cây tứ phân và các entry trong ma trận tương ứng sẽ được thiết lập Chỉ khi nào duyệt đến lá của cây tứ phân thì một phần quạt tam giác (fan) hay một quạt tam giác hoàn chỉnh được vẽ lên Các quạt tam giác (triangle fan) rất thích hợp với việc vẽ lưới tam giác ở các độ phân giải (resolution) khác nhau: để tránh các bẫy ở những khối kế cận nhau mà có độ phân giải khác nhau, một lưới tam giác thích hợp được tạo ra một cách đơn giản bằng cách bỏ qua những trung điểm của các cạnh (xem hình 3.2) Phương pháp này chỉ thực hiện nếu các mức chi tiết (level) của các nút kề nhau chênh lệch không quá 1 đơn vị Ở cuối phần kế tiếp, chúng ta sẽ xem yêu cầu này được quản
lý như thế nào trong suốt quá trình hiển thị bằng cách tiền xử lý bản đồ địa hình và lưu trữ thông tin về độ gồ ghề của bề mặt
Trong quá trình phát sinh các quạt tam giác, chúng ta cần phải quyết định xem các nút kề nhau có được chia nhỏ ra để có cùng mức chi tiết hay không Nếu nút láng giềng không được chia nhỏ để có cùng mức chi tiết thì chúng ta có thể bỏ qua trung điểm của cạnh chung Trường hợp này có thể được phát hiện bằng cách kiểm tra các entry trong ma trận tương ứng với nút láng giềng, sau đó được đặt bằng 0 (chú ý rằng việc truy cập vào các entry ma trận, không được thiết lập, được loại bỏ đảm bảo độ chênh lệch mức chi tiết nhỏ hơn hoặc bằng 1)
Trang 17KHOA CNTT –
ĐH KHTN
Hình 3-2: Các quạt tam giác được phát sinh đệ qui cho lưới tam giác trong hình 3.1
Dấu gạch chéo chỉ ra các đỉnh được bỏ qua
3.3 Phát sinh lưới tam giác
Trước khi một khung cảnh được hiển thị như đã mô tả trong phần trước, lưới tam giác phải được xây dụng bằng duyệt đệ qui cây tứ phân Ở mỗi nút con, một tiêu chuẩn chia nhỏ nhị phân được đánh giá và kết quả của nó được lưu trữ trong ma trận cây tứ phân Nếu điều kiện thõa mãn và mức chi tiết (level of detail) tốt nhất vẫn chưa đạt tới, thì chúng ta sẽ duyệt sâu xuống cây tứ phân qua tất cả bốn nút con
Một số khía cạnh cần được quan tâm đến đối với tiêu chuẩn này: trước hết, độ phân giải nên giảm khi khoảng cách đến điểm nhìn tăng Điều kiện này có thể được đảm bảo bằng cách thỏa mãn:
C
với một số hằng số C, trong đó l là khoảng cách từ điểm nhìn, và d là chiều dài cạnh của khối (xem hình 3.3 và 3.4) C là một tham số chất lượng có thể cấu hình lại được
Trang 18KHOA CNTT –
ĐH KHTN
Hình 3-3: Tiêu chuẩn độ phân giải toàn cục: khoảng cách với kích thước ô trong cây tứ
phân
Hằng số C điều khiển độ phân giải toàn cục cực tiểu Nếu C tăng, số lượng toàn
bộ các đỉnh trong mỗi frame cũng sẽ tăng theo bậc 4 Chú ý rằng điều kiện trên chỉ được đánh giá một lần duy nhất cho một quạt tam giác hoàn chỉnh, bao gồm đến 10 đỉnh Để cho phép việc tính toán hiệu quả, việc đo khoảng cách được thực hiện sử dụng
1
L –norm
Hình 3-4: Lưới tam giác của một hình phẳng căn cứ vào tiêu chuẩn độ phân giải toàn
cục Các tâm của quạt tam giác có màu trắng và cạnh màu đen
Trang 19KHOA CNTT –
ĐH KHTN
Với tiêu chuẩn thứ hai, chúng ta muốn tăng độ phân giải của các vùng có bề mặt
gồ ghề cao Thực tế, chúng ta muốn cực tiểu hóa lỗi của đỉnh đã được chiếu lên màn hình, đây là một đại lượng tốt cho chất lượng hình ảnh Khi tăng lên một mức chi tiết thì lỗi mới phát sinh ở 5 điểm: ở tâm của nút trong cây tứ phân và 4 trung điểm của các cạnh Một chặn trên cho lỗi xấp xỉ trong không gian 3 chiều có thể có được bằng cách lấy giá trị lớn nhất trong các giá trị chênh lệch độ cao tuyệt đối dh i (xem hình 3.5) Chênh lệch độ cao được tính dọc theo các cạnh và đường chéo của nút, tổng cộng có 6 giá trị cho mỗi nút Lỗi trong không gian 3 chiều được phát sinh khi xuống một mức trong cây tứ phân bây giờ có thể được tính toán bằng cách tính trước giá trị lớn nhất của các giá trị chênh lệch độ cao tuyệt đối, hay xen kẽ với việc tính các giá trị gồ ghề
max
12
=
Các giá trị d2 của một nút nhân với chiều dài cạnh d của nút tương ứng với lỗi xấp xỉ trong không gian 3 chiều Do đó, giá trị d2 nhân với d chính là chặn trên cho lỗi
phát sinh khi tăng một mức chi tiết
Tiêu chuẩn chia nhỏ trên đã chỉnh sửa bao gồm các giá trị d2 cho việc xử lý độ
gồ ghề bề mặt bây giờ có thể đưa ra với biến quyết định f
1ifsubdivide
)1,2max(
d
l f
(3)
Giá trị hằng số C một lần nữa quyết định độ phân giải toàn cục cực tiểu, nhưng ngược lại hằng số mới c lại chỉ ra độ phân giải toàn cục mong muốn Hằng số sau ảnh
hưởng trực tiếp đến số lượng đa giác được hiển thị trong mỗi frame Do đó, bằng cách
thay đổi c, chúng ta có thể quản lý để có được tốc độ cố định
Trang 20có được như vậy
Trước tiên giả sử rằng điều kiện (3) được thỏa mãn cho một khối cho trước (f 2 < 1), nên khối này được chia nhỏ Trong trường hợp này, tất cả các khối kề nhau có chiều
dài cạnh gấp đôi cũng phải được chia nhỏ Do đó, điều kiện sau nhất định phải thỏa
mãn đối với biến quyết định f 1 của một khối kề nhau để giới hạn độ chênh lệch mức chi tiết
2 2
2 1
1 2
1
2
l d
d
l f
Trang 21KHOA CNTT –
ĐH KHTN
)1(22
221
2 1 2 1
L K
K l
điều kiện (5) Tuy nhiên, khi giá trị d2 tương ứng với độ gồ ghề bề mặt, có thể tăng lên
một cách tùy ý, điều kiện (4) không tự thỏa mãn Do đó, nếu d d ≤K
lan truyền từ lá lên gốc của cây tứ phân thể hiện trong hình 3.7
Hình 3-6: Hạn chế các giá trị d2 của các khối kề nhau nhằm thỏa mãn điều kiện (4)
Trang 22KHOA CNTT –
ĐH KHTN
Hình 3-7: Các giá trị d2 được lan truyền từ dưới lên (theo chiều mũi tên)
Đến đây, chúng ta chỉ xem xét trường hợp 2 chiều, nhưng với một vài chú ý chúng ta có thể chấp nhận nó trong 3 chiều Trong trường hợp này, độ cao của điểm nhìn cần phải được quan tâm liên quan đến tâm của các ô trong cây tứ phân Tuy nhiên, khi bản đồ chiều cao thường có chiều cao nhỏ hơn so với kích thước của chúng, khoảng cách này có thể được xấp xỉ bằng độ chênh lệch giữa điểm nhìn và độ cao trung bình của các nút trong cây tứ phân
Ví dụ về ảnh hường của sự lan truyền các giá trị d2 khắp bản đồ chiều cao, và
ảnh hưởng của nó lên lưới tam giác đã cho trong hình 3.8 Có một số cực trị nằm trên
bề mặt phẳng
Trang 23quyết định f từ biểu thức (3): Kiểm tra thấy rằng nếu f nằm trong khoảng [21 , 1), thì cây
tứ phân không được làm mịn hơn nữa, và một quạt tam giác được tạo ra cho nút này Các giá trị nhỏ hơn 21 chỉ ra rằng nút đó có ít nhất một nút con, trong khi các giá trị lớn hơn 1 thì nút đó không có nút con nào cả
Nếu morphing chỉ xảy ra ở các nút lá của lưới tam giác hiện tại, chúng ta có thể
sử dụng b=2(1− f) được giới hạn trong đoạn [0, 1] như là một hệ số blend cho những chỗ ranh giới giữa hai mức chi tiết (xem hình 3.5) Phụ thuộc vào các nút kề nhau trong cây tứ phân được chia nhỏ sâu đến bao nhiêu, có đến 5 đỉnh mà phải thực hiện morphing cho mỗi nút trên cây (xem hình 3.2 và 3.6) Độ cao ở những điểm này được
nội suy tuyến tính với hệ số b giữa độ cao của mức chi tiết thấp nhất (là trung bình của
hai điểm góc tương ứng) và độ cao của mức chi tiết cao nhất có thể lấy trực tiếp từ dữ liệu bản đồ chiều cao
Cần phải cẩn thận để tránh các hiện tượng xuất hiện các vết nứt (cracks) và tạo
Trang 243.5 Clipping
Một cải tiến phổ biến để giảm số lượng đa giác hiển thị đó là clipping với
viewing – frustum Khi chúng ta sử dụng cây tứ phân, chúng ta cũng có thể sử dụng nó
cho việc clipping Như đã cung cấp, mức chi tiết không quá cao, hộp giới hạn
(bounding box) được tính toán cho mỗi nút, để có thể sử dụng cho clipping với
viewing-frustum Theo cách này, hầu hết các đỉnh không nhìn thấy có thể được loại bỏ
ở giai đoạn sớm của thuật toán một cách ít tốn kém Clipping có thể được áp dụng cho
cả hai quá trình phát sinh lưới tam giác và quá trình hiển thị Đối với quá trình phát sinh lưới tam giác chúng ta xem như hộp giới hạn lớn gấp 3 lần, bởi vì các hệ số blending của một số khối có thể góp phần vào quá trình phát sinh lưới tam giác mà các khối đó không được nhìn thấy
3.6 Ưu và khuyết điểm
Ưu điểm chính của thuật toán này là nhu cầu dụng lượng bộ nhớ cho cấu trúc biểu diễn là ít hơn so với các thuật toán khác Một lần thiết lập, thuật toán yêu cầu chỉ một byte phụ cho mỗi phần tử dữ liệu địa hình Byte này lưu giá trị variance và làm
Trang 25KHOA CNTT –
ĐH KHTN
Khuyết điểm chính của thuật toán này là thiếu sơ đồ hiển thị cố kết frame (frame corehency) Tính cố kết frame tận dụng dữ liệu khảm của frame trước đó để tạo ra lưới
kết quả của frame hiện tại Cơ chế này thực hiện công việc có độ phức tạp O(số lượng
tam giác thay đổi), thường khoảng nhỏ hơn 5% mỗi frame Thuật toán của Röttger có
độ phức tạp O(log n), với bản đồ chiều cao có n×n điểm dữ liệu
Trang 26KHOA CNTT –
ĐH KHTN
Chương 4
Thuật toán ROAM
Thuật toán ROAM (Real-time Optimally Adapting Meshes) được Mark Duchaineau đưa ra năm 1997 Thuật toán này tận dụng quá trình phân chia và kết hợp
để tạo ra lưới tam giác một cách hiệu quả Ý tưởng tận dụng các thủ tục phân chia và kết hợp để tạo ra lưới tam giác gắn kết frame (frame coherency – nghĩa là lưới tam giác của frame này sẽ được xây dựng từ lưới tam giác của frame trước đó thông qua phép phân chia và kết hợp) đã được xúc tiến bởi Lindstrom trước đó – nhưng Duchaineau đã quan sát những hàm ý bên trong những khái niệm về cây nhị phân tam giác và sau đó phát biểu có hệ thống lại thành thuật toán ROAM rất thành công Thuật toán này ngày nay được sử dụng rộng rãi trong rất nhiều ứng dụng liên quan đến địa hình Và hiện nay người ta còn áp dụng thuật toán này vào việc hiển thị một đối tượng tổng quát
4.1 Biểu diễn
4.1.1 Cây nhị phân tam giác
Nếu cây tứ phân theo dạng hình vuông có bản sau là cây tứ phân tam giác, thì cây nhị phân theo dạng hình chữ nhật quen thuộc lại có bản sau là cây nhị phân tam giác ít được biết đến Hình dưới đây thể hiện vài mức đầu của cây nhị phân tam giác
Tam giác gốc T = (v a , v 0 , v 1 ) được định nghĩa là một tam giác vuông cân ở mức (level)
thô nhất, l = 0 Ở mức kế tiếp tốt hơn, l = 1, các con của tam giác gốc được định nghĩa bằng cách phân chia tam giác gốc theo đoạn thẳng nối từ đỉnh của tam giác v a tới trung
Trang 27KHOA CNTT –
ĐH KHTN
tam giác con phải của T là T 1 = (v c , v 1 , v a ) Phần còn lại của cây nhị phân tam giác
được định nghĩa bằng cách đệ qui lặp đi lặp lại tiến trình phân cách này
Hình 4-1: Mức 0 → 5 của cây nhị phân tam giác
4.1.2 Lưới tam giác động và liên tục
Các lưới điểm trong không gian thế giới được hình thành bằng việc gán các vị
trí trong không gian thế giới w(v) cho các đỉnh của cây nhị phân Một tập hợp các tam
giác của cây nhị phân tạo thành một lưới điểm liên tục khi không có bất kì hai tam giác nào chồng lên nhau ở bất kì đâu ngoại trừ chúng có chung đỉnh và chung cạnh Chúng
ta chỉ quan tâm đến những lưới liên tục như lưới tam giác cho cây nhị phân hay đơn
giản là lưới tam giác (triangulation) Hình 4.2 mô tả một láng giềng điển hình của tam giác T trong lưới tam giác Chúng ta định nghĩa T B là láng giềng đáy (base neighbor) chia sẻ cạnh huyền (v 0 , v 1 ), T L là láng giềng trái (left neighbor) chia sẻ cạnh trái (v a , v 0 ),
và T R là láng giềng phải (right neighbor) chia sẻ cạnh phải (v 1 , v a ) của tam giác
Trang 28KHOA CNTT –
ĐH KHTN
trái và phải, hay có mức thô hơn liên tiếp l – 1 đối với các láng giềng đáy Tất cả các
quan hệ này được mô tả thông qua các tam giác trong Hình 4.3
Khi T và T B đều có cùng mức l, chúng ta xem cặp (T, T B ) như là một hình thoi (diamond) Phép phân chia và phép kết hợp (phép đảo của phép phân chia) cũng được
mô tả trong Hình 4.3 cho lưới tam giác có chứa hình thoi Phép phân chia sẽ thay thế
tam giác T bằng các tam giác con (T 0 , T 1 ), và tam giác T B bằng hai tam giác con (T B1 ,
T B2 ) Phép phân chia này sẽ tạo ra một đỉnh mới v c ở tâm của hình thoi, và cho kết quả
là một lưới tam giác mới Nếu tam giác T không có láng giềng đáy T B, thì chỉ có tam
giác T bị phân chia thành hai tam giác con Phép kết hợp có thể được áp dụng cho hình thoi (T, T B ) khi tất cả các tam giác con của T và T B (nếu T B tồn tại) đều có trong lưới
tam giác Trong trường hợp này, chúng ta nói (T, T B ) là một hình thoi khả hợp
(mergeable diamond) của lưới tam giác
Một vấn đề quan trọng về các phép phân chia và kết hợp là bất kì lưới tam giác nào đều có thể có được từ bất kì một lưới tam giác khác thông qua một chuỗi các phép phân chia và kết hợp
Chúng ta có thể tạo chuyển động cho các phép phân chia và kết hợp thông qua
kỹ thuật morphing đỉnh để tạo nên tính liên tục tạm thời cho các đỉnh mới Với khoảng
thời gian t ∈ [0, 1], giả sử có phép phân chia một hình thoi (T, T B ) như trong Hình 4.2
Thay vì di chuyển điểm vc ngay đến vị trí mới của nó w c =w(v c ), mà ta cho nó di chuyển
dần dần trên đoạn thẳng từ trung điểm cạnh huyền lúc chưa phân chia
2 / )) ( ) ( (w v0 w v1
w m = + đến vị trí mới: w a(t) = ( 1 −t)w m+tw c Và tương tự phép kết hợp
Trang 29KHOA CNTT –
ĐH KHTN
Hình 4-2: Phép phân chia và kết hợp trên lưới tam giác của cây nhị phân Quan hệ láng
giềng được thể hiện trong tam giác T ở bên trái.
Tam giác T không thể phân chia được khi tam giác láng giềng đáy T B ở mức thô
hơn Để tam giác T có thể phân chia thì tam giác T B bắt buộc phải được phân chia trước, phép phân chia này có thể kéo dài thành chuỗi đệ qui Trong Hình 4.3 ta cần đến 4
phép phân chia Do đó các phép phân chia ép buộc (forced splits) là cần thiết cho thuật
toán tối ưu trong phần sau
Hình 4-3: Phép phân chia ép buộc cho tam giác T
Lưới tam giác ban đầu gồm nhiều tam giác có thể được sử dụng để biểu diễn một đa giác bất kì Nếu lưới tam giác ban đầu chỉ gồm các hình thoi, thì các phép phân