Đây là báo cáo bài tập lớn môn Đồ họa máy tính Đề tài: Mô phỏng chuyển động của lá cây khi có gió thổi (có đính kèm source code bằng C++, sử dụng OpenGL)Đây là báo cáo bài tập lớn môn Đồ họa máy tính Đề tài: Mô phỏng chuyển động của lá cây khi có gió thổi (có đính kèm source code bằng C++, sử dụng OpenGL)
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
-
-BÁO CÁO BÀI TẬP LỚN
Mô phỏng chuyển động rơi của lá cây
Môn: Đồ Họa Máy Tính
Giảng viên: ThS.Đào Minh Thư
Thành viên nhóm
1 Nguyễn Xuân Hải
2 Hoàng Minh Phúc
3 Dương Hồng Hạnh
4 Thiều Mạnh Hùng
Hà Nội, 2013
Trang 2Thành viên của nhóm
1 Nhóm trưởng : Nguyễn Xuân Hải
MSSV : 10020109 SĐT : 01647079192 Email : xuanhai266@gmail.com
2 Hoàng Minh Phúc
MSSV : 10020259 SĐT: 01663731892
3 Dương Hồng Hạnh
MSSV : 10020115 SĐT : 01685433685
4 Thiều Mạnh Hùng
MSSV : 10020169 SĐT : 0985950486
Trang 3
Nội dung
1 Mô tả chương trình
Yêu cầu của chương trình:
- Mô phỏng scence gồm có tree và thể hiện được các yếu tố như gió, ánh sáng
- Mô phỏng chuyển động rơi của lá cây có tác động của gió, lực cản không khí
- Thay đổi được góc nhìn tùy ý
Mô tả chức năng của chương trình:
- Sử dụng phím F1 để xem toàn màn hình.
- Sau khi chạy chương trình, click chuột trái để bắt đầu việc mô phỏng chuyển động rơi của lá cây Sẽ có nhiều lá, và mỗi lá có 1 khoảng thời gian chuyển màu từ xanh sang vàng khác nhau Cứ sau một khoảng thời gian, màu của các lá sẽ thay đổi, khi chuyển hẳn thành màu vàng thì lá sẽ rơi, lá nào ngả màu vàng trước sẽ rơi trước Việc chọn tọa độ rơi của lá cây là ngẫu nhiên để mô phỏng sự ảnh hưởng của gió
- Hướng gió cũng được tạo ngẫu nhiên Có 2 hướng gió chính (quan sát tại
vị trí đối diện với ngôi nhà – vị trí ban đầu):
Hướng theo trục x: (trục nằm ngang) gọi là windx
Hướng theo trục z: (trục vuông góc với màn hình) gọi là windz
Với mỗi hướng trên, có 3 trường hợp xảy ra:
windx: từ trái qua phải, từ phải qua trái và không có gió
windz: từ trước ra sau, từ sau ra trước và không có gió
Kết hợp lại ta có tất cả 9 hướng gió (xem hình vẽ để biết thêm chi tiết)
Người dùng có thể thay đổi bằng cách sử dụng phím PageUp (thay đổi windx) và PageDown (thay đổi windz)
- Dùng 4 phím mũi tên (lên, xuống, trái, phải) để thay đổi góc nhìn
Trang 4- Dùng phím Enter để bắt đầu lại từ đầu
- Nhấn phím Esc để thoát
(Có hướng dẫn sử dụng tại màn hình Console)
Một số hình ảnh của chương trình
Ban đầu khi chưa click chuột
Lá vàng sau đó bắt đầu rơi
Trang 5Quan sát từ trên cao
Gió thổi từ trước ra sau
Trang 6Gió thổi từ sau ra trước
Gió thổi từ phải qua trái
Trang 7Gió thổi từ trái qua phải
Không có gió
Trang 8Mô tả cài đặt các lớp chính:
Lớp Leaf: mô phỏng chiếc lá
o Các thuộc tính:
Tọa độ của lá (x, y, z) kiểu GLfloat
Đối tượng model kiểu GLMmodel, dùng để load file Obj chứa
chiếc lá
o Các hàm:
set(file) : load file Obj
clone(myLeaf) : tạo bản sao Vì có nhiều lá nên để tranh phải load lại cùng 1 file Obj nhiều lần Chỉ cần một model load file Obj, các đối tượng model của các lá đều tham chiếu đến cùng
đối tượng model đó
setPosition(x1, y1, z1) : di chuyển lá đến vị trí (x1, y1, z1)
các hàm getX(), getY(), getZ() để lấy tọa độ x, y, z của lá
drawModel(x1, y1, z1) : thực hiện vẽ chiếc lá tại vị trí cách vị trí hiện tại của lá một khoảng (x1, y1, z1) Trong hàm này, có
hàm glScalef() để co kích thước của lá lại cho nhỏ đi
Lớp House: mô phỏng nhà và cây
o Các thuộc tính:
Tọa độ của nhà và cây (x, y, z) kiểu GLfloat
Đối tượng model kiểu GLMmodel, dùng để load file Obj chứa
ngôi nhà và cây
o Các hàm:
set(file, x1, y1, z1): load file Obj và đặt vật thể tại vị trí (x1,
y1, z1)
Trang 9 drawModel(x1, y1, z1): thực hiện vẽ nhà và cây tại vị trí cách
vị trí hiện tại một khoảng (x1, y1, z1) Trong hàm này, có hàm
glScalef() để tăng kích thước của nhà và cây
Trang 102 Phân công công việc
1 Yêu cầu chung cho tất cả các thành viên trong nhóm:
Tìm hiểu nội dung đề bài, các yêu cầu cũng như kiến thức cần sử dụng, tổng hợp lại những vướng mắc để giải quyết, và cố gắng thực hiện tốt phần việc của mình trước khi test để báo cáo
2 Phân công công việc cho các thành viên như sau :
Code chính
- Người thực hiện :
Nguyễn Xuân Hải
- Nhiệm vụ :
Thực hiện thiết kế các lớp và code với mẫu thống nhất từ trước
đó
Tổng hợp toàn bộ code hoàn chỉnh của chương trình từ những phần riêng của các thành viên khác trong nhóm
Load file
- Người thực hiện :
Dương Hồng Hạnh
- Nhiệm vụ :
Thực hiện phần load file obj, mdl
Tìm file và xử lý dữ liệu của file để load thành công file cần thiết
Chỉnh sửa ảnh
- Người thực hiện :
Thiều Mạnh Hùng
- Nhiệm vụ :
Trang 11 Dùng photoshop chỉnh sửa màu ảnh của các đối tượng sao cho đẹp, hoàn chỉnh
Xử lý các phím chức năng, click chuột
Xứ lý các chức năng
- Người thực hiện :
Hoàng Minh Phúc và Nguyễn Xuân Hải, cùng với 2 bạn còn lại tìm hiểu các hàm để đưa vào bài làm
- Nhiệm vụ :
Xử lý chuyển động của lá cây, sự thay đổi màu sắc của lá cũng như thời gian tự động chuyển màu (từ xanh sang vàng) của lá, yếu tố gió, ánh sáng,
Viết báo cáo
- Người thực hiện: Hoàng Minh Phúc, Nguyễn Xuân Hải