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

Xây dựng game engine đa nền tảng hiệu ứng ánh sáng và vật liệu

51 733 2
Tài liệu đã được kiểm tra trùng lặp

Đ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 51
Dung lượng 0,93 MB

Nội dung

Tài liệu tham khảo công nghệ thông tin Xây dựng game engine đa nền tảng hiệu ứng ánh sáng và vật liệu

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Bùi Hoàng Khánh

XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG - HIỆU ỨNG ÁNH SÁNG VÀ VẬT LIỆU

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin

HÀ NỘI – 2009

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trang 3

i

LỜI CẢM ƠN

Lời đầu tiên tôi xin bày tỏ lòng biết ơn chân thành tới các thầy cô giáo Trường Đại học Công Nghệ, Đại học Quốc Gia nói chung và các thầy cô bộ môn công nghệ Phần mềm nói riêng Trong suốt thời gian tôi học tại trường, các thầy cô đã luôn tận tình dạy dỗ, chỉ bảo để tôi có được kết quả như ngày hôm nay

Đặc biệt, tôi xin chân thành cảm ơn giảng viên, thạc sĩ Vũ Quang Dũng Cảm ơn thầy vì những định hướng, nhận xét quý báu và động viên kịp thời của thầy đã giúp tôi hoàn thành khóa luận này Tôi cũng xin cảm ơn phòng thí nghiệm Toshiba – Coltech đã tạo điều kiện cho tôi có môi trường làm việc trong quá trình thực hiện khóa luận này

Cuối cùng tôi xin bày tỏ lòng biết ơn sâu sắc tới gia đình và bạn bè, những người đã luôn động viên, giúp đỡ tôi cả về vật chất lẫn tinh thần trong suốt những năm tháng qua

Hà Nội, ngày 19 tháng 05 năm 2009

Sinh viên

Bùi Hoàng Khánh

Trang 4

ii

TÓM TẮT

Sự phát triển của công nghệ mô phỏng và giải trí, ngày càng có nhiều ứng dụng đồ họa và trò chơi 3D được xây dựng nhằm phục vụ mục đích nghiên cứu, mô phỏng và giải trí… Cùng với đó, công nghệ phần cứng cũng phát triển rất nhanh, đặc biệt là các phần cứng xử lý đồ họa có thể lập trình được và các ngôn ngữ lập trình trên các phần cứng này Tuy nhiên, để xây dựng một ứng dụng đồ họa và trò chơi 3D đảm bảo các yêu cầu: hỗ trợ một dải phần cứng và phần mềm (cụ thể là hệ điều hành) lớn, có khả năng lựa chọn API đồ họa mức thấp (OpenGL, OpenGL ES hay DirectX), dễ d àng quản lý và phát triển các tài nguyên; các ứng dụng này được xây dựng từ một game engine, chứ không phát triển từ nguyên thủy

Xuất phát từ thực tế đó, khóa luận tập trung nghiên cứu xây dựng một hệ thống Game Engine hỗ trợ xây dựng ứng dụng đồ họa và trò chơi 3D trên nhiều nền tảng khác nhau Hệ thống Game Engine được xây dựng sẽ cung cấp giao diện lập trình ở mức cao Khi phát triển các ứng dụng đồ họa 3D, người lập trình không cần phải quan tâm đến quá trình quản lý tài nguyên, cũng như xử lý đồ họa ở mức thấp bên dưới Thay vào đó, họ chỉ cần tập trung vào quản lý ở mức lôgíc các thành phần của ứng dụng, hoặc thêm mới các thành phần dựa trên thành phần cơ sở do hệ thống cung cấp

Nội dung của khóa luận này tập trung nghiên cứu các vấn đề sau:

- Môi trường phát triển hệ thống Game Engine ứng dụng đồ họa và trò chơi 3D, gồm nền tảng phần cứng, phần mềm, và các công nghệ đồ họa ở mức thấp (như OpenGL, OpenGL ES, DirectX)

- Thiết kế và xây dựng một hệ thống đồ họa có cấu trúc và tương tác với người dùng

- Nghiên cứu và triển khai các kỹ thuật tạo hiệu ứng về ánh sáng trong khung cảnh 3D

Trang 5

Chương 1: TỔNG QUAN VỀ GEM 3

1.1 Khái niệm Game Engine 3

1.2 Mô hình của GEM 3

1.2.1 Các đặc điểm của GEM 3

1.2.2 Kiến trúc tổng thể 4

1.2.2.1 Thành phần Cấu trúc dữ liệu cơ bản 5

1.2.2.2 Thành phần Giao tiếp với Hệ điều hành 6

1.2.2.3 Thành phần Render Engine 7

1.2.2.4 Các thành phần còn lại 8

Chương 2: CƠ SỞ LÝ THUYẾT 9

2.1 Ánh sáng trong đồ họa máy tính 9

2.3.1.Đối tượng với mạng lưới nhiều đa giác 13

2.3.2.Kỹ thuật sử dụng bản đồ vector pháp tuyến 13

2.3.3 Không gian Texture 14

Trang 6

iv

Chương 3: MÔ HÌNH ĐỀ XUẤT 16

3.1 Các yêu cầu chung của mô đun 16

3.2 Các thành phần trong mô đun 17

Chương 4: THIẾT KẾ CHI TIẾT 19

4.1 Chiếu sáng 19

4.1.1 Vật liệu 19

4.1.2.Chiếu sáng bằng mô hình OpenGL cung cấp 20

4.1.3.Chiếu sáng bằng mô hình tự định nghĩa 22

Trang 7

v

BẢNG CÁC TỪ VIẾT TẮT

Ký hiệu Từ tiếng Anh Giải thích

CPU Central processing unit Đơn vị xử lý trung tâm

GPU Graphics processing unit Đơn vị xử lý đồ họa

role-playing game

Trò chơi nhập vai trực tuyến nhiều người chơi

Trang 8

vi

DANH MỤC HÌNH VẼ

Hình 1: Kiến trúc phân tầng của GEM 3

Hình 2: Kiến trúc tổng thể của GEM 4

Hình 3: Biểu đồ lớp của thành phần Các kiểu dữ liệu cơ bản 5

Hình 4: Quá trình điều phối sự kiện 6

Hình 5: Kiến trúc phân tầng của Render Engine 7

Hình 6: Tác động của Ánh sáng trong đồ họa 3D 9

Hình 7: Vẽ vật thể với áng sáng Ambient 10

Hình 8: Vẽ vật thể với thành phần Diffuse 10

Hình 9: Vẽ vật thể với thành phần Specular 11

Hình 10: Kết quả của một số mô hình tạo bóng 11

Hình 11: Kết quả của cùng một mô hình ánh sáng trên Vertex và Pixel 12

Hình 12: Mô hình của SV 13

Hình 13: So sánh giữa sử dụng bản đồ pháp tuyến và thiết kế mô hình 14

Hình 14: Mô hình liên kết với các thành phần khác bên ngoài 16

Hình 15: Các thành phần của mô đun Hiệu ứng ánh sáng và vật liệu 17

Trang 9

vii

Hình 25: Lớp Shadow 27

Hình 26: Sơ đồ trạng thái vẽ bóng 27

Hình 27: Lớp ShadowEffect 28

Hình 28: Cấu trúc dữ liệu tính toán Vùng đổ bóng 29

Hình 29: Sơ đồ hoạt động của renderShadow() 30

Trang 11

1

MỞ ĐẦU

Với xu hướng phát triển mạnh mẽ của công nghệ phần cứng (cụ thể là các phần cứng xử lý đồ họa lập trình được và các ngôn ngữ lập trình trên phần cứng này) và công nghệ mô phỏng và giải trí, các ứng dụng đồ họa và trò chơi 3D được xây dựng và phát triển ngày càng nhiều Cách đây 20 năm, các ứng dụng này rất đơn giản và chỉ cần một người hoặc một nhóm nhỏ người phát triển Nhưng ngày nay, với tính năng xử lý đồ họa và tương tác ấn tượng thường được phát triển bởi một đội ngũ đông đảo gồm nhà thiết kế, lập trình viên… trong khoảng thời gian liên tục từ một đến ba năm Để đảm bảo các yêu cầu: hỗ trợ một dải phần cứng và phần mềm (hệ điều hành) lớn, có khả năng lựa chọn API đồ họa mức thấp (OpenGL, OpenGL ES hay DirectX), dễ dàng quản lý và phát triển các tài nguyên, và có khả năng tái sử dụng mã nguồn cao; các ứng dụng này thường được phát triển lên từ một game engine thay vì phát triển từ nguyên thủy

Ở Việt Nam hiện nay, các trò chơi trực tuyến mới chỉ thực sự thâm nhập vào thị trường cách đây 06 năm; chỉ trong khoảng thời gian ít ỏi đó, chúng ta đã hình thành hàng chục các nhà phát hành, và số trò chơi trực tuyến được phát hành cũng tương ứng với số lượng đó Nhưng một thực trạng đáng buồn là gần như hầu hết các trò chơi trực tuyến đang được phát hành nhập khẩu từ nước ngoài, chủ yếu là Trung Quốc và Hàn Quốc (trừ một số trò chơi nhỏ chơi trên nền web như đánh bài, đánh cờ…) Một câu hỏi mà có lẽ tất cả người chơi đều trăn trở là “bao giờ mới được chơi game Việt Nam?”

Từ thực tế đó, chúng tôi chọn đề tài này không có tham vọng quá lớn, mà chỉ muốn đi những bước chập chững đầu tiên vào thế giới phát triển game rộng lớn, để thu lượm kiến thức về lĩnh vực khó khăn nhưng đầy thú vị này; và hi vọng ở một tương lai không xa, chúng tôi có thể góp một phần sức lực giải đáp trăn trở của cộng đồng người chơi game Việt Nam

Khóa luận nghiên này cứu xây dựng một hệ thống Game Engine đa nền tảng

(được đặt tên là GEM) (trước mắt sẽ hỗ trợ Window PC và Linux PC) và nhắm đến thị

trường trò chơi nhập vai trực tuyến Đây là mục tiêu dài hạn, còn hiện tại, do hạn chế về thời gian (khoảng 5 tháng) nên chúng tôi chỉ tập trung hoàn thiện thành phần Render Engine trong Game Engine Để giải quyết vấn đề này, khóa luận tập trung nghiên cứu và phân tích môi trường phát triển đồ họa 3D (gồm cả phần cứng và phần

Trang 12

2

mềm), các công nghệ đã được triển khai trong một số game engine khác hiện có trên thị trường Từ đó khóa luận đưa ra phương pháp và xây dựng hệ thống tổ chức và quản lý bộ nhớ, cũng như các đối tượng trong khung cảnh 3D

Ngoài ra, khóa luận cũng nghiên cứu và triển khai các hiệu ứng (ánh sáng, nước, lửa…), các mô phỏng vật lý (hệ thống hạt, trường lực…), các tối ưu về bộ nhớ, tốc độ xử lý và thiết kế mô hình đối tượng trong khung cảnh 3D

Bố cục của khóa luận bao gồm phần mở đầu, phần kết luận và 5 chương nội dung được tổ chức như sau:

Chương 1: Trình bày các khái niệm về Game Engine, cách tiếp cận và phương

pháp sử dụng để triển khai hệ thống Game Engine đa nền tảng Ch ương này cũng trình bày mô hình chung của một Game Engine và một số thành phần cơ bản khác của hệ thống

Chương 2: Trình bày các cơ sở lý thuyết để xây dựng nên mô đun Hiệu ứng ánh

sáng và vật liệu Trong đó chương này trọng tâm vào trình bày một cách tổng quan nhất về các lý thuyết được áp dụng để thiết kế và cài đặt mô đun này

Chương 3: Trình bày mô hình tổng quan của mô đun Hiệu ứng ánh sáng và vật

liệu Đó là đưa ra quan hệ giữa mô đun này với các mô đun khác trong hệ thống, cũng như quan hệ giữa các thành phần trong cùng mô đun

Chương 4: Trình bày chi tiết việc cài đặt các thành phần cơ bản của mô đun

Hiệu ứng ánh sáng và vật liệu Đó là cấu trúc lớp để quản lý các thành phần của hệ thống, và các luồng điều khiển thực thi

Chương 5: Trình bày các đánh giá thực nghiệm và các demo tính năng mà mô

đun Hiệu ứng ánh sáng và vật liệu thực hiện được

Trang 13

3

Chương 1: TỔNG QUAN VỀ GEM

1.1 Khái niệm Game Engine

Game Engine là một công cụ hỗ trợ, một lớp trung gian ở giữa các ứng dụng game và nền tảng bên dưới, các thư viện lập trình cấp thấp Game Engine giúp phát triển ứng dụng game một cách nhanh chóng và đơn giản, đồng thời cung cấp khả năng tái sử dụng mã nguồn cao do có thể phát triển nhiều ứng dụng từ một game engine

Hình 1: Kiến trúc phân tầng của GEM

GEM là một game engine nên dĩ nhiên nó cũng tuân theo mô hình này (Hình 1)

1.2 Mô hình của GEM

1.2.1 Các đặc điểm của GEM

Như đã giới thiệu, GEM hỗ trợ đa nền (Window PC và Linux PC) và nhắm đến

thị trường phát triển game nhập vai trực tuyến, nên GEM có các đặc điểm sau:

Đầu tiên là khả năng chạy đa nền Để đạt được điều này, GEM sử dụng các bản build khác nhau trên các nền tảng khác nhau (chứ không phải sử dụng thông dịch) Các đoạn code phụ thuộc nền tảng sẽ được phân chia bằng việc sử dụng các cờ tiền biên dịch, hạn chế tối đa việc sử dụng các lớp ảo – vì việc nằm sẽ làm giảm đáng kể hiệu suất chương trình [4][5] Cũng vì lí do này chúng tôi lựa chọn OpenGL làm giao diện lập trình đồ họa 3D cấp thấp cho GEM, do chuẩn OpenGL là chuẩn mở và không bị phụ thuộc vào hệ điều hành; và sử dụng Cg Shading Language làm ngôn ngữ tạo bóng Thứ hai, GEM được thiết kế hướng đối tượng và yêu cầu về hiệu năng chạy cao nên chúng tôi sử dụng ngôn ngữ C++ - ngôn ngữ đáp ứng hoàn hảo các điều kiện trên

Trang 14

4

Cuối cùng, do GEM nhắm đến thị trường phát triển game nhập vai trực tuyến, nên sẽ được thiết kế để tương thích với một phạm vi rộng cấu hình phần cứng, dự kiến

sẽ hỗ trợ các card đồ họa hỗ trợ OpenGL 1.4 và Shader 1.0 trở lên (Bảng 1)

Bảng 1: Dòng card đồ họa được GEM hỗ trợ

Hãng sãn xuất Dòng card hỗ trợ

Intel (card tích hợp) Từ Intel® GMA 3100 (chipset G31,Q33) trở lên

Trang 15

5

Do giới hạn về thời gian, nên phạm vi của luận văn này chúng tôi tập trung hoàn

thành các thành phần sau: Giao tiếp với Hệ điều hành, Các kiểu dữ liệu cơ bản,

Render Engine Những thành phần này đủ để hỗ trợ người sử dụng tạo ra các khung

cảnh 3D và tương tác với chúng

1.2.2.1 Thành phần Cấu trúc dữ liệu cơ bản

Các kiểu dữ liệu cơ bản là thành phần bao gồm các cấu trúc dữ liệu cơ bản như

mảng động, vector, ma trận…, và các phép toán trên các kiểu dữ liệu đó; cung cấp cho

thành phần khác sử dụng

Hình 3: Biểu đồ lớp của thành phần Các kiểu dữ liệu cơ bản

Các kiểu dữ liệu này có thể chia thành 02 nhóm chính: - Các yếu tố trong không gian 3D:

o Vector2, Vector, Vector4: các loại vector biểu diễn tọa độ 2 chiều, 3 chiều và đồng nhất

o Aabb: hình hộp chữ nhật có các cạnh dọc theo các trục xyz, được mô

tả bằng 2 điểm (xmin, ymin, zmin ), (xmax, ymax, zmax)

Trang 16

6

o Sphere: hình cầu được mô tả bởi tọa độ tâm và bán kính

o LineSequent, Line, Ray: mô tả đoạn thẳng, đường thẳng, và tia

o Matrix: ma trận sử dụng để biểu diễn các phép biến đổi: dịch, xoay, co giãn trong không gian 3 chiều

o Plane: mặt phẳng được mô tả bởi phương trình ax + by + cz + d = 0 o Frustum: là hình chóp cụt biểu diễn khung nhìn của camera, được mô

tả bằng 6 mặt phẳng tạo nên nó - Các kiểu đối tượng lưu trữ:

o String: lưu trữ xâu kí tự

o Array: mảng động có thể tùy biến với hệ số mở rộng o GemAllocator: thực thi cấp phát và giải phóng bộ nhớ o List: Danh sách liên kết hai chiều

o Stack: đặc tả ngăn xếp

1.2.2.2 Thành phần Giao tiếp với Hệ điều hành

Hình 4: Quá trình điều phối sự kiện

Trang 17

7

Giao tiếp với Hệ điều hành là thành phần thực thi các công việc cần giao tiếp

với hệ điều hành như điều phối sự kiện, đọc ghi file, lấy thời gian hệ thống… Trong đó quan trọng nhất là quá trình điều phối sự kiện (Hình 4)

GEM lấy sự kiện từ Message System của hệ điều hành, từ đó lấy các thông tin cần thiết tạo ra một đối tượng GemEvent - lý do cần tạo ra GemEvent là để tránh bị phụ thuộc vào hệ điều hành Sau đó, GemEvent sẽ được gửi lần lượt đến các thành phần có khả năng nhận và xử lý sự kiện này

1.2.2.3 Thành phần Render Engine

Render Engine là thành phần cốt lõi của một Game Engine Nó hỗ trợ người

dùng các công việc thiết yếu để tạo ra một khung cảnh 3D Người dùng sẽ không cần biết nhiều đến những công việc tầng thấp như quá trình đọc file tài nguyên, sử dụng các API đồ họa 3D, tạo các hiệu ứng… mà quản lý logic các đối tượng bằng các giao diện do Render Engine cung cấp

Đây là thành phần duy nhất trong GEM giao tiếp với phần cứng đồ họa thông qua thư viện đồ họa 3D cấp thấp, cụ thể ở đây là OpenGL và Cg

Hình 5: Kiến trúc phân tầng của Render Engine Thành phần này được thiết kế làm các mô đun sau:

- Graphic Driver là mô đun trực tiếp sử dụng các API đồ họa 3D (OpenGL),

cung cấp cho các mô đun khác một giao diện đơn giản hơn để tương tác với card đồ họa

Trang 18

8

- Quản lý tài nguyên là mô đun quản lý các tài nguyên cần thiết để xây dựng một

khung cảnh 3D như mạng lưới, texture 2D, cubemap… Mô đun này được trình

bày chi tiết trong khóa luận “Xây dựng Game Engine đa nền tảng – Quản lý tài

nguyền và chuyển động nhân vật ” - Hoàng Tuấn Hưng

- Quản lý khung cảnh là mô đun thực hiện việc tổ chức và kiểm soát các đối

tượng tồn tại trong một khung cảnh 3D, từ đó thực hiện quá trình chuyển toàn bộ khung cảnh đó tạo nên hình ảnh 2D tại vị trí nhìn Mô đun này được trình bày chi

tiết trong khóa luận “Xây dựng Game Engine đa nền tảng – Quản lý khung

cảnh” - Trương Đức Phương

- Hiệu ứng ánh sáng và vật liệu là mô đun mở rộng các thành phần của Quản lý khung cảnh để tạo các hiệu ứng về ánh sáng, và vật liệu Mô đun này được trình

bày chi tiết ở phần sau của khóa luận này

- Mô phỏng tự nhiên là mô đun mở rộng các thành phần của Quản lý khung cảnh để mô phỏng các yếu tố tự nhiên cần có trong game như nước, địa hình,

lửa, khói… Mô đun này được trình bày chi tiết trong khóa luận “Xây dựng Game

Engine đa nền tảng – Mô phỏng tự nhiên” - Trần Thái Dương

- Chuyển động của đối tượng là mô đun mở rộng các thành phần của Quản lý hung cảnh, thực hiện quá trình nội suy trong các mô hình chuyển động (thường

là các nhân vật trong game) thông qua hai kĩ thuật thông dụng là keyframe và

skinning Mô đun này được trình bày chi tiết trong khóa luận “Xây dựng Game

Engine đa nền tảng – Quản lý tài nguyền và chuyển động nhân vật” - Hoàng

Tuấn Hưng

1.2.2.4 Các thành phần còn lại

Phát hiện va chạm và Tính toán vật lý là thành phần tính toán mô phỏng vật lí,

phát hiện va chạm giữa các vật thể và phản hồi

Network là thành phần thực hiện việc truyền thông qua mạng TCP/IP

Trí thông minh nhân tạo là thành phần xử lí các công việc cần trí thông minh

nhân tạo như dò đường, xử lí tình huống…

Âm thanh là thành phần xử lí âm thanh

Các thành phần này chưa được triển khai nên chúng tôi không đề cập chi tiết trong tài liệu này

Trang 19

9

Chương 2: CƠ SỞ LÝ THUYẾT

2.1 Ánh sáng trong đồ họa máy tính

Đồ họa 3D ngoài việc sử dụng các thuật toán giống với đồ họa 2D như: đồ họa vectơ trong mô hình khung dây (wire frame model) và đồ họa mành (raster graphics) trong giai đoạn hiển thị cuối cùng Bên cạnh đó, đồ họa 3D còn thực hiện chiếu sáng bằng các mô hình tạo bóng, dựa vào các thông tin về nguồn sáng và nguyên liệu cấu tạo nên bề mặt đối tượng, để tính toán màu sắc của đối tượng trong khung cảnh; tạo ra hình ảnh gần với thực tế hơn (khoảng cách xa gần giữa các đối tượng, vật liệu tạo nên đối tượng…)

Hình 6: Tác động của Ánh sáng trong đồ họa 3D

Trang 20

Hình 8: Vẽ vật thể với thành phần Diffuse

Thành phần Specular

Thành phần ánh sáng này cũng đến từ một nguồn sáng cụ thể, nhưng khác với thành phần diffuse là nó phản xạ theo một hướng theo đúng định luật phản xạ gương

Trang 21

Hình 10: Kết quả của một số mô hình tạo bóng

Trang 22

12

Bên cạnh đó, việc triển khai mô hình tạo bóng dựa vào vertex hay fragment (hay pixel) cũng tạo ra kết quả khác nhau Với cùng một vật thể, cùng một mô hình tạo bóng, nhưng mô hình này triển khai theo chương trình pixel thì cho kết quả tốt hơn Các triển khai của OpenGL đều triển khai mô hình ánh sáng Phong, và thực thi trên chương trình vertex

Hình 11: Kết quả của cùng một mô hình ánh sáng trên Vertex và Pixel

2.2 Đổ bóng

2.2.1 Bóng của đối tượng trong khung cảnh

Các đối tượng trong khung cảnh 3D, ngoài sự khác nhau về màu sắc của các bề mặt so với nguồn sáng, còn có các vùng tối mà ánh sáng không chiếu đến được Vùng tối này gọi là bóng của vật thể

Quá trình chiếu sáng dựa vào thực thi của OpenGL không tạo ra bóng, nên quá trình vẽ bóng của vật thể được tính toán như một đối tượng độc lập dựa vào thông tin về vị trí, cấu trúc (các đỉnh, cạnh và mặt của vật thể tạo bóng)

Trang 23

2.3 Đối tượng có bề mặt phức tạp

2.3.1 Đối tượng với mạng lưới nhiều đa giác

Các đối tượng trong đồ họa máy tính 3D được xấp xỉ theo các mô hình có mạng lưới (mesh) gồm nhiều đa Mức độ chi tiết của đối tượng các cao thì số lượng đa giác càng lớn Điều đó đồng nghĩa với chi phí thiết kế, lưu trữ và vẽ đối tượng tăng

Về cơ bản, các chi tiết khác nhau chỉ được nhận thấy khi vật thể được chiếu sáng, do vector pháp tuyến của từng mặt đa giác khác nhau

2.3.2 Kỹ thuật sử dụng bản đồ vector pháp tuyến

Quá trình chiếu sáng bề mặt vật thể dựa vào bản đồ vector pháp tuyến được lưu trong một ảnh bitmap, hay còn gọi là kỹ thuật bump [7][10] Kỹ thuật này cho phép tạo ra:

Trang 24

- Công thức chuyển đổi từ vector pháp tuyến sang màu của pixel

- Công thức chuyển đổi ngược lại

2.3.3 Không gian Texture

Để triển khai kỹ thuật bump, bản đồ pháp tuyến thường được tạo ra và lưu theo dạng bản đồ độ cao (height map) – pháp tuyến tại một điểm được tính thông qua độ cao của các đỉnh xung quanh và bản đồ này được lưu trong không gian Texture [7]

normalComponent = 2 * (colorComponent - 0.5) colorComponent = 0.5 * normalComponent + 0.5

Trang 25

15

Do đó, cần phải chuyển đổi qua lại từ không gian Texture và không gian World

[9] Ma trận chuyển đổi TBN được định nghĩa như sau:

Với T = (Tx Ty Tz) là thành phần tiếp tuyến, B = (Bx By Bz) là thành phần phó pháp

tuyến, N = (Nx Ny Nz) là thành phần pháp tuyến

Tx Ty Tz TBN = Bx By Bz Nx Ny Nz

Ngày đăng: 22/11/2012, 14:42

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w