1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn học phần đồ họa máy tính đề tài mô phỏng phòng khách bằng opengl khả lập trình và visual c++

28 171 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mô Phỏng Phòng Khách Bằng Opengl Khả Lập Trình Và Visual C++
Tác giả Phan Duy Linh, Lê Ngọc Sơn, Phạm Ngọc Minh, Nguyễn Văn Đức
Người hướng dẫn ThS. Vũ Minh Yến
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 28
Dung lượng 681,68 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỞ ĐẦU Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ sở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn

Trang 2

KHOA CÔNG NGHỆ THÔNG TIN

Trang 3

MỞ ĐẦU

Chương 1 Xác định và phân tích bài toán

1.1 Bài toán 2

1.2 Mô tả các đối tượng cần thiết kế 2

1.3 Mô tả bố cục khung cảnh chung 3

1.4 Mô tả kịch bản của chương trình 3

Chương 2 Cài đặt chương trình

2.1 Kỹ thuật tạo mô hình cánh cửa 5

2.2 Kỹ thuật tạo mô hình ti vi 6

2.3 Kỹ thuật tạo mô hình cái quạt 6

2.4 Kỹ thuật tạo mô hình tủ lạnh 8

2.5 Kỹ thuật tạo mô hình kệ ti vi 9

2.6 Kỹ thuật tạo mô hình bàn tròn 10

2.7 Kỹ thuật tạo mô hình cái ghế 11

2.8 Kỹ thuật tạo mô hình cái đèn 12

2.9 Kỹ thuật tạo mô hình cửa sổ 13

2.10 Kỹ thuật chiếu sáng 14

2.11 Kỹ thuật camera 15

Chương 3 Kết quả đạt được

3.1 Mô hình cánh cửa 16

3.2 Mô hình ti vi 15

Trang 4

3.4 Mô hình tủ lạnh 15

3.5 Mô hình kệ ti vi 15

3.6 Mô hình bàn tròn 15

3.7 Mô hình cái ghế 15

3.8 Mô hình cái đèn 15

3.9 Mô hình cửa sổ 15

3.10 Mô hình chiếu sáng 15

3.11 Mô hình camera 15

KẾT LUẬN TÀI LIỆU THAM KHẢO

Trang 5

MỞ ĐẦU

Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ

sở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính.

Về bản chất: đó là một quá trình xây dựng và phát triển các công cụ trên cả hai lĩnh vực phần cứng và phần mềm hỗ trợ cho các lập trình viên thiết kế các chương trình có khả năng đồ họa cao.

Việc mô tả dữ liệu thông qua các hình ảnh và màu sắc đa dạng của nó, các chương trình đồ họa thường thu hút người sử dụng bởi tính thân thiện, dễ dùng,

… kích thích khả năng sáng tạo và nâng cao năng suất làm việc Do vậy, đồ họa máy tính được ứng dụng trong nhiều lĩnh vực: giáo dục, thương mại…

Là sinh viên được tìm hiểu và làm quen với một số kĩ thuật đồ họa trên máy tính thông qua tài liệu, bài giảng do cô Vũ Minh Yến - giáo viên giảng dạy Với những kiến thức đã học nhóm quyết định chọn đề tài: Mô phỏng phòng khách.

Trang 6

Chương 1 Xác định và phân tích bài toán

1.1 Bài toán

Thiết kế nội thất phòng khách bằng openGL khả lập trình và visual C++

Toàn bộ bài toán được phát triển dựa trên các project được cô Yến cung cấp trong quá trình học thực hành song song với lý thuyết trên lớp cũng như việc hướng dẫn cài đặt khởi đầu cho môn học:

- Hướng dẫn cài đặt OpenGL với thư viện sử dụng là FreeGlut và Glew

- Project_Cube (tiền đề cho việc tạo dựng các hình cơ bản trong OpenGL)

- Project_RotationCube (tiền đề cho sự chuyển động của các đối tượng)

- Project_ban (tạo dựng mô hình từ việc lắp ghép từ các hình cơ bản)

- Projection_view (hướng dẫn việc thiết lập góc nhìn cho cảnh)

- Project_hinhlapphuong_chieusang (biểu diễn ánh sáng Blinn-Phong)

1.2 Mô tả các đối tượng cần thiết kế

Tổng quan về căn phòng khách bao gồm:

- Một căn phòng khối hộp: 4 bức tường 4 mặt: mặt trái, mặt phải mặt trước, mặt sau

- 1 quạt trần có khả năng quay

Trang 7

1.3 Mô tả bố cục khung cảnh chung

1.4 Mô tả kịch bản của chương trình

- Thiết kế nội thất phòng khách vẫn luôn nhận được sự quan tâm của các gia chủ vì đây là không gian sinh hoạt chung cần được thiết kế sao cho hài hòa và phù hợp với tất cả mọi thành viên.

- Mô phỏng được hoạt động của các đối tượng trong căn phòng khách

- Mô phỏng được các yếu tố về ánh sáng và góc nhìn các đối tượng

- Các yếu tố ánh sánh và góc nhìn được tạo ngẫu nhiên

- Chương trình được chạy trên visual studio và ngôn ngữ C++ sử dụng openGL

Trang 8

o Q/q, W/w: đóng mở tủ.

o S/s: tắt/ bật tivi.

o d: bật/tắt đèn.

o k/K: kéo rèm cửa.

- Các yếu tố ánh sánh và góc nhìn được tạo ngẫu nhiên

- Chương trình được chạy trên visual studio và ngôn ngữ C++ sử dụng openGL

Chương 2 Cài đặt chương trình

1.1 Kỹ thuật tạo mô hình cánh cửa (Phạm Ngọc Minh)

- Mô hình:

- Mô hình phân cấp:

Trang 9

mat4 m = Translate(-0.25, 0.0, 0.0) * Scale(0.4f, 0.66f, 0.02f);

glUniformMatrix4fv(model_loc, 1, GL_TRUE, model * Cua_view * CanhCua_view* m); glDrawArrays(GL_TRIANGLES, 0, NumPoints);

Trang 11

- Mô hình phân cấp:

- Kĩ thuật cài đặt:

//Mô tơ

void moto() {

for (float i = 0; i < 360; i++) {

instance = RotateY(i) * Scale(0.11f, 0.05f, 0.1f);

glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance);

for (float i = 0; i < 360; i++) {

instance = Translate(0.0, 0.175f, 0.0) * RotateY(i) * Scale(0.015f, 0.3f, 0.015f);glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance);

glDrawArrays(GL_TRIANGLES, 0, NumPoints);

}

for (float i = 0; i < 360; i++) {

instance = RotateY(i) * Scale(0.05f, 0.1f, 0.1f);

glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance);

instance = Translate(0, 0, 0) * RotateY(fan) * Scale(0.65f, 0.01f, 0.07f);

glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance);

glDrawArrays(GL_TRIANGLES, 0, NumPoints);

}

void canhQuat2() {

float b = fan + 60;

instance = Translate(0, 0, 0) * RotateY(b) * Scale(0.65f, 0.01f, 0.07f);

glUniformMatrix4fv(model_loc, 1, GL_TRUE, model1 * instance);

glDrawArrays(GL_TRIANGLES, 0, NumPoints);

Trang 14

instance2 = Translate(-0.8f, -0.65f, -0.05f); createElement(0.3f, 0.02f, 1.2f);

//hai ben

instance2 = Translate(-0.8f, -0.525f, -0.65f); createElement(0.3f, 0.25f, 0.015f);

instance2 = Translate(-0.8f, -0.525f, 0.55f); createElement(0.3f, 0.25f, 0.015f);

//do de trong ngan

ToMau(0, 200, 0);

Trang 15

instance2 = Translate(-0.85f, -0.58f, 0.32f)*Translate(h,0,0); createElement(0.1f, 0.1f, 0.25f);

for (int i = 0; i < 360; i+=2){

instance2 = Translate(-0.875f, -0.38f, -0.125)*RotateY(i);createElement(0.1f, 0.02f, 0.001f);

Trang 18

ToMau(100, 255, 100);

instance2 = Translate(-0.6f, 0.26f, -0.92f); createElement(0.22f, 0.02f, 0.02f);

instance2 = Translate(-0.6f, 0.14f, -0.92f); createElement(0.22f, 0.02f, 0.02f);

instance2 = Translate(-0.71f, 0.2f, -0.92f); createElement(0.02f, 0.12f, 0.02f);

instance2 = Translate(-0.49f, 0.2f, -0.92f); createElement(0.02f, 0.12f, 0.02f);

Trang 19

ToMau(bongden, bongden, bongden);

ToMau(bongden, bongden, bongden);

instance2 = Translate(0.8, 0 , 0)*Translate(-0.6f, 0.2f,

Trang 20

instance2 = Translate(0.148f, -0.6800f, -0.98f); createElement(0.42f, 0.05f, 0.05f);

instance2 = Translate(-0.07f, -0.335f, -0.98f); createElement(0.05f, 0.75f, 0.04f);

instance2 = Translate(0.38f, -0.335f, -0.98f); createElement(0.05f, 0.75f, 0.05f);

/*khungcuaso*/

instance2 = Translate(0.0f, 0.01f, 1.00f); createElement(0.7f, 0.05f, 0.04f);

instance2 = Translate(0.0f, -0.4f, 1.00f);

createElement(0.7f, 0.05f, 0.04f);

instance2 = Translate(0.0f, -0.08f, 1.00f); createElement(0.7f, 0.01f, 0.04f);

instance2 = Translate(0.0f, -0.31f, 1.00f); createElement(0.7f, 0.01f, 0.04f);

instance2 = Translate(-0.3f, -0.21f, 1.0f); createElement(0.05f, 0.4f, 0.04f);

instance2 = Translate(0.3f, -0.21f, 1.0f);

createElement(0.05f, 0.4f, 0.04f);

instance2 = Translate(-0.2f, -0.21f, 1.0f); createElement(0.01f, 0.4f, 0.01f);

instance2 = Translate(0.2f, -0.21f, 1.0f);

createElement(0.01f, 0.4f, 0.01f);

Trang 21

color4 ambient_product = light_ambient * material_ambient;

color4 diffuse_product = light_diffuse * material_diffuse;

color4 specular_product = light_specular * material_specular;

glUniform4fv(glGetUniformLocation(program, "AmbientProduct"), 1, ambient_product); glUniform4fv(glGetUniformLocation(program, "DiffuseProduct"), 1, diffuse_product); glUniform4fv(glGetUniformLocation(program, "SpecularProduct"), 1, specular_product); glUniform4fv(glGetUniformLocation(program, "LightPosition"), 1, light_position); glUniform1f(glGetUniformLocation(program, "Shininess"), material_shininess);

point4 eye0(radius * sin(theta_viewing) * cos(phi),

radius * sin(theta_viewing) * sin(phi),radius * cos(theta_viewing), 1.0);

point4 eye1(x, y, z, 1.0);

point4 at(0.0, 0.0, 0.0, 1.0);

vec4 up(0.0, 1.0, 0.0, 1.0);

Trang 24

Cánh tủ lạnh dưới mở (Q)

Cánh tủ lạnh dưới đóng (q)

1.14Mô hình cái quạt

Chụp hình ảnh và Mô tả hoạt động thực hiện tương tác được Bật/ Tắt quạt (t)

Trang 25

Bật quạt số 1 (1)

Bật quạt số 2 (2)

Bật quạt số 3 (3)

Trang 26

1.17Thiết lập phép chiếu, camera và góc nhìn

enum { Xaxis = 0, Yaxis = 1, Zaxis = 2, NumAxes = 3 };

int Axis = Xaxis ;

float Theta[ NumAxes ] = { 0.0, 0.0, 0.0 };

//Tham so cho Viewing

float radius = 2, theta_viewing = 0, phi = 0;

//Cac tham so cho projection

float l = -1.0f, r = 1.0f;

Trang 27

float bottom = -1.0f, top = 1.0f;

float zNear = 1.2f, zFar = 3.0f;

case 'z': zNear *= 1.1f; zFar *= 1.1f; break ;

case 'Z': zNear *= 0.9f; zFar *= 0.9f; break ;

case 033: // 033 is Escape key octal value

exit(1); // quit program

break ;

Trang 28

KẾT LUẬN

Qua việc thực hiện nghiên cứu đề tài “Mô phỏng Phòng khách” Nhóm đã được hiểu thêm một phần về môn đồ họa máy tính Bên cạnh đó, việc làm nghiên cứu giúp các thành viên hoàn thiện hơn các kỹ năng bản thân cũng như làm việc nhóm.

Cảm ơn cô Vũ Minh Yến đã tận tình giảng dạy trong môn Đồ họa máy tính.

TÀI LIỆU THAM KHẢO

[1] [INTERACTIVE COMPUTER GRAPHICS-OpenGL 6th Edition

[2] File bài giảng online và project môn Đồ hoạ máy tính

[3] Tài liệu khác trên Internet

Ngày đăng: 29/11/2023, 05:59

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w