Kỹ thuật áp dụng cho camera...18 Trang 3 Mở đầuĐồ họa máy tính ngày nay được ứng dụng rất rộng rãi trong nhiều lĩnh vựckhoa học, kỹ thuật, nghệ thuật, kinh doanh, quản lý, .... Ngày nay
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
-BÁO CÁO THỰC NGHIỆM
Học phần: Đồ họa máy tính
Đề tài : Mô phỏng công trường xây dựng
Giáo viên hướng dẫn : Ths Vũ Minh Yến
Nhóm sinh viên thực hiện : Nhóm 14
Lương Đức Anh - 2020604030 Nguyễn Tuấn Anh - 2020604631 Bùi Hải Linh - 2020606348 Nguyễn Quang Hiếu - 2020606997
Hà Nội - Năm 2023
Trang 2MỤC LỤC
Mở đầu 2
CHƯƠNG 1 XÁC ĐỊNH VÀ PHÂN TÍCH BÀI TOÁN 3
1.1 Bài toán 3
1.2 Mô tả các đối tượng cần thiết kế 4
1.3 Mô tả bố cục khung cảnh chung 7
1.4 Mô tả kịch bản 9
CHƯƠNG 2 CÀI ĐẶT CHƯƠNG TRÌNH 10
2.1 Kỹ thuật áp dụng cho cả bài toán 10
2.2 Kỹ thuật áp dụng cho xe ben 11
2.3 Kỹ thuật áp dụng cho xe lu 12
2.4 Kỹ thuật áp dụng cho máy xúc 13
2.5 Kỹ thuật áp dụng cho xe ủi 15
2.6 Kỹ thuật áp dụng cho camera 18
CHƯƠNG 3 KẾT QUẢ ĐẠT ĐƯỢC 19
3.1 Cảnh quan 19
3.2 Mô hình xe ben 19
3.3 Mô hình xe lu 21
3.4 Mô hình máy xúc 22
3.6 Điều khiển camera 24
KẾT LUẬN 25
TÀI LIỆU THAM KHẢO 26
1
Downloaded by ANH BACH (bachvan15@gmail.com)
Trang 3Mở đầu
Đồ họa máy tính ngày nay được ứng dụng rất rộng rãi trong nhiều lĩnh vựckhoa học, kỹ thuật, nghệ thuật, kinh doanh, quản lý, Các ứng dụng đồ họa rất đadạng, phong phú và phát triển liên tục không ngừng Ngày nay, hầu như không cóchương trình ứng dụng nào mà không sử dụng kĩ thuật đồ họa để làm tăng tính hấpdẫn của mình
Một hệ đồ họa bao giờ cũng có hai thành phần chính đó là phần cứng vàphần mềm Thành phần phần cứng bao gồm các thiết bị hiển thị (hay là thiết bịxuất) và các thiết bị nhập Tiêu biểu nhất trong các thiết bị hiển thị là màn hình mà
cơ chế hoạt động dựa trên cấu tạo của ống tia âm cực CRT Các thiết bị nhập dữliệu thường gặp bao gồm bàn phím, chuột
Do vậy ứng dụng việc lập trình đồ họa dựa trên các thư viện glew và glutcủa OPENGL Chúng em đã áp dụng những kiến thức đã học vào để mô phỏngcông trường của các máy đang hoạt động
Trang 4CHƯƠNG 1 XÁC ĐỊNH VÀ PHÂN TÍCH BÀI TOÁN
1.1 Bài toán
- Mô phỏng cảnh quan và hoạt động làm việc của máy ủi, máy cẩu, ô tô tải
Cảnh quan công trường
Các máy móc công là một phần không thể thiếu trong mọi ngành công nghiệp nặng Đặc biệt là ở các khu công trường, khu cảng các máy cẩu , máy ủi, tương tácvới nhau hằng ngày
Về cơ cấu hoạt động của máy móc khá đa dạng Do vật vừa muốn tìm hiểu về
cơ chế hoạt động kèm theo là vận dụng khả năng mô phỏng đồ họa của OpenGL nên chúng em đã chọn đề tài này để thực hiện
3
Downloaded by ANH BACH (bachvan15@gmail.com)
Trang 51.2 Mô tả các đối tượng cần thiết kế
- Xe ben:
Mô hình xe ben+ Chức năng: Di chuyển, nâng hạ thùng xe
- Xe lu:
Trang 6+ Chức năng: Di chuyển con lăn, tắt bật đèn xe, mở cửa, đóng cửa.
- Máy xúc đất:
5
Downloaded by ANH BACH (bachvan15@gmail.com)
Trang 7+ Chức năng: Di chuyển, điều khiển gầu xúc
- Xe ủi:
+ Chức năng: Di chuyển, điều khiển cần ủi
Trang 81.3 Mô tả bố cục khung cảnh chung
Khung cảnh
7
Downloaded by ANH BACH (bachvan15@gmail.com)
Trang 9Khung cảnh chiếu từ trên xuống
Trang 11CHƯƠNG 2 CÀI ĐẶT CHƯƠNG TRÌNH
2.1 Kỹ thuật áp dụng cho cả bài toán
* Cài đặt các phép biến đổi Affine:
- Phép tịnh tiến
- Phép biến đổi tỉ lệ
- Phép quay tại gốc tọa độ\
* Phép chiếu phối cảnh Frustum (left, right, bottom, top, near, far)
Trang 12+ Các giá trị màu ánh sáng gốc, khuếch tán, phản xạ sẽ được thiết lập mặc định là cùng một màu: color4(1, 1, 1, 0) và vị trí ánh sáng chung là (0.0, 10.0, 10.0, 1.0);
+ Sử dụng hàm TaoVatLieu(color4mauGoc, color4mauPhanXa, color4
mauPXGuong, float doBong) với tham số là các giá trị truyền vào:
material_ambient (màu môi trường), materilal_diffuse(màu khuếch tán), material_specurlar(màu phản xạ) và shine (độ bóng) để tạo ra các màu cho vật liệu
2.2 Kỹ thuật áp dụng cho xe ben
- Thân xe: Xoay theo trục Y → Đặt tại vị trí x ,z và y = 1 để phù hợp với mặt đất
- Cửa xe trái , phải: Xoay theo trục Y để mở, đóng cửa → Đặt tại vị trí x,y,z phù hợp với xe → Biến đổi theo thân xe
11
Downloaded by ANH BACH (bachvan15@gmail.com)
Trang 13Quay theo trục Y để điều hướng → Translate để tại vị trí phù hợp của xe → Biến đổi theo thân xe
- Ben nâng thùng: Xoay theo trục Z 1 góc 30° và Scale(1, y, 1) để co dãn theothùng khi nâng lên → Translate để tại vị trí phù hợp với thùng xe => Biến đổi theo thân xe
- Bánh sau: Xoay theo trục Z để quay bánh khi xe di chuyển → Translate để tại vị trí phù hợp của xe → Biến đổi theo thân xe
- Thùng xe: Xoay theo trục Z để mở thùng xe → Translate đến vị trí thích hợp
→ Biến đổi theo thân xe
- Cửa thùng xe: Xoay theo trục Z để mở cửa thùng xe → Translate đến vị trí thích hợp → Biến đổi theo thùng xe
2.3 Kỹ thuật áp dụng cho xe lu
- Mô hình phân cấp:
Trang 14- Thân xe: Xoay theo trục Y => Đặt tại vị trí x,z; y = 0.5 để phù hợp với mặt đất
- Cửa xe: Xoay theo trục Y để mở, đóng cửa => Đặt tại vị trí x,y,z phù hợp với
xe => Biến đổi theo thân xe
- Bánh sau 1 & 2: Xoay theo trục Z để quay bánh khi xe di chuyển => Quay theo trục Y để điều hướng => Translate để tại vị trí phù hợp của xe => Biến đổi theo thân xe
- Cái lu: Xoay theo trục Z để xoay lu khi xe di chuyển => Translate để tại vị trí phù hợp của xe => Biến đổi theo thân xe
2.4 Kỹ thuật áp dụng cho máy xúc
- Các bộ phận của máy xúc: Thân xe , gầm xe, trục xúc, cửa xe,
- Hoạt động: Di chuyển tiến lùi bằng bánh xe, quay xe trái/ phải, xoay vôlăng, cánh cửa đóng/ mở, xoay trục máy xúc 360 độ, khớp động lên xuống, …
a Mô tả vắn tắt cho việc tạo mô hình máy xúc:
Máy xúc gồm 3 bộ phận chính: thân xe xúc, gầm xe, trục xúc
- Thân xe xúc:
Đầu cabin
Mái trên cabin
Mặt trái cabin ( cánh cửa trái )
Mặt phải cabin ( cánh cửa phải )
Vách ngăn sau đầu xe
Trang 15b Mô hình phân cấp của máy xúc:
- Thân xe: Xoay theo trục Y → Đặt tại vị trí x,z; y = -0.08 để phù hợp với mặt đất
- Cửa xe trái: Xoay theo trục Y để mở, đóng cửa → Đặt tại vị trí x,y,z phù hợp với
xe ( với góc xoay [-60; 0]) → Biến đổi theo thân xe
- Cửa xe phải: Xoay theo trục Y để mở, đóng cửa → Đặt tại vị trí x,y,z phù hợp với
xe ( với góc xoay [0; 60]) → Biến đổi theo thân xe
- Bánh trước: Xoay theo trục Z để quay bánh khi xe di chuyển → Quay theo trục Y
để điều hướng → Translate để tại vị trí phù hợp của xe → Biến đổi theo thân xe
- Bánh sau: Xoay theo trục Z để di chuyển xe → biến đổi theo thân xe
Trang 16- Vô lăng: Xoay theo trục Y → Nghiêng góc 45 độ → Translate về lại vị trí đúng của xe → Biến đổi theo thân xe
- Đế xoay : Xoay theo trục Y để phù hợp với vị trí cần xúc → Translate để tại vị trí phù hợp của xe → Biến đổi theo thân xe
- Trục xúc bậc 1: Cho trục bậc 1 xoay theo trục Z ( với góc xoay [-80; 30] ) → xoay trục bậc 1 góc +10 độ sau đó Translate đặt lại đúng vị trí phù hợp → Biến đổi theo
Đế xoay
- Trục xúc bậc 2: Cho trục bậc 2 xoay theo trục Z ( với góc xoay [-20; 60] ) → xoay trục bậc 2 góc -80 độ sau đó Translate đặt lại đúng vị trí phù hợp → Biến đổi theo trục bậc 1
- Gầu xúc: Cho gầu xúc xoay theo trục Z ( với góc xoay [-20; 210] ) → xoay gầu xúc góc -90 độ sau đó Translate đặt lại đúng vị trí phù hợp → Biến đổi theo trục bậc 2
2.5 Kỹ thuật áp dụng cho xe ủi
Các bộ phận của xe ủi: Thân xe , cửa xe trái/ phải, vô lăng, cần ủi, bánh xe trước/sau
Hoạt động: Di chuyển tiến lùi bằng bánh xe, quay xe trái/ phải, xoay vô lăng, cánh cửa đóng/mở, nâng/ hạ cần ủi
15
Downloaded by ANH BACH (bachvan15@gmail.com)
Trang 17- Thân xe: Xoay theo trục Y → Đặt tại vị trí x ,z và y = 1 để phù hợp với mặt đất.
- Cửa xe trái, phải: Xoay theo trục Y để mở, đóng cửa → Dịch chuyển đến vị trí phù hợp của xe → Di chuyển theo thân xe
- Vô lăng: Quay theo trục Y → Dịch chuyển đến vị trí phù hợp của xe → Biếnđổi theo thân xe
- Bánh trước: Xoay theo trục Z để quay bánh khi xe di chuyển → Quay theo trục Y để điều hướng → Dịch chuyển đến vị trí phù hợp của xe → Biến đổi theo thân xe
- Bánh sau: Xoay theo trục Z để quay bánh khi xe di chuyển → Dịch chuyển đến vị trí phù hợp của xe → Biến đổi theo thân xe
- Cần ủi 1: Xoay theo trục Z → Dịch chuyển đến vị trí phù hợp của xe → Biến đổi theo thân xe
Trang 18- Cần ủi 2: Xoay theo trục Z → Dịch chuyển đến vị trí phù hợp của xe → Biến đổi theo Cần ủi 1.
- Cần ủi 3: Dịch chuyển đến vị trí phù hợp của xe → Biến đổi theo Cần ủi 2
b) Mô tả vắn tắt cho việc tạo mô hình xe ủi:
Máy xúc gồm 3 bộ phận chính : Thân xe, trục ủi, bộ bánh xe
+ Hai thanh khung
+ Thanh bám giữ sau xe
Trang 19- Ta có vị trí của eye khi khởi tạo
- Để xác định vị trí của vec4 cam_forward (at - eye) có độ dài là 1, ta sẽ lưu 3 góc x,y,z (cam_Rotation[x=0,y=1,z=2]) như hình:
- Ta tìm được at: at = eye + cam_forward (at luôn cách eye một đoạn bằng 1)
- vec3 cam_right = normalize(cross(cam_forward, up));
- vec3 cam_up = normalize(cross(cam_right, cam_forward));
- Để xoay camera, ta sẽ thay đổi góc x,y,z
- Để di chuyển, ta sẽ tịnh tiến eye theo cam _forward, right, up
Trang 20CHƯƠNG 3 KẾT QUẢ ĐẠT ĐƯỢC
Trang 21 Phím j: Xoay bánh trước để định hướng xe rẽ trái
Phím l: Xoay bánh trước để định hướng xe rẽ phải
Trang 22 Phím j: Xoay bánh sau để định hướng xe rẽ trái
Phím l: Xoay bánh sau để định hướng xe rẽ phải
Trang 23Chức năng điều khiển máy xúc:
Phím “C” để khởi động máy xúc
Phím “i” để xe tịnh tiến lên
Phím ‘I’ để lùi xe lại
Phím “j” để xoay bánh trước sang trái và xoay vô lăng sang phải
Phím “J” để xoay bánh trước sang phải và xoay vô lăng sang trái
Phím “1” để mở cửa cánh phải
Phím “2” để đóng cửa cánh phải
Phím “3” để mở cửa cánh trái
Trang 24Phím “4” để đóng cửa cánh trái
Phím “5” để xoay cần trục sang trái 360 độ
Phím “6” để xoay cần trục sang phải 360 độ
Phím “u” để nâng trục bậc 1 của cần xúc
Trang 25+ Phím 'j': bánh trước quay
+ Phím 'l': bánh trước quay
+ Phím 'o': mở cửa xe phải
+ Phím 'O': đóng cửa xe phải
3.6. Điều khiển camera
Phím w,s,a,d: Di chuyển camera tiến, lùi, trái, phải
Phím q,e: Di chuyển camera lên, xuống
Phím t,g,f,h: Quay camera lên, xuống, trái, phải
Trang 26KẾT LUẬN
Qua việc thực hiện nghiên cứu đề tài "Mô phỏng công trường xây dựng,"
nhóm chúng em đã có cơ hội khám phá sâu hơn về môn đồ họa các khối hình và thuật toán liên quan Việc thực hiện đề tài này đã đóng góp quan trọng vào việc phát triển tư duy sáng tạo trong lập trình của chúng em
Ngoài ra, qua quá trình nghiên cứu, chúng em đã xây dựng và củng cố kỹ năng làm việc nhóm Chúng em học cách đoàn kết và thực hiện các phần công việc
cụ thể dưới sự phân chia rõ ràng Việc thống nhất các yếu tố như tỷ lệ, kích thước, màu sắc, và phong cảnh từ đầu đã giúp chúng em tiến hành việc code và ghép codemột cách hiệu quả, giúp chúng em hoàn thành mục tiêu đề ra một cách thuận lợi
Chúng em xin chân thành cảm ơn đối với sự hỗ trợ và hướng dẫn tận tâm của Cô Vũ Yến Minh trong môn Đồ họa máy tính Cô đã chia sẻ những tài liệu hữuích và giải thích một cách rõ ràng, giúp chúng tôi nắm vững kiến thức và hoàn thành bài báo cáo một cách xuất sắc
Một lần nữa chúng em xin chân thành cảm ơn !
25
Downloaded by ANH BACH (bachvan15@gmail.com)
Trang 27TÀI LIỆU THAM KHẢO
[1] Tham khảo giáo trình môn đồ họa máy tính
[2] Hình ảnh các đồ vật, xe, vật liệu trên mạng