Bài giảng Đồ họa máy tính - Chương 6: Mô hình hóa đối tượng 3D bằng lưới đa giác

Lưới đa giác

Khối đa diện

Khối quét

Lưới xấp xỉ mặt cong

Mặt chứa cạnh thẳng

Mặt tròn xoay

Mặt bậc hai

Mặt siêu bậc hai

Mặt biểu diễn bởi hàm tường minh

 

ppt58 trang | Chuyên mục: Đồ Họa Máy Tính | Chia sẻ: tuando | Lượt xem: 518 | Lượt tải: 0download
Tóm tắt nội dung Bài giảng Đồ họa máy tính - Chương 6: Mô hình hóa đối tượng 3D bằng lưới đa giác, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ID * vert ; // the list of vertex and normal index 
 Face() { nVerts = 0; vert = NULL; } 
 ~Face() { delete[] vert ; nVerts = 0; } 
 }; 
LƯỚI ĐA GIÁC TRONG CT 
class Mesh { 
 private: 
 int numVerts ; // number of vertices in the mesh 
 Point3* pt; // array of 3D vertices 
 int numNormals ; // number of normal vectors for the mesh 
 Vector3* norm; // array of normals 
 int numFaces ; // number of faces in the mesh 
 Face* face ; // array of face data 
 // ... others to be added later 
 public: 
 Mesh(); 
 ~Mesh(); 
 int readFile(char * fileName ); 
 // ... others 
 }; 
LƯỚI ĐA GIÁC TRONG CT 
void Mesh::draw () 
{ 
 for ( int f = 0; f < numFaces ; f++) 
 { 
 glBegin(GL_POLYGON ); 
 for ( int v = 0; v < face[f].nVerts ; v++) 
 { 
 int in = face[f].vert[v].normIndex ; 
 int iv = face[f].vert[v].vertIndex ; 
 glNormal3f(norm[in].x, norm[in].y, norm[in].z); 
 glVertex3f(pt[iv].x, pt[iv].y, pt[iv].z); 
 } 
 glEnd() ; 
 } 
} 
LƯỚI ĐA GIÁC TRONG CT 
Ví dụ 
KHỐI ĐA DIỆN 
Định nghĩa : là lưới liên thông của các đa giác phẳng đơn giản . Các đa giác này bao bọc một kg giới hạn . 
Tính chất : (1) mỗi cạnh thuộc 2 mặt , (2) đỉnh là giao điểm của ít nhất 3 cạnh , (3) các mặt không xuyên qua nhau . 
Công thức Euler: (1) V + F – E = 2 (cube V=8,F=6,E=12), (2) V + F – E = 2 + H – 2G (H: tổng lỗ hổng nằm trên các mặt , G: tổng lỗ hỗng xuyên qua đa diện ) 
HÌNH LĂNG TRỤ VÀ PHẢN LĂNG TRỤ 
Hình lăng trụ : quét đa giác dọc theo đoạn thẳng . Khi d vuông góc với đa giác thì lăng trụ là lăng trụ đứng 
Lăng trụ đều : đa giác là đa giác đều 
Phản lăng trụ : đa giác đỉnh quay 180/n độ so với đáy 
KHỐI ĐA DIỆN ĐỀU (PLATONIC) 
Định nghĩa : các mặt bằng nhau và đều là đa giác đều 
số cạnh của mặt 
số mặt ở đỉnh 
KHỐI ĐA DIỆN ĐỀU (PLATONIC) 
Khối đa diện đều đối ngẫu : D là đối ngẫu của P thì đỉnh của D là tâm của P  D nối tâm hai mặt kề nhau của P. 
D có số cạnh bằng số đỉnh của P và số đỉnh bằng số cạnh của P. Nếu P có giá trị Schlafli là (p, q) thì D có giá trị Schlafli là (q, p) 
KHỐI ĐA DIỆN ĐỀU (PLATONIC) 
Mô hình của khối đa diện đều 
- mặt 4 của lập phương gồm 1,5,6,2 đỉnh 4 của (c) là giao của các mặt 1,5,6,2 
- tứ diện tự đối ngẫu  danh sách các đỉnh của mặt k sẽ trùng với danh sách các mặt giao nhau tại k. 
KHỐI ĐA DIỆN ĐỀU (PLATONIC) 
Pháp tuyến của khối Platonic 
KHỐI ĐA DIỆN ĐỀU (PLATONIC) 
Khối tứ diện đều : có thể nội tiếp trong khối lập phương sao cho các đỉnh trùng với các đỉnh của lập phương , các cạnh nằm trên các mặt . Giả sử khối lập phương có các đỉnh là ( 1, 1, 1), một đỉnh của tứ diện là (1, 1, 1) 
KHỐI ĐA DIỆN ĐỀU (PLATONIC) 
Khối Platonic 20 mặt : xây dựng bằng dùng 3 hình chữ nhật vàng có cạnh dài bằng 1, cạnh ngắn là 
KHỐI ĐA DIỆN ĐỀU (PLATONIC) 
Khối Platonic 12 mặt : là khối đối ngẫu của khối Platonic 20 mặt  đỉnh k của khối này nằm ở tâm mặt k của khối 20 mặt 
KHỐI ĐA DIỆN NỬA ĐỀU 
Các mặt vẫn là đa giác đều nhưng có nhiều loại mặt khác nhau : 
hình lập phương vát góc 
khối cầu bucky 
khối vòm geodesic 
KHỐI QUÉT 
Được tạo bằng cách quét một hình 2D trong không gian 
Hình lăng trụ : pháp tuyến đỉnh là pháp tuyến mặt 
Xây dựng lưới đa giác : 
xây dựng ds đỉnh 
xây dựng ds mặt 
pháp tuyến mặt được tính bằng phương pháp Newell 
KHỐI QUÉT 
Mảng các hình lăng trụ : một số thư viện đồ họa không vẽ được đa giác lõm khi đa giác là lõm thì cần phải tách nó thành tập đa giác lồi 
KHỐI QUÉT 
Quét kết hợp với xoắn : P = { p 0 , p 1 , ..., p N-1 } ( đáy ) 
P’ = {M p 0 , M p 1 , ..., M p N-1 } (đỉnh) 
ds mặt giữ nguyên , đỉnh và pháp tuyến thay đổi 
KHỐI QUÉT 
Xây dựng khối quét phân đoạn : gồm nhiều đoạn , mỗi đoạn có ma trận biến đổi riêng . 
Thiết kế hình ống dựa trên đường cong 3D 
C ( t ) = (cos( t ), sin( t ), bt ) 
KHỐI QUÉT 
Lấy mẫu C(t ) ở {t 0 , t 1 ...}, xây dựng đa giác eo nằm trong mặt phẳng vuông góc với đường cong ở C(t i ). Xây dựng hệ trục tọa độ sao cho trục z tiếp tuyến với đường cong 
Dùng C(t ) để xác định hệ tọa độ cục bộ 
- T(t i ) tiếp tuyến đc , N(t i ), B(t i ) vuông góc với T(t i ) 
- Ma trận M i biến đổi đa giác đáy thành đa giác eo 
- M i = ( N ( t i ) | B ( t i ) | T ( t i ) | C ( t i )) 
KHỐI QUÉT 
Tạo khung Frenet 
 C’ ( t ) = ( C’ x ( t ), C’ y ( t ), C’ z ( t )) T (t ) là C’ ( t ) sau khi chuẩn hóa 
N ( t ) = B ( t )  T ( t ) 
KHỐI QUÉT 
Tạo khung Frenet bằng phương pháp tính 
 VÍ DỤ 
C ( t ) = (( a + b cos( qt ))cos( pt ), ( a + b cos( qt ))sin( pt ), c sin( qt )) 
KHỐI QUÉT 
VÍ DỤ 
KHỐI QUÉT 
Dùng khối quét xấp xỉ mặt tròn xoay : phép biến đổi affine là phép quay, đc xương sống ở gốc tọa độ 
các điểm nằm trên đường gấp khúc thứ i là 
( x j cos(  i ), y j , x j sin(  i ))	 
LƯỚI XẤP XỈ MẶT CONG 
Phương pháp chung : “ đa giác hóa ” mặt cong, đỉnh và pháp tuyến được tính từ công thức của mặt cong. 
Biểu diễn mặt cong: 
dạng tham số : P ( u , v ) = ( X ( u , v ), Y ( u , v ), Z ( u , v )),	 
dạng ẩn : F ( x , y , z ) = 0 
hàm trong ngoài : điểm (x, y, z) 
nằm trên mặt cong nếu F ( x , y , z ) = 0 
nằm bên trong nếu F ( x , y , z ) < 0 
nằm bên ngoài nếu F ( x , y , z ) > 0 
LƯỚI XẤP XỈ MẶT CONG 
Tìm vector pháp tuyến 
LƯỚI XẤP XỈ MẶT CONG 
Mặt cong được biểu diễn dưới dạng tham số 
 (n có thể được chuẩn hóa nếu muốn ) 
	 Ví dụ : mặt phẳng P ( u , v ) = C + a u + b v 
	 n ( u , v ) = a  b 
LƯỚI XẤP XỈ MẶT CONG 
Mặt cong được biểu diễn dưới dạng ẩn 
Ví dụ : dạng ẩn của mặt phẳng là : 
 F ( x , y , z ) = n  (( x , y , z ) – A ) = 0 
 hay: n x x + n y y + n z z - n  A =0 
  pháp tuyến là ( n x , n y , n z ) 
CÁC MẶT CƠ SỞ 
Mặt cầu cơ sở : 
dạng ẩn F(x , y, z) = x 2 + y 2 + z 2 – 1 
	  pháp tuyến (2x, 2y, 2z) 
dạng tham số P( u , v ) = (cos( v )cos( u ), cos( v )sin( u ), sin( v )) 
	pháp tuyến n ( u , v ) = - cos( u , v ) p ( u , v ) 	 
CÁC MẶT CƠ SỞ 
Mặt trụ cơ sở : 
dạng ẩn F ( x , y , z) = x 2 + y 2 – (1 + ( s – 1 ) z ) 2 0< z <1 	  n ( x , y , z ) = ( x , y , -( s – 1)(1 + ( s -1) z ))	 
dạng tham số 
 P ( u , v ) = ((1 + ( s – 1) v )cos( u ), (1 + ( s – 1) v )sin( u ), v ) 
	 n ( u , v ) = (cos( u ), sin( u ), 1- s ) 
CÁC MẶT CƠ SỞ 
Mặt nón cơ sở 
- dạng ẩn : F ( x , y , z ) = x 2 + y 2 – (1 – z )2 = 0 0 < z < 1 
	 n = ( x , y , 1 – z ) 
dạng tham số P ( u , v ) = ((1 – v ) cos( u ), (1 – v )sin( u ), v ) 
	  n(u , v) = (cos( u ), sin( u ), 1) 
XÂY DỰNG LƯỚI ĐA GIÁC 
Xây dựng lưới đa giác cho hình cầu : 
chia thành nhiều lát(stack ) và múi(slice ) 
u i = 2  i /nSlices với i = 0, 1, ..., nSlices -1 
v j =  /2 -  j /nStacks, với j = 0, 1, ..., nStacks 
pháp tuyến norm[k ] chính là pt[k ] 
MẶT CHỨA CẠNH THẲNG 
Tồn tại ít nhất một đt thuộc mặt đi qua mỗi điểm 
Dạng biểu diễn tham số 
P ( u , v ) = (1- v ) P 0 ( u )+ vP 1 ( u )  P ( u , v ) = (1- v ) P 0 + vP 1 
Mỗi hàm cho bởi 3 thành phần 
P 0 ( u ) = ( X 0 ( u ), Y 0 ( u ), Z 0 ( u )) 
MẶT CHỨA CẠNH THẲNG 
Mặt nón : P ( u , v ) = (1- v ) P 0 + vP 1 ( u ) 
P 0 là đỉnh của mặt nón 
Ví dụ : P 1 ( u ) = ( r ( u )cos( u ), r ( u )sin( u ), 1) 
	 r ( u ) = 0.5 + 0.2cos(5 u ) 	 
MẶT CHỨA CẠNH THẲNG 
Mặt trụ : 
P 1 ( u ) = P 0 ( u ) + d 
biểu diễn tham số : P ( u , v ) = P 0 ( u ) + d v 
MẶT CHỨA CẠNH THẲNG 
Mảnh tuyến tính đôi 
P 0 ( u ) = (1 - u ) P 00 + uP 01 
P ( u , v ) = (1 - v )(1 - u ) P 00 + (1 - v ) uP 01 + v (1 - u ) P 10 + uvP 11 	 
MẶT CHỨA CẠNH THẲNG 
Một số mặt chứa cạnh thẳng khác 
MẶT CHỨA CẠNH THẲNG 
Mảnh trộn tuyến tính đối : mảnh Coons 
tổng quát hóa của mặt chứa cạnh thẳng là mặt được tạo bởi 4 đường cong biên p u0 ( u ), p u1 ( u ), p 0v ( v ) và p 1v ( v ), với u và v nhận giá trị trong đoạn [0, 1] 
MẶT CHỨA CẠNH THẲNG 
Mảnh trộn tuyến tính đôi : cách xây dựng 
Công thức : P ( u , v ) = [ p 0v ( v )(1 - u ) + p 1v ( v ) u ] + [ p u0 ( u )(1 - v ) + p u1 ( u ) v ] - [(1 - u )(1 - v ) p 0v (0) + u (1 - v ) p 1v (0) + v (1 - u ) p 0v (1) + uvp 1v (1)] 
MẶT TRÒN XOAY 
Mặt tròn xoay được tạo bởi quét đc phẳng C (profile) xung quanh một trục 
Profile có phương trình C ( v ) = ( X ( v ), Z ( v )) khi quay quanh trục z góc u  ( X ( v )cos( u ), X ( v )sin( u ), Z ( v )) 
Kinh tuyến : đc profile ở một thời điểm nào đó . Vĩ tuyến : một điểm bất kỳ thuộc đường cong khi quay một vòng . 
Phương trình tham số : 
P ( u , v ) = ( X ( v )cos( u ), X ( v )sin( u ), Z ( v )) 
Tiếp tuyến : 
n ( u , v ) = X ( v )( Z '( v )cos( u ), Z '( v )sin( u ), - X '( v ))	 
MẶT TRÒN XOAY 
Ví dụ : 
đc profile: C ( v ) = ( D + A cos( v ), A sin( v )) 
P ( u , v ) = (( D + A cos( v ))cos( u ), ( D + A cos( v ))sin( u ), A sin( v )) 
MẶT BẬC HAI 
MẶT BẬC HAI 
MẶT BẬC HAI 
Lưu ý: - vết cắt : là giao của mặt phẳng với mặt cong. 
	 - vết cắt chính : khi mặt phẳng song song với mặt phẳng chính . 
	 - vết cắt là thiết diện nón 
Ellipsoid: 
hai tham số bằng nhau  mặt tròn xoay 
ba tham số bằng nhau  mặt cầu 
vết cắt là ellipse 
Hyperboloid một tầng 
a = b  mặt tròn xoay 
vết cắt chính z = k là ellipse, hai vết cắt chính kia là hyperbola 
là mặt chứa cạnh thẳng 
MẶT BẬC HAI 
Hyperboloid hai tầng : 
a = b  mặt tròn xoay 
vết cắt chính x = k là ellipse, hai vết cắt chính kia là hyperbola 
Elliptic Cone : 
a = b  mặt tròn xoay 
mặt nón có đường sinh tựa trên ellipse 
là mặt chứa cạnh thẳng , vết cắt chính z = k là ellipse 
Elliptic Paraboloid : 
vết cắt chính z = k là ellipse 
a = b  mặt tròn xoay 
MẶT BẬC HAI 
Hyperbolic Paraboloid : 
mặt yên ngựa 
là mặt chứa cạnh thẳng 
vết cắt với z = k là hyperbola, hai vết cắt kia là parabol 
Pháp tuyến của mặt bậc hai : 
Ví dụ : pháp tuyến của ellipsoid 
tính theo hàm ẩn F' = (2 x , 2 y , 2 z ) 
thay dạng biểu diễn ẩn của x, y và z 
n ( u , v ) = (cos( v )cos( u ), cos( v )sin( u ), sin( v ))	 
MẶT SIÊU BẬC HAI 
MẶT SIÊU BẬC HAI 
MẶT BIỂU DIỄN BỞI HÀM TƯỜNG MINH 
Hàm đơn trị theo một trục tọa độ nào đó 
MẶT BIỂU DIỄN BỞI HÀM TƯỜNG MINH 
Dạng tham số : P ( u , v ) = ( u , f ( u , v ), v )	 
Pháp tuyến : n ( u , v ) = (-  f /  u , 1, -  f /  v ) 

File đính kèm:

  • pptbai_giang_do_hoa_may_tinh_chuong_6_mo_hinh_hoa_doi_tuong_3d.ppt