Tiến trình mô phỏng

Một phần của tài liệu mô phỏng hiệu ứng sóng nước trong thực tại ảo (Trang 38 - 42)

Chất lỏng đƣợc biểu diễn bằng cách phát triển các phần tử trong suốt không gian và thời gian. Mô phỏng particle thƣờng đi qua các bƣớc: đầu tiên các lực khác nhau đƣợc tính và đƣợc tích lũy cho mỗi particle. Sau đó những lực này đƣợc sử dụng để thay đổi vận tốc và cuối cùng chúng đƣợc sử dụng để cập nhật vị trí của particle.

Ở bƣớc cuối cùng, vận tốc đƣợc tính lại bằng cách lấy vị trí đã giãn ra trừ đi vị trí trƣớc đó. Lý do phải tính lại vận tốc là độ giãn (the relaxation displacements) tƣơng đƣơng với xung lực đƣợc áp dụng với vận tốc lúc bắt đầu bƣớc tiếp theo. Những xung lực này đƣợc tính ở vị trí gần vị trí cuối cùng (ở chỗ giữa vị trí đã dự đoán và vị trí cuối cùng).

Nhƣ vậy, tính không nén đƣợc và không nhóm đƣợc đƣợc thể hiện bằng cách thực hiện thủ tục nới lỏng (làm giảm - relaxation) mật độ kép, hiệu ứng của chất dẻo đàn hồi và không tuyến tính thu đƣợc bằng cách thêm lực co dãn vào khoảng trống giữa các phần tử.

1. For each particle i 2. // apply gravity

3. vi vi + tg

4. // modify velocities with pairwise viscosity impulses

5. applyViscosity 6. foreach particle i

7. // save previous position

8. xi prev

xi

9. // advance to predicted position

10. xi xi + tvi

11. // add and remove springs, change rest lengths

12. adjustSprings

13. // modify positions according to springs,

14. // double density relaxation, and collisions

15. applySpringDisplacements 16. doubleDensityRelaxation 17. resolveCollisions

18. foreach particle i

19. // use previous position to compute next velocity

20. vi (xi –xi prev

)/ t

 Đầu tiên, chúng ta update vận tốc của particle tùy theo trọng lực và vận tốc (dòng 1 đến 5).

 Ghi lại vị trí trƣớc đó và di chuyển particle tùy theo vận tốc của chúng.

 Dòng 12 đến 15: thay đổi spring (lực co dãn) dựa vào độ dài và sử dụng lực spring thay thế particle.

 Đảm bảo tính bảo toàn khối lƣợng và tính không nhóm đƣợc (dòng 16).

 Cuối cùng, sự va chạm giữa các particle và các vật thể tĩnh/động đƣợc giải quyết và vận tốc particle đƣợc tính lại.

Minh họa:

Áp đặt trọng lực và tính nhớt cho particles

 Áp đặt trọng lực và tính nhớt cho particles

 Dự đoán vị trí

 Áp đặt trọng lực và tính nhớt cho particles

 Dự đoán vị trí

 Đặt lại vị trí mới cho mỗi particles

 Áp đặt trọng lực và tính nhớt cho particles

 Dự đoán vị trí

 Làm giảm- relax (mật độ và lực co dãn- density and spring)

 Đặt lại vị trí và thu đƣợc vận tốc mới

Để thực hiện đƣợc thuật toán trên, ta cần giải quyết 3 vấn đề lớn: - Làm giảm mật độ kép (dòng 16)

- Biểu diễn đƣợc mặt phân cách (dòng 5,12,15) - Giải quyết vấn đề va chạm với đối tƣợng (dòng 17)

Một phần của tài liệu mô phỏng hiệu ứng sóng nước trong thực tại ảo (Trang 38 - 42)

Tải bản đầy đủ (PDF)

(65 trang)