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
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:
bai_giang_do_hoa_may_tinh_chuong_6_mo_hinh_hoa_doi_tuong_3d.ppt

