Bài giảng Đồ họa máy tính: Giới thiệu đồ họa 3 chiều cung cấp cho người học các kiến thức về biểu diễn đối tượng ba chiều bao gồm: Biểu diễn mặt đa giác, các đường cong và mặt cong, các mặt có quy luật, các mặt cong bậc hai,... Mời các bạn cùng tham khảo.
Computer Graphics ĐỒ HỌA MÁY TÍNH GIỚI THIỆU ĐỒ HỌA BA CHIỀU Ts Đào Nam Anh Computer Graphics NỘI DUNG I TỔNG QUAN VỀ ĐỒ HỌA BA CHIỀU II BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Trang đầu Computer Graphics Tham khảo Francis S Hill Computer Graphics Macmillan Publishing Company, NewYork, 1990, 754 tr James D.Foley, Andries Van Dam, Feiner, John Hughes Introduction to Computer Graphics Addision Wesley, NewYork, 1995, 559 tr James D.Foley, Andries Van Dam, Feiner, John Hughes Computer Graphics - Principle and Practice Addision Wesley, NewYork, 1996, 1175 tr Dương Anh Đức, Lê Đình Duy Giáo trình Đồ họa máy tính Khoa Công nghệ thông tin, Trường Đại học Khoa học Tự nhiên (lưu hành nội bộ), 1996, 237 tr Hồng Kiếm, Dương Anh Đức, Lê Đình Duy, Vũ Hải Qn Giáo trình Cơ sở Đồ họa Máy Tính, NXB Giáo dục, 2000 Donald Hearn, M.Pauline Baker Computer Graphics, C version Prentice Hall International Inc, Upper Saddle River, New Jersey, 1997, 652tr Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Biểu diễn mặt đa giác Lưới đa giác (polygon meshes) Một số hệ đồ họa cung cấp số hàm cho phép mơ hình hóa đối tượng Một mặt phẳng diễn tả thông qua hàm fillArea Nhưng ta cần lợp nhiều planar patch liên tiếp, dùng hàm lưới (mesh function) thuận tiện Một dạng thông dụng lưới đa giác dãy tam giác (triagle strip) Hàm vẽ n-2 tam giác kề biết n đỉnh Dạng lưới đa giác dùng hầu hết thư viện đồ họa chuẩn OpenGL hay DirectX Một dạng hàm tương tự lưới tứ giác (quardrilateral mesh) Hàm vẽ lưới (n-1)x(m-1) tứ giác lồi từ dãy nxm đỉnh Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Biểu diễn mặt đa giác Lưới đa giác (polygon meshes) Khi đa giác mô tả nhiều ba đỉnh, đỉnh khơng đồng phẳng Điều dẫn đến lỗi tính tốn Một phương pháp đơn giản phân đa giác thành tam giác Triangle strip quadrilateral mesh Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các đường cong mặt cong Hình ảnh đường cong mặt cong tạo từ tập hợp hàm toán học định nghĩa đối tượng từ tập hợp điểm đối tượng Khi đối tượng mơ tả hàm tốn học, thường thư viện đồ họa cung cấp sẵn hàm cho phép chiếu đối tượng lên mặt phẳng hiển thị Đối với đường cong, hàm vẽ loạt điểm dọc theo hình chiếu đường mơ tả hàm tốn học Đối với mặt cong, lưới đa giác xấp xỉ với mặt cong tạo Thường hệ đồ họa tạo lưới tam giác để đảm bảo tính đồng phẳng cạnh thuộc polygon patch Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các đường cong mặt cong Một đường cong mặt cong diễn tả phương trình tốn học dạng tham số không tham số Tuy nhiên, đồ họa máy tính, thường dạng tham số thuận tiện cho xử lí Khi đối tượng mơ tả tập hợp điểm rời rạc, đối tượng hiển thị thông qua mặt cong xấp xỉ dựa điểm cho Các loại đường cong mặt cong dạng spline Bezier đường cong mặt cong xấp xỉ thường dùng Các mặt cong có hình dạng phức tạp, đặc biệt bao gồm nhiều patch kết hợp lại với Trước tiên, khảo sát mặt cong đơn giản, khảo sát mặt phức tạp Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Định nghĩa Ta có hai định nghĩa tương đương: Một mặt có quy luật mặt tạo cách quét (sweep) đường thẳng không gian theo cách Một mặt gọi có quy luật qua điểm thuộc có đường thẳng nằm hồn tồn Minh họa mặt có quy luật Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Phương trình tham số Vì mặt có quy luật hoàn toàn dựa sở đường thẳng với phương trình dạng tham số p(v)=(1-v).p0+v.p1 nên ta suy dạng cách tương tự: P(u,v)=(1-v).p0(u)+v.p1(u) (5.5) Nếu u biến đổi từ ustart đến uend , ta thấy mặt cong tập hợp đường thẳng nối cặp điểm tương ứng p0(u’) (thuộc đường cong p0(u)) p1(u’) (thuộc đường cong p1(u)) với u’ nằm (ustart, uend) Nếu không giới hạn u, v ta có mặt cong trải dài vô tận, Các mặt cong "ruled patch" tạo cách giới Trang đầu hạn u, v đoạn [0, 1] Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Khảo sát mơ hình minh họa Hình trụ (Cylinder) 10 Hình trụ hình tạo đường thẳng L, gọi đường sinh (generator) quét dọc theo đường cong p0(u), gọi đường chuẩn (directrix), đường cong p0(u) nằm mặt phẳng Minh họa hình trụ Từ phương trình tổng qt mặt cong có quy luật: P(u,v)=p0(u)+v.d(u), d(u)=p1(u)-p0(u) (5.6) quét đường thẳng ln song song với nên ta có d số, phương trình tham số hình trụ là: P(u,v)=p0(u)+v.d Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Đường cong Spline B-Spline 40 Ví dụ ta định nghĩa hàm g(t) bao gồm ba đa thức a(t), b(t), c(t) sau: Giá mang g(t) [0, 3], a(t) [0, 1], b(t) [1, 2], c(t) [2, 3] Các điểm đoạn đường cong gặp gọi điểm nối (joints), giá trị t điểm gọi nút (knot) Có thể kiểm chứng g(t) liên tục nơi giá mang nó, nên đường cong chỗ nối trơn g(t) ví dụ hàm Spline Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Định nghĩa hàm Spline 41 Định nghĩa hàm Spline Một hàm Spline cấp M đa thức riêng phần cấp M có đạo hàm cấp (M-1) liên tục nút Rõ ràng theo định nghĩa g(t) Spline bậc hai Định nghĩa đường cong Spline Ta xây dựng đường cong p(t) dựa (L+1) điểm kiểm soát cách sử dụng hàm Spline làm hàm trộn sau: Xây dựng tập nút t0, t1, , với ti R ti ti+1 Vector T = (t0, t1, ) gọi vector nút Với điểm kiểm sốt pk ta kết hợp với hàm trộn tương ứng Rk(t) Rk(t) đa thức riêng phần liên tục đoạn [ti, ti+1] liên tục nút Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Định nghĩa hàm Spline 42 Khi đó: Các đoạn đường cong riêng phần gặp điểm nút làm cho đường cong liên tục Ta gọi đường cong đường cong Spline Vấn đề đặt tiếp đây: Cho trước vector nút, có tồn hay không họ hàm trộn cho chúng phát sinh đường cong Spline định nghĩa vector nút Một họ hàm gọi sở cho Spline, nghĩa đường cong Spline đưa công thức cách chọn đa giác kiểm soát phù hợp Câu trả lời có nhiều họ hàm vậy, đặc biệt có họ hàm trộn có giá mang nhỏ B-Spline (B từ viết tắt basis) Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Định nghĩa hàm Spline 43 Định nghĩa đường cong B-Spline Một đường cong B-Spline cấp m xây dựng dựa vector nút T (L+1) điểm kiểm sốt pk có dạng: Trong Nk,m(t) đa thức có bậc (m-1) có cơng thức đệ quy: k=0, 1, , L với Các điểm ti xác định theo nhiều cách khác Một cách cho ti = i, lúc khoảng cách điểm nút Hay ta có cách định nghĩa khác với i = 0, …,L+m Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Thiết kế mặt cong dựa Bezier B-Spline Để mô tả vẽ mặt cong ta dùng hàm trộn Bezier B-Spline tương tự trường hợp đường cong Các mảnh Bezier (Bezier surface patches) Xét đường cong Bezier hàm theo tham số v có điểm kiểm sốt thay đổi theo u Ta có cơng thức: Lúc này, u thay đổi ta có điểm kiểm soát thay đổi kéo theo đường cong Bezier thay đổi theo Sự biến thiên đường cong Bezier không gian tạo mặt cong Khi u thay đổi, điểm pk(u) thay đổi đường cong Nếu cho đường cong đường cong Bezier, đường cong dựa (M+1) điểm kiểm sốt thì: Lúc này: Ta gọi dạng tích tensor mảnh Bezier 44 Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Thiết kế mặt cong dựa Bezier B-Spline Dán mảnh Bezier lại với 45 để tạo dạng mặt cong phức tạp gồm nhiều mảnh Bezier kết hợp lại với cho trơn tru biên chung Khi dán hai mảnh Bezier lại với (mỗi mảnh có khối đa diện kiểm sốt riêng sử dụng cơng thức với u,v biến thiên đoạn [0, 1]), vấn đề để chúng dán vào cách trơn tru ? Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Thiết kế mặt cong dựa Bezier B-Spline Dán mảnh Bezier lại với 46 Hai mảnh gắn vào tất điểm dọc biên chung đa diện kiểm soát chúng trùng khớp với biên Điều có dạng đường cong Bezier biên phụ thuộc vào đa giác kiểm soát nằm biên khối đa diện kiểm soát Do đó, để dán ta cần chọn đa giác kiểm soát biên cho hai mặt trùng Về tính liên tục tiếp tuyến, điều kiện đủ cặp cạnh khối đa diện biên phải cộng tuyến Trang đầu Computer Graphics BIỂU DIỄN ĐỐI TƯỢNG BA CHIỀU Các mặt có quy luật (ruled surfaces) Thiết kế mặt cong dựa Bezier B-Spline Các mảnh B-Spline (B-Spline patches) 47 Các hàm B-Spline dùng dạng tích tensor thay cho dạng đa thức Bernstein để đạt tính kiểm sốt cao thiết kế mặt cong: Khối đa diện kiểm sốt có (M+1)x(L+1) đỉnh u, v biến thiên từ tới giá trị lớn nút vector nút tương ứng chúng Thông thường để thiết kế, người ta dùng B-Spline cấp (tức cubic B-Spline) việc chọn số điểm kiểm sốt khơng hạn chế (số lượng điểm không ảnh hưởng đến bậc đa thức đường cong Bezier) nên người ta tạo dạng mặt cong phức tạp Tất nhiên trước đó, người ta phải chọn đa diện nút (knot polyhedron) để tạo mặt cong có dạng mong muốn Trang đầu Computer Graphics TĨM TẮT 48 Chúng ta vừa tìm hiểu mơ hình dùng để vẽ đối tượng ba chiều máy tính: mơ hình khung nối kết Theo mơ hình này, đối tượng ba chiều mơ tả tập đỉnh tập cạnh, đối tượng thể chưa gần thực tế lắm, khung rỗng đối tượng mà Sau kĩ thuật tô màu, khử đường mặt khuất khắc phục hạn chế Trang đầu Computer Graphics TÓM TẮT 49 Để vẽ đối tượng ba chiều mơ hình khung nối kết, cạnh phải chiếu theo cách từ tọa độ ba chiều sang hai chiều Qua tìm hiểu hai phép chiếu đơn giản để làm việc phép chiếu trực giao phép chiếu phối cảnh Phép chiếu trực giao đơn giản bỏ ba tọa độ điểm chiếu cách cho tia chiếu song song với trục tọa độ Phép chiếu phối cảnh sử dụng điểm cố định gọi mắt hình chiếu điểm xác định giao điểm tia chiếu (nối điểm chiếu mắt) với mặt phẳng quan sát Phép chiếu phối cảnh hội tụ mắt nên đối tượng xa trông nhỏ ngược lại Trang đầu Computer Graphics TÓM TẮT 50 Các phép chiếu trực giao phối cảnh bảo tồn đường thẳng, tính chất hay giúp ta vẽ đường thẳng ba chiều đơn giản cần xác định hai hình chiếu hai điểm đầu cuối mà thơi Biểu diễn mặt đồ họa máy tính vấn đề đặt muốn mô tả đối tượng lập thể giới thực Chúng ta khảo sát phương pháp biểu diễn mặt phẳng mặt cong thông qua dạng phương trình tham số Trang đầu Computer Graphics TĨM TẮT 51 Trong đó, phương trình tham số mặt có dạng phương trình tham số hai biến p(u, v) điểm mặt biểu diễn dạng p(u, v) = (x(u, v), y(u, v), z(u, v)) Chúng ta khảo sát số mặt đơn giản mặt có quy luật mặt tròn xoay để minh họa cho việc xác định hàm x(), y(), z() Trang đầu Computer Graphics TÓM TẮT 52 Việc tạo đường cong theo ý muốn vấn đề thường gặp làm việc với đồ họa máy tính Chúng ta khảo sát cách tiếp cận vẽ đường cong Bezier B-Spline Cách tiếp cận dựa sở để vẽ đường cong tập điểm mơ tả hình dáng đường cong gọi tập điểm kiểm sốt Khi thay đổi tập điểm này, hình dáng đường cong thay đổi theo Cách tiếp cận cho thấy thuận lợi linh hoạt cần phải vẽ đường cong phức tạp dùng nhiều thiết kế Trang đầu Computer Graphics TÓM TẮT 53 Một nhược điểm cách vẽ đường cong Bezier phần đường cong đạt yêu cầu, hiệu chỉnh phần lại làm phần đạt yêu cầu Để khắc phục vấn đề ta có cách tiếp cận cải tiến vẽ đường cong B-Spline Trên sở việc vẽ đường cong Bezier B-Spline xây dựng mặt cong Bezier B-Spline Trang đầu Computer Graphics Câu hỏi 54 https://sites.google.com/site/daonamanhedu/teaching/ computer-graphics Trang đầu ... đường cong Bezier tăng nhanh theo bậc chúng Trong thực tế, nhiều hệ đồ họa cung cấp hàm vẽ đường cong Bezier bậc ba, đường cong phát sinh bốn hàm trộn B 03( t) B 13( t), B 23( t), B 33( t), Ta có cơng thức... tuyến (đạo hàm bậc một) có giá trị: p’(0) = 3( p1 - p0), p’(1) = 3( p3 - p2) Đạo hàm bậc hai điểm là: p’’(0) = 6(p0 - 2p1 + p2), p’(1) = 6(p1 - 2p2 + p3) Ta dùng biểu thức để tạo đường cong có... Hàm vẽ n-2 tam giác kề biết n đỉnh Dạng lưới đa giác dùng hầu hết thư viện đồ họa chuẩn OpenGL hay DirectX Một dạng hàm tương tự lưới tứ giác (quardrilateral mesh) Hàm vẽ lưới (n-1)x(m-1) tứ giác