Maths

Math Formula?

Thứ Bảy, 31 tháng 3, 2012

Toán học đi vào điện ảnh - Phần 1

Dịch bởi Võ Đức Huy

Toán học trân trọng giới thiệu…


Tất cả chúng ta đều bị cuốn hút bởi những hình ảnh sống động trên phim tạo bởi máy tính. Điều mà phần lớn chúng ta không nhận ra là những con khủng long trong Công viên kỉ Jura và những kỳ quan trong Chúa tể những chiếc nhẫn sẽ không xuất hiện nếu không có toán học.
Nhưng những hình ảnh tuyệt vời này được tạo nên như thế nào? Đồ họa vi tính và thị giác máy tính là những chủ đề lớn. Trong bài viết này chúng ta sẽ xem giản lược một vài công cụ toán dùng để tạo ra sản phẩm cuối cùng. Trước hết chúng ta tạo ra thế giới trong phim và cho nó sự sống.

Xây dựng khung cảnh
Bước đầu tiên để tạo ra một bộ phim từ máy tính là tạo ra các nhân vật trong câu chuyện và thế giới mà họ sống. Mỗi đối tượng trong số đó được mô hình hóa bởi những mặt tạo bởi các đa giác nối nhau (thường là các tam giác). Các đỉnh của mỗi tam giác được chứa trong bộ nhớ máy tính. Cần biết rằng mặt nào của tam giác nằm ở phía ngoài của đối tượng hay nhân vật. Thông tin này được mã hóa bằng thứ tự các đỉnh được lưu, theo quy tắc bàn tay phải (tương tự vật lý): cuộn ngón tay của bạn vòng quanh tam giác theo thứ tự cho bởi các đỉnh. Chỉ có một cách để làm điều đó, và ngón trỏ của bạn sẽ chỉ ra một mặt của tam giác- và đó là mặt ngoài. Nếu thử làm điều đó, bạn sẽ thấy hướng ngoài của tam giác (A,B,C) sẽ đối với hướng ngoài của tam giác (A,C,B).

 
Bây giờ bề mặt của vật thể là một lưới các tam giác, chúng ta có thể tô màu mỗi thành phần của nó. Ở đây điều quan trọng là nắm được ánh sáng của cảnh mà chúng ta đang mô hình hóa, và điều này được làm bằng một qui trình gọi là ray tracing. Từ điểm nhìn của chúng ta, ta lần các tia sáng ngược lại phía vật thể và để chúng được phản xạ trên đó. Nếu tia từ mắt chúng ta phản xạ từ một mặt (một tam giác trong lưới) về nguồn sáng, chúng ta tô mặt đó bằng màu sáng và nó trông như là được rọi từ nguồn sáng. Nếu tia sáng phản xạ không gặp nguồn sáng, ta tô mặt đó với màu tối hơn.
Để theo dõi một tia sáng ngược về một mặt, ta cần mô tả toán học cho bề mặt, và giải các phương trình liên quan đến tia sáng và mặt phẳng mô tả bởi mặt đó. Để làm điều đó, ta sử dụng vector. Chúng ta đặt không gian vào một hệ trục tọa độ 3 chiều với tâm - điểm (0,0,0) - ở điểm nhìn của ta. Một vector $v= \left ( a,b,c \right )$ biểu diễn một mũi tên bắt đầu từ tâm và kết thúc ở điểm với tọa độ a,b và c. Chúng ta có thể nhân $v$  với một số, ví dụ 2 , và được $2v=2\left ( a,b,c \right )= \left ( 2a,2b,2c \right )$ . Vậy $2v$  là mũi tên chỉ cùng hướng với  nhưng dài gấp đôi.
Giờ hãy xem xét biểu diễn $\lambda v$ , với $\lambda $  là một biến, nói cách khác là bất kỳ số thực nào. Biểu diễn này không còn xác định duy nhất một mũi tên với độ dài nhất định, vì độ dài đã trở thành biến số, nhưng nó chỉ hướng của mũi tên. Nói cách khác, biểu diễn này mô tả đường thẳng chứa vector $v$ . Nó mô tả một đường thẳng - một tia - đi từ tâm - mắt chúng ta - với hướng định bởi vector $v$ .
Mặt phẳng xác định bởi một mặt tam giác có thể biểu diễn bởi ba thông tin: vị trí của một đỉnh, giả sử  là đỉnh $a_{1}$ , cùng các vector biểu diễn đường thẳng từ $a_{1}$ đến $a_{2}$ và từ $a_{1}$ đến $a_{3}$ .
Để biết tia sáng cắt mặt phẳng ở đâu và tính toán phương trình của tia sáng bị phản xạ, ta cần giải các phương trình liên quan đến hai cách biểu diễn vừa nói.
Phương trình của một tia, với $\lambda $  là số thực và v là vecto:
$r=\lambda v$
Phương trình mặt phẳng định bởi tam giác có ba đỉnh $a_{1}$, $a_{2}$, $a_{3}$
$r=a_{1}+\mu_{1}\left(a_{2}-a_{1}\right)+\mu_{2}\left(a_{3}-a_{1}\right)$
(Bạn có thể xem chi tiết toán học về ray tracing trong bài báo đột phá của Turner Whitted, "An improved illumination model for shaded display", Communications of the ACM, Volume 23, Issue 6.) 
Ray tracing có thể tạo ra những cảnh rất giống thực nhưng nó rất chậm. Điều này chấp nhận được cho sản xuất phim, nhưng sẽ thành rắc rối nếu bạn cần hiệu ứng ánh sáng thời gian thực, như trong game trên máy tính. Những hiện tượng phức tạp như đổ bóng, khúc xạ và phản xạ đa hướng rất khó để được mô hình hóa động và những phương pháp toán tiên tiến hơn, như precomputed radiance transfer và radiosity được dùng ở đây.