Mô hình mô phỏng bằng ParticleSystem

Một phần của tài liệu Mô phỏng tính trong suốt của lửa theo nhiệt độ trong thực tại ảo (Trang 26 - 35)

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 chỉ đị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ủ chỉ một vài điểm ảnh.

Phương trình cụ thể như sau:

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. (adsbygoogle = window.adsbygoogle || []).push({});

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õ f0và 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à chỉ 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 chỉ 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 chỉ 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ể.

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 chỉ 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à chỉ 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. (adsbygoogle = window.adsbygoogle || []).push({});

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

của các Particle System con cháu giống như các phương trình đã trình bày ở trên. Số lượng Particle System mới được sinh ra tại một khung hình dựa trên tỉ lệ sinh hạt mới của Particle System cha. Các tham số của Particle System cha cũng ảnh hưởng tương tự như trong trường hợp một Particle System lên các Particle System con. Các hệ Particle System kiểu này được dùng để sử dụng một điều khiển chung cho một đối tượng không định hình phức tạp được cấu thành từ nhiều Particle System.

Ví dụ, một đám mây có thể được tạo thành từ nhiều Particle System, mỗi Particle System biểu diễn một vùng cuộn của mây. Một Particle System cha có thể gộp tất cả các Particle System này lại để điều khiển chuyển động và hình dạng chung của đám mây theo ảnh hưởng của gió.

2.1.4.6. Sự chết của hạt

Khi mới được tạo ra, một hạt được gán cho một thời gian sống trong những khung hình. Khi một khung hình mới được render thì thời gian sống của hạt bị giảm xuống. Một hạt sẽ chết khi thời gian sống hết (lifetime = 0) và nó sẽ bị xóa bỏ. Ngoài ra, còn một số cơ chế khác không dựa vào thời gian sống của hạt mà dựa vào tính qui tắc: một hạt khi không tham gia cấu tạo nên hình ảnh của vật thể cũng sẽ bị hủy. Ví dụ như độ mờ của nó thấp hơn một ngưỡng nào đó, khoảng cách của nó tới điểm gốc của Particle System xa hơn một giới hạn cho trước… thì hạt bị xóa bỏ.

[10]

Một phần của tài liệu Mô phỏng tính trong suốt của lửa theo nhiệt độ trong thực tại ảo (Trang 26 - 35)