Kết xuất đồ họa
Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. |
Trong đồ họa máy tính, kết xuất đồ họa (tiếng Anh: rendering), gọi tắt là kết xuất, là một quá trình kiến tạo một hình ảnh từ một mô hình (hoặc một tập hợp các mô hình) thành một cảnh phim hoặc hình ảnh nào đó bằng cách sử dụng phần mềm máy tính. Mô hình là mô tả của các đối tượng ba chiều bằng một ngôn ngữ được định nghĩa chặt chẽ hoặc bằng một cấu trúc dữ liệu. Mô tả này bao gồm các thông tin về hình học, điểm nhìn, chất liệu và bố trí ánh sáng của đối tượng. Hình ảnh này có thể là một hình ảnh số (digital image) hoặc một hình ảnh đồ họa điểm (raster graphics image). Thuật ngữ này có thể tương đồng với "quá trình một họa sĩ vẽ" một phong cảnh nào đấy. Thuật ngữ "kết xuất" còn được dùng để chỉ quá trình tính toán các hiệu ứng trong một tập tin biên tập phim để tạo kết quả video cuối cùng.
Kết xuất đồ họa là một trong các chủ đề con chính của đồ họa máy tính ba chiều (3D computer graphics). Trong thực tiễn, nó luôn luôn có quan hệ chặt chẽ với các chủ đề khác. Trong 'quy trình xử lý đồ họa' (graphics pipeline), kết xuất là bước quan trọng cuối cùng để tạo ra diện mạo kết cục của các mô hình và hoạt hình. Với tính phức tạp của đồ họa máy tính ngày càng tăng, từ năm 1970 đến nay, kết xuất đồ họa đã trở thành một chủ đề riêng biệt.
Kết xuất đồ họa được sử dụng trong: trò chơi video và điện tử (computer and video games), trong các chương trình mô phỏng (simulators), trong điện ảnh (movies) hay trong hiệu ứng đặc biệt (special effects) trên TV, và trong hình tượng hóa thiết kế (design visualisation), mỗi cái áp dụng một cân bằng giữa các đặc trưng và kỹ thuật khác nhau. Hiện nay còn có nhiều sản phẩm phần mềm đa dạng dùng cho việc kết xuất đồ họa. Một số được kết hợp trong những bộ phần mềm tạo mô hình và làm phim hoạt họa, một số khác là những phần mềm đứng riêng (stand-alone) và một số là những dự án nguồn mở tự do (free open-source projects). Bên trong chúng, chương trình kết xuất đồ họa là một chương trình ứng dụng được thiết kế và xây dựng một cách cẩn trọng, dựa trên một số kiến thức của các ngành: vật lý quang học, nhận thức thị giác (visual perception), toán học và phát triển phần mềm.
Trong trường hợp đồ họa 3D, việc kết xuất là một quá trình chậm chạp, chẳng hạn như trong tiến trình kết xuất trước (pre-rendering), hoặc trong việc kết xuất trong thời gian thực (real time rendering). Kết xuất trước là một tiến trình đòi hỏi một khối lượng tính toán lớn, đặc biệt được dùng trong việc tạo phim điện ảnh, trong khi đó, kết xuất trong thời gian thực thường được sử dụng trong các trò chơi điện tử 3D (3D video games), và phụ thuộc vào các bộ điều hợp đồ họa (graphics cards) với bộ tăng tốc phần cứng 3D (3D hardware accelerators).
Sử dụng
[sửa | sửa mã nguồn]Sau khi hình ảnh sơ đẳng (thường là một bản vẽ phác thảo khung lưới) được hoàn chỉnh, quá trình kết xuất mới bắt đầu để cho thêm những chất liệu bề mặt dạng bitmap (bitmap textures) hoặc những chất liệu bề mặt mô tả các quy luật toán học (procedural textures), bố trí ánh sáng, tạo hiệu ứng bề mặt sần (bump mapping), và vị trí tương đối với các vật thể khác. Kết quả là một bức ảnh mà khách hàng, hoặc người xem mà nó có nhã ý dành cho, nhìn thấy.
Đối với hoạt họa trong phim điện ảnh, vài hình ảnh (các khung hình) (frames) phải được kết xuất cùng một lúc, và những hình ảnh này được nối vào với nhau bằng một chương trình ứng dụng có khả năng tạo phim hoạt họa. Phần lớn các chương trình ứng dụng biên tập hình ảnh 3D đều có khả năng làm việc này.
Đặc trưng
[sửa | sửa mã nguồn]Người ta có thể hiểu một hình ảnh đã được kết xuất thông qua một số đặc điểm có thể nhìn thấy được của nó. Động cơ thúc đẩy việc nghiên cứu và phát triển kết xuất đồ họa là nhằm vào việc tìm kiếm các phương pháp để mô phỏng các đặc điểm này một cách hiệu quả. Một số trong những phương pháp đó liên quan trực tiếp đến các thuật toán và các kỹ thuật cụ thể, trong khi những phương pháp khác được sản sinh đồng thời trong quá trình tìm kiếm:
- kỹ thuật tô bóng (shading) — dưới sự bố trí ánh sáng nhất định, màu sắc và cường độ ánh sáng trên bề mặt thay đổi như thế nào
- kỹ thuật tạo chất liệu (texture-mapping ) — một phương pháp cho thêm chi tiết vào các bề mặt của vật thể
- kỹ thuật tạo bề mặt sần (bump-mapping) — một phương pháp tái tạo hiệu ứng nhấp nhô, lổn nhổn của các bề mặt trên phạm vi thu nhỏ
- kỹ thuật tạo hiệu ứng xa mờ/ảnh hưởng trên các vật chất (fogging/participating medium ) — ánh sáng bị tối đi như thế nào khi chúng xuyên qua khí quyển không trong sạch hoặc xuyên qua không khí
- kỹ thuật tạo hiệu ứng bóng tối (shadows ) — ảnh hưởng của ánh sáng khi chúng bị che lấp bởi vật thể (ngả bóng chẳng hạn)
- kỹ thuật tạo hiệu ứng bóng tối mềm (soft shadows) — sự biến thiên của bóng tối gây ra do nguồn ánh sáng chỉ bị che khuất một phần
- kỹ thuật tạo hiệu ứng phản quang (reflection) — hiệu ứng phản quang như gương hoặc bởi những bề mặt bóng loáng
- kỹ thuật tạo hiệu ứng trong suốt (transparency) — hiệu ứng truyền ánh sáng xuyên qua các vật thể đặc
- kỹ thuật tạo hiệu ứng trong mờ (translucency) — sự phân tán cao độ của ánh sáng khi được truyền xuyên qua các vật thể đặc
- kỹ thuật tạo hiệu ứng khúc xạ (refraction) — sự đổi hướng của ánh sáng khi truyền qua những vật thể trong suốt
- kỹ thuật tạo hiệu ứng chiếu sáng gián tiếp (indirect illumination) — các bề mặt hừng sáng khi ánh sáng phản quang từ các bề mặt khác mà không phải do nguồn sáng trực tiếp chiếu vào
- tính tụ quang (một hình thức của tính phản quang) — sự phản quang của ánh sáng từ một vật thể bóng loáng, hay sự hội tụ của ánh sáng khi xuyên qua một vật trong suốt, tạo nên các điểm chói sáng trên các vật thể khác
- kỹ thuật tạo hiệu ứng chiều sâu của tầm nhìn (depth of field) — các vật thể mờ đi hoặc không rõ khi chúng nằm quá xa, hoặc nằm sau một vật đang ở trong tầm mắt
- kỹ thuật tạo hiệu ứng nhòe hình của vật chuyển động (motion blur) — vật thể bị nhòe đi trong khi đang chuyển động với tốc độ cao, hoặc do chuyển động của máy quay phim
- kỹ thuật tạo hình thái như thật của ảnh chụp (photorealistic morphing) — tạo hiệu ứng như ảnh chụp của kết xuất 3D làm cho hình ảnh giống như thật
- kỹ thuật kết xuất không giống ảnh chụp (non-photorealistic rendering) — kết xuất các phong cảnh theo phong cách họa sĩ, với dụng ý làm cho nó giống cách bức tranh (sơn dầu) hay những hình vẽ
Kỹ thuật
[sửa | sửa mã nguồn]Nhiều thuật toán kết xuất đồ họa đã được nghiên cứu và phần mềm dùng trong quá trình kết xuất có thể áp dụng một số những kỹ thuật kết xuất để đạt được hình ảnh cuối cùng.
Mô phỏng lại từng tia sáng một trong một khung cảnh là một việc không thực tiễn và đòi hỏi một lượng thời gian khổng lồ. Ngay cả khi chỉ xác định một phần đủ lớn để sinh tạo một hình ảnh cũng đã đòi hỏi một lượng thời gian lớn quá mức nếu quá trình lấy mẫu không được hạn chế một cách khéo léo và thông minh.
Chính vì những nguyên nhân nói trên, bốn phương pháp kết xuất ảnh đã và đang được phát triển nhằm đáp ứng những loại yêu cầu khác nhau kỹ thuật tạo ảnh điểm (rasterisation), bao gồm việc kết xuất đường quét màn hình (scanline rendering), cân nhắc các đối tượng trong phong cảnh và diễn đạt chúng để tạo nên một hình ảnh, trong khi không có phương tiện để kiến tạo hiệu ứng luật xa gần (perspective) của một góc nhìn; kỹ thuật chiếu tia sáng (ray casting) tái hiện khung cảnh như được quan sát từ một góc nhìn cụ thể, tính toán hình ảnh quan sát được dựa trên tính hình học và các quy luật quang học căn bản về cường độ phản quang của ánh sáng, hoặc sử dụng các kỹ thuật Monte Carlo để làm giảm độ nhiễu (noise) (làm cho ảnh rõ hơn); và kỹ thuật dò tia sáng tia (ray tracing), một phiên bản tổng quát hơn của phương pháp ray casting, thường sử dụng các kỹ thuật Monte Carlo để đạt được kết quả trông giống thật hơn, với một tốc độ nhanh hơn gấp nhiều lần so với tốc độ rất chậm thường thấy của quá trình này.
Đa số những phần mềm tân tiến kết hợp từ hai kỹ thuật trở lên để đạt được kết quả khả quan với phí tổn ở mức độ có thể chấp nhận được.
Kết xuất đường quét và tạo điểm ảnh
[sửa | sửa mã nguồn]Hình thức đại diện cao cấp của một bức ảnh là một hình thức cần phải chứa đựng những yếu tố ở một thể dạng khác với các điểm ảnh (pixels). Những yếu tố này được gọi là những nguyên thủy (primitives). Lấy ví dụ, trong một bức giản đồ, các đoạn đường thẳng và đường cong là những nguyên thủy. Trong giao diện đồ họa người dùng, các cửa sổ, các nút bấm còn có thể được gọi là những nguyên thủy. Đối với kết xuất hình ba chiều, các tam giác và đa giác trong không gian cũng có thể là các nguyên thủy.
Nếu kết xuất từng điểm ảnh (pixel-by-pixel rendering) là một phương pháp không thực tiễn, hoặc quá chậm đối với một nhiệm vụ nào đấy, thì phương pháp kết xuất từng nguyên thủy một có thể là một phương pháp có tác dụng hơn. Ở đây, thuật toán được lặp đi lặp lại (loops) qua từng nguyên thủy một, xác định điểm ảnh nào trong bức ảnh nó tác động đến, và biến đổi những điểm ảnh này. Quá trình này được gọi là quá trình tạo điểm ảnh (rasterization), và nó là phương pháp kết xuất trong tất cả các bộ điều hợp đồ họa (graphics cards) hiện thời.
Phương pháp tạo điểm ảnh thường nhanh hơn phương pháp kết xuất từng điểm ảnh một (pixel-by-pixel rendering). Thứ nhất, phần lớn địa phận trong bức ảnh không có các nguyên thủy, phương pháp tạo điểm ảnh sẽ bỏ qua những địa phận này, song phương pháp kết xuất từng chấm ảnh một phải kinh qua chúng. Thứ hai, phương pháp tạo điểm ảnh còn có thể cải tiến sự gắn kết của cache (cache coherency) và giảm ước những công việc thừa, không cần phải làm, bằng cách áp dụng lợi thế của thực tiễn là các chấm ảnh trong một nguyên thủy thường có xu hướng kế cận liên tiếp (contiguous). Chính vì những nguyên nhân này, khi cần phải kết xuất tương tác, phương pháp tạo điểm ảnh thường là một tiếp cận người ta lựa chọn; tuy nhiên, phương pháp kết xuất từng chấm ảnh một lại thường tạo ảnh có chất lượng cao hơn và năng động hơn vì nó không phụ thuộc vào các giả định về bức ảnh nhiều như phương pháp tạo điểm ảnh.
Có hai hình thức tạo điểm ảnh chính tồn tại, không chỉ khi toàn bộ một bề mặt (nguyên thủy) được kết xuất, song ngay cả khi các giao điểm của một bề mặt đã được kết xuất và sau đó các chấm ảnh trên bề mặt nằm giữa các giao điểm được kết xuất bằng cách dung hòa màu của các giao điểm với nhau, từ cái này đến cái kia, phương pháp tạo điểm ảnh này đã vượt trội và thay thế phương pháp cũ vì nó cho phép các mảng đồ họa được kết nối với nhau mà không cần dùng chất liệu phức tạp (một hình ảnh được kết xuất điểm ảnh (rasterized image) khi được chắp nối kề bên nhau thường gây hiệu ứng từng khối riêng nếu chúng không được bao phủ bằng những chất liệu phức tạp; các bề mặt không được nhẵn nhụi, vì không có sự chuyển màu từ từ giữa chấm ảnh này đến chấm ảnh khác), sử dụng các hàm tạo bóng (shading functions) đắt đỏ hơn của bộ điều hợp đồ họa, song vẫn đạt được công suất cao hơn vì những chất liệu đơn giản hơn được lưu trữ trong bộ nhớ sử dụng khoảng trống ít hơn. Đôi khi, các nhà thiết kế sử dụng một phương pháp tạo điểm ảnh trên một số bề mặt này, và sử dụng các phương pháp khác trên các bề mặt khác, dựa trên cơ sở góc độ nơi bề diện ấy giao tiếp và các bề mặt khác hội nhập, và do vậy tăng tốc độ của quá trình, đồng thời không làm tổn hại đến hiệu ứng chung.
Chiếu quang tia
[sửa | sửa mã nguồn]Chiếu quang tia (Ray casting) được sử dụng chủ yếu trong các mô phỏng thời gian thực (tức khắc), như trong các trò chơi điện tử 3D hoặc trong hoạt hình các hình ảnh vẽ (phim hoạt họa), nơi chi tiết là một điều không quan trọng, hoặc nơi tự mình tạo giả các chi tiết hòng đạt được công suất cao hơn trong quá trình tính toán là một việc có tác dụng hơn. Việc này thường thấy trong trường hợp phải hoạt hình một số lượng khung ảnh lớn. Các bề diện tạo nên có đặc tính là chúng có bề mặt 'phẳng lì', khi người ta không sử dụng các thủ thuật bên ngoài, giống như các vật thể trong phong cảnh được quét một làn sơn xỉn kết thúc vậy.
Tính hình học được mô hình hóa ở đây được phân tích bằng từng chấm từng chấm một, bằng từng đường thẳng một, từ điểm nhìn chiếu ra, tương tự như các quang tia được chiếu ra từ điểm nhìn. Tại giao điểm nơi hai đối tượng cắt ngang nhau, giá trị màu tại điểm này có thể được xác định bằng một số phương pháp. Cách đơn giản nhất, giá trị màu của đối tượng tại giao điểm chính là giá trị của chấm ảnh. Màu của nó còn có thể được lấy từ hình chất liệu (texture map) nữa. Một phương pháp phức tạp hơn là phương pháp thay đổi giá trị màu bằng độ hừng sáng, song không tính toán mối quan hệ với một nguồn sáng mô phỏng. Để thuyên giảm nhiễu, những quang tia có góc độ hơi khác nhau một chút có thể được tính bằng giá trị trung bình của chúng.
Nhiều sự mô phỏng tương đối các đặc tính quang học còn có thể được áp dụng thêm vào, chẳng hạn làm thêm một phép tính đơn giản trên quang tia, từ đối tượng đến điểm nhìn. Một phép toán nữa là phép toán tính góc của các quang tia chiếu tới từ một hay nhiều nguồn sáng (angle of incidence of light rays), và từ đó, cộng với cường độ ánh sáng của nguồn, giá trị của chấm ảnh được xác định. Một mô phỏng khác nữa là phương pháp dùng giá trị hừng sáng lấy được từ thuật toán tính sự va đập của ánh sáng, hoặc là sự phối hợp của cả hai cái này gộp lại.
Tính va đập của ánh sáng
[sửa | sửa mã nguồn]Thuật toán tính sự va đập của ánh sáng (Radiosity) là một phương pháp nhằm mô phỏng sự phản xạ của ánh sáng, không những chỉ phản xạ sang một mặt phẳng khác mà thôi, song cả việc nó làm hừng sáng địa phận chung quanh nữa. Phương pháp này tạo nên các bóng tối thật hơn và hình như nắm bắt được không khí môi trường (ambiance) của quang cảnh bên trong nội thất. Một ví dụ kinh điển nhất đã được sử dụng là ví dụ về bóng tối bao trùm các góc phòng.
Nền tảng quang học trong mô phỏng này dựa trên nguyên lý một số ánh sáng khuếch tán từ một điểm trên một bề mặt cho trước, được phản xạ lại với vô số các góc độ và làm hừng sáng địa phận bao quanh nó.
Kỹ thuật mô phỏng có thể khác nhau về mức độ phức tạp. Nhiều quá trình kết xuất chỉ ước lượng tương đối tính va đập của ánh sáng, và chỉ đơn giản làm hừng sáng toàn bộ không gian của bức ảnh lên một chút với một cường độ được gọi là không khí môi trường (ambiance). Tuy thế, song khi thuật toán ước tính sự va đập ánh sáng tân tiến được đi đôi với một thuật toán dõi quang tia chất lượng cao (high quality ray tracing algorithm), các hình ảnh có thể biểu hiện tính sát thực của chúng ở một mức độ thuyết phục, đặc biệt là những phong cảnh nội thất.
Trong kỹ thuật mô phỏng tính va đập của ánh sáng tân tiến, các thuật toán phần tử hữu hạn (finite-element algorithm) đệ quy làm 'nẩy tung' ánh sáng, bắn đi và bật trở lại giữa các bề mặt trong mô hình, cho đến khi một giới hạn đệ quy nào đấy kết thúc. Trong phương pháp này, việc bố trí màu sắc của một mặt phẳng ảnh hưởng tới việc bố trí màu sắc của bề mặt bên cạnh nó và ngược lại. Các giá trị về độ hừng sáng đạt được trong toàn bộ mô hình (đôi khi bao gồm cả những khoảng không gian trống rỗng) được lưu trữ và được sử dụng như những nhập liệu bổ sung khi thi hành các phép tính trong mô hình chiếu quang tia (ray-casting) hoặc mô hình dõi quang tia (ray-tracing).
Do bản chất tương tác/quy đệ của kỹ thuật này, mô phỏng các vật thể phức tạp đặc biệt tốn nhiều thời gian và chậm trễ. Các phép toán tính sự va đập của ánh sáng tân tiến có thể chỉ dành cho việc tính toán không khí trong phòng, từ sự phản quang của ánh sáng từ các bức tường, sàn và trần nhà, mà không kiểm tra ảnh hưởng bổ sung mà các vật thể phức tạp tạo ra đối với sự va đập của ánh sáng—hoặc trong khi tính toán sự va đập của ánh sáng, chúng ta có thể thay thế các vật thể phức tạp bằng những vật thể đơn giản hơn, song có cùng độ lớn và cùng một chất liệu.
Nếu sự bố trí lại các vật va đập ánh sáng trong một phong cảnh không thay đổi mấy thì dữ liệu về sự va đập ánh sáng này có thể được dùng lại trong một số khung ảnh, biến tính va đập của ánh sáng trở nên một phương pháp làm giảm tính bẹt, phẳng lì của phương pháp chiếu quang tia, mà không gây ảnh hưởng lớn đến thời gian kết xuất từng khung ảnh tổng thể.
Bởi tính năng của nó, phép tính sự va đập ánh sáng trở nên phương pháp hàng đầu dùng để kết xuất trong thời gian thực, và nó được sử dụng từ đầu chí cuối trong việc xây dựng một số lượng lớn các phim hoạt họa 3D dài nổi tiếng gần đây.
Dò tia sáng
[sửa | sửa mã nguồn]Phương pháp dò tia sáng (ray tracing) là phiên bản mở rộng (và tổng quát hơn) của phương pháp chiếu tia sáng (ray casting). Giống như các phương pháp trên, dò tia sáng giải quyết các vật thể khá thành công, và các vật thể còn có thể được diễn giải bằng toán học nữa. Khác với đường quét hình và chiếu quang tia, dõi quang tia hầu như luôn luôn là kỹ thuật Monte Carlo, có nghĩa là kỹ thuật dựa trên cơ sở tính trung bình một số mẫu lấy ngẫu nhiên (không theo một công thức nào) từ một mô hình.
Trong kỹ thuật này, mẫu lấy là các quang tia tưởng tượng của ánh sáng cắt ngang điểm nhìn từ các vật thể trong phong cảnh. Kỹ thuật này có lợi chủ yếu trong trường hợp kết xuất bóng tối (ngả bóng), kết xuất sự khúc xạ hay kết xuất sự khản quang một cách phức tạp và chính xác là những vấn đề nan giải.
Trong kết quả cuối cùng của một công trình kết xuất dõi quang tia có chất lượng (như công trình dàn dựng phim chẳng hạn), bội số các quang tia thường được chiếu vào mỗi một chấm ảnh và dõi theo, không chỉ tới vật thể đầu tiên khi bị cắt ngang, song cả tới những va đập tiếp theo nữa, bằng cách sử dụng những quy luật quang học đã biết như quy luật góc chiếu bằng góc phản xạ, và những quy luật giải quyết vấn đề khúc xạ và sự gồ ghề của bề mặt.
Một khi quang tia gặp một nguồn sáng, hoặc trong trường hợp khả dĩ hơn, khi một nhóm số lượng giới hạn các va đập của quang tia đã được tính toán xong, thì độ hừng sáng của bề mặt tại điểm cuối cùng cũng tính được dùng các kỹ thuật đã diễn tả ở trên, và các thay đổi trên con đường thông qua các va đập được tính toán để ước lượng giá trị mà người ta quan sát được từ điểm nhìn. Phép toán này được nhắc lại cho mỗi mẫu hình lấy được, đối với mỗi chấm ảnh.
Trong một số trường hợp, tại mỗi giao điểm, các tia sáng mới sẽ được sản sinh ra.
Do tính chất "thô lực" của phương pháp này (tính từng tia sáng một), dò tia sáng không phù hợp với mục đích kết xuất theo thời gian thực (real-time rendering) và ngay cả đến gần đây, phương pháp này vẫn được coi là quá chậm chạp, ngay cả khi để dùng vào các phim ngắn có chất lượng, tuy nó cũng đã được sử dụng trong một số đoạn tạo hiệu ứng đặc biệt và trong quảng cáo, trong đó một đoạn phim ngắn đòi hỏi chất lượng cao (có thể như ảnh chụp nữa) là một yêu cầu.
Tuy vậy, song nhiều cố gắng trong việc tối ưu hóa để thuyên giảm số lượng tính toán đòi hỏi trong các phần công việc, nơi không nhiều chi tiết hay không phụ thuộc vào các đặc trưng của dõi quang tia, đã dẫn đến khả năng thực tiễn sử dụng rộng rãi của kỹ thuật dõi quang tia. Hiện nay cũng đã có một số thiết bị phần cứng tăng tốc dõi quang tia, hoặc ít nhất cũng đã xuất hiện ở giai đoạn nghiên cứu nguyên mẫu (bản mẫu trước khi cho sản xuất hàng loạt), và một số trò chơi điện tử giới thiệu quảng cáo cũng đã trình diễn việc sử dụng dõi quang tia thời gian thực trong phần mềm và phần cứng.
Tối ưu hóa
[sửa | sửa mã nguồn]Các phương pháp tối ưu hóa họa sĩ sử dụng trong khi xây dựng một phong cảnh
[sửa | sửa mã nguồn]Do số lượng tính toán lớn, một công trình đang còn trong quá trình phát triển chỉ kết xuất chi tiết phần đang được quan tâm tại thời điểm làm việc mà thôi, vì thế, trong những giai đoạn đầu của quá trình mô hình hóa, có thể người ta chỉ dùng mô hình khung lưới và kỹ thuật chiếu quang tia mà thôi, ngay cả khi kết quả xuất liệu phải là kết quả của dõi quang tia kết hợp với tính va đập ánh sáng. Người ta cũng thường chỉ kết xuất chi tiết một số phần của phong cảnh, và xóa bỏ các đối tượng không quan trọng đối với phần công việc hiện đang xây dựng.
Những phương pháp tối ưu hóa phổ biến dùng trong quá trình kết xuất thời gian thực
[sửa | sửa mã nguồn]Đối với thời gian thực, đơn giản hóa một hoặc nhiều sự ước lượng tương đối chung là một điều cần thiết, và điều chỉnh cho đúng với các tham số của phong cảnh hiện đang quan tâm, tức là điều chỉnh cho đúng với những tham số đã thỏa thuận, là một việc làm gây hiệu quả nhiều nhất (get the most 'bang for the buck').
Ngoài ra còn có một số tiếp cận tới kết xuất đồ họa, chẳng hạn như các phương pháp dùng hàm điều hòa cầu (spherical harmonics). Những kỹ thuật này không được nhiều người biết đến vì tốc độ chậm của chúng, vì tính thiếu tính thực dụng hoặc chỉ đơn giản là chúng vẫn còn quá non nớt; có thể một số trong chúng sẽ cho chúng ta một giải pháp mới.
Lấy mẫu và thanh lọc
[sửa | sửa mã nguồn]Một vấn đề mà bất cứ một hệ thống kết xuất đồ họa nào cũng phải giải quyết, bất kể hệ thống ấy dùng tiếp cận nào, là vấn đề lấy mẫu (sampling problem). Nhìn chung, quá trình kết xuất là quá trình cố gắng miêu tả một hàm số liên tục (continuous function) đi từ một vị trí pixel đến một giá trị màu sắc. Theo Lý thuyết Nyquist, tần số lấy mẫu ít nhất phải gấp hai lần tỉ lệ điểm ảnh (the scanning frequency must be twice the dot rate), nghĩa là nó có tỷ lệ thuận với độ phân giải của hình ảnh. Nói một cách đơn giản hơn, điều này biểu lộ quan điểm rằng một hình ảnh không thể biểu hiện chi tiết nhỏ hơn một chấm ảnh.
Nếu chúng ta sử dụng một thuật toán kết xuất đơn giản, các tần số cao trong hàm của hình ảnh sẽ gây ảo giác ngoại hình (aliasing) rất xấu trong hình ảnh kết thúc. Ảo giác ngoại hình thường biểu lộ dưới hình thức các hiệu ứng lởm chởm, các cạnh lởm chởm trên vật thể (như răng cưa), nơi hệ thống đường kẻ ổ của các chấm ảnh có thể nhìn thấy được. Để xóa bỏ ảo giác ngoại hình, tất cả các thuật toán kết xuất (nếu muốn sản sinh những hình ảnh đẹp) đều cần phải thanh lọc hàm của hình ảnh để lọc bỏ các tần số cao. Quá trình này được gọi là quá trình chống ảo giác ngoại hình (antialiasing).
Xem thêm
[sửa | sửa mã nguồn]- Thuật toán họa sĩ (the painter's algorithm)
- Các thuật toán đường quét hình như phương pháp kết xuất Reyes
- Thuật toán Z-buffer (Z-buffer algorithms)
- Chiếu sáng toàn cầu (Global illumination)
- Sự va đập của ánh sáng (Radiosity)
- Dõi quang tia (Ray tracing)
- Kết xuất thể tích (Volume rendering)
Việc kết xuất các phim điện ảnh thường diễn ra trên một mạng lưới các máy tính được kết nối chặt chẽ với nhau, còn gọi là trang trại kết xuất (render farm).
Đỉnh cao của kỹ thuật diễn đạt hình ảnh 3D hiện tại dành cho việc sản xuất phim điện ảnh là ngôn ngữ diễn tả phong cảnh RenderMan, được thiết kế tại Pixar. (so sánh với các dạng thức tập tin 3D đơn giản hơn như VRML hoặc API như OpenGL và DirectX được tạo để thích ứng với nhu cầu của các phần cứng tăng tốc 3D).
Phần mềm dùng để kết xuất phim điện ảnh bao gồm:
- Các bộ kết xuất tương thích với RenderMan (RenderMan compliant renderers)
- Mental Ray
- Brazil
- Blender (còn có thể dùng trong mô hình hóa)
- LightWave (bao gồm cả môđun để mô hình hóa)
Nền tảng hàn lâm
[sửa | sửa mã nguồn]Sự thực hiện của một chương trình kết xuất như thật luôn luôn bao gồm một số phần tử căn bản của mô phỏng vật lý hoặc bắt trước thực tế — một số phép tính hoặc là mô phỏng hoặc là trừu tượng của một quá trình thật sự xảy ra trong thực tế.
Thuật ngữ dựa trên quan điểm của vật lý (physically-based) biểu hiện việc sử dụng các mô hình vật lý và các sự ước lượng hoặc là phổ biến hoặc là được chấp nhận rộng rãi bên ngoài phạm vi kết xuất. Một số kỹ thuật liên quan được nhóm lại và dần dần trở thành có uy tín trong cộng đồng kết xuất đồ họa.
Các khái niệm cơ bản tuy tương đối dễ hiểu, song khá khó tính toán; và người ta thường né tránh những thuật toán hoặc tiếp cận đơn chiếc đầy tính tao nhã (single elegant algorithm), và chú trọng vào các chương trình kết xuất với nhiều tính năng phổ cập (general purpose renderers) hơn.
Nghiên cứu kết xuất đồ họa quan tâm đến cả hai vấn đề, việc áp dụng các mô hình khoa học và ứng dụng có hiệu quả cao của chúng (efficient application).
Phương trình kết xuất đồ họa
[sửa | sửa mã nguồn]Phương trình kết xuất, hay còn gọi là phương trình vận chuyển ánh sáng (light transport equation) là chìa khóa khái niệm lý thuyết / hàn lâm trong lĩnh vực kết xuất đồ họa. Phương trình có tác dụng như một biểu thức chính quy trừu tượng về mặt toán học của quá trình kết xuất đề hoạ. Tất cả các thuật toán kết xuất dựa trên nền tảng vật lý đều có thể được xem như những giải đáp cho phương trình này, hoặc các dạng khác của nó.
Giải thích một cách trực quan: Lượng ánh sáng phát ra tại một điểm nào đó theo một hướng nào đó (Lo) là tổng của lượng ánh sáng mà điểm đó tự phát ra theo hướng đó(Le) và lượng ánh sáng từ môi trường xung quanh bị điểm đó phản xạ lại.
Hàm phân bố năng xuất phản xạ hai chiều
[sửa | sửa mã nguồn]The Hàm phân bố năng xuất phản xạ hai chiều (Bidirectional Reflectance Distribution Function - BRDF) biểu đạt một mô hình đơn giản về sự tương tác của ánh sáng với một bề mặt như sau:
Sự tương tác của ánh sáng thường được ước chừng bằng các mô hình đơn giản hơn: sự phản xạ khuếch tán và sự phản chiếu, tuy nhiên cả hai đều có thể là các BRDF.
Các tính chất quang hình học
[sửa | sửa mã nguồn]Trên thực tế, kết xuất đồ họa chú trọng đến phương diện phần tử trong vật lý của ánh sáng — được gọi là các tính chất quang hình học (geometric optics). Đối xử ánh sáng, ở hình thức cơ bản, như các phần tử nhảy nhót lung tung, tuy là một giản ước song tương đối thích hợp: phương diện sóng của ánh sáng có thể bỏ qua trong hầu hết các phong cảnh, và đồng thời, nó cũng rất khó mô phỏng nữa. Đặc biệt lưu ý hiện tượng sóng còn bao gồm sự nhiễu xạ (diffraction) — như vẫn thấy trong các màu trên bề mặt các đĩa CD và DVD — hoặc như sự phân cực (polarisation) như vẫn thấy trong các hiển thị tinh thể lỏng (Liquid crystal display - LCD). Cả hai loại hiệu ứng, nếu cần, đều có thể được tạo nên bằng cách điều chỉnh mô hình phản quang theo định hướng diện mạo (appearance-oriented adjustment of the reflection model).
Thị giác
[sửa | sửa mã nguồn]Tuy ít được sự chú ý, song sự hiểu biết về thị giác của con người rất có giá trị đối với quá trình kết xuất. Nguyên do là việc hiển thị hình ảnh và sự nhận thức của con người có tầm giới hạn. Một bộ kết xuất đồ họa có thể mô phỏng hầu như không giới hạn các khoảng giá trị cường độ của ánh sáng và các khoảng giá trị của màu sắc, song các thiết bị dùng để hiển thị — màn ảnh chiếu phim, màn hình máy tính, vân vân — không thể giải quyết hết được, và một số tư liệu phải bị lọc bỏ hay được nén lại. Sự nhận thức của con người cũng chỉ có giới hạn, cho nên chúng ta cũng không cần phải cho họ những hình ảnh chứa đựng nhiều tầm giá trị để tạo cảm quan như thật. Việc này còn giúp giải quyết vấn đề sắp xếp hình ảnh cho hợp với cỡ của các bộ hiển thị, và, hơn nữa, nó gợi ý việc sử dụng các đường tắt (short-cuts) trong mô phỏng kết xuất, vì một số những chi tiết tinh vi thường bị bỏ qua và ít khi được để ý đến. Chủ đề liên quan đến vấn đề này là chủ đề bố trí sắc thái (tone mapping)
Các phép toán được sử dụng trong kết xuất bao gồm: đại số tuyến tính (linear algebra), tính vi tích (calculus), giải tích số (numerical analysis), xử lý tín hiệu (signal processing), Monte Carlo.
Bảng niên đại những sáng kiến đã được công bố theo tầm quan trọng của nó
[sửa | sửa mã nguồn]- 1970 Thuật toán tính đường quét màn hình (Scan-line algorithm) (Bouknight, W. J. (1970). Một thủ tục tạo biểu thị đồ họa máy tính ba chiều nửa tông (half-tone) (hiệu ứng in ảnh trắng đen trên báo chí). (Communications of the ACM)
- 1971 Phương pháp tô bóng của Gouraud (Gouraud shading) (Gouraud, H. (1971). Máy tính hiển thị các bề mặt cong. IEEE Transactions on Computers 20 (6), 623–629.)
- 1974 Liên kết chất liệu (Texture mapping) (Catmull, E. (1974). Một chi nhánh thuật toán dành cho việc máy tính hiển thị các bề mặt cong. Luận văn tốt nghiệp Tiến sĩ triết học, Trường đại học Utah, Mỹ)
- 1974 Z-buffer (Catmull, E. (1974). Một chi nhánh thuật toán dành cho việc máy tính hiển thị chiều sâu của ảnh và các vật thể xa gần)
- 1975 Tô bóng của Phong (Phong shading) (Phong, B-T. (1975). Sự chiếu sáng các hình ảnh do máy tính tạo ra. Communications of the ACM 18 (6), 311–316.)
- 1976 Liên kết hiệu ứng của môi trường chung quanh (Environment mapping) (Blinn, J.F., Newell, M.E. (1976). Chất liệu và sự phản quang trong các hình ảnh do máy tính tạo ra. Communications of the ACM 19, 542–546.)
- 1977 Thể tích bóng tối (Shadow volumes) (Crow, F.C. (1977). Các thuật toán tính bóng tối cho các đồ họa máy tính. Computer Graphics (Proceedings of SIGGRAPH 1977) 11 (2), 242–248.)
- 1978 Dữ liệu về bóng tối trong bộ nhớ trung gian (Shadow buffer) (Williams, L. (1978). Ngả bóng trên các bề mặt cong. Computer Graphics (Proceedings of SIGGRAPH 1978) 12 (3), 270–274.)
- 1978 Liên kết hiệu ứng bề mặt sần (Bump mapping) (Blinn, J.F. (1978). Mô phỏng các bề mặt nhăn nheo. Computer Graphics (Proceedings of SIGGRAPH 1978) 12 (3), 286–292.)
- 1980 Cấu trúc phả hệ phân chia không gian (Binary Space Partitioning Tree) (Fuchs, H. Kedem, Z.M. Naylor, B.F. (1980). Liên quan việc thực hiện các cấu trúc dữ liệu phả hệ để bố trí các bề mặt, cái nào đứng trước, cái nào đứng sau, phần nào nhìn thấy được, phần nào bị che kín. Computer Graphics (Proceedings of SIGGRAPH 1980) 14 (3), 124–133.)
- 1980 Dõi quang tia (Ray tracing) (Whitted, T. (1980). Nâng cấp của mô hình chiếu sáng đối với việc hiển thị tô bóng. Communications of the ACM 23 (6), 343–349.)
- 1981 Phần mềm tô bóng của Cook (Cook shader) (Cook, R.L. Torrance, K.E. (1981). Một mô hình năng xuất phản xạ đối với các đồ họa máy tính. Computer Graphics (Proceedings of SIGGRAPH 1981) 15 (3), 307–316.)
- 1983 Chồng nhóm các loại cỡ của mảng hình chất liệu (Mipmaps) (Williams, L. (1983). Các thông số được sắp xếp theo hình chóp nón của kim tự tháp. Computer Graphics (Proceedings of SIGGRAPH 1983) 17 (3), 1–11.)
- 1984 Dõi quang tia với phả hệ tám nhánh (Octree ray tracing) (Glassner, A.S. (1984). Sự phân chia khoảng không thành những phần nhỏ hơn để tăng tốc độ dõi quang tia. IEEE Computer Graphics & Applications 4 (10), 15–22.)
- 1984 Hợp tử kênh Alpha (Alpha compositing) (Porter, T. Duff, T. (1984). Tổ hợp các hình ảnh số. Computer Graphics (Proceedings of SIGGRAPH 1984) 18 (3), 253–259.)
- 1984 Dõi quang tia phân bố (Distributed ray tracing) (Cook, R.L. Porter, T. Carpenter, L. (1984). Dõi quang tia phân bố. Computer Graphics (Proceedings of SIGGRAPH 1984) 18 (3), 137–145.)
- 1984 Tính va đập của ánh sáng (Radiosity) (Goral, C. Torrance, K.E. Greenberg, D.P. Battaile, B. (1984). Mô hình hóa mối tương tác của ánh sáng giữa các bề mặt khuếch tán. Computer Graphics (Proceedings of SIGGRAPH 1984) 18 (3), 213–222.)
- 1985 Tính sự va đập của ánh sáng dùng bán lập phương (Hemi-cube radiosity) (Cohen, M.F. Greenberg, D.P. (1985). Bán lập phương: một phương pháp giải quyết sự va đập của ánh sáng trong các môi trường phức tạp. Computer Graphics (Proceedings of SIGGRAPH 1985) 19 (3), 31–40.)
- 1986 Dõi nguồn ánh sáng (Light source tracing) (Arvo, J. (1986). Phép tính ngược của chiếu quang tia. SIGGRAPH 1986 Developments in Ray Tracing course notes)
- 1986 Phương trình kết xuất đồ họa (Rendering equation) (Kajiya, J.T. (1986). Phương trình kết xuất đồ họa. Computer Graphics (Proceedings of SIGGRAPH 1986) 20 (4), 143–150.)
- 1987 Thuật toán Reyes (Cook, R.L. Carpenter, L. Catmull, E. (1987). Kiến trúc kết xuất hình ảnh theo phương pháp REYES (Renders Everything You Ever Saw - Kết xuất bất cứ vật thể gì mình nhìn thấy). Computer Graphics (Proceedings of SIGGRAPH 1987) 21 (4), 95–102.)
- 1991 Cấu trúc tầng cấp của phép tính sự va đập ánh sáng (Hierarchical radiosity) (Hanrahan, P. Salzman, D. Aupperle, L. (1991). Một thuật toán tính sự va đập ánh sáng dùng cấu trúc tầng cấp nhanh chóng. Computer Graphics (Proceedings of SIGGRAPH 1991) 25 (4), 197–206.)
- 1993 Bố trí sắc thái (Tone mapping) (Tumblin, J. Rushmeier, H.E. (1993). Tái tạo sắc thái cho các hình ảnh do máy tính tạo ra trông thật hơn. IEEE Computer Graphics & Applications 13 (6), 42–48.)
- 1993 Sự phân tán của ánh sáng của bề mặt bên dưới (Subsurface scattering) (Hanrahan, P. Krueger, W. (1993). Sự phản quang từ các bề mặt được chồng lớp lên nhau do sự phân tán của ánh sáng từ bề mặt bên dưới. Computer Graphics (Proceedings of SIGGRAPH 1993) 27 (), 165–174.)
- 1995 Liên kết quang tử (Photon mapping) (Jensen, H.J. Christensen, N.J. (1995). Liên kết quang tử trong kỹ thuật dõi quang tia monte carlo hai chiều đối với các vật thể phức tạp. Computers & Graphics 19 (2), 215–224.)
Xem thêm
[sửa | sửa mã nguồn]- Tiến trình kết xuất trước (Pre-rendered)
- Các bước xử lý trong đồ họa (Graphics pipeline)
- Mô hình ảo (Virtual model)
Sách đọc và những bản tóm tắt
[sửa | sửa mã nguồn]- Foley; Van Dam; Feiner; Hughes (1990). Computer Graphics: Principles And Practice. Addison Wesley. ISBN 0201121107.
- Glassner (1995). Principles Of Digital Image Synthesis. Morgan Kaufmann. ISBN 1558602763.
- Pharr; Humphreys (2004). Physically Based Rendering. Morgan Kaufmann. ISBN 012553180X.
- Dutre; Bala; Bekaert (2002). Advanced Global Illumination. AK Peters. ISBN 1568811772.
- Jensen (2001). Realistic Image Synthesis Using Photon Mapping. AK Peters. ISBN 1568811470.
- Shirley; Morley (2003). Realistic Ray Tracing (2nd ed.). AK Peters. ISBN 1568811985.
- Glassner (1989). An Introduction To Ray Tracing. Academic Press. ISBN 0122861604.
- Cohen; Wallace (1993). Radiosity and Realistic Image Synthesis. AP Professional. ISBN 0121782700.
- Akenine-Moller; Haines (2002). Real-time Rendering (2nd ed.). AK Peters. ISBN 1568811829.
- Gooch; Gooch (2001). Non-Photorealistic Rendering. AKPeters. ISBN 1568811330.
- Strothotte; Schlechtweg (2002). Non-Photorealistic Computer Graphics. Morgan Kaufmann. ISBN 1558607870.
- Blinn (1996). Jim Blinns Corner - A Trip Down The Graphics Pipeline. Morgan Kaufmann. ISBN 1558603875.
- Description of the 'Radiance' system
Tham khảo
[sửa | sửa mã nguồn]Liên kết ngoài
[sửa | sửa mã nguồn]- SIGGRAPH Nhóm đặc biệt quan tâm đến đồ họa của ACM — liên hội và hội nghị chuyên nghiệp / hàn lâm lớn nhất. (Association for Computing Machinery's Special Interest Group on Graphics and Interactive Techniques)
- Ray Tracing News Thông báo tin tức đối với các vấn đề kỹ thuật trong dõi quang tia.
- Real-Time Rendering resources Danh sách các liên kết tới các nguồn tài nguyên, liên quan với cuốn sách Real-Time Rendering (Kết xuất đồ họa thời gian thực).
- http://www.graphicspapers.com/ Cơ sở dữ liệu các trích dẫn tài liệu đồ họa.
- http://www.cs.brown.edu/~tor/ Lưu trữ 2004-09-23 tại Wayback Machine Danh sách các liên kết (gần đây) tới các tài liệu của Hội SIGGRAPH (và của một số khác) trên web.
- http://www.pointzero.nl/renderers/ Danh sách các liên kết tới vô số các loại phần mềm kết xuất đồ họa.
- http://www.renderman.org/ Lưu trữ 2004-03-27 tại Wayback Machine
- 'Radiance' renderer. Một hệ thống phần mềm dõi quang tia rất chính xác.
- Pixie Một phần mềm kết xuất đồ họa nguồn mở, tương thích với RenderMan, rất có hiệu quả và miễn phí.
- 'Aqsis' renderer Một phần mềm kết xuất đồ họa nguồn mở dùng kỹ thuật REYES, tương thích với RenderMan
- http://www.povray.org/ Một phần mềm dõi quang tia miễn phí.
- http://www.daylongraphics.com/products/leveller/render/techniques.htm Lưu trữ 2006-10-17 tại Wayback Machine
- 'jrMan' renderer Một phần mềm kết xuất đồ họa nguồn mở dùng kỹ thuật REYES được viết trong Java, tương thích với RenderMan.
- 'https://irender.vn/' Giải pháp render dựa trên nền tảng Cloud Rendering.
- 'http://gpuhub.net/' Giải pháp Render sử dụng GPU để tăng tốc độ render lên đến 40 lần.