Photobucket Photobucket Photobucket Photobucket Photobucket Photobucket Photobucket Photobucket Photobucket

Akitru's News

Use the button "Translate" to read our posts on your language !!!

Saturday, July 2, 2011

Real-time rendering và bản chất.

Cụm từ real-time rendering có vẻ vẫn còn tương đối xa lạ với cộng đồng thiết đồ họa kiến trúc/ nội thất ở Việt Nam. Vì vậy, qua bài viết này cùng với một số demo mà chúng tôi thực hiện, trung tâm GigabIdea chúng tôi hy vọng các bạn sẽ hiểu rõ hơn về khái niệm này và những tiềm năng của nó đối với lĩnh vực thiết kế đồ họa kiến trúc/ nội thất.

Tại sao các bạn nên biết về real-time rendering? Đơn giản là vì đây chính là xu hướng tất yếu của lĩnh vực diễn họa kiến trúc (tiếng Anh gọi là architectural vizualization, hoặc gọi tắt là arch viz). Thế giới đã bắt đầu nghiên cứu và sử dụng real-time rendering một cách hiệu quả trong diễn họa kiến trúc từ vài năm trở lại đây. Autodesk đang đầu tư hàng triệu USD vào dự án Newport (Project Newport), một dự án nhằm nghiên cứu và thương mại hóa real-time rendering vào các phầm mềm tương lai của Autodesk. Một ví dụ khác là Chaos Group, công ty phát triển chương trình render V-Ray nổi tiếng, cũng đã bắt đầu nghiên cứu real-time rendering cho V-Ray trong những năm gần đây. Tại hội nghị SIGGRAPH 2009 (Hội nghị thường niên lớn nhất thế giới về đồ họa máy tính, chủ yếu tập trung vào khía cạnh khoa học kỹ thuật hơn là thiết kế/ nghệ thuật), Chaos Group đã công bố những kết quả nghiên cứu sơ bộ mà họ đã đạt được: các thuật toán render của V-Ray được triển khai trên card đồ họa, cho kết quả render nhanh đến gấp 10 lần.

Vậy real-time rendering là gì? Để trả lời điều này, chúng ta hãy so sánh giữa một đoạn phim (hoặc một bức ảnh tĩnh) được render bằng một phần mềm 3D như 3ds Max hay Maya và một trò chơi game trên máy tính.

* Với phim (hoặc ảnh tĩnh), người xem (cũng chính là khách hàng của chúng ta) chỉ có thể thường thức tác phẩm một cách thụ động. Cụ thể hơn, người xem không thể tương tác (interact) được với sản phẩm. Họ chỉ nhìn đoạn phim chiếu trên màn hình mà không tác động được đến đoạn phim đó. Nội dung của đoạn phim hoàn toàn do người thiết kế đoạn phim đó quyết định và người xem không thể thay đổi được gì.

* Với game (cụ thể hơn là “game hành động/ bắn súng ở góc nhìn người thứ nhất”, hay còn gọi là “first-person shooter game”) người xem có thể tương tác với môi trường 3D. Ví dụ, họ có thể đi lại tùy thích trong khung cảnh, thay đổi góc camera một cách tùy ý. Họ có thể mở của, bật đèn tùy ý. Đối với phim chúng ta không làm đuợc điều này. Trong phim, góc quay, vị trí di chuyển của camera, chuyển động của các vật thể đều được “lên kịch bản” bởi người thiết kế đoạn phim và người xem không thể thay đổi “kịch bản” này.

Trường hợp chúng ta render một đoạn phim, trong thuật ngữ tiếng Anh gọi là offline rendering. Còn đối với trường hợp của game, thuật ngữ tiếng Anh gọi là real-time rendering. Chúng ta hãy so sánh để thấy sự khác nhau giữa real-time rendering và offline-rendering.

* Về khả năng tương tác:
Real-time rendering cho phép người xem tương tác với môi trường 3D. Offline rendering không cho phép điều này
* Thời gian render một khung hình (frame):
Đối với offline rendering, thời gian render một khung hình bao lâu cũng được. Nhưng đối với real-time rendering, thời gian để render một khung hình phải không vượt quá 1/15 giây (nói cách khác, trong một giây, máy tính phải render được ít nhất 15 khung hình). Đây chính là điểm khác nhau mấu chốt giữa real-time rendering và offline-rendering. Chính vì thời gian render rất nhanh (chỉ trong vòng 1/15 giây) mà real-time rendering mới cho phép người xem tương tác với môi trường 3D. Ví dụ, khi người xem thay đổi góc camera, khung hình mới sẽ được render chỉ trong vòng 1/15 giây. Điều này khiến người xem cảm giác tương tác của họ có tác động “ngay lập tức” đến mội trường 3D. Đối với offline-rendering, người dùng sẽ không thể nào có được cảm giác “ngay lập tức” này vì thời gian render trong offline rendering thường nhanh nhất cũng phải khoảng vài giây tùy theo độ phức tạp của khung cảnh.
Ghi chú: Có lẽ các bạn đang thắc mắc vì sao có con số 1/15 ở trên. Chúng ta đều biết mắt người nhìn được 24 khung hình trong một giây, vậy thì đáng lẽ người ta phải chọn con số 1/24 (nghĩa là trong một giây máy tính phải render được ít nhất 24 khung hình) mới đúng. Thực ra, con số 1/15 chỉ là một mức chuẩn tối thiểu mà những người làm trong lĩnh vực nghiên cứu đồ họa máy tính đề ra. Nhìn chung. 1/15 giây vẫn tạo được cảm giác “render ngay lập tức” của real-time rendering, mặc dù hình ảnh mà người xem nhận được sẽ không mượt mà như 1/24. Thông thường, trong các môi trường real-time rendering, người ta thường nhắm tới con số 1/24 hoặc nhanh hơn.
* Về phần cứng máy tính:
Real-time rendering hầu như luôn được thực hiện bằng bộ vi xử lý của card đồ họa (GPU – Graphical Processing Unit). Vì vậy mà các bạn có thể thấy máy tính dùng để chơi game luôn sử dụng card đồ họa mạnh. Trong khi đó, offline rendering (ví dụ như khi render bằng V-Ray hoặc Mental Ray), hầu như luôn được thực hiện bằng bộ xử lý trung tâm của máy tính (CPU – Central Processing Unit). Card đồ họa hầu như không tham gia vào offline rendering.

Ghi chú: Đọc đến đây các bạn có thể ngạc nhiên vì người ta vẫn thường nói máy tính dành cho người thiết kế đồ họa cũng cần có card đồ họa mạnh. Trong khi chúng tôi vừa nói ở trên là card đồ họa không tham gia vào qua trình render của V-Ray hoặc Mental Ray. Để giải thích “nghịch lý” này, các bạn cần phải hiểu chính xác hơn về chữ “render”. Chúng tôi nhận thấy ở Việt Nam, rất ít người làm trong lĩnh vực thiết kế đồ họa kiến trúc có cách hiểu đúng về chữ render. Theo đúng như định nghĩa của những người làm trong lĩnh vực khoa học đồ họa máy tính, chữ “render” có nghĩa là thể hiện dữ liệu hình học ba chiều lên trên thiết bị hiển thị (ví dụ như màn hình máy tính). Vì vậy, không chỉ khi các bạn click vào nút render trên thanh menu của 3ds Max thì chúng ta mới gọi đó là render, mà những gì các bạn nhìn thấy trong của sổ làm việc của 3ds Max (nói cụ thể hơn, chính là các viewport), cũng gọi là render. Nhiệm vụ của card đồ họa là render những hình ảnh mà các bạn nhìn thấy trong viewport của 3ds Max. Chúng tôi xin nhấn mạnh lại một lần nữa: “render” có nghĩa là thể hiện dữ liệu hình học ba chiều lên trên màn hình máy tính, không nhất thiết là phải đợi đến khi chúng ta click vào lệnh render trong 3ds Max, Maya hay Revit … mới được gọi là render. Những hình ảnh 3D mà các bạn nhìn thấy trong môi trường làm việc của 3ds Max, Maya, hay bất kỳ phần mềm thiết kế đồ họa 3D nào cũng đều được gọi là render cả.

Hy vọng khi đọc đến đây các bạn đã phần nào hiểu được real-time rendering là gì. Có thể các bạn nhận thấy nó giống với khái niệm “virtual reality” (hay “thực tế ảo”) cho kiến trúc vì nó cho phép người xem đi lại và tương tác trong công trình. Tuy nhiên, thuật ngữ “virtual reality” này quá bao quát, vì vậy chúng tôi mới dùng thuật ngữ chính xác hơn là “real-time architectural visualization” (hay “diễn họa kiến trúc theo thời gian thực”).

Bây giờ chúng ta sẽ xem diễn họa kiến trúc theo thời gian thực có những ưu điểm gì so với kiểu diễn họa bằng những hình render phối cảnh hay những đoạn phim thực hiện bằng 3ds Max và V-Ray.

Nhìn chung, ưu điểm chính của real-time rendering là cho phép người xem tương tác với công trình kiến trúc. Điều này khiến họ cảm thấy như mình đang thực sự bước vào công trình kiến trúc đó. Họ có thể tùy ý đi lại trong công trình, nhìn theo những hướng mà mình muốn. Đối với offline rendering (tức là đối với một đoạn phim hoặc một bức ảnh tĩnh) thì người xem sẽ không có được cảm giác chủ động này vì đường đi của camera và góc camera hoàn toàn do người tạo lập đoạn phim quyết định. Chưa hết, trong real-time rendering, người xem có thể mở cửa, bật đèn một cách chủ động, và quan trong nhất, họ có thể thay đổi vật liệu, màu sắc, thậm chí cả hình dáng, của tường, nền nhà, đồ đạc nội thất ….

Tính năng thay đổi vật liệu, màu sắc (và hình dáng) này có giá trị rất lớn trong việc trình bày thiết kế cho khách hàng. Ví dụ, chúng ta đưa ra 3 phương án màu sắc cho tường của phòng khách. Khách hàng của chúng ta có thể click vào các nút trên bảng giao diện để lần lượt thay đổi màu tường theo 3 phương án mà chúng ta đề nghị. Điều tiện lợi nhất là khi khách hàng vừa click xong, thì khung cảnh mới (trong đó màu tường đã được thay đổi) sẽ được render “ngay lập tức” (trong vòng 1/15 giây)

Đọc đến này, một số bạn có thể thắc mắc “Ủa, cái trò thay đổi màu tường hay vật liệu này chỉ cần dùng 3ds Max hay V-Ray không thôi cũng làm được mà, cần gì phải dùng đến real-time rendering, chúng ta chỉ việc render 3 phương án với 3 màu tường khác nhau, sau đó đưa 3 cái file jpeg hoặc png cho khách hàng là xong?”. Các bạn nói không sai, offline rendering hoàn toàn có thể làm được điều đó, nhưng các bạn hãy tưởng tượng nếu chúng ta có 3 phương án màu tường, 3 phương án màu nền, 3 phương án màu cho bộ ghế salon, vậy chúng ta sẽ có tổng cổng 3 x 3 x 3 = 27 phương án tất cả. Liệu các bạn có muốn render hết cả 27 lần? Chưa hết, nếu các bạn có thêm vài phương án cho tấm thảm trải dưới bộ ghế salon, hoặc vài phương án cho màu rèm cửa, thì lúc này, số lượng phương án tổng cổng sẽ còn tăng lên rất nhiều.

GigabIdea