LỜI CẢM ƠN
Trong suốt quá trình thực hiện đồ án tốt nghiệp: “Nghiên cứu thư viện đồ
họa OpenGL và ứng dụng trong mô phỏng động học của Robot”, ngoài sự cố
gắng hết mình của bản thân, trong quá trình làm đồ án em đã nhận được sự giúp
đỡ tận tình từ phía nhà trường, thầy cô gia đình và bạn bè.
Em xin gửi lời cảm ơn sâu sắc đến ThS.Nguyễn Văn Huân mặc dù bận
nhiều công việc nhưng đã dành thời gian hướng dẫn và giúp đỡ em tận tình trong
quá trình làm đồ án tốt nghiệp.
Em xin chân thành cảm ơn các thầy, cô trường Đại học Công nghệ thông
tin và Truyền thông đã truyền đạt những kiến thức quý báu cho em trong suốt quá
trình học tập.
Em cũng xin cảm ơn tới gia đình và bạn bè đã luôn quan tâm, động viên,
giúp đỡ và tạo điều kiện cho em để em có điều kiện tốt nhất để hoàn thành đồ án này.
Trong quá trình thực hiện đồ án, mặc dù em đã có nhiều cố gắng nhưng do
hạn chế về thời gian cũng như kinh nghiệm nên đồ án này chắc chắn còn mắc phải
những thiếu sót, rất mong được sự góp ý kiến của các thầy cô và các bạn để ứng
dụng mà đồ án đề cập được hoàn thiện hơn.
Em xin chân thành cảm ơn!
Thái nguyên, ngày 16 tháng 06 năm 2012
Sinh viên thực hiện
Cao Thị Lâm
1
LỜI CAM ĐOAN
Để hoàn thành đồ án tốt nghiệp đúng thời gian quy định và đáp ứng được
yêu cầu của đề tài, bản thân em đã cố gắng tìm hiểu và nghiên cứu, học tập và
làm việc trong thời gian dài. Em đã tham khảo một số tài liệu được nêu trong
phần “Tài liệu tham khảo” và các mã nguồn mở được cho phép sử dụng cùng các
diễn đàn mạng uy tín trên Internet. Nội dung đồ án hoàn toàn không sao chép từ
các đồ án khác, không vi phạm bản quyền tác giả. Toàn bộ đồ án là do bản thân
em nghiên cứu và xây dựng nên.
Em xin cam đoan những lời trên là đúng, nếu có thông tin sai lệch em xin
hoàn toàn chịu trách nhiệm trước hội đồng.
Thái nguyên, ngày 16 tháng 06 năm 2012
Sinh viên thực hiện
Cao Thị Lâm
2
MỤC LỤC
LỜI CẢM ƠN..........................................................................................................1
LỜI CAM ĐOAN....................................................................................................2
DANH MỤC BẢNG................................................................................................5
DANH MỤC HÌNH VẼ...........................................................................................6
LỜI NÓI ĐẦU.........................................................................................................8
CHƯƠNG 1: TỔNG QUAN VỀ ĐỘNG HỌC VÀ THƯ VIỆN ĐỒ HỌA
OPENGL................................................................................................................10
1.1 Giới thiệu chung............................................................................................10
1.2 Động học......................................................................................................10
1.2.1 Chuyển động cơ bản của vật rắn...............................................................11
1.2.2 Động học của Robot................................................................................13
1.3 Thư viện đồ họa OpenGL.............................................................................15
1.3.1 Cơ chế hoạt động của OpenGL.................................................................16
1.3.2 Đặc điểm của OpenGL.............................................................................17
1.3.3 Thư viện hỗ trợ lập trình OpenGL............................................................26
1.3.4 Các bước tổng quan khi xây dựng ứng dụng đồ hoạ với thư viện OpenGL.27
1.4 Ngôn ngữ lập trình Visual C++ và các ứng dụng của MFC..........................34
CHƯƠNG 2: PHÂN TÍCH, THIẾT KẾ BÀI TOÁN MÔ PHỎNG CHUYỂN
ĐỘNG CỦA ROBOT............................................................................................35
2.1 Giới thiệu về Robot KUKA..........................................................................35
2.2 Cách tạo ra Project MFC để thực hiện quá trình mô phỏng........................35
2.3 Khởi tạo và thiết lập các gói thư viện của OpenGL....................................40
2.4 Thiết kế mô hình Robot trên Solidwork......................................................45
2.5 Tính toán động học Robot............................................................................48
3
2.5.1 Phương trình xác định vị trí khâu thao tác (bàn kẹp) của Robot (Bài toán
động học thuận)................................................................................................49
2.5.2 Bài toán ngược xác định thông số động học Robot....................................51
2.6 Mô phỏng chương trình trên OpenGL.........................................................52
CHƯƠNG 3: CHƯƠNG TRÌNH MÔ PHỎNG....................................................53
3.1 Giao diện tổng quan của chương trình..........................................................53
3.2 Robot vẽ theo quỹ đạo đường gấp khúc 3D.................................................54
3.3 Robot vẽ theo quỹ đạo đường cánh hoa........................................................55
3.4 Robot vẽ theo quỹ đạo đường Ellipse...........................................................56
3.5 Robot vẽ theo quỹ đạo đường hình Sin.......................................................57
3.6 Robot vẽ theo quỹ đạo đường tròn................................................................58
3.7 Robot vẽ theo quỹ đạo đường thằng.............................................................59
KẾT LUẬN............................................................................................................61
TÀI LIỆU THAM KHẢO......................................................................................62
PHỤ LỤC...............................................................................................................63
DANH MỤC BẢNG
4
Bảng 1.1: Một số kiểu dữ liệu của OpenGL..........................................................17
Bảng 1.2: Các tham số của glBegin()....................................................................18
Bảng 1.3: Các ma trận biến đổi hiện hành.............................................................31
Bảng 2.1: Bảng thông số Denavit - Hartenberg (DH)...........................................49
5
DANH MỤC HÌNH VẼ
Hình 1.1: Chuyển động tịnh tiến của thùng xe trên đoạn đường thẳng................10
Hình 1.2: Chuyển động của vật rắn quanh trục cố định........................................11
Hình 1.3: Chuyển động của điểm thuộc vật rắn quanh trục cố định.....................12
Hình 1.4: Cơ chế hoạt động của OpenGL.............................................................15
Hình 1.5: Các đối tượng đồ họa cơ bản.................................................................17
Hình 1.6: Quá trình vẽ các Vertex 2D trên OpenGL.............................................18
Hình 1.7: Quá trình Render màu sắc của vật liệu..................................................19
Hình 1.8: Quá trình tạo hiệu ứng ánh sánh cho đối tượng....................................21
Hình1.9: Quá trình Texture Mapping trên OpenGL..............................................23
Hình 1.10: Quá trình Blending màu sắc của vật liệu trên OpenGL......................24
Hình 1.11: Quá trình tạo hiệu ứng sương mù trên OpenGL.................................25
Hình 1.12: Các đối tượng 3D được xây dựng lại trên OpenGL............................29
Hình 1.13: Phép chiếu trực giao............................................................................31
Hình 1.14: Phép chiếu phối cảnh...........................................................................31
Hình 1.15: Hệ tọa độ chuẩn trong OpenGL...........................................................32
Hình 1.16: Các phép biến đổi trong OpenGL........................................................33
Hình 2.1: Bắt đầu thiết lập project MFC..............................................................35
Hình 2.2: Thiết lập 1..............................................................................................35
Hình 2.3: Thiết lập 2..............................................................................................36
Hình 2.4: Thiết lập 3..............................................................................................36
Hình 2.5: Thiết lập 4..............................................................................................37
Hình 2.6: Thiết lập 5..............................................................................................37
Hình 2.7: Hoàn thành thiết lập Project MFC.........................................................38
6
Hình 2.8: Chạy thử Project MFC...........................................................................38
Hình 2.9: Các lớp ứng dụng trong MFC................................................................39
Hình 2.10: Thiết lập các gói thư viện OpenGL.....................................................40
Hình 2.11: Chọn hàm OnCreate() để thiết lập OpenGL........................................41
Hình 2.12: Chọn hàm OnDestroy() để hủy OpenGL............................................42
Hình 2.13: Chọn hàm OnSize() để thiết lập các ứng dụng OpenGL....................43
Hình 2.14: Chọn hàm OnDraw() để vẽ các đối tượng OpenGL...........................43
Hình 2.15: Chọn hàm OnInitialUpdadte() để cập nhật sự thay đổi của hệ thống.44
Hình 2.16: Mô hình Robot.....................................................................................45
Hình 2.17: Phần đế robot.......................................................................................45
Hình 2.18: Mô hình khâu 1 của Robot..................................................................46
Hình 2.19: Mô hình khâu 2 của Robot..................................................................46
Hình 2.20: Mô hình khâu 3 của Robot..................................................................47
Hình 2.21: Mô hình và hệ tọa độ Robot ba bậc tự do...........................................48
Hình 3.1: Giao diện tổng quan chương trình.........................................................53
Hình 3.2: Robot vẽ đường gấp khúc 3D................................................................55
Hình 3.3: Robot vẽ đường cánh hoa......................................................................56
Hình 3.4: Robot vẽ đường Ellipse.........................................................................57
Hình 3.5: Robot vẽ đường hình Sin.......................................................................58
Hình 3.6: Robot vẽ đường tròn..............................................................................59
Hình 3.7: Robot vẽ đường thằng............................................................................60
7
LỜI NÓI ĐẦU
Robot công nghiệp là lĩnh vực đã được nghiên cứu và phát triển mạnh trên
thế giới. Ở nước ta, lĩnh vực này còn mới mẻ, ngày nay trong môi trường sản xuất
hiện đại, hầu hết các quy trình được thực hiện bằng các máy chuyên dùng. Với
các phương pháp này, đã làm giảm rõ rệt chi phí sản xuất các sản phẩm công
nghiệp phù hợp với đa số người tiêu dùng. Tuy nhiên mỗi máy công cụ được thiết
kế để thực hiện nguyên công cho trước, mỗi khi cần thay đổi kiểu mẫu sản phẩm
thì toàn bộ dây chuyền sản xuất phải được cải tạo lại. Kiểu tự động hoá này là
kiểu tự động hóa cứng và rất tốn kém. Do vậy mà trên thế giới có phương pháp
sản xuất tiên tiến đó là chế tạo ra các loại robot được đưa vào quy trình chế tạo
để thực hiện nhiều nguyên công như: chuyển tải vật tư và các thiết bị trong các
dây chuyền hiện đại, hàn điểm, sơn phun và lắp ráp trong công nghiệp ô tô… Do
các cơ cấu hoạt động được điều khiển bằng máy tính hoặc các bộ vi xử lý, chúng
có thể tái lập dễ dàng cho nhiều nguyên công khác nhau, do đó không cần thay
các máy móc này khi thay đổi kiểu mẫu sản phẩm. Đây là kiểu tự động hoá linh
hoạt và mang lại hiệu quả kinh tế cao và rất cần thiết trong hoàn cảnh của đất
nuớc ta hiện nay đang tiến tới công nghiệp hóa và hiện đại hoá đất nuớc.
Robot công nghiệp được ứng dụng rộng rãi trong các dây chuyền sản xuất
hiện đại và có sự linh hoạt cao, vì vậy việc nghiên cứu và chế tạo robot là cần
thiết. Trong quá trình tính toán, thiết kế và chế tạo robot thì việc mô phỏng các
hoạt động của robot là một phần rất quan trọng. Quá trình mô phỏng sẽ cho ta
thấy được sự hoạt động và quá trình làm việc của robot. Với các ý nghĩa đó, trong
Đồ án tốt nghiệp này em đã chọn đề tài “Nghiên cứu thư viện đồ họa OpenGL
và ứng dụng trong mô phỏng động học của Robot”.
Nội dung của đồ án gồm có ba chương như sau:
Chương 1: Tổng quan về động học và thư viện đồ họa OpenGL.
Chương 2: Phân tích, thiết kế bài toán mô phỏng hoạt động của Robot.
Chương 3: Chương trình mô phỏng.
8
CHƯƠNG 1: TỔNG QUAN VỀ ĐỘNG HỌC VÀ THƯ VIỆN ĐỒ
HỌA OPENGL
1 Giới thiệu chung
Ngày nay, Robot công nghiệp có vai trò rất quan trọng và được ứng dụng
rộng rãi trong quá trình sản xuất của nền công nghiệp hiện đại. Để chế tạo ra
được một mô hình robot và đem ra phục vụ cho sản xuất phải trải qua rất nhiều
giai đoạn như: tìm hiểu về các loại robot và các đặc tính hoạt động của nó, tính
toán một cách chính xác các khâu của các cơ cấu, các phương trình hoạt động và
thiết kế các mô hình 3D sao cho tối ưu và hiệu quả nhất. Một mô hình robot hoạt
động trơn tru và đáp ứng được các yêu cầu kỹ thuật đề ra đòi hỏi việc chế tạo là
hết sức tỉ mỉ và chi tiết từng bước một. Trong một mô hình robot bao gồm rất
nhiều phần như: cơ khí để chế tạo ra các chi tiết, điện tử để điều khiển các hoạt
động và tin học để lập trình cho các cơ cấu của robot hoạt động theo các quỹ đạo
và yêu cầu kỹ thuật đề ra. Một phần cũng rất quan trọng mà một mô hình robot
nào cũng phải thực hiện là mô phỏng quá trình hoạt động của nó.
Để lập trình mô phỏng được hoạt động của robot, sau đây em xin giới
thiệu tổng quan về động học và thư viện đồ họa OpenGL.
1.2 Động học
Động học khảo sát chuyển động cơ học của vật thể (chất điểm) về mặt
hình học, không quan tâm đến nguyên nhân gây chuyển động và biến đổi chuyển
động của chúng.
Khi vật thể có kích thước rất bé so với quỹ đạo chuyển động của nó hoặc
có thể bỏ qua thì ta coi đó là chất điểm chuyển động, gọi tắt là động điểm.
Chuyển động xảy ra trong không gian nhưng hoàn toàn có tính tương đối
phụ thuộc vào vật lấy làm mốc để theo dõi chuyển động. Vật lấy làm mốc được
gọi là hệ quy chiếu.
Để tính thời gian ta chọn một thời điểm tuỳ ý làm thời điểm gốc (t 0),
thường chọn t0 là lúc bắt đầu khảo sát chuyển động.
9
Động học được chia làm hai phần chính là “Động học điểm” và “Động
học vật rắn”. Và để mô phỏng được động học của Robot, dưới đây em xin giới
thiệu tổng quan về động học vật rắn hay chuyển động cơ bản của vật rắn. Từ đó
ứng dụng vào tìm hiểu động học của Robot.
1.2.1 Chuyển động cơ bản của vật rắn
1.2.1.1 Chuyển động tịnh tiến của vật rắn
Định nghĩa
Chuyển động tịnh tiến của vật rắn là chuyển động mà mỗi đoạn thẳng
thuộc vật đều song song với vị trí ban đầu của nó.
Ví dụ: Thùng xe chuyển động tịnh tiến so với mặt đường trên đoạn đường
thẳng như hình 1.1:
Hình 1.1: Chuyển động tịnh tiến của thùng xe trên đoạn đường thẳng
Chuyển động tịnh tiến có thể là thẳng hoặc cong, các điểm thuộc vật rắn
chuyển động tịnh tiến có thể chuyển động không thẳng, không đều nên không có
khái niệm điểm chuyển động tịnh tiến.
Tính chất của chuyển động tịnh tiến
Trong chuyển động tịnh tiến, mọi điểm thuộc vật chuyển động giống hệt
nhau. Nghĩa là tại mỗi thời điểm vận tốc và gia tốc của các điểm thuộc vật giống
hệt nhau. Quỹ đạo của mọi điểm thuộc vật có thể tịnh tiến để trùng khít lên nhau.
Như vậy, có thể thấy:
Khảo sát một số chuyển động tịnh tiến của vật rắn có thể thay bằng
khảo sát chuyển động của một điểm thuộc vật.
10
Lấy tên chuyển động của chất điểm thuộc vật để đặt tên cho chuyển
động của vật ấy.
Lấy vận tốc, gia tốc của điểm thuộc vật làm vận tốc, gia tốc của vật.
1.2.1.2 Chuyển động của vật rắn quanh trục cố định
Định nghĩa
Nếu trong quá trình chuyển động vật rắn có hai điểm cố định thì vật rắn
chuyển động quanh trục cố định đi qua hai điểm ấy.
Trục đi qua hai điểm cố định được gọi là trục quay của vật rắn.
Phương trình chuyển động của vật rắn quay quanh trục cố định
Dựng hai mặt phẳng
П0
và П chứa trục quay của vật,
П0
là mặt
phẳng cố định còn П là mặt phẳng động gắn với vật rắn. Vị trí của mặt phẳng П
xác định vị trí của vật. Gọi φ là góc giữa hai mặt phẳng
φ
П0
và П, như vậy
là thông số xác định vị trí của vật rắn quay quanh trục cố định. Ta có
phương trình chuyển động của vật rắn:
φ
=
φ
(t) .
Quy ước: φ > 0 khi vật quay ngược chiều kim đồng hồ. Đơn vị tính góc
φ là [rad].
11
Hình 1.2: Chuyển động của vật rắn quanh trục cố định
12
1.2.1.3 Chuyển động của điểm thuộc vật rắn quanh trục cố định
Xét chuyển động của điểm M thuộc vật rắn. M cách trục quay z là R=IM.
Khi vật rắn quay, quỹ đạoM là đường tròn tâm I bán kính R=IM.
Hình 1.3: Chuyển động của điểm thuộc vật rắn quanh trục cố định
Khi đó ta có phương trình chuyển động của điểm thuộc vật được xác định
như sau:
Do đã biết quỹ đạo của M nên ta dùng hệ tọa độ tự nhiên để khảo sát.
Chọn O là giao điểm của quỹ đạo điểm M với mặt phẳng
П0
làm gốc tọa độ,
chọn chiều quay ngựơc chiều kim đồng hồ làm chiều dương. Như vậy vị trí của
M được xác định bằng cung S = OM . Ta có phương trình chuyển động của M:
S
= OM = R . φ
(t) .
1.2.2 Động học của Robot
Về mặt động học, có thể xem tay máy như là một chuỗi động hở với một
khâu cố định, gọi là giá, và các khâu động. Mỗi khâu động là một vật rắn được
liên kết hoặc nối động với nhau nhờ các khớp động.
Bất kỳ một Robot nào cũng bao gồm các khâu liên kết với nhau thông
qua các khớp. Hai chuyển động cơ bản của các khâu thông qua khớp quay và
khớp tịnh tiến.
13
Để khảo sát chuyển động của các khâu, ta thường dùng phương pháp hệ
toạ độ tham chiếu hay hệ toạ độ cơ sở. Bằng cách “gắn cứng” lên mỗi khâu động
thứ k một hệ trục toạ độ vuông góc (Oxyz) k - còn gọi là các hệ toạ độ tương đối
và gắn cứng với giá cố định hệ trục toạ độ vuông góc (Oxyz) 0 - còn gọi là hệ toạ
độ tuyết đối, hệ toạ độ tham chiếu hay hệ toạ độ cơ sở, ta có thể khảo sát chuyển
động của một khâu bất kỳ trên tay máy hoặc chuyển động của một điểm bất kỳ
thuộc khâu.
Theo đó, toạ độ của điểm M thuộc một khâu bất kỳ, được xác định bởi bán
r M 0 . Với các thành phần (hình chiếu) của nó trong hệ toạ độ
kính vectơ
xM
cơ sở (oxyz)0 lần lượt là
0
,
yM
0
,
zM
0
được gọi là toạ độ tuyệt đối
của điểm M.
Toạ độ của điểm M thuộc khấu thứ k được xác định bởi bán kính vectơ
Ok M
với các thành phần tương ứng của nó trong hệ toạ độ (oxyz), gắn cứng
với khâu lần lượt là
xM
k
yM
,
k
,
zM
k
được gọi là toạ độ tương đối
của điểm.
Mếu M là điểm cố định trên khâu thì toạ độ tương đối của M sẽ không
thay đổi khi khâu chuyển động.
Dưới dạng ma trận ta có thể biểu diễn:
0
rM
0
=
R M k =
xM
0
yM
0
zM
0
0
0
=( x M , y M , z M
)T
x M k
y M k
zM
k
k
k
=( x M , y M , z M
)T
Bằng cách mô tả như trên, ta có thể coi tay máy như là một chuỗi các hệ
toạ độ liên tiếp có chuyển dộng tương đối với nhau.
14
Chuyển động của một tay máy thường là nhằm làm thay đổi vị trí và
hướng khâu tác động cuối hay khâu cuối (end - effector) bằng cách tuần tự cho
khâu cuối đi qua các điểm xác định nào đó để tạo ra các hoạt động có ích đã được
hoạch định trước.
Vì vậy, khi khảo sát chuyển động của tay máy, người ta thường quan tâm
đến chuyển động của khâu cuối bao gồm quỹ đạo hoặc các vị trí đi qua (hay tổng
quát là một đường cong trong không gian ba chiều), vận tốc và gia tốc chuyển
động ... mà không quan tâm nhiều đến chuyển động của các khâu trung gian (gọi
là các khâu thành viên).
Từ những khái niệm nêu trên, ở nội dung động học có hai bài toán thường
được đặt ra như sau: Bài toán động học thuận và bài toán động học ngược (sẽ
được trình bày và tính toán chi tiết trong chương tiếp theo).
Bài toán động học thuận: xác định vị trí điểm cuối và hướng tay kẹp mà
tay máy đạt được khi qui luật thay đổi theo thời gian của các thông số định vị của
tay máy là hàm đã biết. Bài toán này nhằm phục vụ bài toán xác định phạm vi
hoạt động của tay máy, bài toán thuận trong động lực học tay máy…
Bài toán động học ngược: xác định qui luật thay đổi theo thời gian của tay
máy để nó nắm bắt được vị trí đã cho của đối tượng theo một hướng định trước
của tay kẹp. Bài toán này nhằm phục vụ các bài toán điều khiển qũy đạo, các bài
toán điều khiển tối ưu...
1.3 Thư viện đồ họa OpenGL
Để hiểu một cách cụ thể về công cụ đồ họa như OpenGL thì một câu hỏi được
đặt ra là: OpenGL là gì? Và tại sao lại sử dụng OpenGL cho bài toán mô phỏng?
OpenGL là chữ viết tắt của Open Graphic Library, là một thư viện đồ họa
tốc độ cao và độc lập với hệ thống giao diện các hệ điều hành. Tiền thân của
OpenGL là IRIS GL do hãng Silicon Graphic Library Inc phát triển cho các
WorkStation đồ họa tốc độ cao từ năm 1982. Sau đó từ năm 1992 thì OpenGL đã
trở thành một chuẩn công nghiệp và đặc tính kỹ thuật của OpenGL do ủy ban kỹ
thuật ARB (Architectural Review Board) phê chuẩn.
15
Công nghệ đồ họa đang ngày càng được ứng dụng trong cuộc sống, và
ngày nay, nó đã được phát triển tương đối mạnh mẽ ở Việt Nam. Trong kỹ thuật
thì việc sử dụng các ứng dụng của OpenGL cũng như DirectX vào việc mô phỏng
các cơ cấu máy móc, các hoạt động của Robot công nghiệp trước khi đem thử
nghiệm bằng mô hình thực là giải pháp mà rất nhiều kỹ sư cơ khí cũng như cũng
như các viện nghiên cứu lựa chọn do tính ưu việt của nó trong việc thể hiện các
mô hình đồ họa động trong không gian ba chiều (3D). Vì vậy trong phạm vi của
đồ án này em chọn cách sử dụng OpenGL để xây dựng bài toán mô phỏng.
16
1.3.1 Cơ chế hoạt động của OpenGL
Hình 1.4: Cơ chế hoạt động của OpenGL
OpenGL có cơ chế hoạt động theo kiểu ống dẫn, tức là đầu ra của giai
đoạn trước là đầu vào của giai đoạn sau. Từ sơ đồ thì các thành phần của cơ chế
được giải thích như sau:
Display List: Là nơi lưu lại một số lệnh để xử lý sau.
Evaluator (bộ ước lượng): Xấp xỉ các đường cong và mặt phẳng hình
học bằng cách đánh giá các đa thức của dữ liệu đưa vào.
Per- vertex Operations and Primitive assembly: Xử lý các primitive hình
học (điểm, đoạn thẳng, đa giác) được biểu diễn bởi các vertex. Các vertex sẽ được
xử lý và các primitive được cắt xén vào viewport để chuẩn bị cho khâu kế tiếp.
Rasterization: Tạo ra một chuỗi các địa chỉ bộ đệm khung và các giá trị
liên quan bằng cách sử dụng mô tả 2 chiều của điểm, đoạn thẳng hay đa giác. Mỗi
phần tử (fragment) được sinh ra sẽ đưa vào giai đoạn kế tiếp.
Per- fragment operations: Là các thao tác cuối cùng trên dữ liệu, trước
khi lưu trữ dữ liệu dưới dạng các pixel trong bộ đệm khung. Các thao tác này bao
gồm việc cập nhật (có điều kiện) cho bộ đệm khung dựa vào dữ liệu vào và dữ
liệu được lưu trữ trước đó, thực hiện trộn màu cho các pixel và làm một số thao
tác khác.
Trong trường hợp dữ liệu vào ở dạng pixel không phải vertex, nó sẽ đưa
thẳng vào giai đoạn xử lý pixel. Sau giai đoạn này, dữ liệu ở dạng pixel sẽ được
17
lưu trữ như là bộ nhớ texture để đưa vào giai đoạn Per-fragment operation hoặc
đưa vào Rasterization như dữ liệu dạng Vertex.
1.3.2 Đặc điểm của OpenGL
OpenGL là một thư viện đồ họa rất lớn gồm khoảng 150 hàm hỗ trợ một
số tính năng cơ bản sau:
1.3.2.1 Thể hiện các đối tượng đồ họa cơ bản
OpenGL không có sẵn các hàm để xây dựng các đối tượng hình học phức
tạp, người dùng phải tự xây dựng chúng từ các đối tượng hình học cơ bản mà
OpenGL hỗ trợ: điểm, đoạn thẳng, đa giác.
Mọi đối tượng hình học đều được mô tả cơ bản từ các vertex. Vertex cũng
có thể hiểu là một điểm. Khai báo một điểm, dùng hàm:
glVertex{234}{sifd}[v] (Tọa độ điểm);
Trong đó:
{234} – Chỉ định số chiều của không gian.
{sifd} – Chỉ định kiểu dữ liệu của tọa độ, ý nghĩa được chỉ định trong bảng
1.1 như sau:
Bảng 1.1: Một số kiểu dữ liệu của OpenGL
Kí hiệu
s
i
f
d
Kiểu dữ liệu
16 – bit integer
32 – bit integer
32 – bit floating – point
64 – bit floating – point
Tên kiểu của OpenGL
GLshort
GLint, GLsizei
GLfloat, GLclampf
GLdouble, GLclampd
[v] – Nếu tọa độ điểm được truyền từ 1 mảng cho trước.
Việc xây dựng các đối tượng hình học khác đều có thể được thực hiện như sau:
glBegin(mode);
/* xác định tọa độ và màu sắc các điểm của hình */
glEnd();
18
Danh sách các mode (tham số) có thể là một trong những giá trị sau:
Bảng 1.2: Các tham số của glBegin()
Giá trị
GL_POINTS
GL_LINE
GL_POLYGON
GL_TRIANGLES
GL_QUADS
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLE_S
TRIP
Ý nghĩa.
Các điểm.
Đoạn thẳng.
Đa giác lồi.
Tam giác.
Tứ giác.
Đường gấp khúc không khép kín.
Đường gấp khúc khép kín.
Một dải tam giác liên kết với
nhau.
GL_TRIANGLE_F
AN
Các tam giác liên kết theo hình
quạt.
GL_QUAD_STRIP
Một dải các tứ giác liên kết với
nhau.
Dưới đây là hình minh họa cho các loại mode:
Hình 1.5: Các đối tượng đồ họa cơ bản
Ngoài ra còn có một số đối tượng ba chiều cơ bản như: Hình cầu, hình trụ,
hình hộp ... từ đó ta xây dựng được các đối tượng ba chiều phức tạp hơn, thậm chí
19
có thể tự định nghĩa hay thiết kế các phần mềm hỗ trợ thiết kế ba chiều như
AutoCAD, SolidWorks, 3D Max.
Ví dụ: Các lệnh để thực hiện quá trình vẽ các điểm trong môi trường 2D
của OpenGL như sau:
glBegin(GL_POINTS);
glVertex2f(0.0f,0.0f);
glVertex2f(1.0f,0.0f);
glVertex2f(0.0f,1.0f);
glEnd();
Các lệnh để vẽ các điểm tạo thành hình ngũ giác trong môi trường 2D:
glBegin(GL_POLYGON);
glVertex2f(0.0f,0.0f);
glVertex2f(3.0f,0.0f);
glVertex2f(4.0f,3.0f);
glVertex2f(1.5f,6.0f);
glVertex2f(-1.0f,3.0f);
glEnd();
Hình 1.6: Quá trình veẽ các Vertex 2D t
20
- Xem thêm -