Tải bản đầy đủ (.pdf) (75 trang)

nghiên cứu một số kỹ thuật tạo bóng khối trong đồ họa ba chiều

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.38 MB, 75 trang )

i
Số hóa bởi Trung tâm Học liệu

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG





Bùi Phƣơng Thủy




NGHIÊN CỨU MỘT SỐ KỸ THUẬT TẠO BÓNG
KHỐI TRONG ĐỒ HỌA BA CHIỀU

Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01




LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH



NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS. TS Đỗ Năng Toàn












Thái Nguyên - 2014


Số hóa bởi Trung tâm Học liệu

ii
LỜI CAM ĐOAN
Luận văn là sự nghiên cứu, tổng hợp các kiến thức mà học viên đã thu thập
được trong quá trình học tập tại Đại học Công nghệ thông tin và truyền thông – Đại
học Thái Nguyên, dưới sự hướng dẫn, giúp đỡ của các thầy cô và bạn bè đồng
nghiệp. Đặc biệt là sự hướng dẫn, giúp đỡ của thầy giáo PGS.TS Đỗ Năng Toàn –
Viện Công nghệ thông tin – Viện KHCN Việt Nam.
Học viên cam đoan luận văn không phải là sản phẩm sao chép của bất kỳ tài
liệu khoa học nào.
Thái Nguyên, ngày 5 tháng 5 năm 2014
Học viên





Bùi Phương Thủy


Số hóa bởi Trung tâm Học liệu

iii
LỜI CẢM ƠN
Luận văn sẽ không thể hoàn thành nếu không có sự động viên, hỗ trợ hết
mình của rất nhiều người. Trước hết tôi xin gửi lời tri ân đến PGS.TS Đỗ Năng
Toàn người thầy đã chỉ bảo, giúp đỡ tận tình trong cả quá trình học tập và hoàn
thiện luận văn.
Tôi xin gửi lời cảm ơn đến các thầy cô giáo tại trường Đại học Công nghệ
thông tin và truyền thông – Đại học Thái Nguyên, những người đã trang bị các kiến
thức cơ sở, nền tảng cho việc nghiên cứu, tiếp thu những tri thức mới, mà từ đó tôi
có thể hoàn thành tốt luận văn của mình, xa hơn nữa là hoàn thành tốt những dự án,
công việc trong tương lai.
Quá trình thực hiện đề tài không tránh khỏi những thiếu sót. Tôi hi vọng sẽ
được sự góp ý chân thành từ phía các thầy, cô giáo, bạn bè, đồng nghiệp để đề tài
nghiên cứu được hoàn thiện hơn
Xin chân trọng cảm ơn!



Số hóa bởi Trung tâm Học liệu

iv
MỤC LỤC
TRANG PHỤ BÌA
LỜI CAM ĐOAN i
LỜI CẢM ƠN iii

MỤC LỤC iv
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT vi
DANH MỤC CÁC BẢNG vii
DANH MỤC CÁC HÌNH ( HÌNH VẼ, ẢNH CHỤP, ĐỒ THỊ…) viii
MỞ ĐẦU 1
Chƣơng 1. KHÁI QUÁT VỀ ĐỒ HỌA BA CHIỀU VÀ BÀI TOÁN TẠO
BÓNG 5
1.1. Khái quát về đồ họa ba chiều 5
1.1.1. Quy trình hiển thị 6
1.1.2. Tổng quan biểu diễn điểm và các phép biến đổi 7
1.1.3. Phép biến đổi hiển thị 11
1.1.4. Mô hình Wireframe 13
1.1.5. Mô hình Wireframe với các phép chiếu 15
1.1.6. Phép biến đổi cổng nhìn 20
1.1.7. Bộ đệm và các phép kiểm tra 21
1.2. Bài toán tạo bóng trong đồ họa ba chiều 22
1.2.1. Nguồn sáng và phân loại nguồn sáng 22
1.2.2. Phân loại bóng 29
Chƣơng 2. MỘT SỐ KỸ THUẬT TẠO BÓNG KHỐI TRONG ĐỒ HỌA
BA CHIỀU 31
2.1. Giới thiệu 31
2.2. Danh sách cạnh viền 33
2.3. Xác định tứ giác bao quanh 38
2.4. Kỹ thuật tạo bóng Z - Pass 42
2.5. Kỹ thuật tạo bóng Z - Fail 47
2.6. So sánh giữa hai thuật toán 52
CHƢƠNG 3. CHƢƠNG TRÌNH THỬ NGHIỆM 53
3.1. Bài toán 53
3.2. Phân tích, lựa chọn giải pháp 53
3.3. Kết quả thử nghiệm 60

KẾT LUẬN 65


Số hóa bởi Trung tâm Học liệu

v
TÀI LIỆU THAM KHẢO 66



Số hóa bởi Trung tâm Học liệu

vi
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

STT
Ký hiệu/
Chữ viết tắt
Viết đầy đủ
Ý nghĩa
1
2D
2 Dimentional
Hai chiều
2
3D
3 Dimentional
Ba Chiều
3
BRDF

Bidirectional reflectance
distribution function
Hàm phân phối phản xạ hai
chiều
4
CPU
Central Processing Unit
Bộ xử lý trung tâm
5
GPU
Graphical Processing Unit
Bộ xử lý đồ họa đối khi được
hiểu đồng nghĩa với card đồ họa
6
HMD
Head Mounted Displays
Mũ đội đầu có màn hiển thị



Số hóa bởi Trung tâm Học liệu

vii
DANH MỤC CÁC BẢNG
Bảng 1.1. Bảng danh sách các cạnh và đỉnh biểu diễn vật thể 14
Bảng 2.1. So sánh giữa hai thuật toán 53






Số hóa bởi Trung tâm Học liệu

viii
DANH MỤC CÁC HÌNH ( HÌNH VẼ, ẢNH CHỤP, ĐỒ THỊ…)
Hình 1.1. Một cảnh đồ họa ba chiều 5
Hình 1.2. Quy trình hiển thị đối tượng ba chiều 6
Hình 1.3 Tổng quan về hiển thị ba chiều và các phép chiếu 11
Hình 1.4 Kết quả phép tịnh tiến 12
Hình 1.5. Vật thể ba chiều được biểu diễn bằng mô hình khung nối kết 13
Hình 1.6. Phép chiếu song song (a) và phép chiếu phối cảnh (b) 16
Hình 1.7. Phép chiếu trực giao 17
Hình 1.8. Kết quả của ba phép chiếu trực giao 17
Hình 1.9. Phép chiếu xiên 18
Hình 1.10. Phép chiếu phối cảnh đơn giản 19
Hình 1.11. Khả năng quan sát của con người tương ứng với từng mức sóng 20
Hình 1.12. Chiếc ấm được chiếu bằng Ambient Light 25
Hình 1.13. Ấm chè được chiều bằng Diffuse Light 26
Hình 1.14. Ấm chè được chiếu bằng Specular Light 26
Hình 1.15. Sự phản xạ của ánh sáng 27
Hình 1.16. Sự phản xạ không toàn phần của ánh sáng 28
1.17
. 29
2.1. Bối cảnh không có đổ bóng 32
2.2. Bối cảnh có bóng khối 33
2.3. Mô tả các phần của bóng khối 33
Hình 2.4. Biểu diễn của một căn nhà 34
Hình 2.5. Cạnh viền (Silhouette Edge) được tô đỏ 35
Hình 2.6. Khi nhìn từ vị trí của nguồn sáng ta sẽ không thấy bóng và rất dễ để xác
định cạnh và đỉnh viền 35

Hình 2.7. Cạnh viền là cạnh có một mặt kề hướng ánh sáng còn mặt còn lại thì
không 35
Hình 2.8. Dựng shadow volume mesh bằng các thêm vào các mặt phụ 38


Số hóa bởi Trung tâm Học liệu

ix
40
40
Hình 2.11. Khối bao của tam (ABC) giác với nguồn sáng điểm L 41
Hình 2.12. Đường bao của một đa giác trong không gian hai chiều 41
Hình 2.13. Tư tưởng chính của Z-Pass 43
46
47
47
.48
Hình 2.18. Thuật toán tạo bóng khối với kỹ thuật z-fail 49
Hình 2.18. Tư tưởng của Z-Fail 50
Hình 3.1. Giao diện mô tả bóng khối 69
Hình 3.2. Giao diện mô tả bóng cứng tạo ra từ bóng khối 69
3.3. Giao diện mô tả b -fail 71
3.4. Giao diện mô tả b -
- . 72
1
Số hóa bởi Trung tâm Học liệu

MỞ ĐẦU
1. Lý do chọn đề tài
Năm 1966, Sutherland ở Học viện Công nghệ Massachusetts là người đầu

tiên đặt nền bóng cho đồ họa ba chiều bằng việc phát minh ra thiết bị hiển thị trùm
đầu (head-amounted display) được điều khiển bởi máy tính đầu tiên. Nó cho phép
người nhìn có thể thấy được hình ảnh dưới dạng lập thể ba chiều. Từ đó đến nay đồ
họa ba chiều trở thành một trong những lĩnh vực phát triển rực rỡ nhất của đồ họa
máy tính
.

Đồ họa máy tính là một lĩnh vực được quan tâm phát triển, nó đang ngày
càng chứng tỏ vai trò của mình trong sự phát triển của công nghệ thông tin nói
riêng và các lĩnh vực của đời sống, xã hội nói chung. Nó được ứng dụng rộng rãi
trong hầu hết tất cả các lĩnh vực như Điện ảnh, Hoạt hình, kiến trúc và các ứng
dụng xây dựng các mô hình thực tại ảo… Và không thể không nhắc đến vai trò tối
quan trọng của đồ họa ba chiều trong việc tạo ra các game sử dụng đồ họa hiện nay.
Việc sử dụng đồ họa ba chiều trong game làm cho người chơi thích thú và có cảm
giác như đang sống trong một thế giới thực. Có thể nói đồ họa ba chiều đã đang và
sẽ tạo nên một nền công nghiệp game phát triển mạnh mẽ.
Mục đích chính của đồ họa ba chiều là tạo ra và mô tả các đối tượng, các mô
hình trong thế giới thật bằng máy tính sao cho càng giống với thật càng tốt. Việc
nghiên cứu các phương pháp các kỹ thuật khác nhau của đồ họa ba chiều cũng chỉ
hướng đến một mục tiêu duy nhất đó là làm sao cho các nhân vật, các đối tượng,
các mô hình được tạo ra trong máy tính giống thật nhất. Và một trong các phương
pháp đó chính là tạo bóng cho đối tượng.
Thuật toán tạo bóng bằng kỹ thuật sử dụng bóng khối được đề xuất đầu tiên
bởi Frank Crow vào năm 1977. Theo đó ông ta vẽ một khối mà bị che lấp ánh sáng
bởi vật tạo bóng. Mọi vật thể nằm trong khối đó được gọi là nằm trong bóng.
Xuất phát từ thực tế đó, học viên lựa chọn đề tài: “Nghiên cứu một số kỹ
thuật tạo bóng khối trong đồ hoạ ba chiều”. Sự thành công của đề tài sẽ góp phần
nâng cao chất lượng của hình ảnh trong các ngành công nghiệp và giải trí.



Số hóa bởi Trung tâm Học liệu

2
2. Đối tƣợng và phạm vi nghiên cứu:
Đối tƣợng của đề tài
Đồ họa ba chiều
Bài toán tạo bóng
Một số kỹ thuật tạo bóng khối
Phạm vi nghiên cứu
Đề tài nghiên cứu về các kiến thức tổng quan về đồ họa ba chiều: cách hiển
thị vật thể ba chiều
Đề tài khái quát về bài toán tạo bóng trong đồ họa ba chiều. Tìm hiểu các dữ
liệu đầu vào và đầu ra của bài toán: nguồn sáng, vật chắn sáng và bóng.
Đề tài giới hạn trong phạm vi nghiên cứu hai kỹ thuật tạo bóng khối trong đồ
họa ba chiều: kỹ thuật tạo bóng Z-Pass, kỹ thuật tạo bóng Z-Failr
Khảo sát, phân tích, thiết kế và xây dựng phần mềm thử nghiệm
3. Hƣớng nghiên cứu của đề tài
Về khoa học
Đề tài tập trung nghiên cứu khái quát về các kiến thức cơ bản của đồ họa ba
chiều và tạo bóng
Nghiên cứu một số kỹ thuật tạo bóng khối trong đồ họa ba chiều
Nghiên cứu đề xuất kiến trúc, công nghệ thích hợp cho việc phát triển
ứng dụng
Về xây dựng phần mềm thử nghiệm
Tìm hiểu, khảo sát bài toán
Phân tích, lựa chọn giải pháp xây dựng phần mềm thử nghiệm đưa ra kết quả
tạo bóng khối bằng hai kỹ thuật: kỹ thuật tạo bóng Z-Pass, kỹ thuật tạo bóng Z-Failr
4. Phƣơng pháp nghiên cứu
Thu thập, đọc và phân tích các tài liệu và thông tin liên quan đến đề tài.
Phân tích, so sánh với các mô hình khác



Số hóa bởi Trung tâm Học liệu

3
Dựa trên việc tìm hiểu các thuật toán của hai kỹ thuật tạo bóng khối để đưa
ra so sánh và lựa chọn phương pháp trong trường hợp các trường hợp khác nhau
Kết hợp các nghiên cứu trước đây của các tác giả trong và ngoài nước cùng
với sự chỉ bảo, góp ý của Thầy hướng dẫn để hoàn thành nội dung nghiên cứu.
Thực nghiệm cài đặt ứng dụng để minh họa các vấn đề trình bày trong đề tài.
5. Ý nghĩa khoa học của đề tài
Về khoa học
Hiểu được tổng quan các kiến thức cơ bản của đồ họa ba chiều và bài toán
tạo bóng.
Nghiên cứu các kỹ thuật tạo bóng khối trong đồ họa ba chiều, trợ giúp cho
việc nâng cao chất lượng hình ảnh.
Về thực tiễn
Cài đặt hoàn chỉnh các thuật toán hiển thị đối tượng, nguồn sáng của bài toán
tạo bóng.
Xây dựng chương trình thử nghiệm dùng hai phương pháp tạo bóng khối đã
nêu đáp ứng và trợ giúp người sử dụng dễ dàng, trực quan và nhanh chóng.
Cấu trúc của luận văn bao gồm “Phần mở đầu”, “Phần kết luận” và ba
chương nội dung, cụ thể:
Chương 1: Khái quát về đồ họa ba chiều và bài toán tạo bóng. Nội dung
chính của “Chương 1” là những vấn đề cơ bản về đồ họa ba chiều, ứng dụng đồ họa
ba chiều, đồng thời nội dung của chương 1 cũng đề cập đến một số lý thuyết cơ bản
về ánh sáng, nguồn sáng, bóng và các mô hình của chúng từ đó làm cơ sở cho các
nội dung được trình bày trong “Chương 2”.
Chương 2: Một số kỹ thuật tạo bóng khối trong đồ họa ba chiều. Đây là
chương nội dung chính của luận văn, nó tập chung trình bày hai kỹ thuật chính tạo

bóng khối của đối tượng đó là “kỹ thuật tạo bóng Z-Pass ”, và “kỹ thuật tạo bóng Z-
Fail ”. Với mỗi loại kỹ thuật đều có những phương pháp thể hiện khác nhau, mà
phần nội dung này của luận văn cũng đề cập đến.


Số hóa bởi Trung tâm Học liệu

4
Chương 3: Chương trình thử nghiệm. Đây là chương học viên giới thiệu về
một chương trình thử nghiệm được xây dựng nhằm thể hiện cho một số kết quả đã
được trình bày, tổng hợp trong luận văn.


Số hóa bởi Trung tâm Học liệu

5
Chƣơng 1.
KHÁI QUÁT VỀ ĐỒ HỌA BA CHIỀU VÀ BÀI TOÁN TẠO BÓNG
1.1. Khái quát về đồ họa ba chiều
Khi chúng ta mô hình hóa và hiển thị một cảnh ba chiều, ta cần phải xem xét
rất nhiều khía cạnh và vấn đề khác nhau chứ không đơn giản là thêm vào tọa độ thứ
ba cho các đối tượng. Bề mặt đối tượng có thể xây dựng bởi nhiều tổ hợp khác nhau
của các mặt phẳng và các mặt cong. Ngoài ra, đôi khi chúng ta cũng cần mô tả một
số thông tin về bên trong các đối tượng. Các công cụ hỗ trợ đồ họa (graphics
package) thường cung cấp một số hàm hiển thị các thành phần bên trong, những
đường nét tiêu biểu hoặc hiển thị một phần của đối tượng ba chiều (solid object).
Ngoài ra, các phép biến đổi hình học thường được sử dụng nhiều hơn và đa dạng
hơn trong đồ họa ba chiều so với trong đồ họa hai chiều. Phép biến đổi hệ quan sát
trong không gian ba chiều phức tạp hơn nhiều so với trong không gian hai chiều do
chúng ta phải chọn lựa nhiều tham số hơn khi mô tả một cảnh ba chiều sẽ xuất hiện

trên màn hình như thế nào. [1],[3].

Hình 1.1. Một cảnh đồ họa ba chiều
Các mô tả về một cảnh ba chiều phải đi qua một quy trình xử lí gồm nhiều
công đoạn như phép biến đổi hệ tọa độ quan sát và phép chiếu chuyển cảnh từ hệ
tọa độ quan sát ba chiều xuống hệ tọa độ thiết bị hai chiều. Những phần nhìn thấy


Số hóa bởi Trung tâm Học liệu

6
được của cảnh, ứng với một hệ quan sát được chọn nào đó, phải được xác định và
cuối cùng, các thuật toán vẽ mặt sẽ được áp dụng nhằm tạo ra hình ảnh trung thực
(gần với thực tế) của cảnh.
1.1.1. Quy trình hiển thị
Quy trình xử lí thông tin trong đồ họa ba chiều là một chuỗi các bước nối
tiếp nhau, kết quả của mỗi bước sẽ là đầu vào của bước tiếp theo.
Modeling
transformation

Biến đổi mô hình: biến đổi từ hệ tọa độ đối
tượng (object-space) sang hệ tọa độ thế
giới thực thực (world space)
Trivial
Rejection

Tối ưu hóa: loại bỏ các đối tượng không
nhìn thấy được
Illumination


Chiếu sáng đối tượng
Viewing
Transformation

Chuyển từ world space sang eye space
Clipping

Loại bỏ phần nằm ngoài viewing space
Projection

Chiếu từ eye space xuống screen space
Rastorization

Chuyển đối tượng sang dạng pixel
Display

Hiển thị đối tượng
Hình 1.2. Quy trình hiển thị đối tượng ba chiều
Quy trình bắt đầu bằng việc xây dựng các mô hình đối tượng. Các mô hình
này thường được mô tả trong không gian ba chiều (x,y,z). Các mô hình thường thể
hiện vật thể (solid) hoặc bề mặt (boundaries) của đối tượng. Như vậy ta có hai kiểu
mô hình hóa. Trong solid modeling các đối tượng đồ họa cơ sở thường được dùng
để mô tả các đối tượng có thể tích (volume). Trong boundary representations(B-
reps), các đối tượng được định nghĩa bởi bề mặt của chúng.
Các mô hình thường được biểu diễn trong một hệ tọa độ cục bộ, mà ta gọi là
hệ tọa độ đối tượng. Trong hệ tọa độ này chỉ có bản thân đối tượng được định nghĩa,
vì vậy gốc tọa độ và đơn vị đo lường thường được chọn sao cho việc biểu diễn đối
tượng tiện lợi nhất.



Số hóa bởi Trung tâm Học liệu

7
Bước đầu tiên trong quy trình hiển thị là biến đổi đối tượng từ không gian
đối tượng (object-space) vào một không gian chung gọi là không gian thực (world
space). Trong không gian này các đối tượng, nguồn sáng, và người quan sát cùng
tồn tại. Bước này được gọi là giai đoạn biến đổi mô hình (modeling transformation).
Bước tiếp theo là một bước tối ưu hóa. Trong giai đoạn loại bỏ đơn giản
(trivial rejection) ta cần loại trừ tất cả các đối tượng không thể nhìn thấy. Điều này
giúp chúng ta tránh được việc xử lí một số phần không cần thiết của cảnh (scene)
mà ta đang chuẩn bị hiển thị ở các bước sau.
Tiếp theo ta phải chiếu sáng (illumination) các đối tượng có thể nhìn thấy
được bằng cách gán cho chúng màu sắc dựa trên các đặc tính của các chất tạo nên
vật và các nguồn sáng tồn tại trong cảnh.
Sau khi chiếu sáng, ta phải thực hiện một phép biến đổi hệ tọa độ để đặt vị trí
quan sát (viewing position) về gốc tọa độ và mặt phẳng quan sát (viewing plane) về
một vị trí mong ước. Bước này gọi là bước đổi hệ quan sát. Sau bước này, các đối
tượng được chuyển từ không gian thực sang không gian quan sát (eye space).
Trong không gian quan sát, ta phải thực hiện việc xén các đối tượng trong
cảnh để cảnh nằm gọn trong một phần không gian chóp cụt mà ta gọi là viewing
frustum. Bước này sẽ loại bỏ hoàn toàn các đối tượng (các mảnh đối tượng) không
nhìn thấy được trong ảnh.
Bước tiếp theo ta sẽ chiếu các đối tượng xuống mặt phẳng hai chiều. Bước
Projection thực hiện phép biến đổi từ không gian quan sát sang không gian màn
hình (screenspace).
Trong bước rời rạc hóa (rasterization) ta sẽ chuyển đối tượng thành các pixel.
Cuối cùng, toàn cảnh sẽ được hiển thị lên màn hình [1].
1.1.2. Tổng quan biểu diễn điểm và các phép biến đổi
Sự chuyển đổi từ tọa độ thế giới sang tọa độ của thiết bị là một chuỗi của các
phép biến đổi affine và các phép chiếu trong không gian Decarts ba chiều.

Các phép biến đổi affine và các phép chiếu trong không gian Decarts ba
chiều có thể được biểu diễn tốt nhất bởi các ma trận 4x4 tương ứng với các tọa độ


Số hóa bởi Trung tâm Học liệu

8
đồng nhất (Homogeneous coordinates) (x,y,z,w). Điểm ba chiều với tọa độ đồng
nhất (x,y,z,w) sẽ có tọa độ affine là
w
z
w
y
w
x
,,

Mối quan hệ giữa tọa độ affine và tọa độ đồng nhất không phải là quan hệ 1-1.
Cách đơn giản nhất để chuyển từ tọa độ affine (x,y,z) của một điểm sang tọa độ
đồng nhất là đặt w=1: (x,y,z,1). Chúng ta thừa nhận rằng tất cả các tọa độ thế giới
được biểu diễn bằng cách này.
Ta sẽ biểu diễn các phép biến đổi affine (như là co giãn (scaling
transformations), phép quay (rotations), và phép tịnh tiến (translations)) bằng các
ma trận mà sẽ không làm thay đổi thành phần w (w=1).
● Tịnh tiến bởi véc tơ
),,(
zyx
TTTT
:
1000

100
010
001
)(
z
y
x
t
T
T
T
TM

11
)(
z
y
x
t
Tz
Ty
Tx
z
y
x
TM

● Phép co giãn theo các nhân tố
),,(
zyx

SSSS
:
1000
000
000
000
)(
z
y
x
s
S
S
S
SM

11
)(
zS
yS
xS
z
y
x
SM
z
y
x
s


● Phép quay quanh gốc tọa độ mà theo đó tập các véc tơ chuẩn tắc là
nvu ,,
, trực giao từng đôi một, sẽ được chuyển về
ZYX ,,
.
1000
0
0
0
),,(
zyx
zyx
zyx
r
nnn
vvv
uuu
nvuM

Các đối tượng trong mô hình ba chiều được xác định với tọa độ thế giới. Cùng
với các tọa độ của đối tượng, người dùng cũng phải xác định vị trí và hướng của


Số hóa bởi Trung tâm Học liệu

9
camera ảo trong không gian ba chiều và xác định vùng nhìn (là một vùng không
gian được hiển thị trên màn hình).
Việc chuyển từ các tọa độ thế giới sang tọa độ màn hình được thực hiện theo 3
bước (hình 1.3):

Bước đầu tiên thực hiện một phép biến đổi để đưa camera ảo trở về vị trí và
hướng tiêu chuẩn. Khi đó điểm nhìn (eyepoint) sẽ được đặt ở gốc tọa độ, hướng
nhìn trùng với hướng âm của trục Z. Trục X chỉ về phía phải và trục Y chỉ lên phía
trên trong màn hình. Hệ tọa độ mới này sẽ được gọi là Hệ tọa độ Mắt (Eye
Coordinate System). Phép biến đổi từ tọa độ thế giới sang các tọa độ mắt là một
phép biến đổi affine, được gọi là phép biến đổi hiển thị (Viewing Transformation).
Cả tọa độ thế giới và tọa độ mắt đều được biểu diễn bởi tọa độ đồng nhất
(Homogeneous Coordinates) với w=1.
Bước thứ 2. Tọa độ mắt được chuyển qua tọa độ của thiết bị chuẩn hóa
(Nomalized Device Coordinates) để cho vùng không gian mà ta muốn nhìn được
đặt trong một khối lập phương tiêu chuẩn:
11 x
,
11 y
,
11 z

Các điểm ở gần điểm nhìn (điểm đặt camera) hơn sẽ có thành phần z nhỏ hơn.
Bước này sẽ gồm 3 bước con.
Bước cuối cùng, phép biến đổi cổng nhìn (Viewport Transformation) là sự
kết hợp của 1 phép co giãn tuyến tính và 1 phép tịnh tiến. Sẽ chuyển thành phần x
và y của tọa độ thiết bị chuẩn hóa
11 x
,
11 y
sang tọa độ Pixel của
màn hình. Thành phần z (
11 z
) được chuyển sang đoạn [0,1] và sẽ được sử
dụng như là giá trị chiều sâu (Depth-Value) trong thuật toán Z-Buffer (bộ đệm Z)

được sử dụng cho việc xác định mặt sẽ được hiển thị.
Bước thứ 2 bao gồm 3 bước con.
Một phép chiếu chuyển từ vùng nhìn sang 1 khối lập phương tiêu chuẩn với tọa
độ đồng nhất:
11 x
,
11 y
,
11 z
. Trong trường hợp sử dụng
phép chiếu trực giao, vùng nhìn này sẽ có dạng một ống song song ba chiều với
các mặt song song với các mặt của hệ tọa độ mắt. Trong trường hợp sử dụng


Số hóa bởi Trung tâm Học liệu

10
phép chiếu đối xứng, vùng nhìn sẽ là một hình tháp cụt với đầu mút là gốc tọa
độ của hệ tọa độ mắt. Hệ tọa độ đồng nhất (4 thành phần) thu được sau phép
chiếu được gọi là hệ tọa độ cắt (Clipping Coordinate System). Phép chiếu sẽ là
một phép biến đổi affine trong trường hợp phép chiếu là phép chiếu trực giao.
Nếu phép chiếu là phép chiếu phối cảnh sẽ không phải là một phép biến đổi
affine (Vì w sẽ nhận một giá trị khác 1)
Bước tiếp theo, các vùng của không gian hiển thị mà không nằm trong
khối tiêu chuẩn đó (Khối này còn được gọi là khối nhìn tiêu chuẩn) sẽ bị
cắt đi. Các đa giác, các đường thẳng được chứa trong hoặc là có một phần
ở trong sẽ được thay đổi để chỉ phần nằm trong khối nhìn tiêu chuẩn mới
được giữ lại. Phần còn lại không cần quan tâm nhiều nữa.
Sau khi cắt gọt, các tọa độ đồng nhất sẽ được chuyển sang tọa độ của
thiết bị bằng cách chia x,y,z cho w. Nếu w nhận 1 giá trị đúng qua phép

chiếu, thì phép chia này sẽ cho các động phối cảnh mong muốn trên màn
hình. Vì lý do đó, phép chia này còn được gọi là phép chia phối cảnh
(Perspective Division)


Số hóa bởi Trung tâm Học liệu

11

Hình 1.3 Tổng quan về hiển thị ba chiều và các phép chiếu.
1.1.3. Phép biến đổi hiển thị
Phép biến đổi hiển thị sẽ đưa một camera ảo được cho tùy ý về một camera
với điểm nhìn trùng với gốc tọa độ và hướng nhìn dọc theo chiều âm của trục Z
(xem hình 1.3) Trục Y sau phép biến đổi tương ứng sẽ chỉ lên phía trên của màn
hình. Trục X sẽ chỉ về phía phải.


Số hóa bởi Trung tâm Học liệu

12
Một cách thuận tiện để xác định vị trí của camera ảo là cho sẵn vị trí của
điểm nhìn
E
, Một điểm trong khung nhìn
R
(điểm tham chiếu) và một hướng
V
sẽ
chỉ lên phía trên trong màn hình.
Phép biển đổi hiển thị sẽ gồm 2 bước:

● Một phép tịnh tiến sẽ đưa điểm nhìn
E
về gốc tọa độ. Ma trận biến đổi
tương ứng sẽ là
)( EM
t
. Kết quả sẽ như sau:

Hình 1.4 Kết quả phép tịnh tiến
● Một phép quay sẽ chuyển hướng nhìn ngược về trục Z, quay vectơ
V
về
mặt phẳng YZ. Vector
V
sẽ chỉ được quay về trùng với trục Y nếu
V
vuông góc
với hướng nhìn. Trước hết ta sẽ xây dựng tập các véc tơ chuẩn tắc phù hợp trong
tọa độ thế giới.


RE
RE
n
Ngược với hướng nhìn
Z
(
z
O
)


nV
nV
u
Chỉ về phía phải, vuông góc với
n

X


nv
u
Chỉ lên giống
V
, nhưng vuống góc với
n

u
Y



Số hóa bởi Trung tâm Học liệu

13
Như vậy ma trận của phép quay sẽ là:
),,( nvuM
r

Và do đó ma trận của phép biến đổi sẽ là:


1000
1000
100
010
001
1000
0
0
0
)(),,(
Ennnn
Evvvv
Euuuu
E
E
E
nnn
vvv
uuu
EMnvuM
zyx
zyx
zyx
z
y
x
zyx
zyx
zyx

tr

Trong đó
vu,

v
được tính từ
RE,

V
[2]
1.1.4. Mô hình Wireframe
Một phương pháp thông dụng và đơn giản để mô hình hóa đối tượng là mô
hình khung nối kết.
Một mô hình khung nối kết gồm có một tập các đỉnh và tập các cạnh nối giữa
các đỉnh đó. Khi thể hiện bằng mô hình này, các đối tượng ba chiều có vẻ rỗng và
không giống thực tế lắm. Để hoàn thiện hơn, người ta dùng các kĩ thuật tạo bóng và
loại bỏ các đường và mặt khuất. (Chúng ta sẽ đề cập vấn đề này ở các chương sau).
Tuy nhiên vẽ bằng mô hình này thường nhanh nên người ta thường dùng nó trong
việc xem phác thảo (preview) các đối tượng, đặc biệt là trong các hệ CAD.
Với mô hình khung nối kết, hình dạng của đối tượng ba chiều được biểu diễn
bằng hai danh sách (list): danh sách các đỉnh (vertices) và danh sách các cạnh
(edges) nối các đỉnh đó. Danh sách các đỉnh cho biết thông tin hình học đó là vị trí
các đỉnh, còn danh sách các cạnh xác định thông tin về sự kết nối, nó cho biết cặp
các đỉnh tạo ra cạnh. Chúng ta hãy quan sát một vật thể ba chiều được biểu diễn
bằng mô hình khung nối kết như sau:



Số hóa bởi Trung tâm Học liệu


14

Hình 1.5. Vật thể ba chiều được biểu diễn bằng mô hình khung nối kết
Bảng 1.1 Bảng danh sách các cạnh và đỉnh biểu diễn vật thể
Vertex List
Edge List
Vertex
x
Y
z

Edge
Vertex1
Vertex2
1
0
0
0
back side
1
1
2
2
0
1
0

2
2

3
3
0
1
1

3
3
4
4
0
0.5
1.5

4
4
5
5
0
0
1

5
5
1
6
1
0
0
front side

6
6
7
7
1
1
0

7
7
8
8
1
1
1

8
8
9
9
1
0.5
1.5

9
9
10
10
1
0

1

10
10
6





11
1
6





12
2
7





13
3
8






14
4
9


Số hóa bởi Trung tâm Học liệu

15





15
5
10





16
2
5






17
1
3
Có nhiều cách để đặc tả mô hình khung nối kết trên máy tính như dùng xâu,
mảng, và mỗi cách đều có các ưu điểm riêng trong từng ứng dụng cụ thể. Ở đây
ta minh họa các biểu diễn mô hình khung nối kết bằng cấu trúc dữ liệu mảng như
sau :
#define MAXVERTS 50 //số đỉnh tối đa có thể biểu diễn
#define MAXEDGES 100 //số cạnh tối đa typedef struct { float x, y, z;
} POINT3D;
typedef struct { int NumVerts; //Số đỉnh trong mô hình int NumEdges; //Số
cạnh trong mô hình POINT3D Vert[MaxVerts]; int Edge[MaxEdges][2]; }
WIREFRAME;
Ngoài ra, đôi khi trong mô hình wireframe người ta còn mô tả các mặt
(phẳng) của đối tượng. Mỗi mặt được định nghĩa bởi một đa giác bao. Ví dụ, đối
tượng trong hình 1.5 có 7 mặt. [1]
1.1.5. Mô hình Wireframe với các phép chiếu
Để vẽ các đối tượng biểu diễn bằng mô hình khung nối kết, đơn giản chúng
ta chỉ cần vẽ các cạnh trong danh sách các cạnh mà thôi. Tuy nhiên do các đỉnh và
cạnh đều được định nghĩa trong ba chiều nên vấn đề đặt ra ở đây là làm thế nào để
vẽ các đường thẳng ba chiều trong mặt phẳng hai chiều. Để làm điều này, chúng ta
phải thực hiện phép chiếu từ ba chiều vào hai chiều để bỏ bớt một chiều. Có hai loại
phép chiếu đơn giản thường dùng đó là phép chiếu song song (parallel projection)
và phép chiếu phối cảnh (perspective projection). Phép chiếu song song sử dụng các
đường thẳng song song đi qua các đỉnh của đối tượng, trong khi đó phép chiếu phối
cảnh dùng các đường thẳng qua các đỉnh của đối tượng hội tụ về một điểm gọi là
tâm chiếu (center of projection). Các đường thẳng trên được gọi là tia chiếu và giao

điểm của các đường thẳng này với mặt phẳng chiếu (hay còn gọi là mặt phẳng quan


Số hóa bởi Trung tâm Học liệu

16
sát (view plane)) chính là các hình chiếu của các đỉnh hay còn gọi là điểm chiếu.
Trong phần này, chúng ta giả sử rằng mặt phẳng chiếu là mặt phẳng z=0.
Phép chiếu song song bảo toàn được mối quan hệ giữa các chiều của đối
tượng, đây chính là kĩ thuật được dùng trong phác thảo để tạo ra phần khung của
đối tượng ba chiều. Người ta dùng phương pháp này để quan sát chính xác ở các
mặt khác nhau của đối tượng. Tuy nhiên, phép chiếu song song không cho một biểu
diễn thực của đối tượng ba chiều.
Trong khi đó, phép chiếu phối cảnh tạo ra được biểu diễn thực hơn nhưng lại
không bảo toàn được mối liên hệ giữa các chiều. Các đường thẳng càng xa sẽ có các
ảnh chiếu nhỏ hơn.
Nói chung, kĩ thuật để vẽ một đường thẳng ba chiều là :
• Chiếu mỗi điểm đầu mút thành các điểm hai chiều.
• Vẽ đường thẳng nối hai điểm ảnh qua phép chiếu.

Hình 1.6. Phép chiếu song song (a) và phép chiếu phối cảnh (b)
Sở dĩ chúng ta làm được điều này vì các phép chiếu mà chúng ta sử dụng bảo
toàn đường thẳng.
 Phép chiếu song song (parallel projection)
Khi hướng của tia chiếu vuông góc với mặt phẳng chiếu ta có phép chiếu
trực giao (orthographic projection). Ngược lại, ta có phép chiếu xiên (oblique
projection).
 Phép chiếu trực giao

×