Bài giảng Công nghệ đồ họa và hiện thực ảo - Bài 6: Biến đổi góc nhìn được biên soạn nhằm trang bị cho các bạn những kiến thức về biến đổi góc nhìn 2D, biến đổi trục tọa độ, biến đổi góc nhìn 3D, di chuyển Camera.
Bài BIẾN ĐỔI GĨC NHÌN Trịnh Thành Trung trungtt@soict.hust.edu.vn NỘI DUNG Biến đổi góc nhìn 2D Biến đổi trục tọa độ Biến đổi góc nhìn 3D Di chuyển Camera - BIẾN ĐỔI GĨC NHÌN CHIỀU - Hệ tọa độ thực Hệ tọa độ thực – World Coordinate System (WCS) • Là hệ tọa độ đối tượng chương trình ứng dụng sử dụng để mô tả tọa độ đối tượng giới thực • Đơn vị hệ thống tọa độ phụ thuộc vào không gian kích thước đối tượng mơ tả, từ A0, nm, mm đến m, km • Modeling Coordinate 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 độ thiết bị nơi hiển thị hình ảnh khơng gian đối tượng mà ứng dụng mơ tả 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 vấn đề ứng dụng chạy thiết bị khác • Có kích thước 1x1 WCS chuyển đổi NCS chuyển đổi DCS Phép biến đổi góc nhìn • Phép biến đổi góc nhìn chuyển đổi từ hệ tọa độ mơ hình sang hệ tọa độ hình (Modelling co-ordinates to Screen Coordinates) • Vấn đề: – Thay đổi tỷ lệ hình ảnh – Hiệu ứng tỉ lệ Zoom hình ảnh – Phần hình vẽ hiển thị ? – Hiển thị đâu hình ? – Chuyển đổi thực sao? Trong hệ tọa độ chiều • Window : Cửa sổ, Phần hình ảnh giới thực hiển thị • Viewport : Cổng nhìn, vùng hình nơi hình ảnh giới thực hiển thị (wxmax,wymax) (vxmax,vymax) (vx,vy) (wx,wy) (vxmin,vymin) (wxmin,wymin) PHÉP CHUYỂN ĐỔI - PHÉP BIẾN ĐỔI THEO MA TRẬN • • Ma trận chuyển vị theo Window 0 [T 1] 0 Xw Yw 1 Ma trận biến đổi tỉ lệ Xvmax - Xvmin 0 Xwmax - Xwmin Yv max Yv [ S1] 0 Yw max Yw 0 • Ma trận chuyển vị theo tọa độ viewport 0 1 [T 2] 0 Xv Yv 1 - 10 where u u v1 v2 R n1 n2 0 u3 v3 n3 0 0 , 0 pV yW pM pW xW zW Verification: u1 u R u R ? , etc u 1 pV = MWC,VC pW 30 • Recall we’ve re-expressed our world geometry in eye’s frame reference • To projection, we use a synthetic camera by introducing a viewing frustum after the viewing transformation pV yWy y W M p p z M zW M x M p W M x W p W x zW W 31 Camera OpenGL • Các hàm – glOrtho() and gluLookAt() – sử dụng để tạo phép chiếu song song • gluPerspective – – – – viewAngle aspectRatio (W/H) near plane far plane 32 CAMERA TRONG OPENGL glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(viewAngle, aspectRatio, N, F); - 33 Demo : Viewing from Nate Robins (Utah) - 34 DI CHUYỂN CAMERA - Camera • Đặt vị trí Camera – Camera đặt sử dụng kết hợp dịch chuyển xoay – Camera đặt vị trí với mắt người nhìn up(x,y,z) eye(x,y,z) 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); - 37 Camera • Camera có hướng vị trí tùy ý • Do coi camera có trục tọa độ riêng 38 Chuyển động camera • Một camera có hướng di chuyển – "trượt" theo hướng – "xoay" theo hướng • Chuyển động camera – Camera dịch chuyển tịnh tiến theo hướng – Việc gọi "trượt" (slide) camera 39 Camera v • Chuyển động camera – Để dịch chuyển camera theo trục u đơn giản ta thực • eye = eye + Du – Di chuyển camera theo trục eye.x = dU*u.x + dV*v.x + dN*n.x eye.y = dU*u.y + dV*v.y + dN*n.y eye.z = dU*u.z + dV*v.z + dN*n.z n u • Chuyển động camera – Bên cạnh việc di chuyển camera sang vị trí khác, camera xoay nghiêng theo hướng khác để nhìn vùng khác khung cảnh 40 CAMERA MOVEMENT – Sử dụng nguyên lý lái máy bay để mơ tả chuyển động camera • Quay dọc theo chiều dài camera gọi PITCH • Quay dọc theo chiều rộng camera gọi ROLL • Quay dọc theo trục dọc gọi YAW - 41 CÁC CHUYỂN ĐỘNG CỦA CAMERA • Pitch v’ = cos(θ)v – sin(θ)n n’ = sin(θ)n + cos(θ)v v n - 42 CÁC CHUYỂN ĐỘNG CỦA CAMERA • Roll u’ = cos(θ)u + sin(θ)v v’ = cos(θ)v - sin(θ)u v u - 43 CÁC CHUYỂN ĐỘNG CỦA CAMERA • Yaw – n’ = cos(θ)n - sin(θ)u – u’ = sin(θ)n + cos(θ)u n u - 44 ...NỘI DUNG Biến đổi góc nhìn 2D Biến đổi trục tọa độ Biến đổi góc nhìn 3D Di chuyển Camera - BIẾN ĐỔI GÓC NHÌN CHIỀU - Hệ tọa độ thực Hệ tọa độ thực – World Coordinate System... bottom); } 12 Ví dụ OpenGL BIẾN ĐỔI HỆ TỌA ĐỘ - Biến đổi hệ tọa độ • Là phép biến đổi hệ tọa độ đối tượng Việc thay đổi hệ tọa độ đối tượng với hệ thống tọa độ chung tao nên thay đổi toàn cảnh x u u’... (wxmin,wymin) PHÉP CHUYỂN ĐỔI - PHÉP BIẾN ĐỔI THEO MA TRẬN • • Ma trận chuyển vị theo Window 0 [T 1] 0 Xw Yw 1 Ma trận biến đổi tỉ lệ Xvmax - Xvmin 0 Xwmax - Xwmin Yv max