Chương 2: YẾU TỐ TRONG SUỐT TRONG MÔ PHỎNG LỬA
2.1. Cơ sở lý thuyết để xây dựng kỹ thuật mô phỏng lửa
Với kỹ thuật tổng hợp hình ảnh như hiện tại sẽ rất khó khăn để mô hình hóa các hiện tượng mà bề mặt không được xác định rõ ràng, cũng như không có qui luật như mây, khói, nước, lửa….Đặc biệt, các hiện tượng này luôn chuyển động và biến đổi. Do đó, những đối tượng không định hình như thế
này sẽ không thể dùng các kỹ thuật biến đổi thông thường dành cho các vật thể cứng trong đồ họa máy tính như hiện tại, mà Particle chính là một phương pháp đặc biệt dùng để mô phỏng cho các đối tượng kiểu này.
2.1.1. Particle System là gì ?
Particle System là một kỹ thuật đồ họa máy tính dùng để mô phỏng một số hiện tượng mờ, những cái mà rất khó có thể tái tạo lại bằng các kỹ thuật dựng hình thông thường.
Ví dụ: Các vụ cháy, nổ, khói, nước chảy, tia lửa, những chiếc lá rơi, mây, sương mù, tuyết, bụi, đuôi sao băng hoặc các hiệu ứng hình ảnh trừu tượng như những đường ánh sáng …
Theo William T. Reeves, Particle System được định nghĩa như sau:
Particle System là một tập hợp các thành phần hay các hạt riêng biệt.
Particle System điều khiển tập particle đó, cho phép chúng hoạt động một cách tự động nhưng với một số thuộc tính chung nhất định [7].
2.1.2. Đặc tính của Particle System
So với các kỹ thuật dựng hình thông thường thì Particle System có ba đặc tính riêng khác biệt hẳn. Đó là:
1. Đối tượng được biểu diễn không phải là một tập các thành phần bề mặt cơ bản như các đa giác hay các miếng nhỏ bề mặt để tạo ra bề mặt biên, mà được cấu thành từ tập các hạt để tạo ra hình khối.
2. Particle System không phải là thực thể tĩnh mà nó chuyển động và thay đổi hình dạng liên tục theo thời gian. Các hạt sẽ liên tục “chết đi” và
các hạt mới sẽ được “sinh ra”.
3. Trong Particle System thì các đối tượng là không xác định, hình dạng và hình thức của nó hoàn toàn không quy định. Thay vào đó, nó sẽ
được xác định bằng các tiến trình ngẫu nhiên.
2.1.3. Ưu điểm của phương pháp Particle System
Trong mô hình hóa các đối tượng không định hình, phương pháp Particle System có một số các ưu điểm so với các kỹ thuật hướng bề mặt cổ
điển như sau:
1. Particle là một thành phần nguyên tố đơn giản hơn cả đa giác - thành phần đơn giản nhất của kỹ thuật mô hình dựa trên bề mặt. Do đó, trong cùng một khoảng thời gian xử lý trên máy tính, ta có thể tạo ra nhiều quá trình xử lý hơn, xây dựng được hình ảnh phức tạp hơn. Cũng do đơn giản nên việc tạo hiệu ứng nhòe khi chuyển động cho particle sẽ dễ
dàng hơn. Việc tạo hiệu ứng nhòe cho đối tượng khi di chuyển nhanh phần lớn đã bị bỏ qua trong kỹ thuật tổng hợp hình ảnh.
2. Định nghĩa mô hình được xác định theo thủ tục, và được điều khiển bằng các số ngẫu nhiên. Do đó, việc nhận một mô hình với độ chi tiết cao không yêu cầu thời gian thiết kế lớn như trong các hệ thống mô hình hướng bề mặt. Vì là thủ tục nên Particle System có thể tự điều chinh mức độ chi tiết của nó để phù hợp với tập tham số đã được xác định cho việc quan sát. Cũng như với các bề mặt Fractal, càng phóng đại một Particle System càng cho ta những hình ảnh chi tiết hơn,
3. Một đối tượng được mô phỏng bằng Particle System là một đối tượng
“sống”, có nghĩa là chúng thay đổi theo thời gian.
Rất khó để có thể mô hình sự chuyển động phức tạp này bằng các kỹ thuật mô hình dựa vào bề mặt đối tượng.
2.1.4. Mô hình mô phỏng bằng Particle System
Một Particle System là một tập hợp nhiều hạt nhỏ kết hợp cùng nhau tạo nên một vật thể mờ ảo, không định hình. Trong một khoảng thời gian, các hạt được tạo thành một hệ thống, di chuyển và thay đổi từ bên trong hệ thống, sau đó chết đi. Để tính toán mỗi khung hình trong một chuỗi chuyển động, trình tự các bước sau đây được thực hiện:
1. Các hạt mới được tạo ra trong hệ thống
2. Mỗi hạt mới được gán cho các thuộc tính riêng biệt
3. Các hạt đã tồn tại trong hệ thống đều sẽ bị dập tắt dần theo quy định 4. Các hạt vẫn còn sống trong hệ sẽ chuyển động và biến đổi dựa theo các
thuộc tính động của nó
5. Một hình ảnh của các hạt đang sống được kiết xuất trong bộ đệm khung hình
Particle System có thể được lập trình để thực hiện bất kỳ tập lệnh nào tại mỗi bước. Bởi vì nó là thủ tục, phương pháp này có thể kết hợp bất kỳ mô hình tính toán nào dùng để mô tả bề ngoài hay tính chuyển động của đối tượng. Ví dụ, sự chuyển động và biến đổi của các hạt có thể được gắn với các giải pháp của một hệ thống phương trình vi phân từng phần, hoặc các thuộc tính hạt có thể được chi định trên cơ sở của cơ học thống kê. Chúng ta có thể, tận dụng lợi thế của các mô hình đã được phát triển trong lĩnh vực khoa học hoặc kỹ thuật khác.
Trong phạm vi nghiên cứu, chúng ta sử dụng quy trình ngẫu nhiên đơn giản như các yếu tố thủ tục của mỗi bước trong việc tạo ra một khung hình.
Để kiểm soát hình dạng, bề mặt và động thái của các hạt trong một Particle System, chúng ta thiết kế mô hình có quyền truy cập vào một tập hợp các
tham số. Chuyển động và biến đổi của các hạt sẽ bị rằng buộc bởi các tham số
ngẫu nhiên này. Nói chung, mỗi tham số quy định cụ thể một dải giá trị mà
mỗi hạt sẽ nhận được một giá trị trong khoảng đó. Các phần dưới đây mô tả
chi tiết hơn về mô hình mô phỏng bằng phương pháp Particle System.
2.1.4.1. Quá trình sinh ra các hạt [7]
Các hạt được sinh ra trong Particle System được kiểm soát bởi các tiến trình ngẫu nhiên. Một tiến trình xác định số hạt được sinh ra và tham gia vào hệ thống trong một khoảng thời gian. Con số này sẽ ảnh hưởng đến mật độ
của đối tượng đang được xây dựng. Có hai cách để điều khiển số lượng hạt mới được sinh ra:
1. Xác định số lượng hạt trung bình được sinh ra trong một khung hình và
khoảng biến đổi của nó. Khi đó, số lượng hạt thực sự trong một khung hình f là:
Npartsf = MeanPartsf + Rand() x VariancePartsf (1) Trong đó:
Rand(): là một hàm trả về một giá trị ngẫu nhiên nằm trong đoạn [-1,1].
MeanPartsf: là số lượng trung bình các hạt.
VariancePartsf: là khoảng biến đổi của hạt.
2. Số lượng hạt phụ thuộc vào kích thước mà đối tượng thể hiện trên màn hình. Trong phương pháp này, ta cần xác định các tham số của điểm quan sát so với một khung hình cụ thể của đối tượng, tính toán vùng màn hình mà nó bao phủ và đưa ra số lượng hạt mới phù hợp. Không cần thiết tạo ra hàng ngàn hạt để bao phủ chi một vài điểm ảnh.
Phương trình cụ thể như sau:
Npartsf = (MeanPartsSAf + Rand() x VariancePartsSAf ) x ScreenArea (2)
Hình 2.1. Particle System phát ra các hạt dựa trên vùng diện tích và các thuộc tính như vị trí, góc phóng, và vận tốc khác nhau một cách ngẫu nhiên
Trong đó:
MeanPartsSAf: là số lượng hạt trung bình trên mỗi đơn vị diện tích màn hình.
VariancePartsSAf: là khoảng biến đổi của hạt.
ScreenArea: là diện tích phần màn hình mà Particle System bao phủ.
Để điều khiển cường độ của Particle System, người thiết kế phải điều khiển số lượng hạt trung bình được sinh ra cho mỗi khung hình. Tiến trình này có thể sử dụng một hàm tuyến tính đơn giản như sau:
MeanPartsf = InitialMean + DeltaMean x (f - f0) (3) Hay
MeanPartsSAf = InitialMeanSA + DeltaMeanSA x (f - f0) (4) Trong đó:
f : là khung hình hiện tại.
f0 : là khung hình đầu tiên.
InitialMean, InitialMeanSA: là số lượng hạt trung bình tại khung hình đầu tiên.
DeltaMean, DeltaMean SA: là tốc độ biến đổi và với phương trình biến đổi tuyến tính thì nó là hằng số. Tất nhiên, trong trường hợp sự biến đổi về
mật độ đối tượng phức tạp hơn thì các phương trình phức tạp hơn sẽ được sử
dụng. Ở đây, chúng ta cố gắng xây dựng mô hình mô phỏng đơn giản nhất của Particle System.
Để điều khiển việc sinh ra các hạt của Particle System, ta cần phải xác định rõ f0 và các tham số trong phương trình (3) hay (4).
2.1.4.2. Các thuộc tính của hạt
Với mỗi hạt mới được sinh ra, Particle System phải gắn sẵn giá trị cho các thuộc tính sau của nó:
1. Vị trí ban đầu
2. Vận tốc ban đầu (trong đó gồm cả tốc độ và hướng) 3. Kích thước ban đầu
4. Mầu sắc ban đầu 5. Độ trong suốt ban đầu 6. Hình dạng hạt
7. Tuổi thọ của hạt
Một vài tham số của Particle System điều khiển vị trí ban đầu của các hạt của nó. Một Particle System có một vị trí trong không gian ba chiều làm gốc. Hình dạng được tạo thành của Particle System(vùng sinh) là một không gian được xác định xung quanh điểm gốc này.
Các hạt mới của Particle System luôn được tạo ra ở vùng sinh. Một vùng sinh có thể là một hình cầu bán kính r với tâm là điểm gốc, một hình tròn bán kính r tâm là điểm gốc và song song với mặt phẳng Oxy, hoặc một hình chữ nhật chiều dài l và chiều rộng w tâm là điểm gốc và nằm song song với mặt phẳng Oyz.
Hình 2.2. Particle System với hình dạng cầu
Vùng sinh của Particle System cũng mô tả hướng chuyển động ban đầu của các hạt mới. Ví dụ như trong trường hợp vùng sinh là hình cầu, hạt bay từ
điểm gốc ra phía bên ngoài vùng hình cầu đó như một vụ nổ pháo hoa hay như trong trường hợp vùng sinh là hình tròn thì các hạt xuất phát theo phương thẳng đứng vuông góc với mặt phẳng Oxy giống như đài phun nước. Tốc độ
và hướng ban đầu cũng được tùy biến dựa vào tham số ngẫu nhiên Ta có:
InitialSpeed = MeanSpeed + Rand() x VarSpeed (5) Trong đó hai tham số của Particle System là:
MeanSpeed: là tốc độ trung bình.
VarSpeed: là khoảng biến đổi của tốc độ.
Để xác định độ mờ đục ban đầu của hạt, Particle System cũng cho nó
một độ mờ đục trung bình và một khoảng biến thiên. Độ mờ đục của hạt mới được tạo ra sẽ ngẫu nhiên nằm trong khoảng biến thiên này.
InitialOpacityRGB = MeanOpacity + Rand() x VarOpacity (6) Trong đó MeanOpacity, VarOpacity lần lượt là chi số của độ mờ đục trung bình và khoảng biến thiên của độ mờ đục.
Một cách tương tự, các thuộc tính khác đều được xác định bằng các giá
trị trung bình và một khoảng biến thiên. Trên chi là các thuộc tính thường dùng và hữu ích nhất trong hầu hết các Particle System. Tất nhiên, một Particle System có thể có nhiều thuộc tính nữa và khoảng biến thiên của chúng cũng hề bị giới hạn, nhưng tùy thuộc vào từng ứng dụng mà ta sử dụng các tham số sao cho phù hợp.
2.1.4.3. Sự chuyển động của các hạt [8]
Các hạt riêng biệt trong một Particle System chuyển động trong không gian ba chiều và thay đổi mầu sắc, độ trong suốt, kích thước theo thời gian.
Để chuyển một hạt từ khung hình này sang khung hình khác ta chi cần cộng vector vận tốc với vector vị trí của hạt. Phức tạp hơn, ta có thể sử dụng thêm một thành phần gia tốc nhằm thay đổi tốc độ chuyển động của các hạt. Với thành phần này, ta có thể mô phỏng trọng lực hay các lực khác tác động lên chuyển động của vật thể.
Hình 2.3. Sự thay đổi về mầu sắc của lửa
Sự thay đổi màu sắc, độ trong suốt hay các thuộc tính khác của hạt đều được điều khiển bởi tham số tốc độ thay đổi như trên. Tốc độ thay đổi của tham số này có thể đươc sử dụng thống nhất cho toàn bộ hạt trong hệ. Tuy nhiên, chúng ta có thể dễ dàng tăng sự đa dạng của đối tượng được mô phỏng.
2.1.4.4. Render Particle
Một khi các tham số về vị trí, hình dạng và màu sắc của tất cả các hạt đều đã được tính toán cho một khung hình thì thuật toán render sẽ được sử
dụng để tạo nên một bức tranh. Vấn đề chung của việc render particle cũng rất phức tạp tương tự việc render một đối tượng được hợp thành từ nhiều thành phần đồ họa cơ bản (như các đa giác hay các bề mặt cong). Hạt có thể che khuất các hạt khác nằm đằng sau nó. Chúng có thể trong suốt và có thể đổ
bóng lên các hạt khác trong hệ. Hơn thế nữa, các hạt có thể sống chung với các đối tượng được tạo nên bởi các thành phần đồ họa nguyên tố của phương pháp hướng bề mặt, và những đối tượng này có thể giao với các hạt.
Có hai giả định cho phép chúng ta đơn giản hóa thuật toán render. Đầu tiên, ta thừa nhận Particle System không giao với các thành phần nguyên tố
của sử dụng trong mô hình hóa hướng bề mặt, và do đó thuật toán render chi quan tâm đến hạt. Các đối tượng sử dụng kỹ thuật khác sẽ được kết hợp với các đối tượng Particle System trong một bước chuẩn bị trước đó. Nhằm cho Particle System giao hoặc nằm sau các đối tượng khác, hệ thống render sẽ
chia nhỏ hình ảnh của Particle System thành các hình ảnh con dựa vào việc chia cắt các mặt được định nghĩa trong không gian tọa độ mô hình. Những hình ảnh con này sẽ được kết hợp với các ảnh khác trong bước phối hợp. Giả
định thứ hai là mỗi hạt được coi là một nguồn sáng điểm. Với giả định này, việc xác định các bề mặt bị che không còn là vấn đề. Mỗi hạt sẽ cộng thêm một lượng ánh sáng cho các pixel nó bao phủ. Một hạt ở đằng sau không bị
che bởi các hạt trước nó mà chi làm sáng thêm các pixel nó bao phủ. Độ sáng của pixel được cộng vào và màu sắc của nó phụ thuộc vào màu sắc và độ
trong suốt của hạt. Độ sáng được cộng thêm vào một pixel không phụ thuộc vào khoảng cách của hạt tới điểm nhìn. Vị trí điểm nhìn, kích thước hạt và
hình dạng của nó xác định những pixel nào bị che phủ. Tất cả các hình dạng hạt được vẽ bằng kĩ thuật khử răng cưa (antialiased) để tránh hiện tượng răng cưa và nhấp nháy tạm thời. Ánh sáng tại một pixel được cộng vào từ nhiều hạt, do đó thuật toán render sẽ cộng dần các cường độ R, G, B riêng biệt cho tới khi đạt giá trị cực đại chứ không để hạt trước che phủ hạt sau nó.
Với thuật toán và các giả định này, ta không cần phải sắp xếp các hạt.
Chúng được render vào bộ đệm khung hình ở bất cứ thứ tự nào chúng được sinh ra. Đổ bóng không còn là vấn đề do hạt không phản xạ mà trực tiếp phát ra ánh sáng.
Hình 2.4. Kỹ thuật Anti-Aliased (áp dụng trong hình bên phải) 2.1.4.5. Sự phân cấp của Particle System
Hệ thống của chúng ta có cơ chế hỗ trợ tổ chức và điều khiển hệ thống phân cấp Particle System. Người thiết kế mô hình có thể tạo ra các Particle System mà trong đó các hạt tự bản thân chúng cũng chính là một Particle System. Khi Particle System cha thay đổi, tất cả các Particle System con cũng như các hạt của chúng cũng thay đổi. Màu sắc trung bình và khoảng biến đổi của Particle System cha được dùng để chọn ra màu sắc và khoảng biến đổi