Bài 1 – CÁC PHÉP BIẾN ĐỔI 3D Hệ toạ độ thuần nhất Trong hệ toạ độ thuần nhất, mỗi điểm x, y, z trong hệ toạ độ Descartes được biểu diễn bởi bộ 4 toạ độ không gian hx, hy, hz, h.. Để thực
Trang 1Đ H A MÁY TÍNH Ồ HỌA MÁY TÍNH ỌA MÁY TÍNH
Đ H A MÁY TÍNH Ồ HỌA MÁY TÍNH ỌA MÁY TÍNH
Đ H A MÁY TÍNH Ồ HỌA MÁY TÍNH ỌA MÁY TÍNH
Đ H A MÁY TÍNH Ồ HỌA MÁY TÍNH ỌA MÁY TÍNH
Trang 2CHƯƠNG III
ĐỒ HỌA BA CHIỀU
Bài 2 – Biểu diễn các đối tượng 3D
Bài 4 – Biểu diễn đường và mặt cong Bài 5 – Tô bóng các đối tượng
Trang 3Bài 1 CÁC PHÉP BIẾN ĐỔI 3D
Trang 4Đại số véctơ
• Biểu diễn véctơ
– Đoạn thẳng có hướng giữa hai điểm xác định
• Cộng hai véctơ
• Nhân hai véctơ
– Tích vô hướng hay tích điểm
Trang 5Đại số véctơ
• Tích có hướng của hai véctơ
– Kết quả là véctơ vuông góc với mặt
phẳng tạo ra bởi hai véctơ
– Véctơ đơn vị u
• Có độ dài bằng 1
• Xác định hướng của véctơ kết quả
– Quy tắc bàn tay phải
• Nắm tay phải, để cong các ngón tay
Trang 6Bài 1 – CÁC PHÉP BIẾN ĐỔI 3D
Hệ toạ độ thuần nhất
Trong hệ toạ độ thuần nhất, mỗi điểm (x, y, z) trong hệ toạ độ Descartes được biểu diễn bởi bộ 4 toạ độ không gian (hx, hy, hz, h) Để tiện lợi, cho h=1 Như vậy, một điểm (x, y, z) trong hệ toạ độ Descartes sẽ biến thành điểm (x, y, z, 1) trong hệ toạ độ thuần nhất Còn điểm (x,
y, z, w) trong hệ toạ độ thuần nhất (với w0) sẽ ứng với điểm (x/w, ) sẽ ứng với điểm (x/w, y/w, z/w) trong hệ toạ độ Descartes
Xét trong hệ toạ độ thuần nhất, phép biến đổi affine 3D biến điểm P(x,y,z,1) thành điểm Q(x’, y’, z’,1) có dạng:
x y z
a b c
d e f M
Trang 7Một số tính chất của các phép biến đổi 3 chiều
Tính chất đường thẳng được bảo toàn Nghĩa là một đường thẳng trong không gian 3 chiều khi
biến đổi sẽ thành một đường thẳng.
Tính chất song song được bảo toàn: hai đường thẳng song song khi biến đổi cũng sẽ thành 2 đường thẳng song song.
Tính tỉ lệ về khoảng cách được bảo toàn: ảnh của một điểm P chia đoạn thẳng AB theo tỉ lệ f, sẽ chia đoạn thẳng A’B’ theo tỉ lệ f, với A’B’ là ảnh của đoạn thẳng AB.
Trang 8I Các phép biến đổi hình học cơ sở
1 Phép tịnh tiến (translation)
Trong phép biến đổi tịnh tiến 3D, mỗi điểm được dịch đi
Ma trận của phép biến đổi tịnh tiến là:
Trang 9I Các phép biến đổi hình học cơ sở
2 Phép đối xứng
Đối xứng qua mặt phẳng xy:
Đối xứng qua mặt phẳng xz:
Đối xứng qua mặt phẳng yz:
Trang 11I.Các phép biến đổi hình học cơ sở
3 Phép biến đổi tỉ lệ (scaling)
Phép biến đổi tỉ lệ trong không gian 3D là sự mở rộng của phép biến đổi tỉ lệ trong không gian 2D Ma trận của phép biến đổi tỉ lệ là:
sx, sy, sz là các hệ số tỉ lệ
Khi sx= sy= sz =s ta có phép biến đổi đồng dạng
y
x z
Trang 123 Phép biến đổi tỉ lệ (scaling)
Phép biến đổi tỉ lệ theo một tâm (x0) sẽ ứng với điểm (x/w, , y0) sẽ ứng với điểm (x/w, , z0) sẽ ứng với điểm (x/w, ) bất kỳ được mô tả bằng một dãy ba phép biến đổi sau:
Tịnh tiến tâm (x0) sẽ ứng với điểm (x/w, , y0) sẽ ứng với điểm (x/w, , z0) sẽ ứng với điểm (x/w, ) về gốc toạ độ
Biến đổi tỉ lệ có tâm ở gốc toạ độ
Tịnh tiến ngược tâm từ gốc toạ độ về lại vị trí ban đầu
Kết hợp ba bước biến đổi trên, ta được ma trận của phép biến đổi theo tâm (x0) sẽ ứng với điểm (x/w, , y0) sẽ ứng với điểm (x/w, , z0) sẽ ứng với điểm (x/w, ) như sau:
Trang 134 Phép quay (rotation)
a Quay quanh một trục toạ độ
– Qui ước: Quay ngược chiều kim đồng hồ theo trục sẽ tạo thành gĩc
dương nếu nhìn về gốc tọa độ từ nửa trục dương.
Trang 144 Phép quay (rotation)
a Quay quanh một trục toạ độ
Các ma trận biểu diễn phép quay quanh trục x, y, z một góc lần lượt là R(x, ), R(y, ), R(z, ) như sau:
Quay quanh trục x:
Quay quanh trục y:
Quay quanh trục z:
Trang 154 Phép quay (rotation)
b.Quay quanh một trục bất kỳ.
Giả sử trục quay được biểu diễn bởi
đường thẳng k đi qua 2 điểm P0) sẽ ứng với điểm (x/w, và P1
Quay điểm P(x,y,z) một góc sẽ
biến thành điểm Q(x’, y’, z’) Để thực hiện
phép quay quanh k, ta thực hiện một chuỗi các thao tác sau:
- Thực hiện một số phép tịnh tiến, quay để k trùng trục z như sau:
+ Tịnh tiến k về gốc toạ độ (thành trục k’) với ma trận biến đổi là Tr(-P0) sẽ ứng với điểm (x/w, ).
+ Quay quanh trục x một góc để đặït k’lên mặt phẳng Oxz (thành trục k’’) với
ma trận biến đổi là: R(x, )
+ Quay quanh trục y một góc để đưa k’’ về trục z với mt biến đổi là: R(y,-).
- Quay quanh trục z một góc với ma trận biến đổi là: R(z, ).
Trang 164 Phép quay (rotation)
b.Quay quanh một trục bất kỳ.
Vậy phép quay một điểm quanh
trục k bất kỳ với một góc được
phân tích thành các chuỗi biến đổi sau:
Tr(-P0) sẽ ứng với điểm (x/w, ).R(x, ).R(y,-) R(z, ).R(y,), R(x, -), Tr(P0) sẽ ứng với điểm (x/w, )
Trong đó góc quay , được xác định dựa trên cơ sở chiếu k’ lên mặt phẳng yz, ta có:
k=P0) sẽ ứng với điểm (x/w, P1 ;
Trang 17II Phép biến đổi ngược
Tất cả các phép biến đổi ở trên đều có ma trận nghịch đảo.
- Ma trận nghịch đảo của phép tịnh tiến có được bằng cách
- Ma trận nghịch đảo của phép biến đổi tỉ lệ có được bằng
- Ma trận nghịch đảo của phép quay có được bằng cách thay góc bằng -.
Trang 18III Kết hợp các phép biến đổi
Để kết hợp các phép biến đổi affine 3D, ta thực hiện tương tự như ở phép biến đổi 2D bằng cách sử dụng hệ toạ độ thuần nhất Bằng cách này, ta cũng có kết quả tương tự như trong trường hợp biến đổi 2D.
Như vậy ma trận của phép biến đổi kết hợp có thể được tính từ tích các ma trận của các phép biến đổi thành phần.
Trang 19Bài 2 BIỂU DIỄN CÁC ĐỐI TƯỢNG 3D
I Mô hình khung kết nối
II Mô hình các mặt đa giác
III Chiếu vật thể trong không gian lên mặt phẳng
IV Quan sát vật thể 3D và Quay hệ quan sát
Trang 20I Mô hình khung kết nối (WF-WireFrame model)
Một mô hình khung kết nối gồm: tập các đỉnh và tập các cạnh nối giữa các đỉnh đó Khi thể hiện bằng mô hình này, các đối tượng ba chiều có vẻ rỗng và không thực tế lắm Để hoàn thiện hơn, người ta dùng kỹ thuật tạo bóng, loại bỏ các đường và mặt khuất Tuy nhiên vẽ bằng mô hình này thường nhanh nên nó thường được dùng trong việc xem phác thảo (preview) các đối tượng, đặc biệt là trong các hệ CAD.
Mô hình khung nối kết thể hiện hình dáng của một đối tượng 3D bởi 2 danh sách:
Danh sách các đỉnh (vertices): lưu toạ độ các đỉnh.
Danh sách các cạnh (edges) nối giữa các đỉnh đó: lưu 2 đỉnh đầu và cuối của từng cạnh.
Trang 21I Mô hình khung kết nối (WF-WireFrame model)
Danh sách các đỉnh Danh sách các
cạnh Đỉnh x y z Cạnh Đầu Cuối
1 0) sẽ ứng với điểm (x/w, 0) sẽ ứng với điểm (x/w, 0) sẽ ứng với điểm (x/w, 1 1 2
2 0) sẽ ứng với điểm (x/w, 1 0) sẽ ứng với điểm (x/w, 2 2 3
3 0) sẽ ứng với điểm (x/w, 1 1 3 3 4
4 0) sẽ ứng với điểm (x/w, 0) sẽ ứng với điểm (x/w, 5 1.5 4 4 5
5 0) sẽ ứng với điểm (x/w, 0) sẽ ứng với điểm (x/w, 1 5 5 1
6 1 0) sẽ ứng với điểm (x/w, 0) sẽ ứng với điểm (x/w, 6 6 7
7 1 1 0) sẽ ứng với điểm (x/w, 7 7 8
6
7
9 10
1
1 1 8
Trang 22(1,-1,0) sẽ ứng với điểm (x/w, )
(-1,1,0) sẽ ứng với điểm (x/w, ) (-1,-1,0) sẽ ứng với điểm (x/w, )
(1,1,0) sẽ ứng với điểm (x/w, )
1
2 3
4
5
6 7
8
9
11
12 10
Ví dụ: lưu trữ hình dáng một chiếc ghế gỗ thơ sơ
Trang 23I Mô hình khung kết nối (WF-WireFrame model)
Có nhiều cách để lưu trữ một mô hình WF trên máy tính Ở đây ta dùng cấu trúc mảng các record như sau:
typedef struct{
float x, y, z;
} diem3D;
typedef struct{
diem3D dinh[maxdinh];
int canh[maxcanh][2];
}wireframe;
Trang 24II Mô hình các mặt đa giác ( Polygon Mesh model)
Mơ hình các mặt đa giác: vật thể 3D được xác định thơng qua các mặt, mỗi mặt lại được xác định thơng qua các đỉnh của mặt đa giác Với mơ hình các mặt đa giác, chúng ta khơng chỉ tạo ra được hình dáng của vật thể như mơ hình Wireframe mà cịn thể hiện được các đặc tính về màu sắc và nhiều tính chất khác của vật thể Song để
cĩ thể mơ tả vật thể 3D một cách trung thực thì địi hỏi người lập trình phải tính tốn và giả lập nhiều thơng tin, mà mấu chốt là vấn đề khử mặt khuất và chiếu sáng.
Mô hình các mặt đa giác thể hiện hình dáng của một đối tượng 3D bởi 2 danh sách:
Danh sách các đỉnh: lưu toạ độ các đỉnh.
Danh sách các mặt: lưu thứ tự các đỉnh tạo nên mặt đó.
Trang 25II.Mô hình các mặt đa giác ( Polygon Mesh model)
Ví dụ: Mơ tả vật thể như trong hình vẽ sau:
Trang 26II Mô hình các mặt đa giác ( Polygon Mesh model)
• Chúng ta cĩ thể đưa ra nhiều cấu trúc dữ liệu khác nhau để lưu trữ
typedef struct { float x; float y; float z;} Diem3D; // Điểm 3 chiều
typedef struct { float x; float y; float z;} Vector3D // Vector 3 chiều
kieumat mat[]; // danh sách mặt } object3D;
Trang 27III Chiếu vật thể trong không gian lên mặt phẳng
• Chiếu (Projection) là biến đổi hệ tọa độ n-chiều sang hệ tọa độ m-chiều, trong đĩ m<n.
– Trong đồ họa máy tính thường sử dụng biến đổi 3D -> 2D
• Các khái niệm liên quan
– Tia chiếu: đi qua các điểm trên đối tượng đến mặt phẳng để tạo ảnh 2D
– Mặt phẳng chiếu: nơi hình thành ảnh 2D của đối tượng 3D
Trang 28III Chiếu vật thể trong không gian lên mặt phẳng
• Hai nhĩm phép chiếu đối tượng 3D sang 2D cơ bản
– Chiếu song song (parallel projection)
• Chiếu các điểm trên đối tượng theo đường song song
• Sử dụng nhiều trong đồ họa máy tính, vẽ kỹ thuật– Chiếu phối cảnh (perspective projection)
• Chiếu các điểm trên đối tượng theo đường hội tụ đến tâm chiếu
• Sử dụng nhiều trong các trị chơi (cảm giác thực hơn)
Trang 291 Phép chiếu song song (Parallel projective)
Khi hướng của tia chiếu vuông 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)
z
o
a P(x, y, z)
P’(x’, y’) Mặt phẳng chiếu
x x’
y’
y
Trang 30a Phép chiếu trực giao
Đối với phép chiếu trực giao, để chiếu điểm P(x, y, z) trong không
gian 3D lên mặt phẳng chiếu thành
P’(x’, y’), cách đơn giản nhất là bỏ
đi thành phần z
Mặt phẳng chiếu
1 Phép chiếu song song (Parallel projective)
Nhìn từ phía trên
Nhìn từ phía trước
Nhìn từ Mặt bên y
z x
Trang 31b Phép chiếu xiên
Qua phép chiếu xiên,điểm P(x,y,z) sẽ có ảnh là điểm P’
Trong đó: P’’ là hình chiếu của P
qua phép chiếu trực giao là góc
tạo bởi tia chiếu và P’P’’và là góc
tạo bởi P’P’’với trục y
Biết P, , ta có thể xác định được điểm chếu P’(x’,y’)
Phép chiếu song song bảo toàn được mối quan hệ giữa các
chiều của đối tượng, đây chính là kỹ thuật dùng trong phác thảo để tạo ra phần khung của đối tượng 3D Người ta dùng phương pháp này để quan sát chính xác ở các mặt khác nhau của đối tượng Tuy nhiên phép chiếu
1 Phép chiếu song song (Parallel projective)
x x’
y’
y
Trang 33Trong phép chiếu phối cảnh, các tia chiếu không song song với nhau mà hội tụ về một điểm duy nhất gọi là mắt nhìn Phép chiếu này phụ thuộc vào vị trí tương đối của mắt nhìn và mặt phẳng quan sát.
P(x,y,z) P’
Trang 35Nhận xét:
Phép chiếu phối cảnh khơng giữ nguyên hình dạng của vật thể
Vật ở trước mặt phẳng chiếu thì được phĩng lớn, sau mặt phẳng chiếu thì bị thu nhỏ Vât ở xa thì trơng nhỏ, ở gần thì trơng lớn
III Chiếu vật thể trong không gian lên mặt phẳng
Mặt phẳng chiếu
Tia chiếu
Mặt phẳng chiếu
Tâm chiếu
Trang 36Khi mơ tả việc quan sát một vật thể trong khơng gian ta cần lưu ý :
Vật thể được chiếu lên một hệ theo quy tắc bàn tay phải (O, X, Y, Z)
Mắt nằm ở gốc của một hệ theo quy tắc bàn tay trái (O’, X0 , Y0 , Z0)
Mặt phẳng chiếu vuơng gĩc với đường thẳng OO’
Trục Z0 của hệ toạ độ thứ 2 hướng vào gốc O Hệ toạ độ thứ hai cĩ tên là
hệ toạ độ quan sát
Bây giờ, ta khảo sát phép biến đổi một điểm P(x,y,z) trong hệ toạ
độ thứ nhất sang P’(x0,y0,z0) trong hệ toạ độ thứ hai rồi chuyển sang toạ độ trên mặt phẳng quan sát
IV.Quan sát vật thể 3D và Quay hệ quan sát
Trang 37Bước 1: Tịnh tiến gốc O thành O’.
Ma trận của phép tịnh tiến (Lấy nghịch đảo):
O’
Y1 Z1
0 0
0 0
1 0
0 0
0 1
P N
00
00
10
00
01
Trang 38Bước 2:
Quay hệ (X1,Y1,Z1) một gĩc -‘ (‘=90 0 - ) quanh trục Z1 theo chiều
kim đồng hồ Phép quay này làm cho trục âm của Y1 cắt trục Z
IV.Quan sát vật thể 3D và Quay hệ quan sát
Trang 39Bước 2:
Ta gọi Rz là ma trận tổng quát của phép quay quanh trục Z
Vì đây là phép quay hệ trục nên phải dùng ma trận nghịch đảo R-1
z
R-1
z =
Thay = -‘ Theo các phép toán lượng giác:
Sin(-') = -Sin(') = -Sin(900 - ) = -Cos()
Cos(-') = Cos(') = Cos(900 -) = Sin()
Nên ma trận của phép quay tìm được sẽ có dạng:
0
0 1 0
0
0 0 ) ( )
(
0 0 ) ( )
Cos Sin
Trang 40 O
Y3
Z3 X3
90 0 +
Trang 41 O
Y3
Z3 X3
0 0
0 ) ( )
( 0
0 ) ( )
( 0
0 0
0 1
Cos Sin
Trang 42Bước 4: Biến đổi hệ trực tiếp (X3,Y3,Z3) thành hệ gián tiếp.
Trong bước này, ta phải đổi hướng trục X3 bằng cách đổi dấu các phần tử của cột X Ta nhận được ma trận:
D =
hệ (X3,Y3,Z3) biến đổi thành hệ (X0,Y0,Z0)
IV.Quan sát vật thể 3D và Quay hệ quan sát
Z
X
Y0) sẽ ứng với điểm (x/w,
Z0) sẽ ứng với điểm (x/w,
X0) sẽ ứng với điểm (x/w,
0100
0010
0001
Trang 43TĨM LẠI
Các điểm trong khơng gian sẽ nhận trong hệ quan sát một tọa độ cĩ dạng:
(x0 ,y0 ,z0 ,1) = (x, y, z, 1).A.B.C.DGọi T = A.B.C.D, ta tính được:
T =
Vậy: x0 = -x.Sin() + y.Cos()
y = -x.Cos().Sin() - y.Sin().Sin() + z.Cos()
IV.Quan sát vật thể 3D và Quay hệ quan sát
Y0) sẽ ứng với điểm (x/w,
Z0) sẽ ứng với điểm (x/w,
X0) sẽ ứng với điểm (x/w,
0
0 )
( )
( 0
0 ) ( ).
( )
( ).
( )
(
0 ) ( ).
( )
( ).
( )
sin(
R
Sin Cos
Cos Sin
Sin Sin
Cos
Cos Cos
Sin Cos
Trang 44Chú ý: Nếu z>D thì ảnh thu nhỏ (hội tụ)
ngược lại ảnh được phĩng lớn.
Vật thể
Phĩng to Thu nhỏ
Mắt
Y0) sẽ ứng với điểm (x/w,
Z0) sẽ ứng với điểm (x/w,
X0) sẽ ứng với điểm (x/w,
P’(x’,y’)
M t chi u ặt 3 ếu
O’
Z0) sẽ ứng với điểm (x/w,
Z0) sẽ ứng với điểm (x/w,
O
O
Y0) sẽ ứng với điểm (x/w,
X0) sẽ ứng với điểm (x/w,
y'
x'
D
P0) sẽ ứng với điểm (x/w,
P0) sẽ ứng với điểm (x/w,
M t chi u ặt 3 ếu
P0) sẽ ứng với điểm (x/w, (x0) sẽ ứng với điểm (x/w, ,y0) sẽ ứng với điểm (x/w, ,z0) sẽ ứng với điểm (x/w, )
x’
x0) sẽ ứng với điểm (x/w,
z0) sẽ ứng với điểm (x/w,
z0) sẽ ứng với điểm (x/w,
Trang 45Ta cĩ 4 giá trị ảnh hưởng đến phép chiếu vật thể 3D là:
-Tăng giảm sẽ quay vật thể trong mặt phẳng (XY).
-Tăng giảm sẽ quay vật thể lên xuống.
IV.Quan sát vật thể 3D và Quay hệ quan sát
Trang 46Bài 3 CÁC THUẬT TOÁN KHỬ MẶT KHUẤT
I Thuật toán khử mặt sau
II Thuật toán sắp xếp theo chiều sâu III Thuật toán vùng đệm độ sâu
Trang 47BÀI 3 – CÁC THUẬT TOÁN KHỬ MẶT KHUẤT
• Giả sử ta cĩ tập đa giác cần hiển thị trên màn hình
– Chúng cĩ khoảng cách khác nhau tới điểm quan sát
– Chúng che khuất nhau
– Nếu hiển thị chúng một cách ngẫu nhiên -> hình dáng đối tượng khơng đúng như mong muốn
– Nhu cầu loại bỏ mặt hay phần mặt bị khuất
• Hai cách tiếp cận chính để loại bỏ mặt khuất
– Tiếp cận khơng gian đối tượng (object-space)
• Làm việc trực tiếp với đối tượng So sánh đối tượng hay một phần của đối tượng với đối tượng khác để quyết định đường thẳng hay mặt phẳng nào bị loại bỏ.
– Tiếp cận khơng gian ảnh (image-space)
• Làm việc với ảnh chiếu vật thể Xác định khả năng nhìn thấy của từng pixel trên mặt phẳng chiếu.
• Được áp dụng rộng rãi
Trang 48BÀI 3 – CÁC THUẬT TOÁN KHỬ MẶT KHUẤT
Trang 49BÀI 3 – CÁC THUẬT TOÁN KHỬ MẶT KHUẤT
Trang 50I.Thuật toán khử mặt sau (Back-face)
Nhắc lại:
-Tích vô hướng: cho
-Tích vector: trong hệ toạ độ theo quy tắc bàn tay phải, cho 2 vector , tích vector của 2 vector là vector vuông góc với mặt phẳng tạo bởi 2 vector và đồng thời được xác định như sau:
y x
y x
z z
x
z x
y z
y
z y
a
a n
b b
a
a n
b b
Trang 51I.Thuật toán khử mặt sau (Back-face)
• Dùng Vector pháp tuyến để khử các mặt khuất
của một đối tượng 3D đặc và lồi
• Ta sẽ tính gĩc giữa véc tơ hướng nhìn V và
pháp vector N của mặt, nếu gĩc này là lớn hơn
90o thì mặt là khơng nhìn thấy (bị khuất), ngược lại thì mặt là khả kiến.