CÁC KIẾN THỨC CƠ BẢN CỦA ĐỒ HỌA 3D
ÁNH SÁNG
Ánh sáng trong đồ họa 3D rất quan trọng, đặc biệt trong việc tạo ra bóng Có nhiều loại nguồn sáng, từ ánh sáng mặt trời chiếu theo một hướng đến ánh sáng chiếu toàn khung cảnh Trong một khung cảnh, các nguồn sáng có thể được bật tắt độc lập giống như công tắc đèn Theo mô hình ánh sáng của OpenGL, ánh sáng bao gồm bốn thành phần chính: Emissive Light, Ambient Light, Diffuse Light và Specular Light, và các thành phần này có thể được tính toán riêng biệt trước khi kết hợp lại.
Ánh sáng Ambient Light là loại ánh sáng không xác định được nguồn gốc và bị phân tán bởi môi trường xung quanh Khi không thể xác định nguồn sáng trong một khung cảnh, kết quả thu được tương tự như khi sử dụng ánh sáng Ambient Light.
Hình 1.1: Chiếc ấm được chiếu bằng Ambient Light
Ánh sáng khuếch tán (Diffuse Light) là loại ánh sáng chiếu theo một hướng nhất định, nhưng khi gặp bề mặt, nó sẽ phân tán đều ra mọi hướng Điều này khiến cho ánh sáng trở nên đồng đều, bất kể vị trí của người quan sát Tất cả các nguồn sáng phát ra từ một điểm hay một hướng cụ thể đều chứa thành phần ánh sáng khuếch tán.
Hình 1.2: Ấm chè được chiều bằng Diffuse Light
Ánh sáng specular, hay còn gọi là ánh sáng phản xạ, là hiện tượng ánh sáng phản chiếu theo quy luật phản xạ khi gặp bề mặt Hiện tượng này thường dễ dàng nhận thấy trên các bề mặt cong.
Hình 1.3 Ấm chè được chiếu bằng Specular Light
HIỂN THỊ 3D
Trong mô hình 3D, các đối tượng được xác định thông qua tọa độ thế giới, và người dùng cần thiết lập vị trí cùng hướng của camera ảo trong không gian 3D Đồng thời, việc xác định vùng nhìn, tức là khu vực không gian hiển thị trên màn hình, cũng rất quan trọng để tạo ra trải nghiệm hình ảnh chân thực và sống động.
Việc chuyển từ các tọa độ thế giới sang tọa độ màn hình đƣợc thực hiện theo 3 bước (hình 1.4):
Bước đầu tiên trong quá trình thiết lập camera ảo là thực hiện một phép biến đổi để đưa nó về vị trí và hướng tiêu chuẩn, với điểm nhìn (eyepoint) tại gốc tọa độ, hướng nhìn trùng với hướng âm của trục Z Trong hệ tọa độ này, trục X chỉ về phía bên phải và trục Y chỉ lên phía trên màn hình, được gọi là Hệ tọa độ Mắt (Eye Coordinate System) Phép biến đổi từ tọa độ thế giới sang tọa độ mắt là một phép biến đổi affine, được biết đến với tên gọi phép biến đổi hiển thị (Viewing Transformation) Cả hai loại tọa độ này đều được biểu diễn bằng tọa độ đồng nhất (Homogeneous Coordinates) với w=1.
Bước thứ 2 là chuyển đổi tọa độ mắt sang tọa độ của thiết bị chuẩn hóa (Normalized Device Coordinates) để xác định vùng không gian mà chúng ta muốn quan sát trong một khối lập phương tiêu chuẩn.
Các điểm ở gần điểm nhìn (điểm đặt camera) hơn sẽ có thành phần z nhỏ hơn
Bước này sẽ gồm 3 bước con
Bước cuối cùng trong phép biến đổi cổng nhìn (Viewport Transformation) kết hợp giữa phép co giãn tuyến tính và phép tịnh tiến, nhằm chuyển đổi tọa độ thiết bị chuẩn hóa (1 x 1, 1 y 1) thành tọa độ Pixel của màn hình Trong quá trình này, thành phần z (1 z 1) được chuyển đổi sang đoạn [0,1] và sử dụng như giá trị chiều sâu (Depth-Value) trong thuật toán Z-Buffer, giúp xác định mặt nào sẽ được hiển thị.
Bước thứ 2 bao gồm 3 bước con Đầu tiên, thực hiện phép chiếu chuyển từ vùng nhìn sang khối lập phương tiêu chuẩn với tọa độ đồng nhất (1, 1, 1) Khi sử dụng phép chiếu trực giao, vùng nhìn sẽ có dạng ống song song 3D, trong khi phép chiếu đối xứng tạo ra hình tháp cụt với đỉnh tại gốc tọa độ Hệ tọa độ đồng nhất thu được sau phép chiếu gọi là hệ tọa độ cắt (Clipping Coordinate System) Tiếp theo, các vùng không nằm trong khối tiêu chuẩn sẽ bị cắt, và các đa giác, đường thẳng chỉ giữ lại phần nằm trong khối nhìn tiêu chuẩn Cuối cùng, các tọa độ đồng nhất được chuyển sang tọa độ thiết bị bằng cách chia x, y, z cho w, với phép chia này được gọi là phép chia phối cảnh (Perspective Division), đảm bảo hiển thị đúng các động phối cảnh trên màn hình.
Hình 1.4: Tổng quan về hiển thị 3D và các phép chiếu
1.2.2 Biểu diễn điểm và các phép biến đổi
Sự chuyển đổi từ tọa độ thế giới sang tọa độ thiết bị bao gồm một chuỗi các phép biến đổi affine và phép chiếu trong không gian Descartes 3 chiều.
Các phép biến đổi affine và chiếu trong không gian Descartes 3 chiều được biểu diễn hiệu quả bằng ma trận 4x4 tương ứng với tọa độ đồng nhất (x,y,z,w) Điểm 3D với tọa độ đồng nhất (x,y,z,w) có thể chuyển đổi sang tọa độ affine thông qua công thức (x/w, y/w, z/w).
Mối quan hệ giữa tọa độ affine và tọa độ đồng nhất không phải là quan hệ 1-1 Để chuyển từ tọa độ affine (x,y,z) sang tọa độ đồng nhất, ta chỉ cần đặt w=1, tạo thành (x,y,z,1) Điều này cho thấy rằng tất cả các tọa độ thế giới đều được biểu diễn theo cách này.
Chúng ta sẽ sử dụng các ma trận để biểu diễn các phép biến đổi affine như co giãn, phép quay và phép tịnh tiến, đảm bảo rằng thành phần w (w=1) không bị thay đổi.
● Tịnh tiến bởi véc tơ T ( T x , T y , T z ):
● Phép co giãn theo các nhân tố S ( S x , S y , S z )
● Phép quay quanh gốc tọa độ mà theo đó tập các véc tơ chuẩn tắc là { u , v , n }, trực giao từng đôi một, sẽ đƣợc chuyển về { X , Y , Z }
1.2.3 Phép biến đổi hiển thị
Phép biến đổi hiển thị cho phép tạo ra một camera ảo tùy chỉnh, với điểm nhìn trùng với gốc tọa độ và hướng nhìn theo chiều âm của trục Z Sau khi thực hiện phép biến đổi, trục Y sẽ chỉ lên phía trên màn hình, trong khi trục X sẽ chỉ về phía bên phải.
Để xác định vị trí của camera ảo một cách thuận tiện, cần xác định điểm nhìn E, một điểm tham chiếu R trong khung nhìn và hướng V, hướng này sẽ chỉ lên phía trên trên màn hình.
Phép biển đổi hiển thị sẽ gồm 2 bước:
● Một phép tịnh tiến sẽ đưa điểm nhìn E về gốc tọa độ Ma trận biến đổi tương ứng sẽ là M t ( E) Kết quả sẽ nhƣ sau:
Một phép quay sẽ thay đổi hướng nhìn về trục Z, làm cho vectơ V quay về mặt phẳng YZ Để vectơ V trùng với trục Y, nó cần phải vuông góc với hướng nhìn Trước tiên, chúng ta sẽ xây dựng tập hợp các véc tơ chuẩn tắc phù hợp trong tọa độ thế giới.
R n E Ngược với hướng nhìn Z ( Oz ) n V n u V Chỉ về phía phải, vuông góc với n X v n u Chỉ lên giống V , nhƣng vuống góc với n và u Y
Nhƣ vậy ma trận của phép quay sẽ là: M r ( u , v , n )
Và do đó ma trận của phép biến đổi sẽ là:
Hình 1.5: hiển thị phép biến đổi
Trong đó u, v và v đƣợc tính từ E, R và V
Trong phép chiếu trực giao, vùng không gian hiển thị được xác định như một ống song song trong hệ tọa độ mắt, với các mặt song song với hệ tọa độ Kích thước và vị trí của vùng hiển thị phụ thuộc vào các tọa độ x left, x right, y bottom, y top, z front và z back Cửa sổ hiển thị được xác định bởi các điểm (x left, y bottom) và (x right, y top) trên mặt phẳng chiếu, cần được chuẩn hóa về hình vuông [-1,+1]² Hai mặt phẳng cắt z front và z back xác định giới hạn chiều sâu, với tọa độ các điểm trong không gian phải thỏa mãn điều kiện z back ≤ z ≤ z front Giá trị chiều sâu (depth value) của các điểm phải nằm trong khoảng [-1,+1], trong đó các điểm gần mắt hơn sẽ có giá trị chiều sâu nhỏ hơn.
Hình 1.6: Vùng không gian hiển thị của phép chiếu trực giao
Phép chiếu trực giao thu đƣợc bằng cách thực hiện các phép biến đổi sau theo thứ tự:
● Phép tịnh tiến M t ( M) sẽ đƣa tâm của vùng không gian hiển thị về gốc tọa độ của hệ tọa độ mắt
● Một phép co giãn để đưa kích thước của vùng hiển thị về 2 đơn vị mỗi chiều
● Một phép đối xứng qua mặt XY để các điểm nằm gần hơn sẽ nhận giá trị z nhỏ hơn
Phép co giãn và phép đối xứng ở trên có thể thu đƣợc chỉ bằng một phép biển đổi đơn: M s (S) với:
Nhƣ vậy ma trận của phép chiếu trực giao sẽ là:
Phép chiếu trực giao giữ nguyên thành phần z vì đây là một phép biến đổi affine Phép chiếu này thường được áp dụng trong các lĩnh vực yêu cầu duy trì các quan hệ hình học, chẳng hạn như trong thiết kế bằng máy tính (CAD).
Phép chiếu phối cảnh trong thế giới 3D gần gũi hơn với cách nhìn của con người, khi tất cả các điểm trên một đường thẳng qua điểm nhìn được ánh xạ lên cùng một điểm trên màn hình 2D Điểm ảnh này được xác định bởi tọa độ x và y Để xác định điểm nào sẽ được hiển thị khi hai điểm ánh xạ vào cùng một vị trí trên màn hình, thuật toán Z-buffer sẽ so sánh chiều sâu của chúng Do đó, cần định nghĩa một thành phần tọa độ trên mặt phẳng XY không chỉ dựa vào khoảng cách từ điểm đó đến điểm nhìn, mà còn được tính toán một cách đơn giản để xác định các mặt sẽ hiển thị.
BỘ ĐỆM VÀ CÁC PHÉP KIỂM TRA
Một mục đích quan trọng của các chương trình đồ họa là hiển thị hình ảnh trên màn hình, được cấu tạo từ các pixel có khả năng hiển thị màu sắc Trong quá trình xử lý, dữ liệu chưa trở thành pixel mà chỉ là các “mảnh” (Fragments) chứa thông tin như màu sắc và giá trị chiều sâu Những mảnh này sẽ trải qua các phép kiểm tra và thao tác cần thiết trước khi được vẽ lên màn hình.
Nếu mảnh đó vượt qua các phép kiểm tra, nó sẽ trở thành các pixel Để vẽ các pixel này, cần biết màu sắc của chúng, và thông tin về màu sắc của mỗi pixel được lưu trữ trong bộ đệm màu.
Bộ đệm (Buffer) là nơi lưu trữ dữ liệu cho từng pixel trên màn hình, với mỗi loại bộ đệm chứa dữ liệu khác nhau cho pixel và bộ nhớ cho mỗi pixel có thể khác nhau giữa các bộ đệm Tuy nhiên, trong cùng một bộ đệm, hai pixel bất kỳ sẽ được cấp cùng một lượng bộ nhớ Một bộ đệm lưu trữ một bít thông tin cho mỗi pixel được gọi là bitplane Một số bộ đệm phổ biến bao gồm Color Buffer, Depth Buffer, Stencil Buffer và Accumulation Buffer.
1.3.1.1 Khái niệm: Là bộ đệm lưu trữ giá trị chiều sâu cho từng Pixel Nó được dùng trong việc loại bỏ các bề mặt ẩn Giả sử 2 điểm sau các phép chiếu đƣợc ánh xạ vào cùng một pixel trên màn hình Nhƣ vậy điểm nào có giá trị chiều sâu (z) nhỏ hơn sẽ đƣợc viết đè lên điểm có giá trị chiều sâu lớn hơn Chính vì vậy nên ta gọi bộ đệm này là Z-buffer
1.3.1.2 Depth test: Với mỗi pixel trên màn hình, bộ đệm chiều sâu lưu khoảng cách vuông góc từ điểm nhìn đến pixel đó Nên nếu giá trị chiều sâu của một điểm đƣợc ánh xạ vào pixel đó nhỏ hơn giá trị được lưu trong bộ đêm chiều sâu thì điểm này được coi là qua Depth test (depth test pass) và giá trị chiều sâu của nó đƣợc thay thế cho giá trị lưu trong bộ đệm Nếu giá trị chiều sâu của điểm đó lớn hơn giá trị lưu trong Depth Buffer thì điểm đó “trƣợt” phép kiểm tra chiều sâu (Depth test Fail)
1.3.2.1 Khái niệm: Bộ đệm khuôn dùng để giới hạn một vùng nhất định nào đó trong khung cảnh Hay nói cách khác nó đánh dấu một vùng nào đó trên màn hình Bộ đệm này đƣợc sử dụng để tạo ra bóng hoặc để tạo ra ảnh phản xạ của một vật thể qua gương…
1.3.2.2 Stencil Test: Phép kiểm tra Stencil chỉ đƣợc thực hiện khi có bộ đệm khuôn
Nếu không có bộ đệm khuôn, phép kiểm tra Stencil luôn được coi là đạt Phép kiểm tra Stencil so sánh giá trị trong Stencil Buffer tại mỗi Pixel với một giá trị tham chiếu theo hàm so sánh đã định sẵn OpenGL cung cấp các hàm hỗ trợ cho quy trình này.
In OpenGL, comparison functions such as GL_NEVER, GL_ALWAYS, GL_LESS, GL_LEQUAL, GL_EQUAL, GL_GEQUAL, GL_GREATER, and GL_NOTEQUAL determine the outcome of fragment tests For instance, when using the GL_LESS function, a fragment passes the test if its reference value is less than the value stored in the Stencil Buffer.
Ngoài ra OpenGL còn hỗ trợ một hàm là glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
Hàm này xác định dữ liệu trong stencil Buffer sẽ thay đổi thế nào nếu nhƣ một
Trong kiểm tra stencil, có ba hàm chính là fail, zfail và zpass, với các giá trị như GL_KEEP, GL_ZERO, GL_REPLACE, GL_INCR, và GL_DECR Các hàm này tương ứng với việc giữ nguyên giá trị hiện tại, thay thế bằng 0, thay thế bằng một giá trị tham chiếu, cũng như tăng hoặc giảm giá trị trong stencil buffer Hàm fail sẽ được áp dụng khi
Nếu "mảnh" đó không vượt qua bài kiểm tra stencil, hàm zfail sẽ được áp dụng khi bài kiểm tra độ sâu thất bại Ngược lại, hàm zpass sẽ được sử dụng nếu bài kiểm tra độ sâu thành công hoặc khi không có bài kiểm tra độ sâu nào được thực hiện Mặc định, cả ba tham số này đều có giá trị là GL_KEEP.
K SINH ẢNH
Trong đồ họa 3D, quá trình Rendering hay kết xuất đồ họa là việc tạo ra hình ảnh từ mô hình thông qua phần mềm Nhiều thuật toán đã được nghiên cứu để tối ưu hóa quy trình này, và phần mềm kết xuất có thể áp dụng các kỹ thuật như tạo ảnh điểm (rasterization), chiếu tia (ray casting) và dò tia (ray tracing) nhằm tạo ra hình ảnh cuối cùng chất lượng cao.
Ray tracing là kỹ thuật sinh ảnh bằng cách theo dõi đường đi của ánh sáng qua các điểm ảnh trong mặt phẳng ảnh, mô phỏng hiệu ứng khi ánh sáng tương tác với bề mặt đối tượng ảo Kỹ thuật này bắt đầu từ Camera, dò tìm bề mặt đầu tiên và xác định hướng đi tiếp theo của tia sáng dựa vào tính trong suốt hay phản xạ của bề mặt Ray tracing cho phép tính toán môi trường xung quanh trong chiếu sáng vật thể, tạo ra khung hình chân thực hơn so với phương pháp kết xuất quét dòng truyền thống Kỹ thuật này đặc biệt phù hợp cho các ứng dụng như ảnh tĩnh, phim và hiệu ứng truyền hình đặc biệt, đồng thời có khả năng mô phỏng nhiều hiệu ứng quang học như phản xạ, khúc xạ, tán xạ và quang sai màu.
KỸ THUẬT SINH ẢNH RAYTRACING
Ray tracing là phương pháp tạo hình ảnh chân thực bằng máy tính, theo dõi đường đi của từng tia sáng từ mắt người quan sát đến các điểm trên bề mặt Giải thuật Ray tracing hoạt động bằng cách mô phỏng sự tương tác của ánh sáng với các đối tượng trong không gian 3D để tạo ra hình ảnh sống động và chính xác.
1 Với mỗi điểm trên trên mặt phẳng của ảnh cần dựng, phóng một tia từ mắt người tới điểm đó
2 Nếu tia đó không cắt vật nào thì màu của điểm đó trên ảnh là màu nền
3 Nếu tia đó có cắt một vật nào đó, thì tìm điểm cắt gần điểm nhìn nhất
Tia sáng tại điểm cắt đƣợc tách làm hai tia là tia phản xạ và tia khúc xạ
4 Với từng tia phản xạ và khúc xạ lại tiếp tục thực hiện lần theo (tracing) bằng cách tính đệ quy từ bước 2
5 Nếu độ xâu của của việc tính đệ quy đã đạt một tới giá trị cho trước, không tiếp tục lần theo nữa
6 Ánh sáng tại điểm cắt được tính bằng phương trình:
Với I: Cường độ sáng của điểm giao cắt
I local : Cường độ sáng nội tại của điểm giao cắt
K r : Hệ số phản xạ của bề mặt
R: Lƣợng ánh sáng nhận đƣợc bằng cách lần theo tia phản xạ
Hình 2.1: Giải thuật Ray tracing
K t : Hệ số truyền qua của bề mặt
T: Lƣợng ánh sáng nhận đƣợc bằng cách lần theo tia khúc xạ
7 Tính I local bằng cách nối điểm giao cắt với tất nguồn sáng, kiểm tra xem đoạn đó có cắt bất cứ vật nào không, nếu có thì vật đó bị che khỏi nguồn sáng đó, nếu không thì I local trong phương trình (2) được xác định nhờ vào tổng cường độ chiểu sáng của các nguồn sáng chiếu đến điểm đó và đặc tính của bề mặt tại điểm đó
Ray Tracing là phương pháp để tạo ta những hình ảnh giống như thật:
Sự tương tác giữa ánh sáng và bóng tối với các vật thể được thể hiện giống như ta thấy trong tự nhiên
Sự kết hợp đơn giản của các hiệu ứng nhƣ bóng, sự phản xạ, khúc xạ
Mô phỏng theo đường đi giữa tia sáng và vật thể theo quy luật của quang hình học
Những hình ảnh mà chúng ta thấy đƣợc là sự tổ hợp màu của hàng tỉ tia sáng đi vào mắt chúng ta
Vì vậy, Ray Tracing đề ra phương pháp để tính toán màu sắc của tia sáng
Ray Tracing là phương pháp tổng quát rất hữu hiệu để hiện thị các mặ cong
Hình 2.2: hình ảnh Ray Tracing
Là tính đơn giản của thuật toán
Sử dụng nguyên lý quang hình nên tạo ra những hình ảnh rất giống thực tế Áp dụng cho nhiều loại mặt cong
Xử lý nhiều hình ảnh đổ bóng và phản chiếu phức tạp khiến cho bộ xử lý phải thực hiện một khối lƣợng công việc khổng lồ
Tuy nhiên, bộ xử lý đa nhân hiện nay sẽ giúp quá trình ray-tracing nhanh chóng đƣợc thực hiện
THUẬT TOÁN KẾT HỢP RAYTRACING VÀ RADIOSITY
Radiosity là giải thuật nổi tiếng đầu tiên, mô phỏng sự tương tác ánh sáng giữa các bề mặt Trong khi đó, giải thuật Ray tracing theo dõi đường đi của tia sáng qua các hiện tượng phản xạ và tán xạ khi chúng giao cắt với vật thể Hai giải thuật này kết hợp lại tạo ra hình ảnh chân thực hơn về một căn phòng được chiếu sáng, mang lại màu sắc gần gũi với thực tế.
Kết hợp hai giải thuật này gặp khó khăn do mỗi giải thuật thường được triển khai trên các mô hình vật thể khác nhau, nhằm tối ưu hóa hiệu quả tính toán và rút ngắn thời gian dựng ảnh.
Cả hai mô hình Multi Ray Tracing đều yêu cầu khối lượng tính toán lớn Do đó, khi kết hợp hai phương pháp này, cần tìm các mô hình vật thể phù hợp để giảm thiểu khối lượng tính toán và khắc phục các dị vật hình ảnh phát sinh khi áp dụng thuật toán này.
Radiosity là một kỹ thuật dựng ảnh giúp các vật thể tương tác với nhau thông qua năng lượng ánh sáng, làm cho chúng trở nên có thể nhìn thấy Kỹ thuật này cho phép một vật thể được chiếu sáng bởi năng lượng ánh sáng từ các vật thể xung quanh Để hiển thị các thông số của những vật thể đã được tính toán, cần sử dụng các giải thuật như Z-buffer hoặc Ray tracing.
Hình 2.4: Bề mặt vật thể được chia nhỏ Hình 1.5: Miếng nhận ánh sáng từ các miếng xung quanh
Giải thuật radiosity đƣợc mô tả nhƣ sau:
Chia nhỏ các bề mặt vật thể thành những miếng nhỏ
Trong mỗi cặp hai miếng trong cảnh, tỷ lệ giữa năng lượng rời từ miếng nguồn đến miếng đích so với tổng năng lượng rời khỏi miếng nguồn được gọi là form factor Để tính toán năng lượng của từng miếng, áp dụng phương trình (1) để lần lượt xác định giá trị E cho mỗi miếng.
Với B i : Tổng năng lƣợng phát xạ của miếng thứ i
E i : Năng lƣợng phát xạ nội tại của miếng đó i : Độ phản xạ của miếng thứ i
E i : form factor giữa miếng thứ i và thứ j
Lặp lại nhiều lần thuật toán trên để các bề mặt tương tác năng lượng với nhau nhiều lần nhƣ trong thực tế
Hình (2.7) đến (2.10) minh họa kết quả từ việc tính toán Radiosity nhiều lần, tạo ra bức ảnh với độ sáng gần giống thực tế Khi số lần tính toán Radiosity tăng lên, màu sắc và độ sáng của các vật thể trong ảnh trở nên hài hòa và chân thực hơn Điều này nhờ vào thuật toán Radiosity mô phỏng sự tương tác giữa các bề mặt, giúp các vật thể đạt được độ sáng hợp lý sau nhiều lần tương tác.
Hình 2.7: Ảnh trước khi thực hiện tính toán Radiosity
Hình 2.8: Ảnh khi thực hiện tính
Hình 2.9: Ảnh khi thực hiện tính
Hình 2.10: Ảnh khi thực hiện tính Radiosity nhiều lần Đặc điểm của giải thuật Radiosity
Giải thuật Radiosity tạo ra hình ảnh với bóng mờ tự nhiên, mô phỏng tương tác năng lượng ánh sáng giữa các bề mặt mà không phụ thuộc vào góc nhìn Các bức ảnh sử dụng Radiosity có sự phân bố độ sáng hợp lý, tạo ra bóng mờ cho các vật thể, tuy nhiên vẫn thiếu bóng phản xạ.
2.2.2 Thuật toán kết hợp hai giải thuật
Dựa trên đặc tính của hai giải thuật, giải thuật kết hợp của hai giải thuật này đƣợc đề ra nhƣ sau:
Thực hiện việc tính toán theo giải thuật Radiosity trên các bề mặt của các vật thể
Bước tiếp theo thực hiện theo giải thuật Ray tracing trên các vật thể sau khi đã thực hiện tính toán theo giải thuật Radiosity
Bước 7 trong giải thuật Ray tracing không cần tính mà I local trong phương trình (2) đã được tính với giải thuật Radiosity trước đó
Trong kỹ thuật dựng ảnh, có hai mô hình cơ bản cho các vật thể Mô hình đầu tiên là những vật thể có mặt được xác định bởi các phương trình toán học, chẳng hạn như mặt cầu và mặt trụ.
Mô hình này rất phù hợp cho việc áp dụng thuật toán Ray tracing, vì nó hỗ trợ tính toán giao diện hiệu quả Trong khi đó, thuật toán Radiosity yêu cầu các bề mặt phải được chia nhỏ để phân bố nguồn sáng một cách chính xác và gần gũi với thực tế Tuy nhiên, việc chia nhỏ các bề mặt theo các phương trình toán học lại rất phức tạp và hiện chưa có thuật toán hiệu quả cho vấn đề này.
Mô hình vật thể thứ hai được xem xét là mô hình với bề mặt là lưới điểm, nơi các bề mặt được chia nhỏ thành các miếng nhỏ hơn nhằm thuận tiện cho việc tính toán theo thuật toán Radiosity Tuy nhiên, mô hình này không phù hợp cho thuật toán Ray tracing, vì việc tìm giao cắt của tia với miếng đầu tiên yêu cầu kiểm tra tất cả các miếng, dẫn đến giảm tốc độ tính toán khi số lượng miếng tăng lên Dù vậy, những hạn chế về tốc độ có thể được cải thiện thông qua việc áp dụng một số thuật toán tối ưu hóa.
Mô hình các vật thể được xây dựng từ lưới các điểm đã được chọn, tạo nên cấu trúc cụ thể cho từng loại vật thể.
Mỗi vật thể bao gồm một tập hợp các bề mặt, với mỗi bề mặt đƣợc cho thông số phản xạ và phát xạ với các màu R, G, B
Mỗi bề mặt đó lại được chia nhỏ thành một lưới của một hay nhiều miếng tam giác hay tứ giác
Một miếng sau đó lại đƣợc chia nhỏ thành một hay nhiều thành phần nhỏ hơn
Mỗi thành phần và miếng trong cấu trúc được xác định bởi các đỉnh riêng biệt Do nhiều đỉnh có thể thuộc về nhiều thành phần hoặc miếng khác nhau, nên các đỉnh cần được định nghĩa một cách riêng rẽ Các thành phần và miếng sẽ chỉ ra các đỉnh của chúng thông qua chỉ số tương ứng trong dãy các đỉnh.
Khắc phục vấn đề gặp phải
Sau khi thực hiện Radiosity, các miếng trên cùng một bề mặt sẽ có độ sáng tối khác nhau, phản ánh phân bố ánh sáng thực tế Những miếng gần nguồn sáng sẽ sáng hơn, tạo ra hiệu ứng ánh sáng tự nhiên.
Mô hình vật thể sử dụng lưới điểm, trong đó những phần bị khuất ánh sáng sẽ tối hơn, tạo ra bề mặt kẻ sọc không đẹp (xem hình 2.12) Để cải thiện vấn đề này, cần thực hiện quá trình đánh bóng giữa các miếng Chương trình áp dụng hai thuật toán đánh bóng nổi tiếng là Gouraud và Phong.
Hình 2.12: Bức ảnh khi chưa thực hiện đánh bóng
Triển khai giải thuật đánh bóng Gouraud
Triển khai giải thuật này bằng cách gán độ sáng cho mỗi đỉnh, được tính bằng trung bình độ sáng của các miếng có chung đỉnh Độ sáng của một điểm trong miếng được nội suy từ độ sáng của các đỉnh thông qua phương pháp nội suy nhị phân, như minh họa trong hình (2.13) và các phương trình (3), (4), (5).
Hình 2.14: Ảnh khi thực hiện đánh bóng theo phương pháp Gouraud
Triển khai giải thuật đánh bóng Phong
CHƯƠNG TRÌNH THỬ NGHIỆM
BÀI TOÁN
Các cảnh trong ray tracing được mô tả bằng toán học bởi lập trình viên hoặc nghệ sĩ, thường thông qua các công cụ trung gian Ngoài ra, các cảnh này còn có thể tích hợp dữ liệu từ hình ảnh và mô hình được ghi lại bởi các thiết bị như máy ảnh kỹ thuật số.
Mỗi tia sáng cần được kiểm tra với các tập con của toàn bộ đối tượng trong cảnh Khi xác định được đối tượng gần nhất, thuật toán sẽ ước lượng ánh sáng tại giao điểm, xem xét tính chất vật liệu của đối tượng và tổng hợp thông tin để tính toán màu sắc cuối cùng của điểm ảnh Các thuật toán cụ thể và vật liệu phản xạ, khúc xạ có thể yêu cầu nhiều tia hơn để tạo ra một cảnh đầy đủ.
Hình 3.1: Vật thể chưa qua xử lý
MỘT SỐ KẾT QUẢ CHƯƠNG TRÌNH
Chương trình của em được viết bằng C# 2.0
Một số hình ảnh sau khi thực hiện chương trình
Hình 3.2: hình ảnh vật thể sau xử lý
Hình 3.3: khối cầu trên nền gỗ
Hình 3.4: Quả cầu trên nền đá hoa
Hình 3.5: hộp gỗ và quả cầu pha lê
Hình 3.6: nhiều quả cầu trong không trung
Ray Tracing hiện đang đóng vai trò quan trọng trong công nghệ, đặc biệt trong việc tạo ra hình ảnh và hiệu ứng như bóng, trong suốt và phản chiếu Công nghệ này hỗ trợ đắc lực trong nhiều lĩnh vực thiết kế đồ họa, giúp đơn giản hóa các quy trình như ánh sáng, tạo bóng và khử răng cưa, mang lại hiệu quả cao hơn cho các nhà thiết kế.
Ray Tracing đã được áp dụng rộng rãi trong nhiều lĩnh vực, đặc biệt là trong ngành phim ảnh, nơi mà tất cả các hiệu ứng hình ảnh chất lượng cao của Hollywood đều sử dụng công nghệ này Các nhà phát triển đã nhận ra những lợi ích vượt trội của Ray Tracing, giúp tạo ra những hình ảnh chân thực và ấn tượng hơn.
Ray Tracing là một công nghệ thú vị được ứng dụng trong quá trình phát triển game, giúp các studio game sản xuất dữ liệu thô để tạo ra các hiệu ứng thị giác ấn tượng, chẳng hạn như bản đồ ánh sáng.
Đề tài nghiên cứu của tôi tập trung vào ray tracing và các kỹ thuật sinh ảnh từ ray tracing Qua quá trình nghiên cứu, tôi đã nắm vững các phương pháp xử lý ảnh và thực hiện một số kỹ thuật đơn giản Tôi hy vọng rằng những kiến thức thu được từ đồ án này sẽ hỗ trợ cho công việc và nghiên cứu trong tương lai.