Giáo trình Đồ họa - Bài 6: Biến đổi góc nhìn
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Đồ họa - Bài 6: Biến đổi góc nhìn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_do_hoa_bai_6_bien_doi_goc_nhin.pdf
Nội dung text: Giáo trình Đồ họa - Bài 6: Biến đổi góc nhìn
- Bài 6 BIẾN ĐỔI GÓC NHÌN © Copyright Copyright © Showeet.com Trịnh Thành Trung trungtt@soict.hust.edu.vn 1
- NỘI DUNG 1. Biến đổi góc nhìn 2D 2. Biến đổi trục tọa độ 3. Biến đổi góc nhìn 3D 4. Di chuyển Camera © Copyright Copyright © Showeet.com - 2
- 1 © Copyright Copyright © Showeet.com BIẾN ĐỔI GÓC NHÌN 2 CHIỀU -
- Hệ tọa độ thực Hệ tọa độ thực – World Coordinate System (WCS) • Là hệ tọa độ của đối tượng được các chương trình ứng dụng sử dụng để mô tả tọa độ của các đối tượng trong thế giới thực. • Đơn vị trong hệ thống tọa độ phụ thuộc vào không gian và kích thước của đối tượng được mô tả, có Copyright © Showeet.com thể từ A0, nm, mm đến m, km • Modeling Coordinate 4
- Hệ tọa độ thiết bị subselect.me Vùng tọa độ thiết bị VGA=640x480 Thiết bị hiển thị Hệ tọa độ thiết bị (Device Coordinate System) • Là hệ thống tọa độ của thiết bị nơi hiển thị hình ảnh và không gian của đối tượng mà ứng dụng Copyright © Showeet.com mô tả. 5
- Hệ tọa độ chuẩn • Chuyển đổi hệ tọa độ -> Sử dụng hệ tọa độ chuẩn – Normalized Coordinate System (NCS) • Giải quyết vấn đề khi ứng dụng chạy trên các thiết bị khác nhau • Có kích thước 1x1 NCS DCS Copyright © Showeet.com WCS chuyển đổi 1 chuyển đổi 2 6
- Phép biến đổi góc nhìn cơ bản • Phép biến đổi góc nhìn cơ bản là chuyển đổi từ hệ tọa độ mô hình sang hệ tọa độ màn hình (Modelling co-ordinates to Screen Coordinates) • Vấn đề: – Thay đổi tỷ lệ hình ảnh – Hiệu ứng về tỉ lệ khi Zoom hình ảnh – Phần nào của hình vẽ sẽ hiển thị ? – Hiển thị tại đâu trên màn hình ? Copyright © Showeet.com – Chuyển đổi sẽ được thực hiện ra sao? 7
- Trong hệ tọa độ 2 chiều • Window : Cửa sổ, Phần hình ảnh của thế giới thực sẽ được hiển thị • Viewport : Cổng nhìn, vùng màn hình nơi hình ảnh thế giới thực sẽ hiển thị (wxmax,wymax) (vxmax,vymax) © Copyright Copyright © Showeet.com (wx,wy) (vx,vy) (vxmin,vymin) (wxmin,wymin) 8
- PHÉP CHUYỂN ĐỔI © Copyright Copyright © Showeet.com - 9
- PHÉP BIẾN ĐỔI THEO MA TRẬN • Ma trận chuyển vị theo Window 1 0 0 [T1] 0 1 0 Xw Yw 1 • Ma trận biến đổi tỉ lệ Xvmax - Xvmin 0 0 Xwmax - Xwmin Yv max Yv min [S1] 0 0 Yw max Yw min 0 0 1 • Ma trận chuyển vị theo tọa độ viewport Copyright © Showeet.com 1 0 0 [T 2] 0 1 0 Xv Yv 1 - 10
- Ma trận biến đổi tổng hợp [T ] [T 1 ] x [ S1 ] x [ T 2] Xvmax- Xvmin 0 0 Xwmax- Xwmin Yv max Yv min [T ] 0 0 Yw max Yw min Xvmax- Xvmin Yv max Yv min Xv min Xw min Yv min Yw min 1 Xwmax- Xwmin Yw max Yw min © Copyright Copyright © Showeet.com 11
- //set the viewing coordinates // setWindow setWindow(xmin, xmax, ymin, ymax); void setWindow(GLdouble left, Gldouble setViewport(0,640,0,480); right, GLdouble bottom, GLdouble top) { glBegin(GL_POINTS); glMatrixMode(GL_PROJECTION); for(GLdouble x = xmin; x < xmax; x+=0.005 ) glLoadIdentity(); { gluOrtho2D(left, right, bottom, top); glVertex2d(x, pow(2.7183,-x) } *cos(2*3.14*x)); } // setViewport glEnd(); void setViewport(GLdouble left, Gldouble right, GLdouble bottom, GLdouble top) { glViewport(left, bottom, right – left, top - bottom); } © Copyright Copyright © Showeet.com Ví dụ trong OpenGL 12
- 2 © Copyright Copyright © Showeet.com BIẾN ĐỔI HỆ TỌA ĐỘ -
- Biến đổi hệ tọa độ • Là phép biến đổi trên hệ tọa độ của đối tượng. Việc thay đổi hệ tọa độ của đối tượng với hệ thống tọa độ chung tao nên sự thay đổi toàn cảnh x u u’ (1,1) (1,1) Copyright © Showeet.com v v’ y 14
- CÁC PHÉP BIẾN ĐỔI 1 0 0 Q 0 1 0 P 0 0 1 x x u u’ (1,1) (1,1) © Copyright Copyright © Showeet.com v y v’ y - 15
- Chuyển vị x x u’ u 1 0 tx (1+tx,1+ty) (1,1) Q 0 1 ty P 0 0 1 v’ v y y 1 0 tx 0 tx 1 0 tx 1 1 tx 1 0 tx 0 tx 0 1 ty 0 ty 0 1 ty 0 ty 0 1 ty 1 1 ty © Copyright Copyright © Showeet.com 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 tx O ty origin v (1, 0, 0) u (0, 1, 0) 1 16
- Xoay x x u 0 O 0 (1,1) 1 v y y cos sin 0 cos sin Copyright © Showeet.com v sin u cos Q sin cos 0 P 1 1 0 0 1 17
- Tỉ lệ u x u x (sx*1,sy*1) (1,1) v y y v sx 0 0 0 0 sx Copyright © Showeet.com Q 0 sy 0 P u sy O 0 v 0 0 0 1 1 1 1 18
- Phép biến đổi tổng hợp x x x1(1 cos ) y1 sin u y (1 cos ) y sin O = 1 1 (1,1) 1 cos x1(1 cos ) y1 sin v y sin y (1 cos ) y sin y v = 1 1 1 sin x1(1 cos ) y1 sin u = cos y (1 cos ) y sin cos sin x (1 cos ) y sin 1 1 Copyright © Showeet.com 1 1 1 M sin cos y1(1 cos ) x1 sin 0 0 1 19
- 3 © Copyright Copyright © Showeet.com BIẾN ĐỔI GÓC NHÌN 3 CHIỀU -
- Quan sát 3D - 3D Viewing • Hiển thị hình ảnh 3D trên các thiết bị 2D • Mỗi 1 quan sát 3D trên cùng 1 đối tượng chỉ ra trạng thái chiếu của điểm quan sát đó. – HÌnh ảnh chiếu 2D của đối tượng 3D phụ thuộc vào người quan sát • Các quan sát khác nhau Copyright © Showeet.com được phân biệt bởi thông số: vị trí - position, hướng - orientation, và vùng nhìn - field of view 21
- GÓC NHÌN yW pV yM pW pM x M xW Copyright © Showeet.com zM zW - 22
- Tiến trình quan sát • Để tạo 1 cảnh nhìn gồm các bước – Mô tả biểu diễn hình học – Định nghĩa điểm nhìn – Camera • Chuyển đổi từ đối tượng 3D sang 2D • Xác định vùng hiển thị của đố tượng • Xác định camera để có thể tạo thành phép chiếu từ 3D thành 2D. Copyright © Showeet.com 23
- Khái quát về camera Khái niệm • camera location: Vị trí trong thế giới thực • viewing direction: Hướng chiếu của Camera. • up vector: Hướng phía trên của Camera • aperture size: Vùng nhìn thấy của Camera Copyright © Showeet.com 24
- Tọa độ quan sát • Có thể sử dụng mô hình hệ thống tọa độ quan sát trên các thông số gồm: – Điểm nhìn (VRP View Reference Point): điểm gốc quan sát. Vị trí của Camera) – Vector mặt phẳng quan sát Các véctơ cơ bản: (VPN - View Plane Normal N vector): viewing direction n (n ,n ,n ) N 1 2 3 – Vector hướng quan sát (VUP - Copyright © Showeet.com View UP vector): xác định góc V N u (u ,u ,u ) nghiêng của camera V N 1 2 3 v n u (v1,v2 ,v3 ) 25
- Điểm nhìn trên trục Z Nhìn ở vị trí (a, b, c) theo trục Z và zW -axis ngược hướng zW-axis yW yW (a, b, c) x W x n W (0, 0, z) zW zW MWC,VC = T (0, 0, z,) MWC,VC = T (-a, -b, -c ) © Copyright Copyright © Showeet.com Camera luôn nhìn về trục âm của trục tọa độ z 26
- • (xw, yw, zw) and (u, v, n) 2 hệ tọa độ với cùng 1 gốc. • Vector đơn vị (u, v, n) được định nghĩa theo WCS u1 v1 n1 u u2 , v v2 , và n n2 . u3 v3 n3 • Ma trận biến đổi tọa độ thế giới sang tọa độ quan sát Copyright © Showeet.com • MWC,VC = R T 2727
- 3D Viewing Transformation • Với điểm quan sát VRPoint (x0, y0, z0) các phép biến đổi góc nhìn có thể được xác định bằng tổ hợp của hai biến đổi 1 0 0 x u1 u2 u3 0 0 0 1 0 y v1 v2 v3 0 0 R T 0 0 1 z n1 n2 n3 0 0 0 0 0 1 0 0 0 1 • Phép tính này được sử dụng để xác định vị trí của từng điểm Copyright © Showeet.com trong hệ tọa độ của camera MWC ,VC R T x Mwc,vc x 28
- Viewing Transformation • Chúng ta cũng có thể thực hiện được việc này qua hai bước – Dịch chuyển điểm nhìn về tâm tọa độ của hệ trục tọa độ môi trường – Thực hiện việc xoay để lần lượt khớp các trục xv, yv và zv 1 0 0 x 0 0 1 0 y0 0 0 1 z Copyright © Showeet.com 0 0 0 0 1 (x0, y0, z0) 29
- u1 u2 u3 0 v v v 0 y pV where R 1 2 3 , W n n n 0 1 2 3 p p W 0 0 0 1 M xW zW u1 u R u R 2 ? , etc Verification: pV = MWC,VC pW u3 Copyright © Showeet.com 1 30
- • Recall we’ve re-expressed our world geometry in eye’s frame reference. • To do projection, we use a synthetic camera by introducing a viewing frustum after the viewing transformation. p yWy V y M W © Copyright Copyright © Showeet.com p p p W p M x W z M M M x x zW W zW W 31
- Camera trong OpenGL • Các hàm cơ bản – glOrtho() and gluLookAt() – sử dụng để tạo các phép chiếu song song • gluPerspective – viewAngle – aspectRatio (W/H) – near plane Copyright © Showeet.com – far plane 32
- CAMERA TRONG OPENGL glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(viewAngle, aspectRatio, N, F); © Copyright Copyright © Showeet.com - 33
- © Copyright Copyright © Showeet.com Demo : Viewing from Nate Robins (Utah) - 34
- 4 © Copyright Copyright © Showeet.com DI CHUYỂN CAMERA -
- Camera • Đặt vị trí Camera – Camera được đặt sử dụng kết hợp dịch chuyển và xoay – Camera được đặt cùng vị trí với mắt của người nhìn up(x,y,z) eye(x,y,z) Copyright © Showeet.com lookat(x,y, z) 36
- CAMERA TRONG OPENGL glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(eye.x, eye.y, eye.z, look.x, look.y, look.z, up.x, up.y, up.z); © Copyright Copyright © Showeet.com - 37
- Camera • Camera có thể có các hướng và vị trí tùy ý • Do đó chúng ta có thể coi như camera có các trục tọa độ riêng của nó © Copyright Copyright © Showeet.com 38
- Chuyển động của camera • Một camera có thể có 6 hướng di chuyển – "trượt" theo 3 hướng – "xoay" theo 3 hướng • Chuyển động của camera – Camera có thể dịch chuyển tịnh tiến theo 3 hướng – Việc này được gọi là "trượt" (slide) camera © Copyright Copyright © Showeet.com 39
- Camera v • Chuyển động của camera – Để dịch chuyển camera theo trục u đơn giản là ta thực hiện • eye = eye + Du – Di chuyển camera theo trục bất kỳ n eye.x = dU*u.x + dV*v.x + dN*n.x eye.y = dU*u.y + dV*v.y + dN*n.y u eye.z = dU*u.z + dV*v.z + dN*n.z • Chuyển động của camera – Bên cạnh việc di chuyển camera sang các vị trí khác, camera có thể được xoay nghiêng theo các hướng khác nhau để nhìn các vùng khác nhau của khung Copyright © Showeet.com cảnh 40
- CAMERA MOVEMENT – Sử dụng nguyên lý lái máy bay để mô tả chuyển động của camera • Quay dọc theo chiều dài camera gọi là PITCH • Quay dọc theo chiều rộng camera gọi là ROLL • Quay dọc theo trục dọc gọi là YAW © Copyright Copyright © Showeet.com - 41
- CÁC CHUYỂN ĐỘNG CỦA CAMERA • Pitch v’ = cos(θ)v – sin(θ)n n’ = sin(θ)n + cos(θ)v v n Copyright © Showeet.com - 42
- CÁC CHUYỂN ĐỘNG CỦA CAMERA • Roll u’ = cos(θ)u + sin(θ)v v’ = cos(θ)v - sin(θ)u v u Copyright © Showeet.com - 43
- CÁC CHUYỂN ĐỘNG CỦA CAMERA • Yaw – n’ = cos(θ)n - sin(θ)u – u’ = sin(θ)n + cos(θ)u n u © Copyright Copyright © Showeet.com - 44