1. Trang chủ
  2. » Giáo Dục - Đào Tạo

báo cáo đồ án 3d học đồ họa ba chiều theo phương pháp trực quan

30 5 0

Đ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 đề Báo Cáo Đồ Án 3D Học Đồ Họa Ba Chiều Theo Phương Pháp Trực Quan
Tác giả Nguyễn Đăng Khoa, Huỳnh Duy Khương, Nguyễn Trung Kiên
Trường học Khoa Công Nghệ Thông Tin, Trường Đại học Công Nghệ Thông Tin - Đại Học Quốc Gia Thành phố Hồ Chí Minh
Chuyên ngành Đồ Họa Máy Tính
Thể loại Đồ án tốt nghiệp
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 30
Dung lượng 162,94 KB

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

Nội dung

Những kiến thức lý thuyết có liên quan đến đồ án, về OpenGL: Sử dụng các hàm sau để vẽ các hình khối cơ bản: o Mặt trước của hình được xác đinh là mặt được vẽ ngược chiều kim đồng hồ bằ

Trang 1

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

Trang 2

Những kiến thức lý thuyết có liên quan đến đồ án, về OpenGL:

 Sử dụng các hàm sau để vẽ các hình khối cơ bản:

o Mặt trước của hình được xác đinh là mặt được vẽ ngược chiều kim đồng

hồ bằng 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)

Trang 3

o gluSphere: vẽ hình cầu.

o gluQuadricOrientation: xác định hướng của hình (mặt trước, mặt sau)

o gluNewQuadric, gluDeleteQuadric: tạo và hủy đối tượng GLUquadric

dùng để xác định các thông số vẽ cần thiết khi sử dụng hàm

gluCylinder, gluDisk, gluSphere.

o glVertex3f: để xác định các điểm vẽ khi vẽ hình lập phương (vẽ từng

mặt phẳng của hình)

 Sử dụng các hàm sau để thực hiện các phép biến đổi hình học:

o Về bản chất ma trận của ModelView trong OpenGL là ma trận biến đổi

Affine, nên khi vẽ một hình nào trong OpenGL thì tất cả các điểm của

hình sẽ nhân với ma trận ModelView để ra tọa độ mới tương ứng với

phép biến đổi Affine hiện tại, rồi mới được vẽ ra

o glTranslatef: (bản chất) nhân ma trận ModelView với ma trận biểu

o glMultMatrixf: nhân ma trận ModelView với ma trận bất kỳ

o glLoadIdentity: kết hợp với hàm glMatrixMode(GL_MODELVIEW) để ma

trận ModelView thành ma trận đơn vị

 Sử dụng các hàm sau để thực hiện các phép chiếu:

o glOrtho: thiết đặt khung nhìn của phép chiếu trực giao Khung nhìn

của phép chiếu trực giao là một hình hộp

o gluPerspective: thiết đặt khung nhìn của phép chiếu phối cảnh Khung

nhìn của phép chiếu phối cảnh là một chóp cụt

 Sử dụng các 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 các hình khối

o glColorMaterial, glMaterialfv: thiết đặt các thông số liên quan của

vật liệu như độ sáng, màu vật liệu phụ thuộc vào yếu tố môi trường nào

o glEnable(GL_LIGHTING), glDisable(GL_LIGHTING): bật/tắt hiệu ứng

chiếu sáng

Trang 4

o glLightfv: hiệu chỉnh các thông số của một nguồn sáng trong OpenGL

(có 8 nguồn sáng trong OpenGL) như: vị trí, hướng chiếu, góc chiếu,

màu, … của nguồn sáng

o glNormal3f: chỉ định vector pháp tuyến của mặt phẳng, dùng trong kỹ

thuật chiếu sáng

o Tạo bóng: sử dụng một phép biến đổi để biến đổi các hình 3D thành

dạng phẳng và nằm trên một mặt phằng xác định, và các hình được vẽ ra

là màu đen

o glEnable(GL_FOG), glDisable(GL_FOG): bật/tắt hiệu ứng sương mù

o glFogfv, glFogf: thiết đặt các thông số liên quan đến hiệu ứng sương

mù như: màu sắc, vị trí bắt đầu, vị trí kết thúc, độ dày đặc, … của sương

 Sử dụng các hàm sau để ánh xạ texture:

o glGenTextures: tạo texture

o glBindTexture: áp dụng texture cho các hình khối

o glTexImage2D: đưa dữ liệu (ảnh) vào texture

o glTexParameteri: thay đổi các tham số của texture như bộ lọc… của

texture

o gluQuadricTexture: cho phép áp dụng texture nào cho hình Dùng kết

hợp với các hàm gluSphere, gluCylinder, gluDisk để ánh xạ hiệu

ứng texture

o glTexCoord2f: ánh xạ texture cho các hình dạng phẳng

 Sử dụng các hàm để xác định màu sắc cho hình khối:

o glColor4f: xác định màu cho các hình

4 Ý tưởng cài đặt:

 Cấu trúc của chương trình được thiết kế theo hướng đối tượng, gồm có các

lớp chính sau:

Trang 6

- Danh sách các thuộc tính, phương thức của từng lớp:

_ObjectOpenGL: lớp trừu tượng, cung cấp các phương thức thuần ảo để

các lớp con định nghĩa lại, các phương thức dùng chung cho các lớp con

Là lớp mô tả các thuộc tính chung của hình khối

mô tả ma trận4x4) mô tảphép biến đổiAffine hiệntại của hình

Được sửdụng trong

Rotate, Scale,Translate,

Axisymmetric

Trang 7

lúc nào cũngnằm ở tâmcủa hình Vídụ: hình nónthì mCenter

là tâm củamặt phẳngđáy

r

hình Mảng 4phần tử ứngvới R, G, B,A

Bật tắt chế độ

vẽ hình ramàn hình

leTex ture

Boolean

Bật tắt ánh xạtexture lênhình

Phươ ng thức

Kiể u trả

e

void

Hàm ảo Quayhình một gócAngle, quaymột trục bất kỳ

Trang 8

(trục có thể cómột đầu đặt tạitâm tọa độ hoặckhông).

late

void

Hàm ảo Tịnhtiến hình theo

ba trục Ox, Oy,Oz

d

Hàm ảo Cogiãn hình theo

3 trục Ox, Oy,Oz

mmetr ic

void

Hàm ảo Thựchiện phép đốixứng với mộttrục bất kỳ

lor

void

Đặt lại màu củahình

d

Hàm ảo Vẽhình ra mànhình Tại lớpnày, chỉ đặt lạimàu và vật liệucho hình Cáclớp sau sẽ thựchiện vẽ hìnhtương ứng vớilớp đó

_Cone: kế thừa từ lớp _ObjectOpenGL Là lớp thể hiện thông tin và phụ

trách vẽ hình nón

Trang 9

double

Chiều caocủa hình nón

es

dùng để vẽhình nón Là

1 tham sốtrong hàm

gluCylinder, gluDisk của

1 tham sốtrong hàm

gluCylinder, gluDisk của

OpenGL

icCon e

GLUqu adric

Là 1 tham sốtrong hàm

gluCylinder.

icDis k

GLUqu adric

Là 1 tham sốtrong hàm

gluDisk.

Phươ ng thức

Kiểu

Trang 10

Không có phương thức mới

_Cubic: kế thừa từ lớp _ObjectOpenGL Là lớp thể hiện thông tin và phụ

phương

Phươ ng thức

Kiểu

Không có phương thức mới

_Cylinder: kế thừa từ lớp _ObjectOpenGL Là lớp thể hiện thông tin và

t

double

Chiều caocủa hình trụ

s

dùng để vẽhình trụ Là

1 tham sốtrong hàm

gluCylinder , gluDisk

Trang 11

1 tham sốtrong hàm

gluCylinder , gluDisk

của OpenGL

icCyli nder

GLUqu adric

Là 1 tham sốtrong hàm

gluCylinder

cDisk1

GLUqu adric

Là 1 tham sốtrong hàm

gluDisk.

cDisk2

GLUqu adric

Là 1 tham sốtrong hàm

gluDisk.

Phương thức

Kiểu

Không có phương thức mới

_Sphere : kế thừa từ lớp _ObjectOpenGL Là lớp thể hiện thông tin và

es

dùng để vẽhình cầu Là

Trang 12

1 tham sốtrong hàm

1 tham sốtrong hàm

Là 1 tham sốtrong hàm

gluSphere.

Phương thức

Kiểu

Không có phương thức mới

_LightSource: kế thừa từ lớp _ObjectOpenGL Là lớp thể hiện thông tin

Mảng 3 chiềuứng với tọa

Mảng 3 chiềuứng với tọa

Trang 13

độ x, y, z, làtọa độ củamột điểm,điểm này và

vị trí củanguồn sáng

sẽ tạo thànhhướng củanguồn sáng

CutOf f

sáng củanguồn sáng

entLi ght

float[

]

Màu của ánhsáng xungquanh Mảnggồm 4 phần

tử ứng với R,

G, B, A Cònmàu phảnchiếu củanguồn sáng

là mColor đặt

_ObjectOpenGL

x

bật nguồnsáng nàotrong

OpenGL

Trang 14

6 mQuad

ricCo ne

GLUqu adric

Được dùng

để vẽ nguồnsáng, chủ yếu

là để minhhọa nguồnsáng đangnằm ở đâu

Là tham số

gluCylinder

trongOpenGL

ricSp here

GLUqu adric

Được dùng

để vẽ nguồn

tham số củahàm

gluSphere

trongOpenGL

Phương thức

Kiểu

Không có phương thức mới

_Vector: kế thừa từ lớp _ObjectOpenGL, sử dụng lớp _Vector3D Là lớp

thể hiện thông tin và phụ trách vẽ vector

Điểm bắt đầucủa vector

Trang 15

gluCylinder, gluDisk

trongOpenGL

Phương thức

le

Boole an

Bật tắt việc

vẽ trục tọa độ

ra màn hình

Phương thức

Kiểu

độ ra màn

Trang 16

float []

Chứa các hệ

phương trìnhmặt phẳng

Mảng 4 phần

tử ứng với hệ

số A, B, C, Dtrong phươngtrình đườngthẳng

le

Boolean

Bật tắt việc

vẽ nền ramàn hình

Phương thức

Trang 17

Ma trận đểbiến đổi các

thành dạngphẳng và nằmtrên mặt nền

Ma trận nàythay đổi khinguồn sángthay đổi vịtrí

nd

_Grou nd

Tham chiếuđến đổi tượngnền Dùng đểtính ma trậnbiến đổi

le

Boole an

Bật tắt việc

vẽ bóng ramàn hình

Phương thức

Kiểu

torMatr ix

trận biếnđổi ứng với

vị trí mới

Trang 18

của nguồnsáng.

của cáchình (tham

số của hàm

là tập hợpcác hìnhcần tạobóng) lênnền

_Texture: Lớp dùng để điều khiển việc ánh xạ texture lên các hình.

Mảng 1 phầntử

le

Boole an

Bật tắt việc

texture lênhình

Phương thức

Nạp texturelên bộ nhớ

Dùng hình

Trang 19

để làmtexture.

Tham sôcủa hàm làđường dẫnchỉ đến fileảnh Trả vềfalse nếunạp texturethất bại

áp dụngtexture lêncác hình

(Áp dụngđược haykhông còntùy thuộcvào biếnmEnable)

_Fog: Lớp dùng để điều khiển việc tạo sương mù.

Trang 20

của sương

mù (Tínhtheo trục Oz)

ity

của sươngmù

le

Boole an

Bật tắt việctạo sươngmù

Phương thức

mEnable)

_Vector3D: Lớp mô tả thông tin và các phương thức sử lý của một vector

trong không gian Oxyz

Thuộc

Trang 21

1 mX float Giá trị x của

Thực hiệnphép trừ 2vector

r _Vector 3D(floa t[] P)

_Vector3D

Ép kiểufloat[] sangkiểu

_Vector3D

r float[]

(_Vecto r3D P)

_Vector3D

Ép kiểu_Vector3Dsang kiểufloat[]

_Affine: Lớp mô tả thông tin về một phép biến đổi Affine bất kỳ.

Affine

Phương thức

Kiểu

Trang 22

mMatrixthành matrận mô tảcho phépquay quanhmột trục bất

kỳ với gócquay Angle

mMatrixthành matrận mô tảcho phép cogiãn theotheo 3 trục

Ox, Oy, Oz

te

mMatrixthành matrận mô tảcho phéptịnh tiếntheo 3 trục

Ox, Oy, Oz

etric

mMatrixthành matrận mô tảcho phépđối xứng

Trang 23

qua mộttrục bất kỳ.

y

mMatrixthành matrận đơn vị

độ mới ứngvới phépbiến đổi đó

r+

_Affi ne

Kết hợp 2phép biếnđổi Affine

_Math3D: Lớp chứa các hàm static, các hàm này thực hiện các phép toán 3

chiều Tất cả các hàm này đều được lấy từ thư viện gltool.h

gthSquared

float

Lấy bìnhphươngchiều

Trang 24

dài củađoạnthẳng.

d

Thựchiện cogiãnvectortheo hệ

số chotrước

gth

float

Lấychiềudài củavector

tor

void

Chuyểnmộtvectorthànhvector

có chiềudài đơnvị

d

Tích cóhướngcủa 2vector

tion

void

Tìmphươngtrìnhmặt

Trang 25

adowMatrix

void

Lập matrận biếnđổi làmcác hình

3 chiềuthànhhìnhphẳng

và nằmtrên mộtmặtphẳngdựa vàophươngtrìnhmặtphẳng

và vị tríđèn

at

Tínhchiềudài củađoạnthẳng

eenVectors

float

Tính gócgiữa 2vector

ctor

float[

Tìmvector

Trang 26

] pháp

tuyếncủa mặtphẳng

d

Saochép cácgiá trị từ

ma trậnnguồnsang matrậnđích

_Form1: lớp form, dùng để xử lý giao diện, Trong lớp này chứa nhiều

control cơ bản, nên sẽ không liêt kê các phương thức và thuộc tính liên

quan đến control Chỉ nêu các thuộc tính và hàm có liên quan đến các lớp ở

trên

Thu ộc

bj

List<_ObjectOpenGL>

Tập hợpcác hìnhkhối cơbản

ight Sour ce

List<_LightSource>

Tập hợpcácnguồnsáng

ecto r

List<_Vector>

Tập hợpcácvector,

Trang 27

chỉ dùng

để minhhọa trụckhi thựchiệnphépquayquanhtrục,hoặcphép đốixứngtrục

tượngdùng đểlưu cácthông sốcần thiếtkhi tạosươngmù

ure

tượngdùng đểlưu cácthông sốcần thiếtkhi ánh

Trang 28

axes

tượngdùng để

vẽ trụctọa độ

Phương thức

Ki ểu trả

id

Hàmchính,dùng để

vẽ cáchình lênmànhình,trục tọa

độ, tạobóng,sươngmù,texture,nền,nguồnsáng

id

Thiết lậpcác

Trang 29

thông sốban đầuchoOpenGL

id

Thiết đặtphépchiếutrực giaohoặcphépchiếuphốicảnh

 Lớp Form1 có một đối tượng simpleOpenGlControl1 thuộc lớp

simpleOpenGlControl (thuộc Tao Framework), tất cả các hàm OpenGL sẽ

được vẽ lên trên đối tượng này

 Khi người dùng yêu cầu một chức năng nào đó trên giao diện thì chương

trình chỉ việc gọi chức năng tương ứng được cung cấp bởi các lớp đã trình

bày, rồi sau đó cho đối tượng simpleOpenGlControl vẽ lại là được

5 Hướng dẫn sử dụng:

Chưa làm kịp

Trang 30

6 Tự đánh giá:

- Ưu điểm:

o Về phần cài đặt: chương trình được tổ chức theo hướng đối tượng,

nên khi thiết kế giao diện chỉ cần dùng hàm của những lớp bên dưới

để thực hiện, nên dễ tổ chức và 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ẽ một hình trên màn hình nên không thấy được tính

tương tác

o Về phần tạo bóng vẫn chưa hoàn thiện, khi hình và nguồn sáng nằm

về 2 phía của nền thì vẫn hiện bóng (sai)

- Các ý tưởng chưa cài đặt kịp:

o Cho phép vẽ nhiều hình trên màn hình, về phần thiết kế bên dưới thì

đã cho phép vẽ nhiều hình trên màn hình (biến lstObj có kiểu list)

o Cho phép 2 hình tương tác với nhau với nhau

o Cho phép thực hiện Animation, ví dụ người dùng tịnh tiến hình thì

cho hình di chuyển từ từ đến vị trí mới

o Cho phép người dùng nhập vào nhiều phép biến đổi liên tiếp rồi

dùng hiệu ứng Animation để mô tả các phép biến đổi đó

- Nhận xét về đề bài 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 mỗi học kỳ để sinh viên có thời gian chuẩn bị

kỹ hơn

7 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 của thầy Bùi Tiến Lên

Ngày đăng: 31/07/2022, 00:28

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