1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình kỹ thuật đồ họa máy tính

160 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 160
Dung lượng 1,4 MB

Nội dung

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP QUẢNG NINH GIÁO TRÌNH KỸ THUẬT ĐỒ HỌA MÁY TÍNH DÙNG CHO BẬC ĐẠI HỌC (LƯU HÀNH NỘI BỘ) QUẢNG NINH - 2013 Chương 1: Giới thiệu thuật tốn vẽ tơ đường Lời nói đầu Đồ họa máy tính đời kết hợp lĩnh vực thơng tin truyền hình Đầu tiên kỹ thuật đồ họa phát triển nhóm kỹ sư sử dụng máy tính lớn Trong giai đoạn đầu phát triển người ta phải tốn nhiều tiền cho việc trang bị thiết bị phần cứng Ngày nay, nhờ vào tiến vi xử lý, giá thành máy tính lúc phù hợp với túi tiền người sử dụng kỹ thuật ứng dụng đồ họa ngày cao nên có nhiều người quan tâm nghiên cứu đến lĩnh vực Chúng ta vẽ hình ảnh khơng ảnh tĩnh mà cịn biến đổi thành hình ảnh sinh động qua phép quay, tịnh tiến Do vậy, đồ họa máy tính trở thành lĩnh vực lý thú có nhiều ứng dụng thực tế Tuy nhiên, việc dạy học kỹ thuật đồ họa khơng đơn giản chủ đề có nhiều phức tạp Kỹ thuật đồ họa liên quan đến tin học tốn học hầu hết giải thuật vẽ, tơ phép biến hình xây dựng dựa tảng hình học khơng gian hai chiều ba chiều Hiện nay, Kỹ thuật đồ họa môn học giảng dạy cho sinh viên chuyên ngành Tin học với 45 tiết lý thuyết 15 tiết thực tập Nội dung giáo trình kỹ thuật đồ họa tập trung vào vấn đề sau : - Trình bày thuật tốn vẽ tơ đường đường thẳng, đa giác, đường tròn, ellipse đường conic Các thuật tốn giúp cho sinh viên tự thiết kế để vẽ tơ hình ( chương 2) - Nội dung thứ hai đề cập đến đồ họa hai chiều đồ họa ba chiều bao gồm phép biến đổi Affine, windowing clipping, quan sát ảnh ba chiều qua phép chiếu, khử mặt khuất đường khuất, thiết kế đường cong mặt cong (từ chương đến chương 7) Giáo trình kỹ thuật đồ họa sửa đổi cập nhật dựa kinh nghiệm giảng dạy qua xây dựng dựa tài liệu tham khảo : Donald Hearn, M Pauline Baker; Computer Graphics; Prentice-Hall, Inc., Englewood Cliffs, New Jersey , 1986 Sau cùng, hy vọng giáo trình đóng góp tích cực việc cải tiến hiểu biết sinh viên lĩnh vực đồ họa mong nhận góp ý đồng nghiệp sinh viên để công việc biên soạn ngày tốt Trang Chương 1: Giới thiệu thuật tốn vẽ tơ đường Mục lục Chương 1: GIỚI THIỆU THUẬT TOÁN VẼ VÀ TÔ CÁC ĐƯỜNG CƠ BẢN 1.1 Tổng quan 1.2 Hệ tọa độ giới thực, hệ tọa độ thiết bị hệ tọa độ chuẩn 1.3 Thuật toán vẽ đoạn thẳng 1.3.1 Thuật toán DDA (Digital DifferentialAnalyzer) 10 1.3.2 Thuật toán Bresenham 13 1.4 Thuật tốn vẽ đường trịn 17 1.4.1 Thuật toán đơn giản .17 1.4.2 Thuật toán MidPoint 18 1.4.3 Vẽ đường trịn thuật tốn Bresenham 21 1.4.4 Thuật toán vẽ Ellipse .22 1.4.5 Vẽ đường conics số đường cong khác 24 1.4.6 Vẽ đa giác 25 1.4.7 Tổng kết chương 28 1.4.8 Bài tập chương .28 Chương : CÁC THUẬT TỐN TƠ MÀU 31 2.1 Tổng quan .31 2.2 Các không gian màu .31 2.2.1 Không gian màu RGB (Red - Green - Blue) 31 2.2.2 Không gian màu CMY (Cyan - Magenta - Yellow) .32 2.2.3 Không gian màu HSV ( Hue - Saturation - Value ) 32 2.3 Các thuật tốn tơ màu .33 2.3.1 Tô đơn giản 33 2.3.2 Tô màu theo dòng quét (scan - line) 38 2.3.3 Phương pháp tô màu dựa theo đường biên 42 2.4 Tổng kết chương 45 2.5 Bài tập chương 46 Chương : PHÉP BIẾN ĐỔI TRONG ĐỒ HỌA HAI CHIỀU 47 U 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 Tổng quan .47 Phép tịnh tiến (translation) 47 Phép biến đổi tỷ lệ 48 Phép quay 49 Phép đối xứng 51 Phép biến dạng 51 Phép biến đổi Affine ngược ( The inverse of an Affine transformation) .52 Một số tính chất phép biến đổi affine 53 Hệ tọa độ .53 Kết hợp phép biến đổi (composing transformation) 54 Tổng kết chương 55 Bài tập chương 55 Chương 58 WINDOWING CLIPPING 58 4.1 4.2 Tổng quan .58 Các khái niệm Windowing .58 Trang Chương 1: Giới thiệu thuật tốn vẽ tơ đường 4.3 4.4 4.5 4.6 Các thuật toán Clipping 63 Phép biến đổi từ cửa sổ - đến – vùng quan sát .84 Tổng kết chương 86 Bài tập chương 86 Chương : ĐỒ HỌA BA CHIỀU 88 U 5.1 Tổng quan .88 5.2 Giới thiệu đồ họa chiều 88 5.3 Biểu diễn đối tượng chiều 90 5.4 Các phép biến đổi chiều .95 5.4.1 Hệ tọa độ bàn tay phải - bàn tay trái .95 5.4.2 Các phép biến đổi Affine sở .95 5.5 Tổng kết chương 97 Chương : QUAN SÁT ẢNH BA CHIỀU 98 U 6.1 Tổng quan .98 6.2 Các phép chiếu 98 6.2.1 Các phép chiếu song song .100 6.2.2 Các phép chiếu phối cảnh 105 6.3 Biến đổi hệ tọa độ quan sát (hệ quan sát) .107 6.3.1 Xác định mặt phẳng quan sát .108 6.3.2 Không gian quan sát 112 6.3.3 Clipping 115 6.4 Cài đặt thao tác quan sát (Implementation of Viewing Operations) 116 6.5 Cài đặt phần cứng 125 6.6 Lập trình xem ảnh ba chiều 126 6.7 Các mở rộng đến Đường ống quan sát (Viewing Pipeline) 130 6.8 Tổng kết chương 130 6.9 Bài tập chương 131 Chương 134 KHỬ CÁC MẶT KHUẤT VÀ ĐƯỜNG KHUẤT 134 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 Tổng quan .134 Khử mặt nằm sau (Back-Face Removal) .135 Phương pháp dùng vùng đệm độ sâu (Depth-Buffer Method) .138 Phương pháp đường quét (Scan-Line Method) 140 Phương pháp xếp theo độ sâu (Depth- Sorting Method) 143 Phương pháp phân chia vùng (Area- Subdivision Method) 147 Các phương pháp Octree (Octree Methods) 150 Loại bỏ đường bị che khuất 154 Tổng kết chương 156 Bài tập chương .157 Trang Chương 1: Giới thiệu thuật toán vẽ tô đường PHẦN TỔNG QUAN Mục đích u cầu Sau học xong mơn này, sinh viên cần đạt yêu cầu sau: - Hiểu đồ họa máy tính - Thiết kế cài đặt thuật toán vẽ đường đường thẳng, đường tròn, - Thiết kế cài đặt thuật tốn tơ hình - Sử dụng phép biến hình không gian chiều, chiều để làm thay đổi hình ảnh có sẳn - Có thể tạo cửa sổ để cắt - dán hình - Hiểu khái niệm tiếp cận để mô hình ảnh khơng gian chiều máy tính Đối tượng sử dụng Mơn kỹ thuật đồ họa giảng dạy cho sinh viên năm thứ tư khoa sau: - Chuyên ngành công nghệ thông tin - Chuyên ngành điện tử (viễn thông, tự động hóa, ) - Chun ngành sư phạm (Tốn tin, Lý tin ) Nội dung cốt lõi Giáo trình Kỹ thuật đồ họa bao gồm chương - Chương 1: Giới thiệu thuật tốn vẽ tơ đường - Chương 2: Các thuật tốn tơ màu - Chương 3: Phép biến đổi đồ họa chiều - Chương 4: Tạo cửa sổ cắt hình - Chương 5: Đồ họa chiều - Chương 6: Quan sát ảnh chiều - Chương 7: Khử mặt khuất đường khuất Kiến thức tiên - Kiến thức hình học khơng gian hình giải tích - Kiến thức lập trình bản, lập trình đồ họa - Kiến thức cấu trúc liệu, lập trình đệ qui Trang Chương 1: Giới thiệu thuật tốn vẽ tơ đường Danh mục tài liệu tham khảo - Donald Hearn, M Pauline Baker; Computer Graphics; Prentice-Hall, Inc., Englewood Cliffs, New Jersey , 1986 - F.S.Hill; Computer graphics ; 1990 - Vũ Mạnh Tường, Dương Anh Đức, Trần Đan Thư, Lý Quốc Ngọc Giáo trình Nhập mơn đồ họa & xử lý ảnh.1995 - VERA B.ANAND, người dịch TS Nguyễn Hữu Lộc Đồ họa máy tính Mơ hình hóa hình học Nhà xuất Thành Phố Hồ Chí Minh - 2000 - Foley, Van Darn, Feiner, Hughes, Phillips Introduction L'Infographie 1995 - Lê Tấn Hùng, Huỳnh Quyết Thắng Kỹ thuật đồ họa Nhà xuất khoa học kỹ thuật, Hà nội - 2000 Trang Chương 1: Giới thiệu thuật tốn vẽ tơ đường Chương 1: GIỚI THIỆU THUẬT TỐN VẼ VÀ TƠ CÁC ĐƯỜNG CƠ BẢN 1.1 Tổng quan • Mục tiêu chương Học xong chương này, sinh viên phải nắm bắt vấn đề sau: - Thế hệ đồ họa - Thiết kế cài đặt thủ tục vẽ tô đường đường thẳng, đường tròn, elip, đường cong khác • Kiến thức cần thiết Các kiến thức cần thiết để học chương bao gồm : - Các khái niệm toán học đường thẳng : đường thẳng : dạng tổng qt phương trình đường thẳng, hệ số góc, tung độ dốc - Hiểu rõ hình dáng đường thẳng phụ thuộc vào hệ số góc - Phương trình tổng qt đường trịn, ellippse ( khơng có tham số có tham số) - Kĩ thuật lập trình: thiết lập thủ tục, hàm (lưu ý truyền qui chiếu truyền giá trị) • Tài liệu tham khảo Donald Hearn, M Pauline Baker Computer Graphics Prentice-Hall, Inc., Englewood Cliffs, New Jersey , 1986 (chapters 3, 55-76) • Nội dung cốt lõi Thiết lập thủ tục vẽ : - Đường thẳng giải thuật DDA - Đường thẳng giải thuật Bresenham - Đường tròn giải thuật đối xứng - Đường tròn giải thuật Bresenham - Đường tròn giải thuật MidPoint - Ellippse - Đa giác Trang Chương 1: Giới thiệu thuật toán vẽ tô đường 1.2 Hệ tọa độ giới thực, hệ tọa độ thiết bị hệ tọa độ chuẩn Một hệ mềm đồ họa mô tả bao gồm miền sau : - Miền điều khiển : bao bọc toàn hệ thống - Miền thực : nằm miền điều khiển Khi số thâm nhập vào miền thực, chuyển thành số thực dấu phẩy động, có số rời khỏi miền chuyển thành số nguyên có dấu 16 bits - Miền hiển thị : nằm miền điều khiển phân biệt với miền thực Chỉ có số nguyên 16 bits nằm miền hiển thị Trong lĩnh vực kỹ thuật đồ họa, phải hiểu thực chất đồ họa làm để mơ tả biến đổi đối tượng giới thực máy tính Bởi vì, đối tượng giới thực mơ tả tọa độ thực Trong đó, hệ tọa độ thiết bị lại sử dụng hệ tọa độ nguyên để hiển thị hình ảnh Đây vấn đề cần giải Ngồi ra, cịn có khó khăn khác với thiết bị khác có định nghĩa khác Do đó, cần có phương pháp chuyển đổi tương ứng hệ tọa độ đối tượng phải định nghĩa thành phần đơn giản để mơ tả gần với hình ảnh thực bên ngồi Hai mơ hình ứng dụng đồ họa dựa mẫu số hóa dựa đặc trưng hình học Trong ứng dụng đồ họa dựa mẫu số hóa đối tượng đồ họa tạo lưới pixel rời rạc Các pixel đuợc tạo chương trình vẽ, máy quét, Các pixel mơ tả tọa độ xác định vị trí giá trị mẫu Thuận lợi ứng dụng dể dàng thay đổi ảnh cách thay đổi màu sắc hay vị trí pixel, di chuyển vùng ảnh từ nơi sang nơi khác Tuy nhiên, điều bất lợi xem xét đối tượng từ góc nhìn khác Ứng dụng đồ họa dựa đặc trưng hình học bao gồm đối tượng đồ họa sở đoạn thẳng, đa giác, Chúng lưu trữ mơ hình thuộc tính Ví dụ : đoạn thẳng mơ hình hai điểm đầu cuối, có thuộc tính màu sắc, độ dày Người sử dụng không thao tác trực tiếp pixel mà thao tác thành phần hình học đối tượng a Hệ tọa độ giới thực: Một hệ tọa độ thực thường dùng để mô tả đối tượng giới thực hệ tọa độ Descartes Với hệ tọa độ này, điểm P biểu diễn cặp tọa độ (xp,yp) với xp, yp ∈R (xem hình 1.1) Trang Chương 1: Giới thiệu thuật tốn vẽ tơ đường Y yp O P(xp,yp) X xp Hình 1.1 : Hệ tọa độ thực Ox : gọi trục hoành Oy : gọi trục tung xp : hoành độ điểm P yp : tung độ điểm P b Hệ tọa độ thiết bị Hệ tọa độ thiết bị (device coordinates) dùng cho thiết bị xuất cụ thể đó, ví dụ máy in, hình, Trong hệ tọa độ thiết bị điểm mô tả cặp tọa độ (x,y) Tuy nhiên, khác với hệ tọa độ thực x, y ∈ N Điều có nghĩa điểm hệ tọa độ thực định nghĩa liên tục, điểm hệ tọa độ thiết bị rời rạc Ngoài ra, tọa độ x, y hệ tọa độ thiết bị biểu diễn giới hạn N Ví dụ : Độ phân giải hình chế độ đồ họa 640x480 Khi đó, x∈(0,640) y∈(0,480) (xem hình 1.2) (0,0) (0, 480) (640,0) (640,480) Hình 1.2 : Hệ tọa độ hình Trang Chương 1: Giới thiệu thuật tốn vẽ tơ đường c Hệ tọa độ thiết bị chuẩn (Normalized device coordinates) Do cách định nghĩa hệ tọa độ thiết bị khác nên hình ảnh hiển thị thiết bị xác chưa hiển thị xác thíết bị khác Người ta xây dựng hệ tọa độ thiết bị chuẩn đại diện chung cho tất thiết bị để mơ tả hình ảnh mà khơng phụ thuộc vào thiết bị Trong hệ tọa độ chuẩn, tọa độ x, y gán giá trị đoạn từ [0,1] Như vậy, vùng không gian hệ tọa độ chuẩn hình vng đơn vị có góc trái (0, 0) góc phải (1, 1) Q trình mơ tả đối tượng thực sau (xem hình 1.3): Ảnh định nghĩa tọa độ giới thực hình Tọa độ chuẩn hóa Tọa độ thiết bị máy in thiết bị khác Hình 1.3 : Hệ tọa độ hình 1.3 Thuật tốn vẽ đoạn thẳng Xét đoạn thẳng có hệ số góc 0 với đỉnh có tọa độ (x, y, z) S, mặt S “phía ngồi” mặt nằm chồng S’ (xem hình 711) Như đề cập trước đây, hệ số A’, B’, C’, D’ phải xác định trước để pháp vector mặt nằm chồng S’ xa khỏi mặt phẳng quan sát zv zv S S S’ S’ xv xv Hình 7-11 Mặt S hồn tồn “phía ngồi” mặt nằm chồng S’ nhìn từ mặt quan sát xy Hình 7-12 Mặt nằm chồng S’ hồn tồn “phía trong” mặt S, nhìn từ mặt quan sát xy Phép kiểm tra thực dùng hệ số A, B, C, D mặt S Nếu tọa độ (x, y, z) tất đỉnh mặt nằm chồng S’ thỏa điều kiện Ax + By + Cz + D < 0, mặt nằm chồng S’ “phía trong” mặt S (cung cấp pháp vector mặt S hướng xa mặt phẳng quang sát) Hình 7-12 trình bày mặt nằm chồng S’ thỏa phép kiểm tra Trong ví dụ này, mặt S khơng “phía ngồi” S’ (phép kiểm tra khơng đúng) Trang 145 Chương 7: Khử mặt kuất đường khuất Nếu tất phép kiểm tra từ đến thất bại (sai), thử đến phép kiểm tra cách kiểm tra cắt cạnh biên hai mặt, dùng phương trình đường thẳng mặt xy Như minh họa hình 7-13, hai mặt cắt khơng cắt chí khơng gian bao quanh chồng theo hướng x, y, z (xem hình 7-13) Hình 7-13 Hai mặt với biên chữ nhật nằm chồng mặt xy Các mặt không cắt Các mặt cắt Nếu tất bốn phép kiểm tra thất bại với mặt nằm chồng cụ thể S’, ta đổi chỗ hai mặt S S’ cho danh sách Một ví dụ hai mặt xếp lại với thủ tục cho hình 7-14 Tuy nhiên, ta ta tìm gặp mặt xa tính từ mặt phẳng quan sát chưa Hình 7-15 minh họa trường hợp mà đổi chổ S S’’ với Nhưng S’’che khuất phần S’ (nhìn lên từ mặt xy), cần đổi chổ S’’ S’ với để có ba mặt hợp lý theo độ sâu Do đó, cần lặp lại trình kiểm tra cho mặt, vừa lại danh sách zv zv S S’ S S’’ xv Hình 7-14 Mặt S có độ sâu z lớn S’ xv Hình 7-15 Ba mặt ban đầu theo thứ tự độ sâu z : S, Thuật toán vừa phác thảo vào vịng lặp vơ tận hai hay nhiều mặt che khuất lẫn cách luân phiên hình 7-7 (xem hình 7-7) Trang 146 Chương 7: Khử mặt kuất đường khuất Trong trường hợp thế, thuật toán lặp lặp lại không ngừng việc đổi chỗ vị trí mặt nằm chồng Để tránh vịng lặp thế, đặt cờ trạng thái cho mặt vừa đến vị trí xa để khơng bị di chuyển lại Nếu có cố gắng làm để đổi chỗ mặt lần thứ hai, ta chia làm hai phần đường cắt (đường giao) hai mặt Mặt ban đầu sau thay hai mặt mới, ta lại tiếp tục trình xử lý trước 7.6 Phương pháp phân chia vùng (Area- Subdivision Method) Kỹ thuật khử mặt khuất hiệu cho phương pháp khơng gian ảnh, phương pháp khơng gian đối tượng dùng để thực việc xếp mặt theo độ sâu Phương pháp phân chia vùng tận dụng thuận lợi vùng cố kết ảnh cách xác định vùng quan sát để tách chúng làm nhiều phần nhỏ, phần xem mặt đơn lẻ Chúng ta áp dụng phương pháp cách phân chia thành cơng tồn vùng quan sát thành hình chữ nhật lúc nhỏ Hình 7-16 Các phần chia thực thành công với phép chia vùng nhỏ hình chiếu phần mặt đơn lẻ nhìn thấy được, tiếp tục phân chia Để thực phương pháp này, ta cần xây dựng phép kiểm tra để xác định nhanh chóng vùng phần mặt đơn lẻ cho ta biết vùng q phức tạp để phân tích bình thường Bắt đầu với nhìn tổng thể, ta áp dụng phép kiểm tra để xác định xem có nên phân chia tồn vùng thành hình chữ nhật nhỏ không Nếu phép kiểm tra mặt quan sát đủ phức tạp, ta phân chia Kế tiếp, áp dụng phép kiểm tra đến vùng nhỏ hơn, chia nhỏ vùng phép kiểm tra xác định tính nhìn thấy mặt đơn chưa chắn Chúng ta tiếp tục trình đến phần phân chia dễ dàng phân tích mặt đơn lẻ đến chúng thu giảm kích thước thành pixel Trang 147 Chương 7: Khử mặt kuất đường khuất Một cách để phân chia vùng thành cơng chia kích thước làm 2, hình 7-16 Một vùng quan sát với độ phân giải 1024x1024 chia 10 lần trước phần chia giảm thành điểm Các phép kiểm tra để xác định tính nhìn thấy mặt đơn phạm vi vùng định thực cách so sánh mặt với biên vùng Có bốn khả xảy xem xét mối quan hệ mặt với biên vùng định Ta mơ tả đặc điểm quan hệ theo cách sau (xem hình 7-17): Mặt bao quanh (surrounding surface) mặt hoàn toàn bao quanh vùng Mặt nằm chồng (overlapping surface) mặt có phần nằm phần nằm vùng Mặt bên (inside surface) mặt hoàn toàn nằm bên vùng Mặt bên (outside surface) mặt hoàn tồn nằm bên ngồi vùng Hình 7-17 Các quan hệ xảy mặt đa giác vùng chữ nhật Mặt bao quanh Mặt nằm chồng Mặt bên Mặt bên Các phép kiểm tra để xác định tính nhìn thấy mặt phạm vị vùng đề cập giới hạn bốn loại Khơng có phân chia thêm cho vùng điều kiện sau (true): Tất mặt nằm bên vùng Chỉ mặt bên trong, mặt nằm chồng mặt bao quanh vùng Một mặt bao quanh che khuất tất mặt khác phạm vi biên vùng Kiểm tra thực cách kiểm tra biên chữ nhật bao quanh mặt với biên vùng Kiểm tra dùng biên chữ nhật mặt Trang 148 Chương 7: Khử mặt kuất đường khuất xy để xác định mặt nằm Với kiểu mặt khác, biên chữ nhật dùng bước kiểm tra ban đầu Nếu biên chữ nhật cắt vùng theo cách đó, kiểm tra thực để xác định xem mặt là: mặt bao quanh, mặt nằm chồng, hay mặt bên Nếu xác định mặt bên trong, mặt nằm chồng, hay mặt bao quanh, giá trị độ sáng pixel chuyển đến vùng thích hợp vùng đệm khung Một phương pháp để thực bước xếp mặt dựa theo độ sâu nhỏ chúng Sau đó, với mặt bao quanh, ta tính giá trị z lớn vùng xem xét Nếu giá trị lớn z mặt (trong số mặt mặt bao quanh) nhỏ giá trị z nhỏ mặt lại vùng, kiểm tra thỏa Hình 7-18 trình bày ví dụ chứa điều kiện phương pháp zv z’’min z’min zmax xv Vùng xem xét Hình 7-18 Một mặt bao quanh với độ sâu lớn zmax (xét vùng quan sát) che khuất tất mặt mà độ sâu nhỏ xmin chúng lớn zmax Một phương pháp khác để thực kiểm tra mà không cần đến xếp độ sâu dùng phương trình mặt phẳng để tính giá trị z bốn đỉnh vùng cho tất mặt bao quanh, mặt nằm chồng, hay mặt bên Nếu giá trị z số mặt bao quanh mà nhỏ giá trị z mặt cịn lại, kiểm tra Sau vùng tơ với giá trị độ sáng mặt bao quanh Trong vài trường hợp, hai phương pháp cho kiểm tra thất bại để xác định mặt bao quanh che khuất tất mặt lại khác Việc kiểm tra thêm thực để xác định mặt đơn che phủ vùng, nhiên, thuật toán Trang 149 Chương 7: Khử mặt kuất đường khuất nhanh ta phân chia vùng tiếp tục làm kiểm tra phức tạp Khi mặt bên mặt bao quanh vừa xác định cho vùng, chúng cịn lại mặt bên bao quanh cho tất phần phân chia vùng Hơn nữa, vài mặt bên mặt nằm chồng chờ để bị loại bỏ trình phân chia tiếp tục, để vùng trở nên dễ dàng cho phân tích Trong trường hợp đến giới hạn, kích thước vùng chia pixel, ta đơn giản tính độ sâu mặt có liên quan điểm chuyển giá trị độ sáng mặt gần vào vùng đệm khung yv • • S zv Vùng A Hình 7-19 Vùng A phân chia thành A1 A2 cách dùng biên mặt S mặt phẳng chiếu • A2 A1 xv Như thay đổi lên trình phân chia bản, ta phân chia vùng dọc theo biên mặt thay chia chúng làm Nếu mặt vừa theo độ sâu nhỏ nhất, ta dùng mặt có giá trị z nhỏ để phân chia vùng cho Hình 7-19 minh họa phương pháp để phân chia vùng Hình chiếu biên mặt S dùng để phân chia vùng ban đầu thành phần A1 A2 Mặt S sau trở thành mặt bao quanh A1 phép kiểm tra áp dụng để xác định xem việc phân chia thêm có cần thiết khơng Trong trường hợp tổng quát, phân chia cần dùng tiếp cận này, nhiên nhiều xử lý thêm cần để chia vùng phân tích mối liên hệ mặt với biên vùng chia 7.7 Các phương pháp Octree (Octree Methods) Khi biểu diễn octree dùng cho không gian quan sát, việc khử mặt khuất thực cách chiếu nút octree lên mặt quan sát theo thứ tự từ trước sau Trong hình 7-20, mặt phía trước vùng khơng gian (mặt hướng phía Trang 150 Chương 7: Khử mặt kuất đường khuất người quan sát) hình thành với phần tám (octant) 0, 1, 2, Mặt trước octant nhìn thấy người quan sát Bất kỳ mặt hướng phía sau octant phía trước octant đằng sau (4, 5, 6, 7) bị che khuất mặt phía trước Các mặt phía sau bị loại bỏ, với hướng quan sát hình 7-20, cách xử lý phần tử liệu nút octree theo thứ tự 0, 1, 2, 3, 4, Hướng quan sát Các Octant đánh số vùng 5, 6, Điều tạo kết du hành theo độ sâu octree, để octant 0, 1, 2, toàn vùng viếng thăm trước octant 4, 5, 6, Hình 7-20 Các đối tượng octant 0, 1, 2, che khuất octant phía sau (4, 5, 6, 7) hướng quan sát hình Tương tự, bốn octant trước octant viếng thăm trước bốn octant phía sau Cuộc du hành Hình 7-21 Sự phân chia octant cho vùng không gian mặt phần tư tương ứng octree, vùng pixel vùng đệm khung tương chia octant Khi giá trị màu gặp nút octree tiếp tục theo thứ tự cho phần Các octant không gian ứng với nút gán giá trị màu khơng giá trị lưu trước vùng Khơng nạp vùng trống rỗng Bất kỳ nút phát bị che khuất hồn tồn bị loại bỏ khỏi xử lý tương lai, để các khơng Các quadrant (góc 1/4) mặt phẳng quan sát truy cập vào Các quang cảnh khác đối tượng biểu diễn octree đạt cách áp dụng phép biến đổi đến biểu diễn octree để làm thay đổi đối tượng theo hướng quan sát Ta giả sử biểu diễn octree xây dựng cho octant 0, 1, 2, vùng hình thành nên mặt phía trước (xem hình 7-20) Trang 151 Chương 7: Khử mặt kuất đường khuất Một phương pháp để hiển thị octree từ trước sau ánh xạ octree vào quadtree vùng nhìn thấy cách duyệt qua nút octree từ trước sau trình đệ quy Sau biểu diễn quadtree mặt nhìn thấy được nạp vào vùng đệm khung Hình 7-21 mô tả octant vùng không gian quadtree tương ứng mặt phẳng quan sát Các phần tạo thành quadtree lấy từ octant Các giá trị màu góc phần tư (quadrant 1) có từ mặt octant 5, giá trị hai quadrant lại sinh từ cặp octant thẳng hàng với quadrant Việc xử lý đệ quy nút octree trình bày thủ tục convert_oct_to_quad, nơi nhận vào mô tả octree tạo biểu diễn quadtree cho mặt nhìn thấy vùng Trong hầu hết trường hợp, octant phía trước phía sau phải xem xét để xác định màu cho quadrant Tuy nhiên, ta bỏ qua q trình xử lý octant phía sau octant phía trước tơ đồng với vài màu Đối với vùng không đồng nhất, thủ tục gọi đệ quy, với đối số – octant không đồng nút quadtree tạo Nếu octant phía trước rỗng, cần xử lý octant phía sau Ngược lại, hai lời gọi đệ quy làm, cho octant phía sau cho octant phía trước type oct_node_ptr =^ oct_node; oct_entry = record case homogeneous: boolean of true : (color : integer); false : (child : oct_node_ptr) end; {record} oct_node = array [0 7] of oct_entry; quad_node_ptr = ^ quad_node; quad_entry = record case homogeneous: boolean of true : (color : integer); false : (child : oct_node_ptr) end; {record} Trang 152 Chương 7: Khử mặt kuất đường khuất quad_node = array[0 3] of quad_entry; var newquadtree : quad_node_ptr; backcolor: integer; {Giả sử quang cảnh phía trước octree (với octant 0, 1, 2, phía trước) và, biểu diễn hiển thị, biến đổi thành quatree Nhận octree input, nơi mà phần tử octree giá trị màu (homogeneous = true octant tô với màu này) trỏ đến nút octant (homogeneous = false).} procedure convert_oct_to_quad(octree: oct_node; var quadtree: quad_node); var k: integer; begin for k:=0 to begin quadtree[k].homogeneous:=true; if (octree[k].color>-1) then {octant trước đầy} quadtree[k].color:= octree[k].color else {octant trước rỗng} if octree[k+4].homogeneous then if (octree[k+4].color > -1) then {trước rỗng, sau đầy} quadtree[k].color:=octree[k+4].color else {trước sau rỗng} quadtree[k].color:=backcolor else begin {trước rỗng, sau không đồng nhất} quadtree[k].homogeneous:=flase; new(newquadtree); quadtree[k].child: = newquadtree; convert_oct_to_quad(octree[k+4].child^, newquadtree^); Trang 153 Chương 7: Khử mặt kuất đường khuất end else begin {trước không đồng nhất, sau không biết} quadtree[k].homogeneous:=false; new(newquadtree); quadtree[k].child:= newquadtree; convert_oct_to_quad(octree[k+4].child^, newquadtree^); convert_oct_to_quad(octree[k].child^, newquadtree^); end; end; {for} end; 7.8 Loại bỏ đường bị che khuất Khi phác họa đối tượng hiển thị, phương pháp khử đường khuất dùng đến để loại bỏ viền đối tượng, bị che khuất mặt gần mặt phẳng quan sát Các phương pháp để loại bỏ đường khuất phát triển cách xem xét viền đối tượng cách trực tiếp hay cách chỉnh sửa lại phương pháp khử mặt khuất Hình 7-22 Phần đoạn thẳng bị khuất (nét đứt) đường thẳng: (a) qua sau mặt (b) xuyên qua mặt che phía đâm Một tiếp cận trực tiếp để loại bỏ đường khuất so sánh đường với mặt ảnh Quá trình tương tự clipping đường cửa sổ có hình dạng bất kỳ, khác chổ muốn cắt bỏ phần bị che khuất mặt Đối với đường, giá trị độ sâu so sánh với mặt để xác định xem phần đoạn thẳng khơng nhìn thấy Chúng ta dùng phương pháp cố kết để xác định phần bị che khuất mà không cần kiểm tra tồn vị trí tọa độ Nếu hai giao điểm đường thẳng với hình chiếu biên bề mặt có độ sâu lớn độ sâu mặt điểm này, đoạn thẳng giao điểm hoàn Trang 154 Chương 7: Khử mặt kuất đường khuất toàn bị che khuất, hình 7-22 (a) Khi đường thẳng có độ sâu lớn độ sâu giao điểm với biên có độ sâu nhỏ độ sâu mặt giao điểm với biên lại, đường thẳng phải xuyên qua mặt hình 7-22 (b) Trong trường hợp này, tính tọa độ giao điểm đường với mặt cách dùng phương trình mặt hiển thị phần nhìn thấy đường thẳng Vài phương pháp khử mặt khuất dễ dàng áp dụng để khử đường khuất Dùng phương pháp mặt sau (back-face), nhận biết mặt sau đối tượng hiển thị biên mặt nhìn thấy Với phương pháp xếp theo độ sâu, mặt vẽ vào vùng đệm làm tươi để phần bên mặt có độ sáng nền, biên có độ sáng độ sáng vẽ Bằng cách xử lý mặt từ sau đến trước, đường khuất bị xóa mặt gần Phương pháp chia vùng áp dụng để khử đường khuất cách hiển thị biên mặt nhìn thấy Các phương pháp scan-line dùng để hiển thị đường nhìn thấy cách bố trí điểm dọc theo đường quét, điểm trùng với biên mặt nhìn thấy Bất kỳ phương pháp khử mặt khuất dùng đường quét thay đổi thành phương pháp khử đường khuất theo cách tương tự (xem hình 7-23) •V2 Hình 7-23 Các bảng liệu hình học cho đối tượng ba chiều biểu diễn hai mặt phẳng, hình thành với sáu cạnh năm đỉnh E2 E1 S V1 • E6 S2 •V5 • E2 V3 E6 •V VERTEX TABLE V1: x1, y1, z1 V2: x2, y2, z2 V3: x3, y3, z3 V4: x4, y4, z4 V5: x5, y5, z5 EDGE TABLE E1: V1, V2, S1 E2: V2, V3, S1, S2 E3: V3, V1, S1 E4: V3, V4, S2 E5: V4, V5, S2 E6: V5, V2, S2 POLYGON TABLE S1: E1, E2, E3 S2: E2, E4, E5, E6 Trang 155 Chương 7: Khử mặt kuất đường khuất 7.9 Tổng kết chương So sánh phương pháp khử mặt khuất Hiệu phương pháp khử mặt khuất phụ thuộc vào đặc tính ứng dụng cụ thể Nếu mặt ảnh nằm trải hướng z để có nằm chồng theo độ sâu, phương pháp xếp theo độ sâu tốt Với ảnh có mặt nằm tách biệt theo chiều ngang, phương pháp scan-line phân chia vùng lựa chọn tốt Trong phương pháp chọn này, kỹ thuật xếp cố kết đem đến thuận lợi thuộc tính tự nhiên ảnh Vì xếp cố kết quan trọng đến hiệu toàn diện phương pháp khử mặt khuất, kỹ thuật để thực thao tác cần chọn lựa cẩn thận Khi đối tượng biết theo thứ tự xác, danh sách động chứa cạnh bảng cạnh dùng phương pháp scan-line, xếp bubble sort hiệu để thực việc đổi chỗ Tương tự, kỹ thuật cố kết áp dụng để quét đường, vùng, hay khung (frame) cơng cụ hữu hiệu làm tăng hiệu phương pháp khử mặt khuất Như quy tắc tổng quát, phương pháp xếp theo độ sâu tiếp cận có hiệu cao cho ảnh có vài mặt Điều ảnh thường có vài mặt nằm chồng theo độ sâu Phương pháp scan-line thực tốt ảnh chứa mặt Dù phương pháp scan-line hay xếp theo độ sâu dùng hiệu cho ảnh có đến vài ngàn mặt Với ảnh có vài ngàn mặt, tiếp cận vùng đệm độ sâu octree thực tốt Phương pháp vùng đệm độ sâu có thời gian xử lý hằng, độc lập với số lượng mặt ảnh Điều kích thước vùng mặt giảm số lượng mặt ảnh tăng Do đó, cách tương đối, phương pháp xếp theo độ sâu thể thực ảnh đơn giản thực hiệu ảnh phức tạp Tiếp cận đơn giản để cài đặt, nhiên, cần nhiều nhớ tất phương pháp khác Vì lý này, phương pháp khác, octree phân chia vùng dùng cho ảnh có nhiều mặt Khi phương pháp octree dùng hệ thống, việc xử lý loại bỏ mặt khuất nhanh đơn giản Chỉ cần dùng phép cộng trừ, không cần xếp tìm giao điểm Một thuận lợi khác octree chúng lưu nhiều mặt Trang 156 Chương 7: Khử mặt kuất đường khuất Toàn hình thể ba chiều đối tượng hiển thị, điều làm cho phương pháp octree hữu ích để thu lát cắt hình thể ba chiều Ta kết hợp cài đặt phương pháp khử mặt khuất khác theo cách khác Hơn nữa, thuật toán cài đặt phần cứng, hệ thống xử lý song song đặc biệt tận dụng để làm tăng hiệu phương pháp Các hệ thống phần cứng đặt biệt thường dùng tốc độ xử lý xem quan trọng, ví dụ, việc tạo hình ảnh động mô bay 7.10 Bài tập chương Phát triển thủ tục, dựa kỹ thuật khử mặt sau, để xác định tất mặt trước khối đa diện lồi với mặt có màu khác liên hệ đến mặt quan sát Giả sử đối tượng định nghĩa hệ quan sát bàn tay trái với mặt xy dùng làm mặt quan sát Cài đặt thủ tục vào chương trình để chiếu trực giao mặt nhìn thấy đối tượng lên cửa sổ mặt phẳng quan sát Để đơn giản, giả sử tất phần đối tượng nằm phía trước mặt phẳng quan sát Ánh xạ cửa sổ lên vùng quan sát hình để hiển thị Cài đặt thủ tục vào chương trình để tạo hình chiếu phối cảnh mặt nhìn thấy đối tượng lên cửa sổ mặt phẳng quan sát Để đơn giản, giả sử đối tượng nằm phía trước mặt phẳng quan sát Ánh xạ cửa sổ lên vùng quan sát hình để hiển thị Viết chương trình để cài đặt thủ tục cho ứng dụng động, quay đối tượng cách tăng dần xung quanh trục, đâm xuyên qua đối tượng song song với với mặt phẳng quan sát Giả sử đối tượng nằm hồn tồn phía trước mặt phẳng quan sát Dùng phép chiếu song song trực giao để ánh xạ thành công ảnh lên hình Dùng phương pháp vùng đệm độ sâu để hiển thị mặt nhìn thấy đối tượng bất kỳ, định nghĩa hệ tọa độ chuẩn phía trước vùng quan sát Các phương trình (7-4) (7-5) dùng để thu giá trị độ sâu cho tất điểm mặt độ sâu khởi tạo vừa Trang 157 Chương 7: Khử mặt kuất đường khuất xác định Sự địi hỏi khơng gian lưu trữ cho vùng đệm độ sâu xác định từ định nghĩa đối tượng để hiển thị? Phát triển chương trình cài đặt thuật tốn scan-line để hiển thị mặt nhìn thấy đối tượng định nghĩa nằm trước vùng quan sát Dùng bảng đa giác bảng cạnh (polygon table, edge table) để lưu trữ định nghĩa đối tượng, dùng kỹ thuật cố kết để tính điểm dọc theo đường quét Cài đặt chương trình để hiển thị mặt nhìn thấy khối đa diện lồi, dùng thuật toán họa sĩ (painter’s algorithm) Tức là, bề mặt phải theo độ sâu vẽ lên hình từ sau đến trước Mở rộng chương trình để thị đối tượng định nghĩa với mặt phẳng, dùng kiểm tra xếp độ sâu (depth-sorting checks) để có mặt theo thứ tự hợp lý Cho ví dụ trường hợp mà hai phương pháp thảo luận kiểm tra thuật toán phân chia vùng thất bại để từ cách đắn mặt bao quanh che khuất tất mặt 10 Phát triển thuật tốn kiểm tra mặt cho tương tác với vùng chữ nhật để định xem mặt bao quanh, nằm chồng, bên trong, hay nằm 11 Mở rộng phương pháp tập 10 thành thuật toán để sinh biểu diễn quadtree cho mặt nhìn thấy đối tượng cách áp dụng kiểm tra vùng (area-subdivision tests) để xác định giá trị phần tử quadtree 12 Cài đặt thuật toán để nạp biểu diễn quadtree tập 11 thành đường quét (raster) để hiển thị 13 Viết chương trình lên hệ thống bạn để hiển thị biểu diễn octree cho đối tượng để mặt khuất bị loại bỏ 14 Phát triển thuật toán để loại bỏ đường khuất cách so sánh đường ảnh với mặt Trang 158 Chương 7: Khử mặt kuất đường khuất 15 Thảo luận làm việc tháo bỏ đường khuất thực với phương pháp khử mặt khuất khác 16 Cài đặt thủ tục để hiển thị cạnh bị che khuất đối tượng chứa mặt phẳng thành đường nét đứt HẾT Trang 159 ...Chương 1: Giới thiệu thuật tốn vẽ tơ đường Lời nói đầu Đồ họa máy tính đời kết hợp lĩnh vực thơng tin truyền hình Đầu tiên kỹ thuật đồ họa phát triển nhóm kỹ sư sử dụng máy tính lớn Trong giai... tịnh tiến Do vậy, đồ họa máy tính trở thành lĩnh vực lý thú có nhiều ứng dụng thực tế Tuy nhiên, việc dạy học kỹ thuật đồ họa khơng đơn giản chủ đề có nhiều phức tạp Kỹ thuật đồ họa liên quan đến... tin ) Nội dung cốt lõi Giáo trình Kỹ thuật đồ họa bao gồm chương - Chương 1: Giới thiệu thuật tốn vẽ tơ đường - Chương 2: Các thuật tốn tơ màu - Chương 3: Phép biến đổi đồ họa chiều - Chương 4:

Ngày đăng: 29/12/2022, 15:01

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN