Đồ họa máy tính
Các khái niệm trong đồ họa máy tính
Điểm ảnh(Pixel)
Tọa độ
Mành và vectơ
Độ phân giải màn hình
Các chế độ màu của màn hình
- Đơn vị cơ bản xây dựng nên một bức ảnh
trên màn hình máy tính - Viết tắt của “picture element” – thành phần
ảnh - Hình tròn, hình vuông, hay HCN
- Ảnh mành >< Ảnh vectơ
- Đưa ra từ khái niệm mành trong các hệ
thống TV – là một hàng các điểm ảnh - Thường được biết đến là đường quét
(scanline) - Ảnh hưởng nhiều đến các thuật toán yêu cầu giảm bộ nhớ, song song hóa,
Hệ trục tọa độ
Hàng
Cột
Hệ tọa độ Đềcac
Hệ tọa độ góc
Điểm: Một vị trí trong không gian 3D hoặc 2D
Đoạn thẳng:
- Nối 2 điểm
- Có mật độ không đổi
- Bắt đầu và kết thúc tại điểm
Đỉnh(Vertex): Đỉnh của 1 đa giác
Cạnh(Edge): Nối 2 đỉnh
Mặt (Polygon/Face/Facet):
- Một đa giác bất kỳ
- Đơn vị cơ bản của ĐHMT
Luồng xử lý
Xử lý 2D
Đối tượng 2D thực tế -> Cắt xén dựa vào cửa sổ -> Biến đổi dựa vào điểm nhìn -> Biến đổi sang hệ tọa độ vật lý thiết bị
Xử lý 3D
Đối tượng 3D thực tế -> Biến đổi sang hệ tọa độ quay -> Cắt xén dựa vào khối nhìn -> Chiếu lên mặt phẳng nhìn -> Biến đổi dựa vào điểm nhìn -> Biến đổi sang hệ tọa độ vật lý thiết bị
Mô hình hóa đối tượng
Thể hiện khung dây:
- Biểu diễn các vật thể chỉ bằng
cạnh của chúng
Ưu điểm: - Hình dung kết cấu bên trong mô
hình 3D - Đơn giản, nhanh chóng
Nhược điểm: - Không cho phép người dùng hình dung toàn bộ chi tiết
Thể hiện bề mặt thông qua đa giác:
- Dạng 3D cơ bản trong hầu hết các ứng dụng trong tất cả các ứng dụng thời gian thực.
- Xử lý dễ và nhanh.
- Một số ứng dụng có thể sử dụng các hình khối khác, v.d. Splines, tuy nhiên sau đó đều đưa về dạng đa giác để xử lý.
- Rất phù hợp với thuật toán “dòng quét” (scan-line algorithms).
Thuật toán mành hóa
Thuật toán tô phủ cơ bản
Thuật toán tô phủ Smith
Thuật toán tô phủ của Fishkin
Thuật toán cắt xén
2D
Thuật toán Cohen-Sutherland
Nếu cả hai đầu có mã là 0000, chấp nhận, nếu không:
Thực hiện phép AND logic 2 mã
Thực hiện AND logic mã của 2 đầu mút,
Loại bỏ đoạn thẳng nếu khác không.
Phương pháp hiệu quả để chấp nhận hoặc loại bỏ
những đoạn thẳng không cắt các cạnh của cửa sổ
Gán mã 4 bit cho mỗi đầu mút: c(P) = x3x2x1x0
- Bit 1: ở trên đỉnh của cửa sổ, y > ymax
- Bit 2: ở phía dưới đáy, y < ymin
- Bit 3 : bên phải của cạnh phải, x > xmax
- Bit 4 : bên trái của cạnh trái, x < xmin
Mã 4-bit được gọi là: Outcode
Thuật toán Cyrus & Beck
Sử dụng phương trình tham số
Đường thẳng chứa đoạn cần xử lý sẽ cắt các đường thẳng chứa biên của cửa số ở đâu đó :
- Tìm tất cả các giao điểm, kiểm tra xem nó có
nằm trên cửa số hay không. - Xem xét véctơ pháp tuyến tại một điểm.
Mẫu số < 0 -> điểm vào khu vực cửa sổ, xếp vào loại PE.
Mẫu số > 0 -> điểm ra khu vực cửa sổ, xếp vào loại PL.
Giữ lại đoạn từ điểm vào cuối cùng và điểm ra đầu tiên.
Thuật toán Liang - Barsky
Phương trình tham số:
X=X1+tdeltaX
Y=Y1+tdeltaY
Với deltaX=X2-X1
deltaY=Y2-Y1
Điểm P thuộc về cửa sổ W khi và chỉ khi:
Xmin <= X1+deltaXt <= Xmax
Ymin <= Y1+deltaYt <= Ymax
Hay:
deltaXt <= Xmax-X1
deltaYt <= Ymax-Y1
-deltaXt <= X1-Xmin
-deltaYt <= Y1-Ymin
tk=qk/ck
(1) ck > 0, đt L đi từ phía trong ra phía ngoài của đường biên Bk khi t tăng,
và chúng ta gọi tk là điểm ra.
(2) ck < 0, đt L đi từ phía ngoài vào phía trong của đường biên Bk khi t tăng
và ta gọi tk là điểm vào.
(3) ck = 0, đt L song song với Bk, và ngoài cửa số nếu qk < 0
Loại bỏ đoạn thẳng nếu:
- Một giá trị vào (t ứng với điểm vào) >1
- Hoặc giá trị ra (t ứng với điểm ra) <0
- Hoặc một giá trị vào > hơn giá trị ra
Nếu không đoạn thẳng sẽ giao với cửa sổ.
Đoạn giao chỉ khi t0>0 và t1<1: - t0=max(0,max(các giá trị vào tk)
- t1=min(1,min(các giá trị ra tk))
Vẽ đường thẳng và đường tròn
Thuật toán DDA
Thuật toán Bresenham
x=0,y=0
Thuật toán điểm giữa
Cần phải tính giá trị ban đầu của đại lượng
quyết định d.
Các phép biến đổi
Khái niệm
Các loại biến đổi 2D
Các loại biến đổi 3D
Chọn một trong hai điểm tiếp theo dựa trên
dấu của đại lượng quyết định
Điểm bắt đầu là (x1,y1).
DDA = Digital Differential Analyser
(Phân tích vi phân số hóa)
Quay
Tịnh tiến
Co dãn
Phép kéo 3D
Kéo
Tịnh tiến
Tịnh tiến 2D
Co dãn theo gốc tọa độ
Ánh sáng
Mô hình tạo bóng
Mô hình ánh sáng
Mô hình ánh sáng cục bộ
Mô hình ánh sáng toàn cục
Tạo bóng Phong
Tạo bóng nội suy
Interpolated shading
Tạo bóng Gouraud
click to edit
Các loại phản quang
Phản chiếu
Mô hình Phong và Blinn
Độ bóng và các vùng phản
chiếu
Khuyếch tán hoàn hảo
Luật lambert
Matte
Phản chiếu hoàn hảo
Luật phản chiếu
Gương
Môi trường
Phép chiếu
1 số hệ tọa độ
Hệ tọa độ máy quay (The camera coordinate system)
Hệ tọa độ thế giới (The world coordinate system)
Hệ tọa độ hình dạng (The shape coordinate system)
Khung nhìn 3D
Các phép chiếu
Phối cảnh
Song song
phức tạp hơn 2D
Thêm một chiều mới
Các thiết bị hiển thị là 2D
Cần dùng phép chiếu (projection) để chuyển vật thể hay cảnh vật 3D về thiết bị hiển thị 2D
Cần thực hiện cắt với một khối 3D
Sáu mặt phẳng
Hình chóp cụt
1 điểm
2 điểm
3 điểm
Trực giao
Xiên
Từ mặt trên
Từ mặt bên
Từ mặt trước
Có trục đo
Cabinet
Khác
Cùng kích thước
Khác
P=T(P)
Chỉ một đối tượng được xét đến khi tính toán về ánh sáng
Ánh sáng của bề mặt lấy trực tiếp từ nguồn
sáng
toàn bộ các đối tượng trong cảnh được xét đến đồng thời khi tính toán về ánh sáng
Ánh sáng của bề mặt được tính toán dựa trên sự tương tác của tất cả các nguồn sáng và các vật
Thành phần
Môi trường (ambient)
Khuyếch tán (diffuse)
Phản chiếu (specular)
Wylie, Romney, Evans và Erdahl: đề xuất ý tưởng dùng nội suy tuyến tính các thông tin về tạo bóng trên các điểm
Độ sáng được nội suy giống như chúng ta
thực hiện với z-buffering.
Sử dụng pháp tuyến với mô hình tạo bóng nào đó
Nội suy cường độ màu sắc của đỉnh dọc theo các cạnh
Nội suy giá trị các cạnh theo đường quét
Véc-tơ pháp tuyến được tính toán cho mỗi đỉnh.
Vec-tơ pháp tuyến được nội suy cho các bè mặt
Áp dụng mô hình ánh sáng với các vec-tơ pháp
tuyến.
Trong mô hình phản chiếu của Phong, điểm sáng giảm dần với cosn
Xác định mặt hiện
(Visible surface determination)
Thuật toán BSP
Thuật toán mặt hiện
Ưu tiên theo danh sách
Thuật toán ng thợ sơn
Chính xác theo ảnh (image precision)
Chính xác theo đối tượng (object precision)
Thuật toán z-buffer
Thuật toán Warnock
Thuật toán Watkins Thuật toán dòng quét trong không gian ảnh
Vẽ các bề mặt theo thứ tự từ sau đến trước – các đa giác gần hơn sẽ được vẽ đề lên đa giác xa hơn
Hỗ trợ tính trong suốt.
Vấn đề mấu chốt là xác định
thứ tự.
Không phai lúc nào cũng
thực hiện được
Chuyển danh sách đa giác sang dạng cấu trúc cây nhị phân (cây BSP)
Duyệt cây BSP và vẽ các đa giác ra bộ đệm khung theo thứ tự từ sau ra trước
Thuật toán chính xác theo ảnh
Khởi tạo danh sách cửa sổ L (ban đầu: toàn bộ màn hình)
Mỗi cửa sổ W trong L tìm cửa sổ thỏa mãn:
Tất cả đa giác tách biệt với W: vẽ W với màu nền
Chỉ có P giao với W
Tìm đa giác bao phủ W và đa giác đó nằm trước tất cả các
đa giác khác giao với W
Lưu lại thông tin về độ sâu hiện thời của mỗi điểm
Nội suy z trong quá trình tính toán
Lưu trữ một ma trận độ sâu tương ứng với ảnh đầu ra
Mỗi khi xử lý một đa giác, so sánh với các giá trị z
đang lưu trữ
Lưu lại giá trị màu của những điểm gần nhất