Kết xuất đồ họa

Sử dụng

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.

Kỹ thuật

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

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

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

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

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.

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

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

Đố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

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).

Nền tảng hàn lâm

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).

Các tính chất quang hình học

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

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.