1. Trang chủ
  2. » Tất cả

Chapter 7

34 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 479 KB

Nội dung

Trường Đại Học Bách Khoa TP Hồ Chí Minh Khoa Khoa học & Kỹ thuật Máy tính ĐỒ HỌA MÁY TÍNH CHƯƠNG 7: PHÉP NHÌN TRONG KHƠNG GIAN CHIỀU NỘI DUNG TRÌNH BÀY  Ơn tập camera  Xây dựng camera chương trình  Hình chiếu phối cảnh  Hình chiếu phối cảnh điểm  Hình chiếu phối cảnh đoạn thẳng  Độ sâu giả  Sử dụng tọa độ đồng  Ý nghĩa hình học phép biến đổi phối cảnh  Thể tích nhìn chuẩn  Cắt xén với thể tích nhìn Faculty of Computer Science and Engineering - HCMUT Slide GIỚI THIỆU  Xây dựng điều khiển camera tạo hình chiếu phối cảnh  Điều khiển vị trí hướng camera  Điều khiển thể tích nhìn camera  Cắt xén với thể tích nhìn camera Faculty of Computer Science and Engineering - HCMUT Slide ƠN TẬP VỀ CAMERA  Thể tích nhìn: phần hình chóp có đỉnh mắt nhìn  Các thành phần: mắt nhìn, góc nhìn (tính độ), mặt phẳng gần, mặt phẳng xa, mặt phẳng nhìn (thường mặt phẳng gần) Faculty of Computer Science and Engineering - HCMUT Slide ÔN TẬP VỀ CAMERA  Thiết lập thể tích nhìn: hình dạng thể tích nhìn chứa ma trận phép chiếu glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(viewAngle, aspecRatio, N, F); Faculty of Computer Science and Engineering - HCMUT Slide ƠN TẬP VỀ CAMERA  Định vị trí định hướng cho camera glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(eye.x,eye.y,eye.z,look.x,look.y,look.z, up.x,u p.y,up.z); Faculty of Computer Science and Engineering - HCMUT Slide ÔN TẬP VỀ CAMERA  Định vị trí định hướng cho camera Khi điều chỉnh hướng camera người ta thường dùng thuật ngữ ngành hàng không: pitch, roll, yaw a) pitch b) roll v n a ) c) yaw u u v u b ) v n u c ) v u n Faculty of Computer Science and Engineering - HCMUT Slide ÔN TẬP VỀ CAMERA  Chức gluLookAt(): từ eye, look, up  u, v, n n song song với eye – look u, v vng góc với n up hướng camera u phía bên camera n = eye – look u = up×n, v = n×u v up up n eye look u eye Faculty of Computer Science and Engineering - HCMUT look Slide ÔN TẬP VỀ CAMERA  Ma trận mơ hình-phép nhìn tích V M  ux u y uz d x    (dx, dy, dz) = (-eye • u, -eye • v, -eye • n)  vx v y vz d y  V = nx n y nz d z    0 0 1 v   n  eyex         eye y    V =   eyez       1      ux        uy  0 V  =   uz       0     u ey e V y z Faculty of Computer Science and Engineering - HCMUT x Slide XÂY DỰNG CAMERA TRONG CT class Camera { private: Point3 eye; Vector3 u, v, n; double viewAngle, aspect, nearDist, farDist; void setModelViewMatrix(); public: Camera(); void set(Point3 Eye, Point3 look, Vector3 up); void roll(float angle); void pitch(loat angle); void yaw(float angle); void slide(float delU, float delV, float delN); void setShape(float vAng,float asp,float nearD,float farD); }; Faculty of Computer Science and Engineering - HCMUT Slide 10 HÌNH CHIẾU PHỐI CẢNH CỦA ĐT  Đường thẳng chạy phía sau mắt nhìn  Bất hợp lý quan sát đt dài song song Faculty of Computer Science and Engineering - HCMUT Slide 20 ĐỘ SÂU GIẢ  Phép chiếu phối cảnh làm thông tin độ sâu  Tốn tg tính độ sâu theo cơng thức P + P + P x y z  Vì Pz âm điểm xa  dùng Pz tính độ sâu Py aPz + b   Px  ( x*, y*, z *) =  N ,N , − Pz − Pz   − Pz Faculty of Computer Science and Engineering - HCMUT Slide 21 ĐỘ SÂU GIẢ  a b chọn cho độ sâu giả nằm [-1, 1] – chọn z* = -1 Pz = - N – chọn z* = Pz = - F F+N − FN a=− ,b = F−N F−N Faculty of Computer Science and Engineering - HCMUT Slide 22 SỬ DỤNG TỌA ĐỘ ĐỒNG NHẤT  Biểu diễn tọa độ đồng P = (Px, Py, Pz) P = (Px, Py, Pz, 1) vector v = (vx, vy, vz) v = (vx, vy, vz, 0)  Mở rộng cách biểu diễn đồng P = (wPx, wPy, wPz, w), cách điểm nằm tia, điểm vơ có w=0  (3, 6, 2, 3) tọa độ thông thường (1, 2, 2/3)  Cách chuyển đổi: – thông thường  đồng (thêm 1) – đồng  thông thường (chia cho thành phần tọa độ thứ bỏ thành phần tọa độ thứ 4) Faculty of Computer Science and Engineering - HCMUT Slide 23 SỬ DỤNG TỌA ĐỘ ĐỒNG NHẤT  Nhân với phép biến đổi affine 2 −1   0  0  wPx   wQx       wPy   wQ y  =    − wPz wQz       w   w   Nhân với ma trận chiếu (phép biến đổi phối cảnh) N  0 0  0 N 0 0 a −1  wPx   wNPx       wPy   wNPy  =    w( aPz + b)  b wPz      w   − wPz  Faculty of Computer Science and Engineering - HCMUT Slide 24 SỬ DỤNG TỌA ĐỘ ĐỒNG NHẤT  Phép chia phối cảnh Py aPz + b   Px  N  ,N , − Pz − Pz   − Pz  Phép biến đổi phối cảnh Py aPz + b   Px  ( Px , Py , Pz ) →  N , N , − Pz − Pz   − Pz  Phép chiếu trực giao Py aPz + b   Px  N  → ,N ,  − Pz − Pz − Pz  Py   Px  N ,N ,0   − Pz − Pz  (phép chiếu phối cảnh) = (phép biến đổi phối cảnh) + (phép chiếu trực giao) Faculty of Computer Science and Engineering - HCMUT Slide 25 ... v.z; m[13] = -eVec.dot(v); m[2] = n.x ; m[6] = n.y; m[10] = n.z; m[14] = -eVec.dot(n); m[3] = ; m [7] = ; m[11] = ; m[15] = 1.0; glMatrixMode(GL_MODELVIEW); glLoadMatrixf(m); } void Camera :: set(Point3...  ( x*, y*) =  N ,N − Pz   − Pz Faculty of Computer Science and Engineering - HCMUT Slide 17 HÌNH CHIẾU PHỐI CẢNH CỦA ĐT  Phép chiếu đường thẳng song song - đt qua A = (Ax, Ay, Az) có hướng

Ngày đăng: 22/05/2017, 06:42