Bài giảng 6: Tọa độ Barycentric trong Đồ họa Máy tính

Lesson Attachments

(Nếu công thức chưa load được hoặc mờ, các bạn ấn refresh để công thức hiện và rõ nét hơn nhé!)

Khi làm việc với các đối tượng hình học trong một chương trình đồ họa máy tính, nhà thiết kế có thể sử dụng một phép xấp xỉ “khung dây” cho đối tượng tại một số điểm then chốt trong quá trình tạo ra hình ảnh chân thực cuối cùng. Ví dụ, nếu bề mặt của một phần của đối tượng bao gồm các bề mặt tam giác nhỏ phẳng, thì một chương trình đồ họa có thể dễ dàng thêm màu sắc, ánh sáng và đổ bóng cho mỗi bề mặt nhỏ đó khi thông tin này chỉ được biết tại các đỉnh. Tọa độ barycentric cung cấp công cụ để nội suy mượt mà thông tin tại các đỉnh trong nội bộ của một tam giác. Việc nội suy tại một điểm đơn giản là tổ hợp tuyến tính của các giá trị tại đỉnh, sử dụng tọa độ barycentric làm hệ số.

Màu sắc trên màn hình máy tính thường được mô tả bằng tọa độ RGB. Một bộ ba (r,g,b) biểu thị mức độ của từng màu – đỏ, lục và lam – với các tham số dao động từ 0 đến 1. Ví dụ, màu đỏ thuần là (1,0,0), màu trắng là (1,1,1), và màu đen là (0,0,0).

Ví dụ 5: Cho \mathbf{v}_1=\begin{bmatrix}3\\1\\5\end{bmatrix},\:\mathbf{v}_2=\begin{bmatrix}4\\3\\4\end{bmatrix},\:\mathbf{v}_3=\begin{bmatrix}1\\5\\1\end{bmatrix},\:\mathbf{p}=\begin{bmatrix}3\\3\\3.5\end{bmatrix}. Các màu tại các đỉnh \mathbf{v}_1,\mathbf{v}_2, và \mathbf{v}_3 của một tam giác là màu đỏ tươi (1,0,1), đỏ tươi nhạt (1,.4,1), và tím (.6,0,1), tương ứng. Tìm màu được nội suy tại điểm \mathbf{p}. Xem hình 6.

Hình 6: Màu được nội suy

Giải: Trước tiên, tìm tọa độ barycentric của điểm \mathbf{p}. Đây là phép tính sử dụng các dạng thuần nhất của các điểm, với bước đầu tiên là di chuyển hàng thứ 4 lên hàng đầu:

\begin{bmatrix}\tilde{\mathbf{v}}_{1}&\tilde{\mathbf{v}}_{2}&\tilde{\mathbf{v}}_{3}&\tilde{\mathbf{p}}\\\end{bmatrix}\sim\begin{bmatrix}1&1&1&1\\3&4&1&3\\1&3&5&3\\5&4&1&3.5\\\end{bmatrix}\sim\begin{bmatrix}1&0&0&.25\\0&1&0&.50\\0&0&1&.25\\0&0&0&0\\\end{bmatrix}

\Rightarrow\mathbf{p}=.25\mathbf{v}_1+.5\mathbf{v}_2+.25\mathbf{v}_3

Sử dụng các tọa độ barycentric của \mathbf{p} để tạo tổ hợp tuyến tính từ dữ liệu màu sắc. Các giá trị RGB của \mathbf{p} là:

.25\begin{bmatrix}1\\0\\1\end{bmatrix}+.50\begin{bmatrix}1\\.4\\1\end{bmatrix}+.25\begin{bmatrix}.6\\0\\1\end{bmatrix}=\begin{bmatrix}.9\\.2\\1\end{bmatrix}\begin{matrix}\text{red}\\\text{green}\\\text{blue}\end{matrix}

Một trong những bước cuối cùng trong việc chuẩn bị một cảnh đồ họa để hiển thị trên màn hình máy tính là loại bỏ các “bề mặt bị che khuất” – những phần không nên được nhìn thấy trên màn hình. Hãy tưởng tượng màn hình hiển thị bao gồm, chẳng hạn, một triệu điểm ảnh (pixel), và xem xét một tia nhìn hay “tia quan sát” từ mắt người xem xuyên qua một pixel và đi vào tập hợp các vật thể tạo nên cảnh 3D. Màu sắc và các thông tin khác được hiển thị tại pixel đó trên màn hình nên đến từ vật thể mà tia này chạm vào đầu tiên. Xem hình 7.

HÌNH 7 Một tia từ mắt xuyên qua màn hình đến vật thể gần nhất.

Khi các vật thể trong cảnh đồ họa được xấp xỉ bằng khung dây với các mảng tam giác nhỏ, thì bài toán bề mặt bị che khuất có thể được giải quyết bằng cách sử dụng tọa độ barycentric.

Các phép toán để tìm giao điểm giữa tia và tam giác cũng có thể được dùng để thực hiện việc đổ bóng các vật thể một cách cực kỳ chân thực. Hiện tại, phương pháp dò tia này vẫn quá chậm để hiển thị theo thời gian thực, nhưng những tiến bộ gần đây trong việc triển khai phần cứng có thể sẽ thay đổi điều đó trong tương lai.

Ví dụ 6: Cho

\mathbf{v}_1=\begin{bmatrix}1\\1\\-6\end{bmatrix},\quad\mathbf{v}_2=\begin{bmatrix}8\\1\\-4\end{bmatrix},\quad\mathbf{v}_3=\begin{bmatrix}5\\11\\-2\end{bmatrix},\quad\mathbf{a}=\begin{bmatrix}0\\0\\10\end{bmatrix},\quad\mathbf{b}=\begin{bmatrix}.7\\.4\\-3\end{bmatrix},

\mathbf{x}(t)=\mathbf{a}+t\mathbf{b}, với t\geq 0. Tìm điểm mà tia \mathbf{x}(t) cắt mặt phẳng chứa tam giác với các đỉnh \mathbf{v}_1,\mathbf{v}_2\mathbf{v}_32. Điểm đó có nằm trong tam giác không?

Giải: Mặt phẳng chứa tam giác là aff \{\mathbf{v}_1,\mathbf{v}_2,\mathbf{v}_3\}. Một điểm bất kỳ trong mặt phẳng này có thể được viết dưới dạng (1-c_2-c_3)\mathbf{v}_1+c_2\mathbf{v}_2+c_3\mathbf{v}_3 với một số c_2c_3 sao cho tổng hệ số bằng 1. Tia \mathbf{x}(t) sẽ cắt mặt phẳng khi tồn tại c_2,c_3t thỏa mãn

(1-c_2-c_3)\mathbf{v}_1+c_2\mathbf{v}_2+c_3\mathbf{v}_3=\mathbf{a}+t\mathbf{b}

Sắp xếp lại phương trình c_2(\mathbf{v}_2-\mathbf{v}_1)+c_3(\mathbf{v}_3-\mathbf{v}_1)+t(-\mathbf{b})=\mathbf{a}-\mathbf{v}_1 . Dưới dạng ma trận

\begin{bmatrix}\mathbf{v}_2-\mathbf{v}_1&\mathbf{v}_3-\mathbf{v}_1&-\mathbf{b}\end{bmatrix}\begin{bmatrix}c_2\\c_3\\t\end{bmatrix}=\mathbf{a}-\mathbf{v}_1

Với các điểm cụ thể được cho ở đây,

\mathbf{v}_2-\mathbf{v}_1=\begin{bmatrix}7\\0\\2\end{bmatrix},\quad\mathbf{v}_3-\mathbf{v}_1=\begin{bmatrix}4\\10\\4\end{bmatrix},\quad\mathbf{a}-\mathbf{v}_1=\begin{bmatrix}-1\\-1\\16\end{bmatrix}

Kết quả rút gọn hàng của ma trận mở rộng phía trên

\begin{bmatrix}7&4&-.7&-1\\0&10&-.4&-1\\2&4&3&16\\\end{bmatrix}\sim\begin{bmatrix}1&0&0&.3\\0&1&0&.1\\0&0&1&5\\\end{bmatrix}

Do đó c_2=.3,\,c_3=.1, và t=5. Vậy điểm giao là

\mathbf{x}(5)=\mathbf{a}+5\mathbf{b}=\begin{bmatrix}0\\0\\5\end{bmatrix}+5\begin{bmatrix}.7\\.4\\-3\end{bmatrix}=\begin{bmatrix}3.5\\2.0\\-5.0\end{bmatrix}

Ngoài ra

\mathbf{x}(5)=(1-.3-.1)\mathbf{v}_1+.3\mathbf{v}_2+.1\mathbf{v}_3

=.6\begin{bmatrix}1\\1\\-6\end{bmatrix}+.3\begin{bmatrix}8\\1\\-4\end{bmatrix}+.1\begin{bmatrix}5\\11\\-2\end{bmatrix}=\begin{bmatrix}3.5\\2.0\\-5.0\end{bmatrix}

Điểm giao nằm trong tam giác vì các hệ số barycentric của \mathbf{x}(5) đều dương.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Hotline: 039.2266.928
Khóa học Toefl
Phone now