Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
162,94 KB
Nội dung
Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 Khoa Công nghệ thông tin Lớp: TH2005/02 Môn: Đồ họa máy tính BÁO CÁO ĐỒ ÁN 3D HỌC ĐỒ HỌA BA CHIỀU Nhóm thực hiện: 0512175 Nguyễn Đăng Khoa demonuns75@yahoo.com 0512186 Huỳnh Duy Khương khuong_4kan_nyd@yahoo.com.vn 0512191 Nguyễn Trung Kiên nike17lhp@yahoo.com Tên đề tài: Chương trình dạy học môn đồ hoạ ba chiều theo phương pháp tương tác trực quan Checklist: Công việc Đã thực Ghi YÊU CẦU BẮT BUỘC 1.1 Khối hình 1.1.1 Sphere 1.1.2 Cubic 1.1.3 Cylinder 1.1.4 Cone 1.2 Các phép biến đổi hình học 1.2.1 Phép tịnh tiến Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang Đồ án 3D – Học đồ họa ba chiều 1.2.2 Phép quay 1.2.3 Phép đối xứng 1.2.4 Phép tỉ lệ 1.3 Các phép chiếu 1.3.1 Chiếu song song 1.3.2 Chiếu phối cảnh Lớp TH2005/02 Đối xứng trục 1.4 Vật liệu, chiếu sáng tạo bóng, sương mù 1.4.1 Vật liệu 1.4.2 Chiếu sáng 1.4.3 Tạo bóng 1.4.4 Sương mù 1.5 Ánh xạ texture 1.6 Màu sắc YÊU CẦU NÂNG CAO 2.1 Khối hình khác 2.2 Hiệu ứng ánh sáng đối tượng 2.3 Đọc dựng hình từ tập tin mơ hình 3D 2.4 Ý tưởng khác Cơ sở lý thuyết: Những kiến thức lý thuyết có liên quan đến đồ án, OpenGL: Sử dụng hàm sau để vẽ hình khối bản: o Mặt trước hình xác đinh mặt vẽ ngược chiều kim đồng hồ cách dùng hàm glFrontFaceGL_CCW) o gluCylinder: vẽ hình trụ rỗng o gluDisk: vẽ mặt đĩa (sử dụng kết hợp với gluCylinder để vẽ hình nón, hình trụ đặc) Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang Đồ án 3D – Học đồ họa ba chiều o o o Lớp TH2005/02 vẽ hình cầu gluSphere: xác định hướng hình (mặt trước, mặt sau) gluDeleteQuadric: tạo hủy đối tượng GLUquadric gluQuadricOrientation: gluNewQuadric, dùng để xác định thông số vẽ cần thiết sử dụng hàm gluCylinder, gluDisk, gluSphere o glVertex3f: để xác định điểm vẽ vẽ hình lập phương (vẽ mặt phẳng hình) Sử dụng hàm sau để thực phép biến đổi hình học: o Về chất ma trận ModelView OpenGL ma trận biến đổi Affine, nên vẽ hình OpenGL tất điểm hình nhân với ma trận ModelView để tọa độ tương ứng với phép biến đổi Affine tại, vẽ o glTranslatef: (bản chất) nhân ma trận ModelView với ma trận biểu diễn phép tịnh tiến o glScalef: (bản chất) nhân ma trận ModelView với ma trận biểu diễn phép co giãn o glRotatef: (bản chất) nhân ma trận ModelView với ma trận biểu diễn phép quay o o nhân ma trận ModelView với ma trận glLoadIdentity: kết hợp với hàm glMatrixMode(GL_MODELVIEW) để ma glMultMatrixf: trận ModelView thành ma trận đơn vị Sử dụng hàm sau để thực phép chiếu: o glOrtho: thiết đặt khung nhìn phép chiếu trực giao Khung nhìn phép chiếu trực giao hình hộp o gluPerspective: thiết đặt khung nhìn phép chiếu phối cảnh Khung nhìn phép chiếu phối cảnh chóp cụt Sử dụng hàm sau để thiết lập vật liệu cho hình khối, chiếu sáng, tạo bóng, sương mù: o glEnable(GL_COLOR_MATERIAL), glDisable(GL_COLOR_MATERIAL): bật/tắt hiệu ứng vật liệu cho hình khối o glColorMaterial, glMaterialfv: thiết đặt thông số liên quan vật liệu độ sáng, màu vật liệu phụ thuộc vào yếu tố môi trường o glEnable(GL_LIGHTING), glDisable(GL_LIGHTING): bật/tắt hiệu ứng chiếu sáng Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang Đồ án 3D – Học đồ họa ba chiều o glLightfv: Lớp TH2005/02 hiệu chỉnh thông số nguồn sáng OpenGL (có nguồn sáng OpenGL) như: vị trí, hướng chiếu, góc chiếu, màu, … nguồn sáng o glNormal3f: định vector pháp tuyến mặt phẳng, dùng kỹ thuật chiếu sáng o Tạo bóng: sử dụng phép biến đổi để biến đổi hình 3D thành dạng phẳng nằm mặt phằng xác định, hình vẽ màu đen o o bật/tắt hiệu ứng sương mù thiết đặt thông số liên quan đến hiệu ứng sương glEnable(GL_FOG), glDisable(GL_FOG): glFogfv, glFogf: mù như: màu sắc, vị trí bắt đầu, vị trí kết thúc, độ dày đặc, … sương mù Sử dụng hàm sau để ánh xạ texture: o glGenTextures: tạo texture o glBindTexture: áp dụng texture cho hình khối o glTexImage2D: đưa liệu (ảnh) vào texture o glTexParameteri: thay đổi tham số texture lọc… texture o gluQuadricTexture: hợp với hàm cho phép áp dụng texture cho hình Dùng kết gluSphere, gluCylinder, gluDisk để ánh xạ hiệu ứng texture o glTexCoord2f: ánh xạ texture cho hình dạng phẳng Sử dụng hàm để xác định màu sắc cho hình khối: o glColor4f: xác định màu cho hình Ý tưởng cài đặt: Cấu trúc chương trình thiết kế theo hướng đối tượng, gồm có lớp sau: Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang Đồ án 3D – Học đồ họa ba chiều Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Lớp TH2005/02 Trang Đồ án 3D – Học đồ họa ba chiều - Lớp TH2005/02 Danh sách thuộc tính, phương thức lớp: _ObjectOpenGL: lớp trừu tượng, cung cấp phương thức ảo để lớp định nghĩa lại, phương thức dùng chung cho lớp Là lớp mơ tả thuộc tính chung hình khối Thuộc tính Kiểu mMatr float[ Ma ] (mảng ix Ghi trận 16 phần tử để mô tả ma trận 4x4) mô tả phép biến đổi Affine hình Được sử dụng hàm Rotate, Scale, Translate, Axisymmetric mCent er float[ Tọa độ tâm ] hình (mảng phần tử ứng với x, y, z) Tọa độ tâm qui đinh tùy theo không Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên hình, phải Trang Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 lúc nằm tâm hình Ví dụ: hình nón mCenter tâm mặt mColo int[] r phẳng đáy Màu hình Mảng phần tử ứng với R, G, B, mShin int iness mEnab le mEnab leTex ture A Độ sáng vật liệu Boole (0 128) Bật tắt chế độ an vẽ Boole hình Bật tắt ánh xạ an texture hình lên hình Kiể Phươ u ng trả thức Ghi Rotat voi Hàm ảo Quay d hình góc e Angle, quay trục Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 (trục có đầu đặt tâm tọa độ Trans late voi khơng) Hàm ảo Tịnh d tiến hình theo ba trục Ox, Oy, Scale voi Oz Hàm d giãn hình theo ảo Co trục Ox, Oy, Axisy mmetr ic voi Oz Hàm ảo Thực d phép đối xứng với SetCo lor Draw voi trục Đặt lại màu d voi hình Hàm ảo d hình Vẽ hình Tại lớp này, đặt lại màu vật liệu cho hình Các lớp sau thực vẽ hình tương ứng với lớp _Cone: kế thừa từ lớp _ObjectOpenGL Là lớp thể thông tin phụ trách vẽ hình nón Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 Thuộc tính Kiểu Ghi mBase doubl Bán kính đáy mHeig e doubl hình nón Chiều cao e int hình nón Số lát dọc ht mSlic es dùng để vẽ hình nón Là tham số hàm gluCylinder, gluDisk mStac int ks OpenGL Số lát ngang dùng để vẽ hình nón Là tham số hàm gluCylinder, gluDisk Quadr GLUqu icCon adric e OpenGL Là tham số hàm gluCylinder Quadr GLUqu icDis adric k Là tham số hàm gluDisk Phươ ng Kiểu thức trả Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Ghi Trang Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 Khơng có phương thức _Cubic: kế thừa từ lớp _ObjectOpenGL Là lớp thể thơng tin phụ trách vẽ hình lập phương Thuộc tính Kiểu mSide Ghi doubl Chiều e cạnh dài hình lập phương Phươ ng Kiểu thức trả Khơng có phương thức Ghi _Cylinder: kế thừa từ lớp _ObjectOpenGL Là lớp thể thơng tin phụ trách vẽ hình trụ Thuộc tính Kiểu Ghi mBase doubl Bán kính e đáy hình doubl trụ Chiều e int hình trụ Số lát dọc mHeigh t mSlice s cao dùng để vẽ hình trụ Là tham số hàm gluCylinder , Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên gluDisk Trang 10 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 hình _Ground: lớp phụ trách vẽ hình, dùng đổ bóng Thuộc tính Kiểu Ghi mvPla float Chứa hệ neEqu [] số ation phương trình mặt phẳng Mảng phần tử ứng với hệ số A, B, C, D phương trình mRang float e đường thẳng Hệ số dùng để vẽ mặt đất mRange có giá trị với giá trị mEnab le Boole trục Ox Bật tắt việc an vẽ hình Phương thức Draw Kiểu trả void Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Ghi Vẽ hình Nền nằm mặt Trang 16 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 phẳng Oxz _Shadow: sử dụng lớp _Ground Lớp dùng để vẽ bóng Thuộc tính Kiểu Ghi mShad float Ma trận để owMat [] biến đổi hình thành 3D dạng phẳng nằm mặt Ma trận thay đổi nguồn sáng thay đổi vị mGrou _Grou nd nd trí Tham chiếu đến đổi tượng Dùng để tính ma trận mEnab Boole le an biến đổi Bật tắt việc vẽ bóng hình Phương Kiểu thức trả Ghi void Tính lại ma Calcula torMatr ix trận biến đổi ứng với vị trí Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 17 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 Draw void nguồn sáng Vẽ bóng hình (tham số hàm tập hợp hình cần tạo bóng) lên _Texture: Lớp dùng để điều khiển việc ánh xạ texture lên hình Thuộc tính Kiểu mText int[] ure Ghi Cấu trúc dùng để lưu trữ texture cần ánh xạ Mảng phần mEnab Boole le an tử Bật tắt việc ánh xạ texture lên hình Phương Kiểu thức trả Ghi LoadTex Bool Nạp texture ean lên nhớ ture Dùng hình Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 18 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 để làm texture Tham sô hàm đường dẫn đến file ảnh Trả false nạp texture Apply void thất bại Cho phép áp dụng texture lên hình (Áp dụng hay khơng cịn tùy thuộc vào biến mEnable) _Fog: Lớp dùng để điều khiển việc tạo sương mù Thuộc tính Kiểu mColo int[] r Ghi Màu sương mù Mảng phần tử ứng với R, G, B, A Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 19 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 mStar float t Nơi bắt đầu có sương mù (Tính mEnd mDens float int ity trục Oz) Nơi kết thúc sương mù (Tính theo trục Oz) Độ dày đặc mEnab Boole le an theo sương mù Bật tắt việc tạo sương mù Phương Kiểu thức trả Apply void Ghi Cho phép tạo sương mù (Áp dụng hay khơng cịn tùy thuộc vào biến mEnable) _Vector3D: Lớp mô tả thông tin phương thức sử lý vector khơng gian Oxyz Thuộc tính Kiểu Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Ghi Trang 20 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 mX float Giá trị x mY float vector Giá trị y mZ float vector Giá trị z vector Phương Kiểu thức trả operato _Vect Thực or3D phép trừ _Vect vector Ép kiểu or3D float[] sang r - operato r _Vector Ghi 3D(floa kiểu t[] P) operato _Vect _Vector3D Ép kiểu or3D _Vector3D r float[] (_Vecto sang r3D P) float[] kiểu _Affine: Lớp mô tả thông tin phép biến đổi Affine Thuộc tính Kiểu Ghi mMatr float[ Ma trận biến ] đổi phép ix biến đổi Affine Phương Kiểu thức trả Rotate void Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Ghi Chuyển Trang 21 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 mMatrix thành ma trận mô tả cho phép quay quanh trục với góc Scale void quay Angle Chuyển mMatrix thành ma trận mô tả cho phép co giãn theo theo trục Transla void te Ox, Oy, Oz Chuyển mMatrix thành ma trận mô tả cho phép tịnh tiến theo trục Axisymm void etric Ox, Oy, Oz Chuyển mMatrix thành ma trận mô tả Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên cho phép đối xứng Trang 22 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 qua Identit trục Chuyển void y mMatrix thành Convert Point ma float[ trận đơn vị Áp dụng ] phép đổi biến Affine lên điểm trả tọa độ ứng với operato r+ phép _Affi biến đổi Kết hợp ne phép biến đổi Affine _Math3D: Lớp chứa hàm static, hàm thực phép toán chiều Tất hàm lấy từ thư viện gltool.h Thuộc tính Kiểu Khơng có phương thức Ghi Ki ểu trả Phương thức Ghi GetVectorLen flo Lấy bình at phương gthSquared chiều Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 23 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 dài đoạn ScaleVector3 voi thẳng Thực d co giãn vector theo hệ số GetVectorLen gth cho flo trước Lấy at chiều dài NormalizeVec tor voi vector Chuyển d vector thành vector có chiều dài đơn CrossProduct voi vị Tích có d hướng GetPlaneEqua tion voi vector Tìm d phương trình mặt Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 24 Đồ án 3D – Học đồ họa ba chiều MakePlanarSh adowMatrix Lớp TH2005/02 voi phẳng Lập ma d trận biến đổi làm hình chiều thành hình phẳng nằm mặt phẳng dựa vào phương trình mặt phẳng vị trí GetDistance flo đèn Tính at chiều dài đoạn GetAngleBetw eenVectors 10 FindNormalVe ctor flo thẳng Tính góc at flo vector Tìm at[ vector Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 25 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 ] pháp tuyến mặt 11 CopyMatrix voi phẳng Sao d chép giá trị từ ma trận nguồn sang ma trận đích _Form1: lớp form, dùng để xử lý giao diện, Trong lớp chứa nhiều control bản, nên khơng liêt kê phương thức thuộc tính liên quan đến control Chỉ nêu thuộc tính hàm có liên quan đến lớp Thu ộc tính Kiểu Ghi lstO List hình bj khối lstL ight Sour List nguồn ce lstV ecto r List vector, Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 26 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 dùng để minh họa trục thực phép quay quanh trục, phép đối xứng fog _Fog trục Đối tượng dùng để lưu thông số cần thiết tạo sương text _Texture ure mù Đối tượng dùng để lưu thông số cần thiết Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên ánh Trang 27 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 xạ unit _UnitAxes axes texture Đối tượng dùng để vẽ trục tọa độ Ki ểu trả Phương thức GL_Paint vo id Ghi Hàm chính, dùng để vẽ hình lên hình, trục tọa độ, tạo bóng, sương mù, texture, nền, nguồn SetupRC vo id Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên sáng Thiết lập Trang 28 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 thông số ban đầu cho OpenGL SetView vo id Thiết đặt phép chiếu trực giao phép chiếu phối … … cảnh … Cách chương trình thực hiện: Để chạy chương trình phải có Tao Framework, download http://superb-east.dl.sourceforge.net/sourceforge/taoframework/tao-2.0.0setup.exe (13.51MB) Lớp Form1 có đối tượng simpleOpenGlControl1 thuộc lớp simpleOpenGlControl (thuộc Tao Framework), tất hàm OpenGL vẽ lên đối tượng Khi người dùng yêu cầu chức giao diện chương trình việc gọi chức tương ứng cung cấp lớp trình bày, sau cho đối tượng simpleOpenGlControl vẽ lại Hướng dẫn sử dụng: Chưa làm kịp Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 29 Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 Tự đánh giá: - Ưu điểm: o Về phần cài đặt: chương trình tổ chức theo hướng đối tượng, nên thiết kế giao diện cần dùng hàm lớp bên - để thực hiện, nên dễ tổ chức quản lý o Về chương trình: dễ sử dụng, cho phép chỉnh nhiều thơng số Khuyết điểm: o Ít hình khối o Chỉ cho phép vẽ hình hình nên khơng thấy tính tương tác o Về phần tạo bóng chưa hồn thiện, hình nguồn sáng nằm - phía bóng (sai) Các ý tưởng chưa cài đặt kịp: o Cho phép vẽ nhiều hình hình, phần thiết kế bên cho phép vẽ nhiều hình hình (biến lstObj có kiểu list) o Cho phép hình tương tác với với o Cho phép thực Animation, ví dụ người dùng tịnh tiến hình cho hình di chuyển từ từ đến vị trí o Cho phép người dùng nhập vào nhiều phép biến đổi liên tiếp - dùng hiệu ứng Animation để mô tả phép biến đổi Nhận xét đề project: o Tương đối khó o Phù hợp với mơn đồ họa máy tính o Nên cho đồ án vào đầu học kỳ để sinh viên có thời gian chuẩn bị kỹ Tài liệu tham khảo: OpenGL® SUPERBIBLE Fourth Edition Comprehensive Tutorial and Reference; Richard S Wright, Jr., Benjamin Lipchak, Nicholas Haemel http://nehe.gamedev.net/ http://members.hellug.gr/nkour/Tao.OpenGL_Builder/Tao_Builder-html.zip Slide thầy Bùi Tiến Lên Thực hiện: Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên Trang 30 ... Kiên Trang Đồ án 3D – Học đồ họa ba chiều o glLightfv: Lớp TH2005/02 hiệu chỉnh thông số nguồn sáng OpenGL (có nguồn sáng OpenGL) như: vị trí, hướng chiếu, góc chiếu, màu, … nguồn sáng o glNormal3f:... TH2005/02 Trang Đồ án 3D – Học đồ họa ba chiều - Lớp TH2005/02 Danh sách thuộc tính, phương thức lớp: _ObjectOpenGL: lớp trừu tượng, cung cấp phương thức ảo để lớp định nghĩa lại, phương thức dùng... Kiên Trang Đồ án 3D – Học đồ họa ba chiều Lớp TH2005/02 (trục có đầu đặt tâm tọa độ Trans late voi khơng) Hàm ảo Tịnh d tiến hình theo ba trục Ox, Oy, Scale voi Oz Hàm d giãn hình theo ảo Co