[RGB] Những ai đã xem bộ phim mới nhất của Pixar – The Good Dinosaur (Chú Khủng Long Tốt Bụng), chắc hẳn sẽ rất ấn tượng bởi độ chân thật và tỉ mỉ của những khung cảnh thiên nhiên tuyệt đẹp trong phim. Hôm nay RGB sẽ cùng các bạn tìm hiểu quá trình làm nên bộ phim dưới góc độ kỹ thuật, để thấy được Pixar đã nâng công nghệ đồ họa lên một tầm cao mới như thế nào nhé.
[youtube]http://www.youtube.com/watch?v=dvzmE3nNYWE[/youtube]
Sanjay Bakshi, đạo diễn kỹ thuật của bộ phim, nói về công việc của mình: Công việc của tôi là giám sát các nhân viên kỹ thuật làm việc cho bộ phim này. Những người viết cốt truyện và các họa sĩ trong dự án này đều có những ý tưởng về mặt hình ảnh mà họ muốn thực hiện, nhưng họ không nhất thiết phải biết cách tạo ra chúng. Tôi chính là cầu nối giữa nhà sản xuất và đạo diễn với những kỹ thuật viên, và ngược lại. Họ đặt ra những câu hỏi đại loại như: Cái này có khó không? Hay là cái này dễ hơn? Tôi sẽ tiếp nhận những câu hỏi và yêu cầu kiểu này từ nhà sản xuất và truyền đạt lại cho đội ngũ kỹ thuật viên để cùng nhau thực hiện việc đó.
[youtube]http://www.youtube.com/watch?v=VZ9UGFsWexM[/youtube]
Môi trường trong The Good Dinosaur: Tất cả mọi thứ mà các bạn thấy trên màn hình đều được render hình học 3D. Chúng tôi không sử dụng bất kỳ matte painting, touch up hay set extensions nào. Tất cả đều được render, và đó là một thách thức rất lớn cho chúng tôi. Chúng tôi phải tải thông tin về địa hình từ Cục Khảo sát Địa chất Hoa Kỳ cho các khung cảnh mà chúng tôi muốn quay, từ những thông tin này chúng tôi có được thông tin sơ lược về địa thế của các vùng đó để phục vụ cho bộ phim.
Thêm lập trình địa lý: Chúng tôi viết rất nhiều loại lập trình để thêm chi tiết vào địa hình trong phim. Bên cạnh đó chúng tôi còn lập trình một hệ thống tạo đá nữa. Để làm điều đó, chúng tôi tải những cấu trúc địa thế từ hình ảnh vệ tinh về cho việc lập trình, để hệ thống biết được những nơi cỏ sẽ mọc, nước sẽ chảy, chỉ là những hình ảnh đơn giản thôi để chúng tôi có thể ước lượng. Nhưng công việc nặng nề nhất đó chính là lập trình RenderMan để chi tiết hóa backgrounds. Sau đó chúng tôi sẽ tinh chỉnh lại nếu máy tính làm không được đẹp hay tính toán vị trí sai lệch. Ví dụ như đừng trồng cây nếu các góc độ của địa hình cao hơn một ngưỡng nhất định, như một vách đá cheo leo chẳng hạn.
Render bằng RenderMan: Chúng tôi sử dụng RenderMan 19 thay vì RIS, đồng nghĩa với việc không có path tracing tuy nhiên Renderman 19 có instancing mà chúng tôi có thể thừa hưởng. Chúng tôi chỉ cần thiết kế một cái cây sau đó RenderMan sẽ “in” ra nhiều nhiều cái cây khác mà không tốn thêm bộ nhớ. Chúng tôi cũng bỏ rất nhiều thời gian vào mức độ chi tiết – LODs (levels of detail) – cho việc lập trình, và chúng chuyển biến rất đẹp mắt. Thời gian render trung bình là 48h cho một khung hình, đối với media là 37h.
Trưởng đạo diễn kỹ thuật Matt Kuruc nói về instancing trong RenderMan: Sử dụng instancing với thảm thực vật một cách hiệu quả trong kiến trúc RenderMan REYES là một thách thức lớn mà chúng tôi phải vượt qua. RenderMan làm rất tốt trong việc xác định bao nhiêu chi tiết hình học bạn cần cho việc tạo bóng một mô hình cụ thể. Những đối tượng nhỏ hơn trên màn hình sẽ nhận được ít điểm để tạo bóng hơn. Chúng tôi gia tăng điều này bằng những thuật toán như đơn giản hóa ngẫu nhiên để bỏ đi toàn bộ lá và gai của cây cối trước khi chúng kịp tới renderer để giảm thiểu số điểm mà renderer cần tạo bóng. Điều này có nghĩa là mỗi cái cây sẽ được tối ưu hóa cho việc tạo bóng tùy thuộc vào kích thước của nó đối với không gian màn hình, đồng thời vẫn giữ được tính độc nhất của nó. Tuy nhiên các thuật toán trong đồ họa máy tính bắt buộc chúng ta phải giữ lại toàn bộ rừng cây trong bộ nhớ, dẫn đến việc tối ưu hóa tạo bóng cho từng cây riêng lẻ không còn mang tính thực tiễn nữa. Instancing trong RenderMan là một tính năng giúp chúng tôi tái sử dụng cùng một cây cho cả khu rừng. Chúng tôi cũng phải quản lý chi phí instancing cho thảm thực vật, vì việc tạo bóng cho một cái cậy ở hậu cảnh với cùng mức độ chi tiết như tiền cảnh rõ ràng là phí phạm và không thực tế. Để giải quyết điều này, chúng tôi sử dụng thuật toán đơn giản hóa ngẫu nhiên để xác định các chi tiết tạo bóng tối ưu cho từng cây rồi phân loại kết quả thành nhiều cấp độ khác nhau. Điều này cho phép chúng tôi cân bằng chi phí một cách hiệu quả giữa việc giữ cả một khu rừng trong bộ nhớ với việc tiết kiệm thời gian tạo bóng cho cả khu rừng đó.
Giả lập các con sông: Chúng tôi sử dụng chương trình Houdini (*) và FLIP để làm điều này. Ở tất cả các giai đoạn trước khi giả lập các con sông chúng tôi sử dụng phương pháp song song – parallelization – để tạo ra các chi tiết trên bề mặt, bọt nước và những đoạn thác. Khi điều kiện cho phép, chúng tôi chia nhỏ những cụm lớn trong giả lập và post-processing ra thành những cụm nhỏ hơn mà máy tính có thể xử lý được một cách độc lập để tận dụng hệ thống renderfarm.
Trong một nỗ lực để có được nhiều thời gian trên màn hình, chúng tôi đã áp dụng một phương pháp đôc đáo là tạo ra mô hình những khúc sông riêng lẻ để có thể tái sử dụng trong những phân cảnh khác của bộ phim. Những khúc sông này được xem như giá trị thiết lập cho cả phân cảnh. Việc tạo ra bọt trắng cho nước và thác một cách độc lập yêu cầu việc chuyển đổi định dạng ở quy mô 1cm cho suốt chiều dài của từng khúc sông, thông thường là từ 1/3 đến 1/4 dặm.
Mây và bầu trời: Chúng tôi xây dựng hơn 180 mô hình bầu trời với đầy đủ thể tích để nắm bắt các loại hình thời tiết đa dạng cần thiết phục vụ mục đích tạo ra một môi trường sống động như thật. Bằng cách sử dụng bản đồ vệ tinh các đám mây lấy nguồn từ Cục Trung tâm Khí tượng Thủy văn Quốc gia, chúng tôi đã điều chỉnh RenderMan DSO với một mã nhúng được tối ưu hóa để tính toán hướng đi cũng như độ phân tán cho các đám mây.
Thảm thực vật: Mỗi thảm thực vật đều được chúng tôi xây dựng một hệ thống phân cấp thứ bậc cho từng loại thực vật cũng như tính toán mức độ chuyển động gió khác nhau tác động lên từng bụi cây nhành cỏ. Thư viện chuyển động của các loại thảm thực vật này chứa đựng 3500 giả lập và chiếm hơn 20TB dữ liệu.
Hệ thống phân cấp thứ bậc này cũng cho phép cành nhánh và lá cây chuyển động một cách phù hợp với thân cây. Khi các phân cảnh được khởi động, chúng tôi sẽ lựa chọn mức độ chuyển động của gió sao cho phù hợp nhất với khung cảnh. Hệ thống này cũng cho phép các animation tương tác với thảm thực vật mà không cần phải làm lại từ đầu.
Dùng hệ thống Presto (**) để phác thảo animation: Chúng tôi sử phương pháp Sketch to Pose trong hệ thống Presto để phác thảo việc đồ họa. Phương pháp này cho phép bạn phác thảo một đường animation curve và đây cũng chính là mục tiêu của hệ thống phân cấp thứ bậc bên dưới. Chúng tôi đã mất rất nhiều thời gian thực hiện việc đồ họa trong không gian màn hình. Nếu bạn di chuyển camera ra các khu vực xung quanh thì một số đồ họa trông sẽ không được đẹp cho lắm. Chính vì vậy, việc phác thảo trước là rất quan trọng.
Chúng tôi cũng sử dụng những công cụ mới này như một cách để thực sự thay đổi bản thân mạng lưới bên dưới, không chỉ đối với hệ thống phân cấp thứ bậc. Còn có một công cụ khác để mô phỏng khối lượng da cho những con khủng long. Chúng rất to lớn, kích cỡ khổng lồ đến nỗi các chuyển động thứ cấp phải đươc hỗ trợ từ hệ thống giả lập. Các animators sẽ đồ họa ra một con T-rex đang bước đi với đôi chân dậm xuống đất tạo nên áp lực lên đầu gối của nó. Sau đó các chuyển động thứ cấp sẽ xảy ra trong hệ thống giả lập, nơi mà chúng tôi mô phỏng bộ da của con T-rex chuyển động bên trên các mô cơ bắp của nó.
Những con chim trong hệ thống Presto: Chúng tôi dùng hệ thống Presto để tạo ra những clip chuyển động đầu vào sau đó sẽ được tiếp nhận bởi chương trình Houdini. Chương trình này được dùng để tạo ra các chuyển động theo thủ tục và các clip phân cảnh, sau đó tất cả lại được export vào Presto để “mông má” lại. (Vui lòng xin phép tác giả và RGB.vn khi có ý định đăng tải lại nội dung này.)
[youtube]http://www.youtube.com/watch?v=Xt-xUVRvlqM[/youtube]
Chú thích:
(*): Houdini là một phần mềm ứng dụng hoạt hình 3D được phát triển bởi công ty phần mềm Side Effects của Toronto. Houdini được sử dụng trong khá nhiều bộ phim hoạt hình nổi tiếng như Chicken Little, Frozen, Rio và cả Ant Bully.
(**): Presto là tên một hệ thống chuyển động độc quyền của Pixar. Chương trình này ban đầu được viết cho bộ phim Brave và đang được sử dụng cho tất cả các bộ phim sắp tới của hãng. Hệ thống này cho phép animators kiểm soát một môi trường đồ họa mang tính tương tác cao trong thời gian thực.
Để lại đánh giá