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

Tạo video 3d từ mô hình 3d sử dụng công nghệ tính toán hiệu năng cao trên các bộ xử lý đồ họa

85 18 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

Định dạng
Số trang 85
Dung lượng 3,68 MB

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

Nội dung

Thông qua một quá trình xử lý gọi là kết xuất đồ họa rendering, các mô hình/cảnh kịch 3 chiều – thường được xây dựng từ các hình đa giác hay các đối tượng hình học cơ bản hay hình nguyên

Trang 1

Mẫu 1a MẪU BÌA LUẬN VĂN CÓ IN CHỮ NHŨ VÀNG Khổ 210 x 297 mm

LUẬN VĂN THẠC SĨ KHOA HỌC

CÔNG NGHỆ THÔNG TIN

Hà Nội – Năm 2011

Trang 2

Mẫu 1b MẪU TRANG PHỤ BÌA LUẬN VĂN

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

Dương Nhật Tân

TẠO VIDEO 3D TỪ MÔ HÌNH 3D SỬ DỤNG CÔNG NGHỆ TÍNH TOÁN

HIỆU NĂNG CAO TRÊN CÁC BỘ XỬ LÝ ĐỒ HỌA

Chuyên ngành : CÔNG NGHỆ THÔNG TIN

Trang 3

1.43 3Nội dung của luận văn3 143

CH ƯƠNG 23 3CƠ SỞ LÝ THUYẾT3 16

3

2.13 3Mô hình 3D3 163

2.1.13 3Định dạng file 3ds3 173

2.1.23 3Thư viện lib3ds3 183

2.23 3Xây dựng cấu trúc tăng tốc cho raytracing3 203

2.2.13 3Bounding volume hiearachy (BVH)3 213

2.2.23 3Xây dựng cây BVH3 223

2.2.33 3Duyệt cây BVH3 263

2.33 3Giải thuật Raytracing3 263

2.3.13 3Mô hình chiếu sáng Phong3 293

2.3.23 3Tia phản xạ3 313

2.3.33 3Tia khúc xạ3 31

Trang 4

2.3.43 3Che bóng3 323

2.3.53 3Màn ảnh3 333

2.3.63 3Camera pinhole3 353

2.3.73 3Giao điểm tia – đối tượng3 363

2.43 3Biểu diễn ảnh nổi và các lược đồ lọc màu3 433

2.53 3Cuda và Gp-Gpu3 483

2.5.13 3Các bộ xử lý đồ họa đa lõi của NVIDIA3 483

2.5.23 3Môi trường phát triển ứng dụng CUDA3 523

3.2.13 3Khử đệ quy raytracing sử dụng khuôn hình C++3 613

3.2.23 3Khử duyệt cây BVH đệ quy sử dụng ngăn xếp3 623

3.33 3Thiết lập camera và tạo ảnh anaglyph3 633

3.3.13 3Thiết lập camera3 633

3.3.23 3Tạo ảnh anaglyph trên GPU3 683

3.43 3Tạo video 3D3 703

CHƯƠNG 43 3KẾT QUẢ THỬ NGHIỆM3 74

3

4.13 3Môi trường thử nghiệm3 743

4.23 3Kết quả đạt được3 743

CHƯƠNG 53 3KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN3 79

3

5.13 3Kết luận3 793

5.23 3Hướng phát triển3 79

Trang 5

L ỜI CAM ĐOAN

Tôi – Dương Nhật Tân – xin cam đoan

 Luận văn tốt nghiệp Thạc sĩ này là công trình nghiên cứu của bản thân tôi dưới

sự hướng dẫn của TS Nguyễn Hữu Đức

 Các kết quả trong Luận văn tốt nghiệp là trung thực, không phải là sao chép

toàn văn của bất kỳ công trình nào khác

Hà nội, ngày 11 tháng 11 năm 2011

Trang 6

LỜI CẢM ƠN

Tôi xin được gửi lời cảm ơn sâu sắc nhất tới thầy giáo – Ti ến sĩ Nguyễn Hữu Đức –

giám đốc Trung tâm tính toán hiệu năng cao ĐHBKHN, người đã tận tình hướng dẫn

và theo dõi sát sao tôi trong quá trình thực hiện luận văn này Ngay từ những ngày đầu

chọn lựa đề tài cho luận văn, chính Thầy là người đã đưa ra ý tưởng, giúp tôi xác định bài toán và mục đích nghiên cứu Cùng với đó trong quá trình thực hiện luận văn này,

Thầy luôn đưa ra những nhận xét, lời khuyên định hướng có ích nhất để tôi có thể hoàn thành luận văn này

Tiếp theo, tôi xin được gửi lời cảm ơn chân thành tới Thầy giáo – Giáo sư, Tiến sĩ –

trong tôi rất nhiều điều đáng học hỏi khi Thầy còn là giám đốc Trung tâm tính toán

hiệu năng cao ĐHBKH Tôi đã học hỏi được từ Thầy rất nhiều, từ cách thức phương pháp làm khoa học, nghiên cứu cho tới mọi điều trong cuộc sống

Tôi cũng gửi lời cảm ơn tới các đồng nghiệp và các bạn trong nhóm nghiên cứu tính toán đa lõi MCG ở Trung tâm tính toán hiệu năng cao ĐHBKHN Có thể nói luận văn này có thể sẽ không được hoàn thành trọn vẹn nếu không có sự phối hợp và cộng tác

của các thành viên trong nhóm: KS Tr ịnh Quốc Việt, KS Nguyễn Hữu Dũng Cũng

xin được gửi lời cảm ơn tới các đồng nghiệp khác của tôi ở Trung tâm tính toán hiệu năng cao, tôi cũng học hỏi được từ mọi người rất nhiều điều và chính sự chan hòa, chia

sẻ của mọi người giúp cho tôi thực hiện luận văn tốt hơn

Trang 7

DANH MỤC TỪ VIẾT TẮT, THUẬT NGỮ VÀ Ý NGHĨA

xử lý đồ họa

của ánh sáng lên một bề mặt

Photographic Experts Group đặt ra

bộ xử lý đồ họa của hãng NVIDIA

bởi các phần cứng chuyên biệt trên GPU

Trang 8

DANH MỤC BẢNG

3

Bảng 1 Các lược đồ trộn màu biểu diễn ảnh nổiU 443

Bảng 2 - Thời gian chạy tính theo giây kết xuất mô hình chessboard.tri gồm khoảng

46 000 tam giác với độ phân giải 600*800 điểm ảnh trên CPU Pentium D 2.8 GHz và GPU Geforce GTX 295U 763

Bảng 3 - Hiệu năng tính theo số frames/giây của hai mô hình (độ phân giải 600*800 điểm ảnh , trên CPU Pentium D 2.8 GHz và GPU Geforce GTX 295)U 77

Trang 9

Hình 8 Minh họa công thức tính cường độ sáng theo mô hình PhongU 293

Hình 9 Minh họa tia phản xạU 313

Hình 10 Minh họa tia khúc xạU 323

Hình 11 Các tia che bóng để thực hiện hiệu ứng che bóngU 333

Hình 12 Màn ảnh 2 chiềuU 343

Hình 13 Minh họa camera pinholeU 363

Hình 14 Định nghĩa 1 tia trong hệ tọa độ worldU 383

Hình 15 Hình ảnh 2 chiều minh họa tìm giao điểm tia – hộp Bên trái, tURU near URU> tURU far URU nên tia không cắt hộp Bên phải, tURU near URU< tURU far URU nên tia cắt hộp.U 403

Hình 16 Chiếu đa giác lên mặt phẳng 2 chiềuU 423

Hình 17 Kiểm tra điểm nằm trong đa giác Số đoạn thẳng bị cắt là lẻ (3) nên điểm nằm trong đa giácU 433

Hình 18 Quan sát ảnh qua kính lọc màuU 453

Hình 19 Ảnh trái woods.left.bmpU 463

Hình 20 Ảnh phải woods.right.bmpU 473

Hình 21 Ảnh kết hợp theo công thức anaglyph red/cyanU 483

Hình 22 Số phép tính dấu phẩy động trên giây CPU và GPUU 493

Hình 2-22 GPU dành nhiều transistor hơn CPU để xử lý dữ liệuU 50Hình 24 Mô hình lập trình và kiến trúc trên GPU Geforce 8800 của NVIDIA 51

Trang 11

CHƯƠNG 1 MỞ ĐẦU

1.1 Lý do ch ọn đề tài và lịch sử nghiên cứu

Các mô hình 3 chiều (3D) đang ngày trở nên phổ biến và được sử dụng rộng rãi trong nhiều lĩnh vực chính như kiến trúc, làm phim, game v v Các mô hình này có thể là

các đối tượng giao thông, các công trình kiến trúc hay các nhân vật hoạt hình được thiết kế bởi các phần mềm đồ họa như Maya hay Autodesk 3DS Max, giúp các kĩ sư có được một môi trường, đối tượng ảo dùng để nghiên cứu, thử nghiệm trước khi đưa vào

thực hiện trong thực tế Thông qua một quá trình xử lý gọi là kết xuất đồ họa (rendering), các mô hình/cảnh kịch 3 chiều – thường được xây dựng từ các hình đa giác hay các đối tượng hình học cơ bản hay hình nguyên thủy (primitives) được kết xuất thành một bức ảnh 2 chiều trên máy tính

Sự phát triển nhanh chóng của đồ họa máy tính từ những năm 1960 đã đưa đến nhiều phương pháp kết xuất đồ họa khác nhau Các phương pháp này đều đòi hỏi chi phí tính toán lớn và có một sự tương xứng giữa thời gian thực hiện và chất lượng của bức ảnh đầu ra Chúng có thể được phân biệt bởi thời gian kết xuất ảnh: kết xuất online và offline Kết xuất đồ họa thời gian thực - online được dùng trong các ứng dụng như game, hiện thực ảo hay các bộ mô phỏng, máy tính cần sinh ra khoảng 30 (hoặc nhiều hơn) ảnh/frame trong 1 giây Kết xuất offline thường phù hợp với làm phim, máy tính

cần nhiều thời gian để sinh ra các bức ảnh chân thực hơn Đến những năm 90, nhiều sự quan tâm đặc biệt đã được dành cho việc giảm tải khối lượng tính toán đồ họa trên bộ

xử lý trung tâm (CPU) Điều này dẫn tới sự phát triển của các bộ xử lý đồ họa (GPU),

với mục đích chính là đảm nhận quá trình kết xuất các mô hình 3D thay cho CPU Hiện nay có hai phương pháp kết xuất đồ họa chính được quan tâm nhiều nhất là rasterization và raytracing

Trang 12

Rasterization là một phương pháp kết xuất đồ họa được sử dụng rộng rãi nhất trong

những năm gần đây bởi hầu hết các dòng phần cứng đồ họa đều được thiết kế để hỗ trợ cho rasterization Rasterization có thể định nghĩa là một quá trình tuần tự kết xuất một

mô hình /cảnh kịch 3 chiều bằng cách chuyển đổi tọa độ của các hình nguyên thủy sang

một tập các điểm ảnh 2 chiều để vẽ lên màn hình Do đó, phương pháp này thường có

thời gian kết xuất tuyến tính với số lượng hình tam giác được vẽ GPU hỗ trợ rasterization nhờ vào phần cứng chuyên biệt bên trong, làm cho thời gian xử lý một hình tam giác là rất nhỏ Các GPU hiện đại có thể vẽ tới 600 triệu hình đa giác trong

một giây [30] Tuy nhiên, kết quả của rasterization thiếu độ chân thực bởi vì nó không

dựa trên các đặc điểm vật lý của các đối tượng Các hiệu ứng ánh sáng và màu sắc phải được thêm vào bằng các phương pháp riêng biệt để tạo ‘xấp xỉ’ các hiệu ứng, làm tăng

độ phực tạp và thời gian

Raytracing mặt khác, là một quá trình xây dựng lại cảnh kịch dựa trên lấy mẫu, nó xem màn hình như một lưới điểm ảnh và phóng ra các tia từ mỗi điểm ảnh tọa độ 2 chiều trên màn ảnh vào trong một cảnh kịch 3 chiều đã dựng trước và nằm trong bộ nhớ Mỗi thông tin về giao điểm của tia với các đối tượng 3 chiều sau đó được dùng để xác định giá trị màu của điểm ảnh trên màn hình Nhờ mô phỏng tia sáng trong tự nhiên nên nhiều hiệu ứng phức tạp như phản xạ, đổ bóng - vốn rất khó đạt được với các phương pháp khác là một kết quả tự nhiên của raytracing Do đó, tuy không được hỗ trợ bởi các

phần cứng đồ họa nhưng raytracing vẫn được sử dụng trong những ứng dụng kết xuất

đồ họa off-line như làm phim hoạt hình, ví dụ hãng Pixar đã sử dụng raytracing để tạo

ra các bức ảnh phục vụ cho việc làm các bộ phim nổi tiếng như “Finding Nemo” và

“Cars” Để sinh ra được những bức ảnh ‘siêu thực’, raytracing phải trả giá bằng thời gian kết xuất rất lớn Nhiều thực thi raytracing trên các hệ thống tính toán thông dụng

đã thể hiện sự kém khả thi, trong [12], để kết xuất một cảnh kịch phức tạp gồm 15 cars, raytracing mất trung bình 15 giờ cho một bức ảnh/frame trên một máy tính Apple G5, dual-CPU PowerPC 2Ghz và 2GB RAM

Trang 13

Mặc dù không phải là một ý tưởng mới, nhưng kể từ khi được giới thiệu dưới dạng

hiện đại của nó bởi Turner Whitted trong [7], raytracing dần nhận được nhiều sự quan tâm của các nhà khoa học Các nghiên cứu sau đó đã đưa ra nhiều cải tiến đa dạng cho raytracing cả về các hiệu ứng quang học (path tracing, beam và cone tracing, packet và distribution raytracing, ) và tăng tốc (ví dụ các cấu trúc tăng tốc SAH, BVH, Kd-tree, ) cho giải thuật này Cùng với sự phát triển mạnh mẽ của công nghệ phần cứng, raytracing ngày càng được thử nghiệm để hướng đến thời gian thực nhiều hơn, và được xem là tương lai của đồ họa tương tác Tuy nhiên, thực hiện một sự chuyển dịch ngay

lập tức từ rasterization sang raytracing là không thể vì việc này cần thời gian và nghiên

cứu để phát triển lại các phần mềm đồ họa hiện tại [9]

Nguyên thủy, các kỹ thuật kết xuất đồ họa như raytracing không thể sinh ra trực tiếp

những bức ảnh lập thể (stereoscopic) hay có ảo giác về độ sâu của các đối tượng trong

mô hình 3d Trong vài thập kỷ qua, có nhiều kỹ thuật khác nhau đã được phát triển để

biểu diễn các bức ảnh nổi lập thể nhưng nguyên lý chung để xem được ảnh 3d là giống nhau: gửi tới hai bức ảnh lệch tới mắt trái và phải của người xem, cả hai ảnh lệch này sau đó được kết hợp trong nào và làm người xem có ảo giác về độ sâu 3d Đã có các nghiên cứu về sinh ảnh stereoscopic với raytracing, [11, 13] là các minh chứng cho điều này Tuy nhiên các phương pháp này đều không đặt thêm camera vào raytracing

mà cố gắng sử dụng các công thức toán học để nội suy ra bức ảnh lệch thứ hai dựa vào

bức ảnh được kết xuất thực sự Hầu hết các công việc này đều thực hiện raytracing tuần

tự trên CPU

Những cải thiện gần đây trong công nghệ sản xuất các bộ xử lý đồ họa (GPU) không

những mang lại những sản phẩm tốt hơn cho mục đích diễn họa, mà còn mang lại một môi trường tính toán mạnh cho các ứng dụng phi đồ họa Nhiều thí nghiệm được thực

hiện trên các bộ xử lý đồ họa đã chứng minh được tính hiệu quả hơn hàng chục, hàng trăm lần so với thực hiện trên các bộ xử lý trung tâm Sự xuất hiện của các môi trường

Trang 14

lập trình trên GPU như CUDA của hãng NVIDIA cho phép người phát triển dễ dàng

thực hiện các tính toán đa dụng và khai thác sức mạnh của các GPU hiện đại [19] thay

vì phải sử dụng các API đồ họa (OpenGL, DirectX) và các ngôn ngữ tô bóng đỉnh/đoạn (GLSL, Cg, HLSL) vốn phức tạp như trước đây Một trong những ưu điểm của raytracing là nó có khả năng song song hóa rất cao [30] Điều này dẫn đến một câu hỏi: Làm thế nào để thực hiện được giải thuật raytracing trên các kiến trúc đồ họa song song ngày nay để tận dụng được sức mạnh tính toán của chúng, tiết kiệm thời gian thực

hiện cho raytracing?

Luận văn trình bày một cách tiếp cận đơn giản trong việc tạo ra các video nổi 3d từ các

mô hình 3d dựng sẵn bằng cách kết hợp kỹ thuật kết xuất raytracing và một số lược đồ

lọc màu đơn giản (anaglyph, colorcode 3D) Ý tưởng cơ bản là kết xuất ra một tập các ảnh nổi 3d và sau đó nối các ảnh này thành một video 3d Các bước thực hiện được minh họa trong hình dưới

Hình 1 Ti ếp cận tạo ra video 3d từ các mô hình 3d dựng sẵn

Trang 15

Trước hết nghiên cứu này thiết lập cảnh kịch 3d sử dụng 2 camera quay xung quanh các đối tượng Vị trí của các camera được đặt sao cho chúng tương ứng với hai góc nhìn từ hai mắt trái, phải Sau đó sử dụng giải thuật raytracing để sinh ra hai bức ảnh

lệch 2d của tương ứng với 2 camera Cuối cùng, các phương pháp kết hợp ảnh dựa trên anaglyph, colorcode 3d được sử dụng để kết hợp 2 bức ảnh 2d thành một bức ảnh nổi 3d Quá trình này được lặp lại cho đến khi tập hợp đủ số fame cho việc tạo video 3d

Trở ngại lớn nhất trong cách tiếp cận này đó là sự phức tạp tính toán lớn của giải thuật raytracing Thực tế, raytracing mô phỏng mỗi tia sáng đi qua màn ảnh, với mỗi tia, raytracing kiểm tra giao điểm của tia đó với mọi đối tượng trong cảnh kịch 3d Để lần

vết đúng đắn đường đi của tia, chúng ta cần kiểm tra sự giao nhau của tia với các đối tượng trong khung cảnh Một cách làm đơn giản là kiểm tra mỗi tia với tất cả các đối tượng trong khung cảnh để tìm ra đối tượng đầu tiên được giao Việc kiểm tra này có chi phí thực hiện O(Rays x Polygons) trong đó, Rays là số tia sáng còn Polygons là số hình đa giác tạo nguyên thủy tạo nên mô hình 3d, do đó rất tốn kém Để vượt qua trở

ngại này, luận văn đã áp dụng cấu trúc tăng tốc BVH (bounding volume hierarchy) được đề xuất bởi Wald trong [15, 8] để giảm số lượng kiểm tra giao điểm giữa tia sáng

với đối tượng vật thể Để tăng tốc việc thực hiện chương trình, luận văn đã ứng dụng công nghệ tính toán song song trên các bộ xử lý đồ họa đa dụng cho việc thực hiện giải thuật raytracing cùng với kết hợp ảnh theo kỹ thuật anaglyph Chương trình song song

thử nghiệm đã được viết bằng ngôn ngữ CUDA [19] chạy trên một bộ xử lý đồ họa Geforce GTX 295 của nVidia

1.2 M ục tiêu nghiên cứu của luận văn

Luận văn được thực hiện nhằm mục tiêu xây dựng một chương trình song song hóa của

stereoscopic raytracing sử dụng công nghệ tính toán song song trên các bộ xử lý đồ

họa, từ đó ứng dụng vào để tạo các video hiệu ứng nổi 3d:

- Nghiên cứu về mô hình 3D, một số lược đồ tạo ảnh nổi 3D phù hợp với nghiên cứu

Trang 16

- Nghiên cứu phương pháp kết xuất đồ họa raytracing và các lý thuyết liên quan, thiết

lập thêm camera ảo để raytracing kết hai ảnh với hai góc nhìn từ một mô hình 3D

- Xây dựng chương trình song song cho raytracing và quá trình tạo ảnh nổi trên GPU

sử dụng CUDA, thêm vào đó cấu trúc tăng tốc BVH cũng được sử dụng Mục đích tăng tốc cho raytracing

- Ứng dụng các tập ảnh nổi sinh ra giải thuật kết xuất song song, xây dựng chương trình tạo ra video 3D anaglyph từ mô hình 3D

- So sánh hiệu năng thực hiện bài toán trên GPU và CPU, kết luận khả năng ứng

dụng của công nghệ GP-GPU vào lĩnh vực đồ họa

1.3 K ết quả đạt được

Chương trình của chúng tôi đã được thử nghiệm trên trên một bộ xử lý đồ họa GeForce GTX 295 của nVidia cùng với một số mô hình 3D có sẵn, các kết quả thử nghiệm cho thấy tốc độ kết xuất ảnh 3D tăng tùy thuộc vào độ phức tạp của mô hình 3D đầu vào khi so sánh với chương trình tuần tự trên CPU Intel Pentium D 2.8 GHz

Thời gian kết xuất cùng mô hình cũng khác nhau phụ thuộc góc đặt camera ảo Với mô hình 3D phức tạp nhất trong thử nghiệm, chứa khoảng 970 000 hình tam giác nguyên

thủy, kết quả đạt được là khá hứa hẹn, tăng tốc tới 31 lần

Bằng việc thực hiện thành công giải thuật song song raytracing tạo ra trực tiếp ảnh nổi, nghiên cứu này khắc phục được yếu điểm của các giải thuật kết xuất đồ họa vốn chỉ kết

xuất được các bức ảnh hai chiều từ mô hình 3d

1.4 N ội dung của luận văn

Luận văn này được tổ chức như sau: chương 2 cung cấp các công việc liên quan bao

gồm giải thuật Raytracing, cấu trúc BVH, tạo ảnh anaglyph, môi trường phát triển ứng

dụng Cuda và công nghệ GP-GPU Chương 3 trình bày chi tiết về giải thuật song song hóa raytracing, ở đây cũng trình bày các kỹ thuật khử đệ quy cho raytracing và quá

Trang 17

trình duyệt cây BVH bởi vì ngôn ngữ song song CUDA hiện tại không hỗ trợ đệ quy Sau đó chương này cũng mô tả các thiết lập camera để tạo ảnh tương ứng với các góc nhìn của 2 mắt và hoạt cảnh cho camera xoay quanh mô hình Chương 4 mô tả một số

thử nghiệm và thảo luận về kết quả Cuối cùng, chương 5 đưa ra một số kết luận và hướng phát triển của luận văn

Trang 18

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

- Cấu trúc liên kết của đối tượng: hình dạng, kích thước và sự phức tạp

- Các thuộc tính: màu sắc, vị trí , đặc tính quang học tại bề mặt

- Các thuộc tính mô tả động nếu đối tượng thuộc một khung cảnh động: khả năng va

chạm với các đối tượng khác

Thêm nữa mô tả toàn bộ khung cảnh cần phải bao gồm các thông tin về ánh sáng được

sử dụng, vị trí tương đối giữa các đối tượng, các tác động của môi trường lên đối tượng

Đi sâu vào tìm hiểu các mô hình 3D, luận văn đã lựa chọn định dạng file 3DS, một trong những định file mô hình 3D khá phổ biến để làm đầu vào cho chương trình 3DS là một định dạng file được sử dụng bởi phần mềm kết xuất đồ họa, mô hình hóa 3D Autodesk 3ds MAX 3ds là một định dạng file nhị phân do đó nó có thể tải vào bộ

nhớ nhanh hơn và nhỏ gọn hơn so với các định dạng file dựa trên text (có thể dùng 1 file text để mô tả các đặc tính của mô hình 3D) Bên cạnh tính phổ biến của 3ds, định

dạng này vẫn có một số giới hạn như sau:

Trang 19

 Tất cả các lưới đều phải tạo thành từ các tam giác

 Số lượng các đỉnh và đa giác trong một lưới bị giới hạn bởi giá trị 65556

 Tên của đối tượng, ảnh sáng và camera bị giới hạn trong 10 ký tự Tên chất liệu

giới hạn 16 ký tự

 Chiều các nguồn sáng không được hỗ trợ

Định dạng 3ds [28] dựa trên các khối dữ liệu là chunk, mỗi phần dữ liệu được đặt trong

một khối chứa định danh khối và chiều dài của dữ liệu đó (để cung cấp vị trí của khối

tiếp theo), và nội dung dữ liệu Điều này cho phép các bộ phân tích đọc định dạng 3ds

có thể bỏ qua các khối không cần thiết, và cho phép mở rộng định dạng này

Các khối tạo nên một cấu trúc phân cấp, tương tự như cậy XML DOM Hai byte đầu tiên của khối là ID Từ giá trị này bộ phân tích có thể xác định khối dữ liệu và quyết định là phân tích hay bỏ qua nó Bốn byte tiếp theo chứa một số nguyên đầu nhỏ là chiều dài của khối, bao gồm dữ liệu của nó, chiều dài của các khối con của nó và 6 byte header Các byte tiếp theo là dữ liệu của khối, theo sau bởi các khối con, theo một

cấu trúc có thể mở rộng tới vài mức độ sâu Dưới đây là cấu trúc chung của một file 3DS, chứa các ID chung nhất và một cấu trúc phân cấp miêu tả sự phụ thuộc của chúng:

│ │ │ ├─ 0x4140 // Mapping Floatinates List

│ │ │ │ └─ 0x4150 // Smoothing Group List

│ │ │ └─ 0x4160 // Local Floatinates System

│ │ ├─ 0x4600 // Light

│ │ │ └─ 0x4610 // Spotlight

Trang 20

│ │ └─ 0x4700 // Camera

│ └─ 0xAFFF // Material Block

│ ├─ 0xA000 // Material Name

│ ├─ 0xA010 // Ambient Color

│ ├─ 0xA020 // Diffuse Color

│ ├─ 0xA030 // Specular Color

│ ├─ 0xA200 // Texture Map 1

│ ├─ 0xA230 // Bump Map

│ └─ 0xA220 // Reflection Map

│ │ /* Sub Chunks For Each Map */

│ ├─ 0xA300 // Mapping Filename

│ └─ 0xA351 // Mapping Parameters

└─ 0xB000 // Keyframer Chunk

├─ 0xB002 // Mesh Information Block

├─ 0xB007 // Spot Light Information Block

└─ 0xB008 // Frames (Start and End)

Lib3ds [29] là một thư viện phần mềm miễn phí để xử lý các tệp tin 3DS Một trong

những tính năng mà lib3ds cung cấp là khả năng tải hầu hết các khối dữ liệu 3DS trong các phần của file như vật liệu, camera, ánh sáng, lưới, và keyframer

Dữ liệu quan trọng để xây dựng nên một đối tượng trong 3ds là lưới các hình tam giác (triangle mesh [27]) Nó là một loại lưới đa giác trong đồ họa máy tính, bao gồm một

tập các tam giác (thường dạng 3 chiều) và được kết nối với nhau qua các cạnh hoặc đỉnh chung để tạo thành một đối tượng

Trang 21

Hình 2 Minh h ọa lưới tam giác

Nhiều gói phần mềm đồ họa và các thiết bị phần cứng làm việc hiệu quả hơn trên các tam giác được nhóm thành lưới hơn là trên một số lượng tam giác tương tực nhưng lại

biểu diễn tách biệt Điều này là dễ hiểu vì đồ họa máy tính thực hiện thao tác trên các đỉnh và góc của các hình tam giác Với các tam giác đơn lẻ, hệ thống phải xử lý 3 đỉnh cho mỗi tam giác Trong một lưới tam giác lớn, có thể có từ 8 đến rất nhiều tam giác chung một đỉnh – và những đỉnh này chỉ cần xử lý một lần

Sử dụng thư việc lib3ds giúp dễ dàng đọc ra các phần dữ liệu quan trọng trong mô hình 3ds, để cho quá trình render sau đó được thực hiện Như đã đề cập ở phần 1.1, để lần

vết đúng đắn đường đi của một tia sáng, ratracing kiểm tra sự giao nhau của tia với các đối tượng trong khung cảnh Một cách làm đơn giản là kiểm tra mỗi tia với tất cả các đối tượng trong khung cảnh để tìm ra đối tượng đầu tiên được giao Việc kiểm tra này

có chi phí thực hiện O(Rays x Polygons) trong đó, Rays là số tia sáng còn Polygons là

số hình đa giác tạo nguyên thủy tạo nên mô hình 3d Trong trường hợp mô hình 3ds, số

Trang 22

hình đa giác ở đây chính là số lượng tam giác tạo nên khung cảnh đó Xem xét thêm độ phân giải của màn ảnh thì rõ ràng việc kiểm tra giao điểm này rất tốn kém về thời gian

Vấn đề này đã dẫn đến các nghiên cứu về cấu trúc tăng tốc cho raytracing để giảm số lượng phép kiểm tra này

2.2 Xây d ựng cấu trúc tăng tốc cho raytracing

Các nghiên cứu về raytracing đã đề xuất vài cấu trúc dữ liệu để tổ chức lại khung cảnh

nhằm giảm số lượng kiểm tra giao điểm Một trong những phương pháp hiệu quả đó là

sử dụng các hộp bao quanh (bounding volume) một hoặc một nhóm các hình nguyên

thủy, được đề xuất lần đầu tiên bởi Godsmith [5] Theo định nghĩa, bounding volume

là các đối tượng hình học cơ bản bao lấy hoàn tòan các đối tượng khác trong nó Các

hộp bao này thường được chọn là các đối tượng đơn giản để có thể dễ dàng tương tác

với một tia, ví dụ hình cầu hoặc hình lăng trụ chữ nhật có các cạnh song song với các

trục tọa độ - axis aligned bounding box (AABB)

Hình 3 M ột số đối tượng bị bao quanh bởi AABB

Hai lợi ích cơ bản khi sử dụng hộp bao là: việc kiểm tra giao điểm tia với hộp nhanh hơn nhiều so với kiểm tra giao điểm giữa tia với các đối tượng phức tạp, và nếu tia không cắt hộp thì tất cả các hình đa giác trong hộp đó không cần phải kiểm tra giao điểm nữa, do đó giảm được khá nhiều việc kiểm tra vô ích (hình 4) Các hộp này sau

Trang 23

đó lại được nhóm lại trong một hộp lớn hơn và cứ thế tạo thành một cấu trúc phân cấp các hộp bao quanh các đối tượng Cấu trúc này được gọi là BVH (bounding volume hierarchy)

Hình 4 Tia c ắt hộp bao quanh đối tượng

2.2.1 Bounding volume hiearachy (BVH)

BVH là cây lưu trữ một hộp bao tại mỗi nút Thêm nữa mỗi nút trong có các tham chiếu tới một số nút con, và mỗi nút lá lưu một danh sách các hình nguyên thủy (ví dụ hình tam giác) Mỗi bounding volume của một nút được đảm bảo là bao lấy bounding volume của các con của nó Mỗi hình nguyên thủy phải nằm đúng trong 1 lá Có vài hình đơn giản như hình cầu, các hộp có cạnh song song với trục tọa độ (AABB) và các

hộp có hướng có thể được chọn làm bouding volume Việc lựa chọn loại hình nào để làm hộp bao phụ thuộc vào hai yếu tố:

- các đối tượng bị bao quanh có nằm vừa bên trong tốt nhất không

- việc kiểm tra giao điểm giữa tia và hộp có dễ dàng nhất hay không

Trang 24

Thông thường, một cây BVH chỉ chứa duy nhất 1 loại bounding volume, để cho việc xây dựng và duyệt cây đơn giản hơn Hình dưới minh họa một cây BVH được tổ chức

từ một tập gồm 12 hình tam giác

Hình 5 Ví d ụ một cây BVH – mỗi hình tam giác nằm đúng trong một lá

Để xây dựng một cấu trúc phân cấp một cách nhanh chóng thì sẽ phải hy sinh chất lượng của nó Điểm mạnh của cấu trúc BVH là có thời gian xây dựng nhanh và dễ dàng cập nhật khi các đối tượng trong khung cảnh chuyển động Do đó BVH là phương pháp phổ biến nhất để biểu diễn cho các khung cảnh động []

Khi xây dựng hay cập nhật một cấu trúc, một số hàm heuristic được dùng để xác định các đối tượng hình học sẽ được tổ chức như thế nào trong một phân cấp như thế Luận văn này áp dụng phương pháp xây dựng cây phân cấp BVH nhị phân theo hướng tiếp

cận top-down được đề xuất bởi Warld trong [15], phương pháp này sử dụng các hộp bao là các hộp có cạnh song song với các trục tọa độ hay còn gọi là AABB (axis aligned bounding box) và hàm heuristic để phân chia các hình nguyên thủy là SAH (Surface Area Heuristic) được sử dụng rất nhiều khi xây dựng cấu trúc phân cấp kd-tree [3, 6]

Goldsmith và Salmon [5] đã phát triển một biểu thức đơn giản để đánh giá thời gian

thực hiện của một tia bất kỳ chạm vào hộp bao của nút gốc Họ lập luận rằng tỉ lệ mà

Trang 25

tia tới tương tác với một nút cụ thể là tỉ lệ của diện dích vùng của hộp bao của nút đó

với diện tích vùng của hộp bao của nút gốc Nếu tia chạm vào một nút trong, nó sẽ gọi

tới hai nút con và một hàm kiểm tra giao điểm với hộp bao của các nút đó sẽ được thực

hiện Nếu một nút lá bị cắt, các hình tam giác trong danh sách của nút đó sẽ có các hàm

kiểm tra giao điểm được gọi Với BVH nhị phân, thời gian để một tia ngẫu nhiên tương tác với một BVH sẽ là:

Ở đây T là thời gian thực hiện trung bình của một tia, B là số lượng các nút trong của cây (do đó sẽ có B + 1 nút lá), AR i R là diện tích của bounding volume của nút i, AR 1 R là

diện tích của bounding volume của nút gốc, và TR i R là thời gian thực hiện kết hợp với xử

lý nút i Trong trường hợp một nút trong, TR i Rlà thời gian để kiểm tra các hộp bao của hai nút con của nó có bị cắt hay không, trong khi đó đối với một nút lá, TR i Rlà thời gian

để kiểm tra các hình tam giác trong danh sách của nó có bị cắt không Do đó công thức (1) trên sẽ trở thành:

ở đây TR AABB R là thời gian để kiểm tra một tia và một AABB có giao điểm hay không,

TR tri R là thời gian để tính một giao điểm tia-tam giác, và NR i R là số tam giác trong danh sách của nút lá i

Theo chiến lược top-down xây dựng cây BVH nhị phân, mỗi bước xây dựng đệ quy bao gồm một việc phân hoạch tập S gồm các tam giác thành hai tập con SR 1 R và SR 2 R, và

việc phân chia này được thực hiện đệ quy cho đến khi S được coi là đủ nhỏ để tạo thành lá Tại mỗi bước phải chọn được phân hoạch sao cho làm tối thiểu chi phí để

Trang 26

đảm bảo một cây hai lá sẽ được xây dựng Áp dụng công thức (2) cho trường hợp cây 2

một tối ưu toàn cục bằng cách kiểm tra tất cả các trường hợp là kém khả thi

Theo đề xuất của Ingo Wald và các cộng sự trong [15], công thức (3) được tối ưu bằng cách sử dụng một tập các mặt phẳng song song với trục tọa độ để phân hoạch các tam giác Với mỗi mặt phẳng đã cho, trọng tâm của các đối tượng được sử dụng để lựa

chọn hai tập con để phân chia Giải thuật xây dựng cây BVH dựa trên SAH và trọng tâm của hộp bao được minh họa như ở dưới:

function partitionSweep( Set S)

bestAxis=-1,bestEvent=-1

for axis = 1 to 3 do

sort S using centroid of boxes in current axis

set S1 = Empty, S2 = S

for i=1 to |S| do

move triangle i from S2 to S1

thisCost=SAH(|S1|,S[i].leftArea,|S2|,S[i].rightArea) move Triangle i from S1 to S2

if thisCost < bestCost then

Trang 27

bestCost = thisCost bestEvent = i

bestAxis = axis

end if end for end for

if bestAxis = -1 then {found no partition better than leaf}

return makeleaf else

sort S in axis ’bestAxis’

để chuyển các tam giác của S từ bên phải sang trái, và tính diện tích bề mặt của hộp

chứa các tam giác của SR 2 R, đến đây đã có đủ dữ liệu để đánh giá chi phí phân hoạch này

bằng cách sử dụng công thức 3 Sau đó, các tam giác được chuyển từ SR 1 R sang SR 2 Rđể tìm

ra một sự phân hoạch tốt nhất gồm các thông tin: trục tọa độ tốt nhất, chi phí tốt nhất, hình tam giác được chuyển lần cuối Cuối cùng khi đã tìm được một sự phân hoạch tối

ưu theo cách trên, giải thuật tạo ra một nút trong với 2 nút con là SR 1 R và SR 2 R Quá trình xây dựng này được thực hiện đệ quy cho tới khi tập S đủ nhỏ để tạo thành lá

Chi tiết hơn về các bước trong quá trình xây dựng có thể tìm thấy trong [10]

Trang 28

2.2.3 Duyệt cây BVH

BVH có một giải thuật duyệt rất đơn giản Với các nút lá, tia sáng được kiểm tra giao điểm với hộp bao của nút và nếu có một giao điểm được tìm thấy, danh sách các hình tam giác của nút được kiểm tra với tia Với các nút trong, nếu tia giao với hộp bao của nút, thì các nút con được kiểm tra một cách đệ quy để tìm giao điểm Chú ý là trong trường hợp này, việc kiểm tra cũng cần phải được thực hiện cho cả 2 nút con ngay cả khi ta đã tìm thấy một giao điểm ở một nút, điều này là bởi vì đặc tính của giải thuật xây dựng cây BVH như trên Cuối cùng giải thuật phải trả về giao điểm của tia với hình tam giác gần nhất Dưới đây là đoạn mã minh họa cách duyệt cây BVH để tìm giao điểm của tia Ray r với hình tam giác gần nhất trong BVH, kết quả trả về giao điểm

for i=1to n.children do

if r overlaps n.child[i] then

end if end for

return closest t

end if

2.3 Gi ải thuật Raytracing

Ray tracing giả lập hành vi của các tia sáng phát ra từ mắt người xem để tạo ảnh cho

vật thể Ý tưởng cơ bản là lần theo dấu vết của các phần tử ánh sáng ngược chiều với nguồn phát sáng, tức là cho tia sáng xuất phát từ vị trí mắt và đi qua từng điểm trên màn ảnh vào cảnh kịch 3 chiều Sau đó một mô hình rọi sáng được sử dụng để tính toán giá trị màu cho mỗi điểm ảnh trên màn ảnh Giải thuật bắt đầu bằng cách phóng ra các tia sơ cấp – là các tia phóng ra từ mắt hay camera tới các điểm ảnh trên màn ảnh

Trang 29

Các công thức toán học định nghĩa đối tượng bên trong khung cảnh cho phép xác định

có hay không giao điểm tia – đối tượng Nếu tia sáng phát vào khung cảnh không giao

với bất cứ đối tượng nào, thì một màu nền sẽ được trả lại cho điểm ảnh đó Nếu tia sáng tương tác với các vật thể trong hoạt cảnh, điểm ảnh tương ứng với tia đó sẽ có màu của giao điểm của vật thể gần nhất được tương tác (hình 2)

Hình 6 Minh h ọa raytracing

Trong trường hợp tia sáng chạm vào bề mặt một vật thể mà có phát sinh hiệu ứng phản

xạ hay khúc xạ, việc tính toán màu sắc tại điểm tiếp xúc có thể yêu cầu phải tính toán

việc dò thêm một số tia sáng nữa – đó là tia phản xạ và tia khúc xạ tương ứng do các

hiệu ứng phản xạ, khúc xạ tại bề mặt vật thể sinh ra, các tia phóng ra từ bề mặt giao điểm này được gọi là tia thứ cấp Các tia thứ cấp này có thể sẽ lại tiếp xúc các bề mặt khác nữa, tùy tính chất của từng bề mặt lại phát sinh các thứ cấp khác cần thực hiện ray tracing Việc xử lý quá trình như vậy được gọi là xử lý đệ quy với Ray tracing (hình 3) Các tia thứ cấp được phóng ra cho đến khi không còn tìm thấy giao điểm tia – đối tượng, hoặc đã đạt đến một độ sâu đệ quy nào đó Màu của một giao điểm trên bề mặt

một đối tượng được tính theo công thức:

I = Ilocal + Kr * Ireflected + Kt * Itransmitted

Trang 30

Ở đây IR local Rcường độ sáng cục bộ, thường được tính bằng mô hình chiếu sáng Phong [12], IR reflected Rvà IR transmitted R là cường độ của tia phản xạ, khúc xạ - được xác định đệ quy

KR r Rvà KR t R các hệ số phản xạ và khúc xạ của đối tượng đó

Hình 7 Raytracing có tính ch ất đệ quy

Mã giả của giải thuật như sau:

Color trace_ray( ray, depth )

Trang 31

}

else /*have no intersection*/

}

Tất cả các đối tượng hình học đều có một hàm hoặc giải thuật để mô tả các đặc tính

phản xạ tại bề mặt của đối tượng đó gọi chung là BRDF (bidirectional reflectance distribution function) [39] Nếu không có một mô hình rọi sáng BRDF, một đối tượng nào đó sẽ không bị tác động bởi ánh sáng do đó thiếu đi sự chân thực Phương pháp đơn giản nhất song lại rất hiệu quả trong việc mô hình hóa ánh sáng tác động lên đối tượng đó là mô hình chiếu sáng Phong, được thiết lập bởi Bùi Tường Phong năm 1975 [18]

Mô hình chiếu sáng Phong phân biệt các loại ánh sáng thành các thành phần: ánh sáng môi trường, ánh sáng specular và ánh sáng khuếch tán Thành phần ambient (môi trường) đại diện cho lượng ánh sáng được cung cấp bởi một nguồn sáng toàn cục tác động lên bề mặt đối tượng Thành phần khuếch tán để mô tả cho những điểm nổi bật trên bề mặt của một đối tượng Thành phần specular xác định sự thô mịn của bề mặt

Hình 8 Minh h ọa công thức tính cường độ sáng theo mô hình Phong

Mỗi đối tượng trong khung cảnh có các loại chất liệu khác nhau Với mỗi loại material, các tham số sau được xác định:

- ks: hằng số phản xạ specular

Trang 32

- kR d R: hằng số phản xạ diffuse

- kR a R: hằng số phản xạ ambient

- kR e R: độ bóng của vật liệu (material), sẽ có giá trị lớn hơn tại các bề mặt mịn và gần

giống như gương Khi hằng số này lớn thì độ specular sẽ nhỏ đi

Với mỗi nguồn sáng trong khung cảnh gọi LR a R là cường độ sáng của thành phần môi trường (ambient), LR i Rvà L’R i R là cường độ của thành phần khuếch tán và specular tương ứng Các tham số này và màu tại bề mặt, cùng với các thông tin về vectơ tại bề mặt giao điểm được tính toán để xác định màu cuối cùng của điểm ảnh Giả sử điểm P trên

bề mặt vật thể được chiếu sáng bởi tia SR i Rđến từ nguồn sáng Gọi RR i R là tia phản xạ của

SR i R, N là véc tơ pháp tuyến tại điểm P, V là vectơ chỉ chiều đến mắt người xem hay camera ảo

Công thức tính màu cuối cùng tại điểm P theo mô hình Phong là:

Trong công thức trên, màu cuối cùng là tổng hợp của 3 thành phần ambient, diffuse và specular tương ứng Tích của các vectơ là tích vô hướng, lấy tổng theo i tức là tất cả các tia sáng từ các nguồn sáng chiếu tới điểm P

Trang 33

2.3.2 Tia phản xạ

Để kết xuất được các bề mặt có tính chất phản xạ, cần phải phóng ra các tia phản xạ tại giao điểm của tia với đối tượng Với mỗi điểm đặt mắt/camera ảo cố định, mỗi vị trí trên một đối tượng có đặc tính phản xạ chỉ có duy nhất một chiều để ánh sáng đi tới

mắt, ví dụ ở hình dưới, chỉ có duy nhất một tia sáng phản xạ ở P và đi vào mắt Màu

của tia phản xạ này phụ thuộc vào màu của tia tới và màu của bề mặt đối tượng

Hình 9 Minh h ọa tia phản xạ

Gọi S là tia tới, N là vecto pháp tuyến tại bề mặt đối tượng, việc tạo ra tia phản xạ tương ứng R khá đơn giản theo công thức:

So với tia phản xạ, các tia khúc xạ có một hướng đi phụ thuộc vào hệ số khúc xạ của

vật liệu được xem xét Hình dưới minh họa một đường đi của tia khúc xạ, ở đây tia truyền qua vật thể

Trang 34

Hình 10 Minh h ọa tia khúc xạ

Việc sinh ra các tia khúc xạ tuân theo công thức sau:

2.3.4 Che bóng

Che bóng rất dễ thực hiện trong raytracing, quá trình bắt đầu bằng cách phóng ra một tia từ giao điểm tới nguồn sáng để tìm che bóng Nếu không có giao điểm nào giữa tia này và nguồn sáng, thì không có che bóng trên bề mặt đó Nếu có một giao điểm, thì có

một bóng che trên bề mặt Hình dưới minh họa hai tia che bóng phóng đi từ một bề

mặt, tia LR A R đi tới nguồn sáng A, và tia LR B Rđi tới nguồn sáng B Tia LR A R không bị ngắt khi đi tới nguồn, nhưng tia LR B R chạm một đối tượng mờ trên đường đi

Trang 35

Hình 11 Các tia che bóng để thực hiện hiệu ứng che bóng

Màn ảnh được xem là một lưới ảo, với một sự tương ứng 1-1 với các pixel trên màn hình và được đặt giữa mắt và khung cảnh 3d Kết quả render là các bức ảnh 2 chiều sẽ được lưu trên màn ảnh này Hình dưới minh họa một màn ảnh có độ phân giải là hR res Rx

vR res

Trang 36

Hình 12 Màn ảnh 2 chiều

Trong đồ họa máy tính, có một sự phân biệt rõ ràng giữa các hệ tọa độ tương ứng với world, màn ảnh, các nguồn sáng, và các đối tượng Màn ảnh có một hệ tọa độ 2 chiều, các trục được đánh dấu bởi (i,j) Mỗi ô biểu diễn vị trí một điểm ảnh, ở đây mỗi ô vuông có kích thước là s x s, trong trường hợp không cần chống nhiễu răng cưa, s có giá trị là 1 Trong hình trên, hệ tọa độ world cũng được biểu diễn với các ký hiệu XR W R,

YR W R với trục ZR W R có chiều dương hướng ra phía người xem còn chiếu âm đi vào khung

cảnh 3 chiều

Các tia được bắn ra từ vị trí i=0 và j=0, và tiếp tục duyệt theo chiều dọc và chiều ngang Tuy nhiên, các đối tượng 3d được định nghĩa và đặt trong hệ tọa độ world, do

đó tọa độ 2 chiêu ftrên màn ảnh cần được chuyển sang hệ tọa độ 3 chiều world Công

thức sau thể hiện việc chuyển chỉ số i thành XR W R và j thành YR W R

Trang 37

Một khi thực hiện các chuyển đổi này, việc kiểm tra giao điểm giữa đối tượng và tia được thực hiện trong hệ tọa độ 3 chiều world Các tia có điểm gốc nằm trên trục dương

ZR W R và có chiều đi vào trục âm ZR W R Điều này ngụ ý rằng màn ảnh bị cố định theo trục

ZR W R Để có thể xem được khung cảnh ở các góc nhìn khác nhau, raytracing sử dụng một

loại camera ảo là pinhole

2.3.6 Camera pinhole

Camera ảo dùng trong raytracing là loại camera pinhole Camera pinhole cho phép xem khung cảnh (scene) từ mọi vị trí bằng cách thiết lập các tham số: điểm đặt mắt, điểm nhìn vào, vecto up, và khoảng cách d giữa mắt và màn ảnh Điểm đặt mắt (e) chỉ ra vị trí của người xem, điểm look-at (l) chỉ ra một điểm trên khung cảnh làm tâm để camera nhìn vào Vecto up chỉ ra chiều được xem là chiều lên, thường là trục tọa độ y (ví dụ

nếu vecto này là chiều âm của trục x , thì ảnh kết xuất cuối cùng sẽ bị quay trái 90P

0 P)

Trang 38

Hình 13 Minh h ọa camera pinhole

Thực hiện một camera pinhole cần phải tính toán được chiều của các tia sơ cấp Điều này trước hết phải định nghĩa một hệ tọa độ về điểm đặt mắt (e), có các thành phần là các vecto u,v, và w Các công thức sau tuân theo từ [2]:

Sau đó chiều của mỗi tia sơ cấp được tính toán như sau:

rayDirection = XR w R u + YR w R.v – d.w

Các hàm tìm giao điểm của tia với các đối tượng trong khung cảnh 3d là trung tâm trog

một chương trình raytracing Bất kể là các mô hình chiếu sáng, ánh xạ bề mặt (texture mapping), các kỹ thuật phân chia không gian, các lược đồ chống nhiễu răng cưa nào

Trang 39

được sử dụng trong giải thuật, luôn luôn cần phải tìm ra giao điểm của một tia và một đối tượng

Khi một tia được phóng tới môi trường mô hình hóa, thông tin nào cần lấy về phụ thuộc vào mục đích của tia Với một tia được phóng ra từ mắt, một hàm tính giao điểm

với đối tượng phải trả giao điểm gần nhất và pháp tuyến bề mặt tại điểm đó Với một tia được gửi tới một nguồn sáng (để kiếm tra sự che bóng), thông tin cần là liệu có giao điểm nào trên đường đi tới nguồn sáng không Thêm nữa, các thông tin khác cũng cần

lấy về phụ thuộc mô hình chiếu sáng Với những tia sáng được kiểm tra với một hộp bao (bounding volume) thì việc xác định liệu tia có chạm hộp hay không đã là đủ Như đã đề cập ở trên, chúng ta sử dụng cấu trúc tăng tốc BVH chứa các hộp bao của các hình tam giác nguyên thủy tạo nên mô hình 3ds Do đó, việc xác định giao điểm tia

với hộp cần được thực hiện nhanh chóng Phần này trước hết trình bày một giải thuật đơn giản được đề xuất lần đầu tiên bởi Kay và Kajiya [17] để xác định tia có cắt hộp hay không, sau đó trình bày các hàm tia – giao mặt phẳng, tia giao đa giác bởi vì cây BVH chứa các hình tam giác của mô hình

2.3.7.1 Giao điểm tia – hộp

Đối tượng hộp phổ biến nhất đó là dạng hình hộp chữ nhật có các trục song song với các trục tọa độ world Chúng được gọi là AABB (axis aligned bounding boxes) Chúng không phải là một phần của cấu trúc phân cấp, mặc dù ta thực hiện kiểm tra giao điểm nhưng sẽ không kết xuất ra các hộp này

Trước hết một tia được xác định bởi hai thành phần :

 RR 0 R = (XR 0 R, YR 0 R, ZR 0 R) ;

 Vec tơ chỉ phương RR d R = (XR d R, YR d R, ZR d R)

Trang 40

Hình 14 Định nghĩa 1 tia trong hệ tọa độ world

Tia này có phương trình là :

R(t) = RR 0 R + t.RR d R = (XR 0 R + t.XR d R, YR 0 R + t.YR d R, ZR 0 R + t.ZR d R), với t > 0

Một hộp bao được biểu diễn bởi hai đỉnh ở 2 góc đối diện của nó BR l R = (XR l R, YR l R, ZR l R) và

BR h R = (XR h R, YR h R, ZR h R) với XR l R < XR h R, YR l R < YR h R, ZR l R < ZR h R Kay và Kajiya đã giới thiệu một phương pháp kiểm tra tia cắt hộp dựa trên slabs [17] Một slab đơn giản là khoảng không gian giữa hai mặt phẳng song song Giao điểm của một tập các slab sẽ xác định

một hộp bao Theo đó, một hộp AABB là giao của 3 slab trực giao x ∈ [XR l R, XR h R], y ∈ [YR l R, YR h R], z ∈ [ZR l R, ZR h R]: box = [XR l R, XR h R] ∩ [YR l R, YR h R] ∩ [ZR l R, ZR h R]

Giải thuật thiết lập 2 biến tR near Rvà tR far R, so sánh giá trị của chúng để kết luận tia có cắt

hộp hay không, tR near Rlà giá trị lớn nhất giữa hai khoảng từ gốc của tia tới hai giao điểm

của tia với slab mà tia đi vào, còn tR far Rlà giá trị nhỏ nhất giữa hai khoảng cách từ gốc

của tia tới giao điểm của tia với slab mà tia đi ra (hình dưới) Nếu tR near R > tR far Rthì tia không cắt hộp, ngược lại tia cắt hộp

Ngày đăng: 28/02/2021, 00:08

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. A.S Glassner (1989), An Introduction to ray-tracing, Academic Press Ltd. London, UK Sách, tạp chí
Tiêu đề: An Introduction to ray-tracing
Tác giả: A.S Glassner
Năm: 1989
2. Suffern, Kevin. (2007), Ray Tracing from the Ground Up. Wellesley, MA: A K Peters, Ltd Sách, tạp chí
Tiêu đề: Ray Tracing from the Ground Up
Tác giả: Suffern, Kevin
Năm: 2007
3. V. Havran, Heuristic Ray Shooting Algorithms. Ph.D. thesis, Faculty of Electrical Engineering, Czech Technical University in Prague, 2001 Sách, tạp chí
Tiêu đề: Heuristic Ray Shooting Algorithms
4. J.D. MacDonald, K.S.Booth, Heuristics for ray tracing using space subdivision, Proceedings of Graphics Interface, 1989 Sách, tạp chí
Tiêu đề: Heuristics for ray tracing using space subdivision
5. J. Goldsmith, J. Salmon (1987), Automatic creation of object hierarchies for ray tracing, IEEE Computer Graphics and Applications Sách, tạp chí
Tiêu đề: Automatic creation of object hierarchies for ray tracing
Tác giả: J. Goldsmith, J. Salmon
Năm: 1987
6. Wald, V. Havran (2006), On building good kd-trees for ray tracing, and on doing this in O(N log N), Proceedings of the ieee symposium on interactive ray tracing Sách, tạp chí
Tiêu đề: On building good kd-trees for ray tracing, and on doing this in O(N log N)
Tác giả: Wald, V. Havran
Năm: 2006
7. Steven M. Rubin, Turner Whitted, (1980) A 3-Dimensional Representation for Fast Rendering of Complex Scenes, NewsletterACM SIGGRAPH Computer Graphics Sách, tạp chí
Tiêu đề: A 3-Dimensional Representation for Fast Rendering of Complex Scenes
8. IngoWald, WilliamR.Mark, JohannesGünther, SolomonBoulos, ThiagoIze, WarrenHunt, StevenG.Parker and PeterShirley (2007), State of the Art in RayTracing Animated Scenes, EURO GRAPHICS 2007 Sách, tạp chí
Tiêu đề: State of the Art in RayTracing Animated Scenes
Tác giả: IngoWald, WilliamR.Mark, JohannesGünther, SolomonBoulos, ThiagoIze, WarrenHunt, StevenG.Parker and PeterShirley
Năm: 2007
9. Akeley, Kurt, et al. (2008), When Will Ray-Tracing Replace Rasterization? ACM Portal. http://portal.acm.org/citation.cfm?id=1242120 Sách, tạp chí
Tiêu đề: When Will Ray-Tracing Replace Rasterization
Tác giả: Akeley, Kurt, et al
Năm: 2008
10. Magnus Andersson (2006). Bounding Volume Hierarchy, Seminar in EDAN30 Photorealistic Computer Graphics Sách, tạp chí
Tiêu đề: Magnus Andersson (2006)." Bounding Volume Hierarchy
Tác giả: Magnus Andersson
Năm: 2006
14. Whitted T. (1979), An improved illumination model for shaded display. Proceedings of the 6th annual conference on Computer graphics and interactive techniques Sách, tạp chí
Tiêu đề: An improved illumination model for shaded display
Tác giả: Whitted T
Năm: 1979
15. Wald, I , Boulos, S. , and Shirley, P. 2007. Raytracing deformable scenes using dynamic bounding volume hierarchies. ACM Trans.Graph.26,1,6 Sách, tạp chí
Tiêu đề: Raytracing deformable scenes using dynamic bounding volume hierarchies
16. Gold Smith, J., and Salmon, J. 1987. Automatic creation of object hierarchies for ray tracing. IEEE CG&amp;A 7, 5, 14 –20 Sách, tạp chí
Tiêu đề: Automatic creation of object hierarchies for ray tracing
17. Kay, T.L. and Kayjiya, J.T. (1986), Ray Tracing Complex Scenes, Siggraph ’86 Proceedings, p 269-278 Sách, tạp chí
Tiêu đề: Ray Tracing Complex Scenes
Tác giả: Kay, T.L. and Kayjiya, J.T
Năm: 1986
18. B. T. Phong (1975), Illumination for computer generated pictures, Communications of ACM , no. 6, 311–317 Sách, tạp chí
Tiêu đề: Illumination for computer generated pictures
Tác giả: B. T. Phong
Năm: 1975
20. Andrew Woods (2000) Stereoscopic Presentations –Taking the Difficulty out of 3D, The 6 P th P International Workshop on 3D Imaging Media Technology, Seoul, Korea Sách, tạp chí
Tiêu đề: Stereoscopic Presentations –Taking the Difficulty out of 3D
21. David Vandevoorde, Nicolai M. Josuttis. (2002), C++ Templates: The Complete Guide, Addison-Wesley Professional Sách, tạp chí
Tiêu đề: C++ Templates: The Complete Guide
Tác giả: David Vandevoorde, Nicolai M. Josuttis
Năm: 2002
19. NVIDIA http://www.nvidia.com/object/cuda home new.html Link
25. The new RealD http://www.reald.com/content/cinema.aspx 26. http://en.wikipedia.org/wiki/Anaglyph_image Link
38. LIBJPEG http://pkgs.org/package/libjpeg 39. BRDFhttp://en.wikipedia.org/wiki/Bidirectional_reflectance_distribution_function Link

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