Đồ họa máy vi tính - Chương 5 docx

40 452 1
Đồ họa máy vi tính - Chương 5 docx

Đ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

CHƯƠNG GIỚI THIỆU ĐỒ HỌA BA CHIỀU Các đối tượng giới thực phần lớn đối tượng ba chiều, nên việc thể đối tượng ba chiều máy tính cơng việc cần thiết để đưa tin học gần gũi với thực tế Cũng giống cách biểu diễn đối tượng ba chiều mặt phẳng khác (như máy ảnh, camera, ), biểu diễn máy tính phải tuân theo quy luật phối cảnh, sáng, tối, nhằm giúp người xem tưởng tượng lại hình ảnh cách gần Ngồi biểu diễn máy tính có ưu giúp ta quan sát đối tượng nhiều góc cạnh khác nhau, khoảng cách khác Chương giới thiệu số kĩ thuật biểu diễn đối tượng ba chiều máy tính, từ đối tượng đơn giản hình khối, đa diện, đến đối tượng tương đối phức tạp mặt tìm hiểu chương trước TỔNG QUAN VỀ ĐỒ HỌA BA CHIỀU Khi mơ hình hóa hiển thị cảnh ba chiều, ta cần phải xem xét nhiều khía cạnh vấn đề khác khơng đơn giản thêm vào tọa độ thứ ba cho đối tượng Bề mặt đối tượng xây dựng nhiều tổ hợp khác mặt phẳng mặt cong Ngồi ra, đơi cần mô tả số thông tin bên đối tượng Các công cụ hỗ trợ đồ họa (graphics package) thường cung cấp số hàm hiển thị thành phần bên trong, đường nét tiêu biểu hiển thị phần đối tượng ba chiều (solid object) Ngồi ra, phép biến đổi hình học thường sử dụng nhiều đa dạng đồ họa ba chiều so với đồ họa hai chiều Phép biến đổi hệ quan sát không gian ba chiều phức tạp nhiều so với không gian hai chiều phải chọn lựa nhiều tham số mô tả cảnh ba chiều xuất Hình 5.1 – Một cảnh đồ họa ba chiều Các mô tả cảnh ba chiều phải qua quy trình xử lí gồm nhiều cơng đoạn phép biến đổi hệ tọa độ quan sát phép chiếu chuyển cảnh từ hệ tọa độ quan sát ba chiều xuống hệ tọa độ thiết bị hai chiều Những phần nhìn thấy cảnh, ứng với hệ quan sát chọn đó, phải xác định cuối cùng, thuật toán vẽ mặt áp dụng nhằm tạo hình ảnh trung thực (gần với thực tế) cảnh 1.1 Sơ lược quy trình hiển thị Quy trình xử lí thơng tin đồ họa ba chiều chuỗi bước nối tiếp nhau, kết bước đầu vào bước Hình 5.2 – Quy trình hiển thị đối tượng ba chiều Quy trình bắt đầu việc xây dựng mơ hình đối tượng Các mơ hình thường mơ tả khơng gian ba chiều (x,y,z) Các mơ hình thường thể vật thể (solid) bề mặt (boundaries) đối tượng Như ta có hai kiểu mơ hình hóa Trong solid modeling đối tượng đồ họa sở thường dùng để mơ tả đối tượng tích (volume) Trong boundary representations(B-reps), đối tượng định nghĩa bề mặt chúng Các mơ hình thường biểu diễn hệ tọa độ cục bộ, mà ta gọi hệ tọa độ đối tượng Trong hệ tọa độ có thân đối tượng định nghĩa, gốc tọa độ đơn vị đo lường thường chọn cho việc biểu diễn đối tượng tiện lợi Bước quy trình hiển thị biến đổi đối tượng từ không gian đối tượng (object-space) vào không gian chung gọi không gian thực (world space) Trong không gian đối tượng, nguồn sáng, người quan sát tồn Bước gọi giai đoạn biến đổi mơ hình (modeling transformation) Bước bước tối ưu hóa Trong giai đoạn loại bỏ đơn giản (trivial rejection) ta cần loại trừ tất đối tượng khơng thể nhìn thấy Điều giúp tránh việc xử lí số phần không cần thiết cảnh (scene) mà ta chuẩn bị hiển thị bước sau Tiếp theo ta phải chiếu sáng (illumination) đối tượng nhìn thấy cách gán cho chúng màu sắc dựa đặc tính chất tạo nên vật nguồn sáng tồn cảnh Sau chiếu sáng, ta phải thực phép biến đổi hệ tọa độ để đặt vị trí quan sát (viewing position) gốc tọa độ mặt phẳng quan sát (viewing plane) vị trí mong ước Bước gọi bước đổi hệ quan sát Sau bước này, đối tượng chuyển từ không gian thực sang không gian quan sát (eye space) Trong không gian quan sát, ta phải thực việc xén đối tượng cảnh để cảnh nằm gọn phần không gian chóp cụt mà ta gọi viewing frustum Bước loại bỏ hoàn toàn đối tượng (các mảnh đối tượng) khơng nhìn thấy ảnh Bước ta chiếu đối tượng xuống mặt phẳng hai chiều Bước Projection thực phép biến đổi từ khơng gian quan sát sang khơng gian hình (screen-space) Trong bước rời rạc hóa (rasterization) ta chuyển đối tượng thành pixel Cuối cùng, toàn cảnh hiển thị lên hình 1.2 Mơ hình khung nối kết (Wireframe Model) 1.2.1 Khái niệm Một phương pháp thơng dụng đơn giản để mơ hình hóa đối tượng mơ hình khung nối kết Một mơ hình khung nối kết gồm có tập đỉnh tập cạnh nối đỉnh Khi thể mơ hình này, đối tượng ba chiều rỗng khơng giống thực tế Để hoàn thiện hơn, người ta dùng kĩ thuật tạo bóng loại bỏ đường mặt khuất (Chúng ta đề cập vấn đề chương sau) Tuy nhiên vẽ mơ hình thường nhanh nên người ta thường dùng việc xem phác thảo (preview) đối tượng, đặc biệt hệ CAD 1.2.2 Biểu diễn vật thể ba chiều mơ hình khung nối kết Với mơ hình khung nối kết, hình dạng đối tượng ba chiều biểu diễn hai danh sách (list) : danh sách đỉnh (vertices) danh sách cạnh (edges) nối đỉnh Danh sách đỉnh cho biết thơng tin hình học vị trí đỉnh, cịn danh sách cạnh xác định thông tin kết nối, cho biết cặp đỉnh tạo cạnh Chúng ta quan sát vật thể ba chiều biểu diễn mơ hình khung nối kết sau : Bảng danh sách cạnh đỉnh biểu diễn vật thể Vertex List Vertex x y z 0 Edge List Edge Vertex1 Vertex2 1 2 1 3 0.5 1.5 4 5 0 5 0 6 7 1 7 8 1 8 9 0.5 1.5 9 10 10 1 10 10 11 back side front side 12 13 14 15 10 16 17 Hình 5.3 – Vật thể ba chiều biểu diễn mơ hình khung nối kết Có nhiều cách để đặc tả mơ hình khung nối kết máy tính dùng xâu, mảng, cách có ưu điểm riêng ứng dụng cụ thể Ở ta minh họa biểu diễn mơ hình khung nối kết cấu trúc liệu mảng sau : #define MAXVERTS 50 //số đỉnh tối đa biểu diễn #define MAXEDGES 100 //số cạnh tối đa typedef struct { float x, y, z; } POINT3D; typedef struct { int NumVerts; //Số đỉnh mơ hình int NumEdges; //Số cạnh mơ hình POINT3D Vert[MaxVerts]; int Edge[MaxEdges][2]; }WIREFRAME; Ngồi ra, đơi mơ hình wireframe người ta cịn mơ tả mặt (phẳng) đối tượng Mỗi mặt định nghĩa đa giác bao Ví dụ, đối tượng hình 5.3 có mặt 1.3 Vẽ đối tượng theo mơ hình khung nối kết cách sử dụng phép chiếu Để vẽ đối tượng biểu diễn mơ hình khung nối kết, đơn giản cần vẽ cạnh danh sách cạnh mà Tuy nhiên đỉnh cạnh định nghĩa ba chiều nên vấn đề đặt làm để vẽ đường thẳng ba chiều mặt phẳng hai chiều Để làm điều này, phải thực phép chiếu từ ba chiều vào hai chiều để bỏ bớt chiều Có hai loại phép chiếu đơn giản thường dùng phép chiếu song song (parallel projection) phép chiếu phối cảnh (perspective projection) Phép chiếu song song sử dụng đường thẳng song song qua đỉnh đối tượng, phép chiếu phối cảnh dùng đường thẳng qua đỉnh đối tượng hội tụ điểm gọi tâm chiếu (center of projection) Các đường thẳng gọi tia chiếu giao điểm đường thẳng với mặt phẳng chiếu (hay gọi mặt phẳng quan sát (view plane)) hình chiếu đỉnh hay cịn gọi điểm chiếu Trong phần này, giả sử mặt phẳng chiếu mặt phẳng z=0 Phép chiếu song song bảo toàn mối quan hệ chiều đối tượng, kĩ thuật dùng phác thảo để tạo phần khung đối tượng ba chiều Người ta dùng phương pháp để quan sát xác mặt khác đối tượng Tuy nhiên, phép chiếu song song không cho biểu diễn thực đối tượng ba chiều Trong đó, phép chiếu phối cảnh tạo biểu diễn thực lại khơng bảo tồn mối liên hệ chiều Các đường thẳng xa có ảnh chiếu nhỏ Nói chung, kĩ thuật để vẽ đường thẳng ba chiều : • • Chiếu điểm đầu mút thành điểm hai chiều Vẽ đường thẳng nối hai điểm ảnh qua phép chiếu Hình 5.4 – Phép chiếu song song (a) phép chiếu phối cảnh (b) Sở dĩ làm điều phép chiếu mà sử dụng bảo toàn đường thẳng 1.4 Phép chiếu song song (parallel projection) Khi hướng tia chiếu vng góc với mặt phẳng chiếu ta có phép chiếu trực giao (orthographic projection) Ngược lại, ta có phép chiếu xiên (oblique projection) 1.4.1 Phép chiếu trực giao Xét điểm ba chiều, , cách đơn giản bỏ thành phần z để chiếu P thành Điều tương đương với chiếu điểm lên mặt phẳng xy theo phương trục z Mặt phẳng xy mặt phẳng quan sát Xem hình vẽ minh họa 5.5, điểm chiếu giao điểm tia a qua P song song với trục z vng góc với mặt phẳng xy Tia a tia chiếu Dễ dàng thấy phép chiếu bảo toàn đường thẳng Hình 5.5 – Phép chiếu trực giao Phép chiếu trực giao thường gọi phép nhìn từ xuống (top-view) lên (bottom-view) Có hai phép chiếu khác thơng dụng là: • Phép nhìn từ phía trước (front-view): Tia chiếu song song với trục x mặt phẳng quan sát yz Phép chiếu loại bỏ thành phần x P • Phép nhìn từ phía bên cạnh (side-view): Tia chiếu song song với trục y mặt phẳng quan sát xz Phép chiếu loại bỏ thành phần y P Hình 5.6 minh họa ba phép chiếu trực giao đề cập lên vật thể ngơi nhà Nhận xét với phép chiếu nhìn từ phía trước ta khơng phân biệt tường trước tường sau chúng nằm chồng lên nhau, tương tự cho trường hợp phép chiếu nhìn từ phía bên cạnh Hình 5.6 – Kết ba phép chiếu trực giao 1.4.2 Phép chiếu xiên Hình 5.7 – Phép chiếu xiên Hình 5.7 minh họa phép chiếu xiên Điểm điểm qua phép chiếu xiên nhận hình chiếu P qua phép chiếu trực giao a góc hợp tia chiếu đoạn nối đoạn nối với trục y Giả sử đoạn nối có độ dài L f góc 1.5 Phép chiếu phối cảnh (perspective projection) 1.5.1 Phép chiếu phối cảnh đơn giản Phép chiếu phối cảnh phụ thuộc vào vị trí tương đối hai đối tượng mắt nhìn mặt phẳng quan sát Quan sát hình sau, với mặt phẳng quan sát yz mắt nhìn đặt dọc theo trục x Khoảng cách mắt E mặt phẳng quan sát gọi tầm nhìn (eye distance).Để xác định hình chiếu , ta nối P với E tìm giao điểm P’ đường thẳng với mặt phẳng quan sát Lúc P’ điểm cần tìm Hình 5.8 – Phép chiếu phối cảnh đơn giản Trong phép chiếu phối cảnh tia chiếu không song song với mà hội tụ điểm mắt Chúng ta giả sử P không nằm phía sau mắt nhìn, tức P nằm sau mặt phẳng quan sát, hay mặt phẳng quan sát, hay mắt mặt phẳng quan sát Ta có, tia từ mắt đến P có dạng : Tia giao với mặt quan sát (mặt phẳng x=0) x = nên giá trị t ứng với trường hợp : Suy tọa độ điểm chiếu : Phép chiếu phối cảnh gần giống phép chiếu trực giao khác hai tọa độ y, z nhân lên thêm lượng Hệ số tỉ lệ dẫn đến khái niệm phối cảnh theo luật xa gần (perspective foreshortening) nghĩa : vật xa mắt (theo chiều âm trục x, để ln có ) t’ nhỏ dẫn đến y’, z’ nhỏ vật thấy nhỏ hơn, ngược lại vật gần mắt thấy lớn Cũng tương tự trên, ta dễ dàng kiểm chứng phép chiếu phối cảnh bảo toàn đường thẳng Nhận xét phép chiếu song song trường hợp đặc biệt phép chiếu phối cảnh Nếu cho tầm nhìn E ngày lớn tiến dần đến vơ cực tia chiếu qua mắt trở nên song song hệ số phối cảnh trở thành phép chiếu song song trở thành Lúc phép chiếu 1.5.2 Các trường hợp khác Trường hợp có mắt nhìn nằm trục x mặt phẳng quan sát yz Cũng phép chiếu trực giao ta hốn đổi vị trí mắt mặt phẳng quan sát để nhìn đối tượng góc cạnh khác Ví dụ trường hợp mắt nằm trục z mặt phẳng quan sát xy kết tương tự : BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU tiếp tuyến với đường cong điểm đầu cuối nằm đường thẳng nối điểm với điểm kiểm sốt kế Do đó, để nhận liên tục bậc đoạn cong, ta cần đặt điểm kiểm soát cho điểm pn-1 pn đoạn cong trước điểm p0 p1 đoạn cong nằm đường thẳng Hình vẽ 5.26 minh họa trình nhận liên tục bậc liên tục bậc ghép nối hai đoạn cong Bezier cách cho P’0 = P2 cho điểm P1 , P2 P’1 thẳng hàng Đối với đường cong Bezier thường khơng địi hỏi tính liên tục bậc hai Hình 5.26 – Ghép nối hai đoạn cong Cài đặt minh họa thuật toán vẽ đường cong Bezier qua (N+1) điểm kiểm soát #include #include #include #include #include #define MAXPOINTS 100 // So diem kiem soat toi da #define MAXSEG 100 // So diem toi da thuoc duong cong typedef struct { int x; int y; }POINT; // Kieu mang cac diem thuoc duong cong typedef POINT BEZPOINT[MAXSEG+1]; // Kieu mang cac diem kiem soat typedef POINT CTRLPOINT[MAXPOINTS+1]; // Kieu mang luu he so C(k, N) typedef long COEFF[MAXPOINTS+1]; // Tinh he so aCoeff[i] = C(k, n) = N!/k!*(N-k)! = (k+1)(k+2) N)/(N-k)!; // aCoeff co (N+1) phan tu danh so tu den N void ComputeCoefficient(COEFF aCoeff, int N) { for(int k=0; kk; j ) aCoeff[k] *= j; for(j=2; j

Ngày đăng: 22/07/2014, 14:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan