Bài giảng Đồ họa máy tính: Viewing transformations

Sau công đoạn modeling transformation, tất cả các đối tượng được đặt trong cùng một hệ tọa độ chung (world coordinates). • Bỏ qua công đoạn trivial rejection và illumination, chúng ta sẽ xem xét công đoạn biến đổi vào không gian quan sát (view transformation). Mục đích của công đoạn nàylà chuyển đổi các đối tượng vào hệ tọa độ quan sát (eye coordinates hay 3D camera coordinates)

pdf10 trang | Chia sẻ: vietpd | Lượt xem: 1857 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Đồ họa máy tính: Viewing transformations, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 1/10 VIEWING TRANSFORMATIONS Dẫãn nhậäp • Sau công đoạn modeling transformation, tất cả các đối tượng được đặt trong cùng một hệ tọa độ chung (world coordinates). • Bỏ qua công đoạn trivial rejection và illumination, chúng ta sẽ xem xét công đoạn biến đổi vào không gian quan sát (view transformation). Mục đích của công đoạn này là chuyển đổi các đối tượng vào hệ tọa độ quan sát (eye coordinates hay 3D camera coordinates) ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 2/10 Qui trình hiểån thị Camera • Các tham số của Camera ♦ Vị trí mắt nhìn (x, y, z) ♦ Hướng nhìn (towards vector, up vector) ♦ Vùng quan sát ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 3/10 Camera Transformation • Trong cảnh trên, gốc tọa độ của world space đặt ngay dưới đáy ghế, trục z hướng lên đi qua tâm của bình trà. Để thuận tiện, trục x và y được chọn song song với các bức tường (chú ý các viên gạch trên nền nhà). Với hệ tọa độ này, ghế và bình trà rất dễ dàng biểu diễn. • Bước tiếp theo, ta cần mô tả ảnh của mô hình ta đang mong muốn diễn tả. Công việc này sẽ dễ dàng hơn nhiều nếu gốc tọa độ trùng với vị trí quan sát (vị trí của mắt hay camera). (Xem hình bên dưới) ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 4/10 • Ta có thể đạt được điều này nhờ vào các phép biến đổi tịnh tiến và quay (rigid body transformations). Trước tiên, ta cần thực hiện phép quay để cho 2 trục tọa độ (world và camera) cùng phương. • Sau đó, ta thực hiện phép tịnh tiến để đưa gốc tọa độ của world space về trùng với gốc tọa độ của eye space. • Tại sao ta lại quay trước rồi mới tịnh tiến ? Ta có thể thực hiện theo một cách khác không ? • Cách tiếp cận vừa trình bày không được trực quan và sẽ gây không ít khó khăn khi ta muốn giao tiếp với người dùng trong một hệ xử lý đồ họa 3 chiều. Ta thử tiếp cận theo một cách khác. ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 5/10 • Thay cho việc xác định một hệ tọa độ quan sát mong muốn bằng 1 phép quay và 1 phép tịnh tiến hệ tọa độ thực ta có thể sử dụng phương pháp sau: New Camera Transformation • Trước tiên, ta xác định vị trí đặt camera (hoặc vị trí quan sát) trong không gian thực. Ta gọi nó là vị trí mắt (eye point). Sau đó, ta xác định một vị trí trong cảnh (scene) mà ta muốn nó sẽ xuất hiện ở trung tâm của cửa sổ nhìn. Ta gọi điểm này là điểm nhìn (look-at point). Tiếp theo ta xác định 1 vector dùng để chỉ hướng đi lên của ảnh tính từ look-at point. Ta gọi nó là vector hướng lên (up-vector). • Cách biểu diễn trên rất tự nhiên. Ta có thể sử dụng cách biểu diễn này để mô tả một quĩ đạo của camera bằng cách chỉ thay đổi eye-point còn look-at point và up- vector không đổi. Hoặc ta có thể quét camera từ đối tượng này đến đối tượng khác trên ảnh bằng cách chỉ thay đổi look-at point. ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 6/10 • Bây giờ chúng ta sẽ xem xét, với mô tả trên, ta sẽ xây dựng được phép biến đổi từ hệ tọa độ thực sang hệ tọa độ quan sát như thế nào. • Trước tiên, ta sẽ xác định phần quay của camera transfromation (V). • Ta có thể xác định vector l có phương trùng với tia nhìn theo công thức:       −          =          z y x z y x z y x eye eye eye lookat lookat lookat l l l • Chuẩn hóa vector l ta được vector l0: 2 z 2 y 2 x 0 lll ll ++ =  • Ta có thể dễ dàng thấy rằng, phép biến đổi V mà ta đang xây dựng sẽ chuyển l0 thành vector [0, 0, -1] (Tại sao ?). [ ] Vl100 0=− • Ta còn có thể xác định một vector khác. Đó là vector r là tích hữu hướng của vector l và up-vector: uplr ×=   ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 7/10 • Sau phép biến đổi V, ro (vector r đã được chuẩn hóa) sẽ biến thành vector [1, 0, 0]. [ ] Vr01 0=0 trong đó 2 z 2 y 2 x 0 rrr rr ++ =  • Cuối cùng, ta có thể xác định vector cơ sở thứ 3, vector u vuông góc với 2 vector r và l: lru  ×= • Vector này, sau khi được chuẩn hóa (thành vector u0), sẽ bị biến thành vector [0, 1, 0] bởi V. [ ] Vu0=010 [ ] V uuu u 2 z 2 y 2 x ++ =  010 • Tổng hợp các kết quả trên ta được: V l u r 100 010 001 0 0 0          − =             ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 8/10 • Chú ý rằng các vector mà chúng ta đã tạo ra đều có chiều dài là 1 (nghĩa là chúng đều đã được chuẩn hóa) và chúng trực giao nhau đôi một. Như vậy, ma trận tạo bởi 3 vector này là ma trận trực chuẩn (orthonormal). Tính chất lý thú của các ma trận loại này là: V-1 = VT nếu V là ma trận trực chuẩn • Lợi dụng tính chất trên, ta có thể dễ dàng tính toán được thành phần quay của phép biến đổi: [ ]          − − − = −= 0 z 0 z 0 z 0 y 0 y 0 y 0 x 0 x 0 x 000rotate lur lur lur lurV • Tiếp theo, ta tính phần tịnh tiến của viewing transformation. Để làm được điều này, trưóc tiên ta cần nhớ rằng phép quay chúng ta vừa xác định có tâm quay là gốc tọa độ, trong khi ta lại muốn phép quay xảy ra ở điểm quan sát (eye point). Ta có thể thực hiện phép quay với tâm quay đúng bằng cách trừ vào tọa độ của điểm đang xét trong không gian thực tọa độ của điểm quan sát. Ta có phương trình ([x’,y’,z’] là điểm ảnh tương ứng trong không gian quan sát): [ ] [ ]'zy'x' l-ur l-ur l-ur eye-zeye-yeye-x zzz yyy xxx zyx =       ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 9/10 • Phương trình trên có thể được viết lại như sau: [ ] [ ] [ ]          −          = zzz yyy xxx zyx zzz yyy xxx l-ur l-ur l-ur eyeeyeeye l-ur l-ur l-ur zyx'zy'x' • Cuối cùng, ta có thể chuyển phép biến đổi sang dạng biểu diễn trong hệ tọa độ thuần nhất. Đó chính là công thức cuối cùng của V: [ ] [ ]        −− − − − = 1.eyel.eyeu.eyer 0lur 0lur 0lur 1zyx1z'y'x' 000 zzz yyy xxx • Như vậy, ta có mối quan hệ giữa hệ toán độ quan sát và hệ toạ độ thế giới thực như sau: ĐỒ HỌA MÁY TÍNH Dương Anh Đức, Lê Đình Duy Viewing transformation 10/10