2. 2. Kĩ thuật mô phỏng Particles
Ta có thể hình dung các bƣớc thực hiện của kĩ thuật Particles thông qua hình 2. 6 dƣới đây.
Việc đầu tiên là khởi tạo các giá trị của từng thuộc tính cho từng Particle của từng loại Particles (có thể có nhiều loại Particle trong một mô phỏng, mỗi loại sẽ có những thuộc tính và tính chất biến đổi khác nhau). Công việc này chỉ thực hiện một lần. Sau đó bản thân mỗi Particles đƣợc tính toán và cập nhật các thuộc tính mới để phù hợp với mục đích mô phỏng. Quá trình này liên tục đƣợc lặp đi lặp lại. Sau mỗi lần rendering Particles vào hệ thống, tuổi thọ của Particles sẽ bị giảm dần và nếu nhƣ tuổi thọ của nó giảm xuống bằng 0 thì nó sẽ bị loại ra khỏi hệ thống.
Tuy nhiên, các thuộc tính trên hình 2.6 chỉ mang tính chất đại diện cho các đối tƣợng mô phỏng đơn giản. Với mỗi đối tƣợng thì việc xây dựng các thuộc tính có thể trùng nhau ít nhiều tùy thuộc vào độ phức tạp hay đơn giản của đối tƣợng đó.
2. 2. 1. Xây dựng các thuộc tính cho Particles
Tùy vào từng đối tƣợng mô phỏng để xây dựng các thuộc tính cho phù hợp. Với những đối tƣợng đơn giản thì số lƣợng các thuộc tính ít hơn, những đối tƣợng phức tập thì đòi hỏi phải có nhiều thuộc tính mới có thể lột tả đƣợc chi tiết đặc điểm của đối tƣợng. Trong một Particles Systems chứa các thuộc tính phổ biến nhƣ sau:
Số thứ tự Thuộc tính Mô tả
1 Vị trí Xác định vị trí của một hạt trong không gian 3 chiều (hoặc 2 chiều).
2 Vận tốc Xác định hƣớng và tốc độ di chuyển của các Particles.
3 Màu sắc Thiết lập các giá trị màu đỏ, xanh và xám của mỗi Particles.
4 Tuổi thọ
Xác định thời gian tồn tại của các Particles trong mỗi Particles Systems trƣớc khi bị rời khỏi.
5 Hình dạng, Kích thƣớc
Mặc định hình dạng và kích thƣớc ban đầu cho Particles.
6 Độ mờ Xác định độ trong suốt của Particles trong hệ thống.
Nhìn chung, các thuộc tính của một hạtcó thể là tĩnh hoặc động nhƣng phần lớn là động. Thuộc tính động thay đổi theo thời gian. Có nghĩa rằng tại thời điểm thời gian là t1 thì các thuộc tính của nó sẽ có những sự thay đổi so với khoảng thời gian t0. Ví dụ nhƣ: kích thƣớc to hơn, màu sắc từ đỏ chuyển sang vàng, vận tốc nhanh hơn hay một ví dụ cụ thể hơn đó là mô phỏng lửa bằng kĩ thuật Particles của tác giả William T. Reeves, các Particles ở nơi ngọn lửa xuất hiện thì kích thƣớc nhỏ và màu sắc vàng rực nhƣng sau đó nó chuyển động dần lên phía trên ngọn lửa thì hình dạng và kích thƣớc của nó phải thay đổi, màu sắc của nó nhạt dần và mất đi (thời gian sống của nó đã hết). Với các thuộc tính tĩnh thì không thay đổi sau mỗi lần lặp có nghĩa rằng khi nó đƣợc khởi tạo giá trị ban đầu nhƣ thế nào thì nó sẽ giữ nguyên nhƣ vậy cho tới khi kết thúc mô phỏng.
Dƣới đây, tác giả sẽ đặc tả chi tiết từng thuộc tính của Particles.
Thuộc tính vị trí: vị trí của một hạt là nơi mà nó xuất hiện, có thể là tọa độ
(x, y) trong không gian 2 chiều hoặc tọa độ (x, y, z) trong không gian ba chiều. Thuộc tính này thƣờng là động bởi các Partices không đứng yên mà liên tục di dời. theo một quy tắc nào đó trong mỗi lần lặp của quá trình mô phỏng.
Thuộc tính vận tốc: sự dịch chuyển của một hạt đƣợc xác định bởi vận tốc
và hƣớng di chuyển. Trong mỗi lần lặp, vận tốc của một hạt đƣợc thêm vàovị trí hiện tại của mình để xác định vị trí tiếp theo trong hệ thống.
Thuộc tính tuổi thọ: tuổi thọ của một hạt có thể ảnh hƣởng đến màu sắc, độ mờ và kích thƣớc của Particles. Thƣờng thì sau mỗi lần lặp, tuổi thọ sẽ giảm dần và tới khi tuổi thọ bằng 0 thì hạt đó sẽ bị xóa đi hoặc ra khỏi giới hạn màn hình. Tuổi thọ của một Particles cũng ảnh hƣởng đến độ mờ, màu sắc và kích thƣớc của nó. Khi thời gian sống của Particle càng thấp thì thuộc tính màu sắc cũng nhạt dần, kích thƣớc của nó có thể to hơn nhƣng mờ nhạt hơn để báo hiệu hạt đó sắp chết.
Thuộc tính màu sắc và thuộc tính độ mờ: trong rất nhiều ứng dụng của Particles, thuộc tính màu sắc đóng vai trò không thể thiếu. Nó tạo nên sự chân thực của đối tƣợng và tạo hiệu ứng hấp dẫn cho ngƣời quan sát. Màu sắc của một hạt có thể thay đổi liên tục theo mỗi lần lặp để tạo ra một loạt các hiệu ứng. Có hai cách để làm thay đổi màu sắc của Particles. Một là, thay đổi giá trị màu sắc hiện tại bằng một giá trị màu sắc khác. Trong máy tính màu sắc mỗi điểm ảnh đƣợc tổ hợp từ 3 màu cơ bản nhất: RGB tƣơng ứng với Red, Green, Blue. Từ đó tạo thành 256x256x256 = 16, 777, 216 giá trị màu. Vậy nên ta có thể thay đổi các giá trị của R, G, B để thay đổi màu sắc của các Particles. Hai là, kết hợp giá trị màu sắc của Particles với độ mờ của nó để đạt đƣợc mức độ trong suốt. Tức là chúng ta phải cộng thêm một giá trị alpha cho màu sắc của Particles. Giá trị alpha tạo ra độ trong
suốt cho nó tức là nó có thể che khuất Particles phía sau nó hay làm sáng hơn những Particles mà nó che khuất. Khi giá trị alpha tại một vị trí nào đó ở một lớp nào đó là bằng 0 thì lớp đó trở thành hoàn toàn trong suốt, và màu tại vị trí đó đƣợc đƣợc quyết định bởi màu gì nằm bên dƣới đó. Khi alpha có giá trị tối đa là 255 thì ánh sáng không thể nhìn xuyên đƣợc hình ảnh đó. Vì độ mờ của các Particles gây ảnh hƣởng đến tuổi thọ của nó, và nhƣ tuổi thọ giảm, giá trị của độ mờ cũng là giảm nên ta phải cập nhật cho phù hợp. Tuổi thọ của một hạt cùng với mức độ mờ của nó dẫn đến các hạt xuất hiện ngày càng trong suốt cho đến khi nó mất dần đi.
Thuộc tính hình dạng, kích thước: thuộc tính này thƣờng là tĩnh, ngƣời lập trình sẽ xác định hình dạng của Particles là hình cầu hay hình chữ nhật, hình vuông. Đồng thời cũng gán cho nó một kích thƣớc cụ thể. Kích thƣớc của hạt cùng với tuổi thọ của nó có thể đƣợc sử dụng để đại diện cho thời gian sống.
2. 2. 2. Sinh các Particles và Khởi tạo các thuộc tính cho Particles
Sau khi đã tìm hiểu những thuộc tính của đối tƣợng cần mô phỏng, ta cần tiến hành xác định số lƣợng các Particles trong từng frame và khởi tạo các thuộc tính cho Particles.
Xác định số lƣợng các Particles.
Các Particles đƣợc sinh ra trong từng frame. Việc sinh các Particles có thể sử dụng một tiến trình ngẫu nhiên với công thức dƣới đây.
NumParf= TBParf + Rand () * VarParf (2. 1)
Trong đó:
Rand () trả về một giá trị ngẫu nhiên nằm trong khoảng [-1, 1];
TBParf là số lƣợng trung bình các hạt.
VarParf là khoảng biến đổi của nó.
Nhƣ vậy, numParf là tổng số lƣợng Particles trong mô phỏng. Công việc sinh Particles chỉ thực hiện một lần duy nhất.
Ta lần lƣợt đi khởi tạo các thuộc tính cho Particles nói trên.
Vị trí của Particles: với các Particles sau khi đƣợc xác định số lƣợng, việc đầu tiên là phải xác định vị trí xuất hiện của nó. Thông thƣờng, các Particles đƣợc phát ra tại cùng một vị trí gọi là điểm phát, sau đó nó đƣợc di chuyển tới những vị trí khác nhau trong giới hạn diện tích vùng màn hình.
Particles của nó. Một Particles Systems có một vị trí trong không gian 3 chiều làm gốc. Vùng sinh của các Particles Systems là một không gian đƣợc xác định xung quanh điểm gốc này. Các Particles của Particles Systems mới luôn đƣợc tạo ra trong 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 có chiều dài h, chiều rộng w và tâm là điểm gốc và song song với mặt phẳng Oyz.
Tuy nhiên có những đối tƣợng mô phỏng mà các Particles không phải xuất phát từ tâm của vùng sinh. Nó có thể đƣợc sinh ngẫu nhiên rải rác ở các vị trí khác nhau trong vùng sinh.