Mô phỏng mặt hồ bằng kỹ thuật Physically-Based

Một phần của tài liệu Output file (Trang 54 - 58)

Xây dựng một chƣơng trình Demo mô phỏng mặt hồ với hiệu ứng in bóng nƣớc, hiệu ứng sóng nƣớc và chƣơng trình có khả năng sẵn sàng tích hợp trong một hệ Thực tại ảo.

b) Phân tích bài toán, xác định vấn đề

Mô phỏng nƣớc là một bài toán mới và tƣơng đối khó. Nhƣng tính cấp thiết và tầm quan trọng của nó trong Thực tại ảo thì lại là một vấn đề cấp thiết cần làm ngay. Bài toán mô phỏng nƣớc có hai hƣớng tiếp cận :

Phƣơng pháp giả mô phỏng: là ta dùng các kỹ thuật xử lý ảnh để tạo ra những đối tƣợng và những hiệu ứng giả đánh lừa mắt nhìn của con ngƣời. Ví dụ, nhƣ biến đổi ảnh không gian 2D thành hình ảnh của vật nhƣ trong không gian 3D, hay các phƣơng pháp Texture.

Phƣơng pháp mô phỏng thật: là dùng các kỹ thuật tạo đối tƣợng và hiệu ứng dựa trên cơ sở khoa học là các thuật toán biểu diễn tính chất vật lý của đối tƣợng và các hàm biến đổi để thể hiện đối tƣợng một cách chính xác.

Với bài toán nêu trên luận văn chọn hƣớng tiếp cận thứ nhất: giả mô phỏng để thể hiện mặt nƣớc với các hiệu ứng sóng, in bóng ... Nƣớc có rất nhiều hiệu ứng khác nhau nhƣ đã đƣợc đề cập trong phần 1.2.2 và trong mục này luận văn lựa chọn một số hiệu ứng cơ bản của mặt nƣớc để giải quyết yêu cầu, đó là: tạo mặt nƣớc động có sóng, hiệu ứng phản chiếu ánh sáng, in bóng nƣớc, độ trong và màu sắc mặt nƣớc. Chƣơng trình mô phỏng mặt nƣớc phải thể hiện đƣợc những yêu cầu đó và phải có tính thẩm mỹ đủ làm hài lòng ngƣời quan sát.

Có thể mở rộng tạo ra một số tƣơng tác điều khiển lên đối tƣợng mặt nƣớc làm cho mặt nƣớc sinh động hơn và có khả năng sẵn sàng tích hợp trong một hệ mô phỏng Thực tại ảo.

Qua việc tìm hiểu quy trình mô phỏng hiệu ứng mặt nƣớc yêu cầu đặt ra cao hơn là phải nắm đƣợc quy trình xây dựng của một hệ Thực tại ảo.

c) Giải quyết vấn đề

Qua phân tích để xác định rõ yêu cầu của bài toán, luận văn đề cập đến giải bài toán bằng cách sử dụng kỹ thuật Physically-Based thể hiện những yêu cầu về hiệu ứng mặt nƣớc nhƣ đã đề ra.

Sử dụng ngôn ngữ Visual C # để xây dựng chƣơng trình demo.

Chia nhỏ bài toán mô phỏng mặt nƣớc thành hai phần nhỏ để giải quyết hai yêu cầu của bài toán. Cụ thể nhƣ sau:

- Hiệu ứng in bóng nƣớc: dùng phép chiếu ảnh để lấy ảnh đối ngẫu với ảnh gốc ban đầu (mọi thao tác sẽ diễn ra trên ảnh đối ngẫu này).

- Mặt nƣớc dao động: chia mặt nƣớc (ảnh đối ngẫu) thành dãy các đƣờng kẻ ngang bức ảnh với bề rộng là rất nhỏ và chiều dài là chiều dài của ảnh. Sử dụng một vòng lặp để điều khiển việc vẽ lại các đƣờng kẻ từ ảnh gốc, vòng lặp sẽ chịu trách nhiệm tạo ra hiệu ứng sóng. Nó tạo ra sự thay đổi từ ảnh nguồn tới ảnh đích với hiệu ứng sóng đƣợc xây dựng bằng việc sao chép các đƣờng kẻ. Thay vì sao chép từng đƣờng một từ ảnh nguồn, chúng ta xây dựng 1 hàm mà giá trị sẽ thay đổi dựa trên một hàm sine (tỷ lệ giữa chiều dài của cạnh đối diện với một góc nhọn và chiều dài của cạnh huyền). Đó là sự sao chép từ bên này sang bên kia và sinh ra hiệu ứng sóng nƣớc. Trong thực tế, một sự thay đổi đơn giản sẽ chỉ tạo ra một gợn sóng cho bức ảnh mà không tạo ra đƣợc cả hiệu ứng cho bề mặt hồ nƣớc. Do đó muốn có nhiều sóng thì phải tạo ra đƣợc nhiều sự thay đổi vị trí của nhiều dòng kẻ. Kích thƣớc của độ dịch chuyển biến đổi dựa theo vị trí của tọa độ y (dựa theo chiều dọc của ảnh) trên đƣờng kẻ. Các đƣờng gần với phần trên của bức ảnh sẽ thay đổi ít hơn các đƣờng ở phần dƣới của bức ảnh. Điều này giúp cho việc phối cảnh trở lên chân thực hơn.

d) Kết quả

Nhƣ vậy với việc sử dụng kỹ thuật Physically-Based luận văn đã mô phỏng đƣợc một mặt hồ với các hiệu ứng nhƣ hiệu ứng in bóng nƣớc, hiệu ứng sóng nƣớc… Với bài toán mô phỏng một bề mặt lớn nhƣ mặt hồ, kỹ thuật Physically-Based thực sự thích hợp để mô phỏng. Tuy nhiên, chúng ta sẽ gặp khó khăn hơn vì kỹ thuật Physically-Based chủ yếu dựa vào mô phỏng toàn

bộ bề mặt theo một lƣới các phần tử một cách đồng đều. Để mô phỏng mặt nƣớc có các điều kiện ngoại lực tác động, điểm chịu ngoại lực tác động sẽ là điểm phát sinh sóng luận văn đề cập đến việc sử dụng kỹ thuật Particle- Based. Kỹ thuật này sẽ trực tiếp theo dõi từng phần của quá trình các phần tử di chuyển qua những miền trống.

3.2.2. Kỹ thuật Particle-Based

a) Yêu cầu:

Xây dựng một chƣơng trình Demo mô phỏng mặt nƣớc với hiệu ứng sóng nƣớc xuất hiện khi chịu ngoại lực.

b) Phân tích bài toán, xác định vấn đề

Những vấn đề cần giải quyết trong bài toán này cũng khá giống với bài toán 1. Tuy nhiên chúng ta cần xét đến yếu tố khác biệt: bài toán 2 yêu cầu phát sinh hiệu ứng sóng khi có sự kiện ngoại lực tác động.

c) Giải quyết vấn đề

Để giải quyết bài toán này luận văn sử dụng hƣớng tiếp cận nhƣ bài toán 1 là giả mô phỏng. Kỹ thuật mô phỏng nƣớc đƣợc dùng là kỹ thuật Particle- Based.

Sử dụng ngôn ngữ Visual C# để xây dựng chƣơng trình demo.

Với việc mô tả hiệu ứng sóng khi chịu ngọai lực tác động, chúng ta cần giải quyết các việc sau:

-Ngoại lực tác dụng đƣợc thể hiện thông qua sự kiện di chuyển trái chuột. Một vòng tròn với bán kính radius và độ cao height sẽ đƣợc tạo ra bằng hàm PutDrop(x,y,height).

-Phát sinh sóng: sóng đƣợc sinh ra sẽ phát triền từ đƣờng tròn trung tâm, lan sang các điểm lân cận theo các vòng tròn với bán kính lớn dần. Sóng đƣợc xuất hiện nằm trong phạm vi ảnh.

-Thời gian sống của sóng phụ thuộc vào yếu tố: sóng càng lan xa, bƣớc sóng càng lớn thì độ mạnh của sóng lại càng giảm. Mỗi lần sóng đi lên đi

xuống, năng lƣợng của nó sẽ đƣợc phân bố theo khu vực tƣơng ứng. Có nghĩa là, cƣờng độ của sóng sẽ giảm theo đƣờng sóng. Sử dụng một yếu tố gọi là damping để điều khiển việc này. Yếu tố này là một lƣợng phần trăm(%) của cƣờng độ sóng và sẽ đƣợc trừ đi cho cƣờng độ hiện tại để khiến cƣờng độ cao sẽ biến mất nhanh trong khi cƣờng độ nhẹ sẽ mất đi từ từ.

d) Kết quả

Mô phỏng thành công mặt nƣớc với hiệu ứng sóng xuất hiện khi có ngoại lực tác động:

Một phần của tài liệu Output file (Trang 54 - 58)

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

(61 trang)