« Home « Kết quả tìm kiếm

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


Tóm tắt Xem thử

- 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..
- Thành phần Cấu trúc dữ liệu cơ bản.
- Thành phần Giao tiếp với Hệ điều hành.
- Thành phần Render Engine.
- Các thành phần còn lại.
- Các thành phần của ánh sáng.
- Bóng của đối tượng trong khung cảnh.
- Các thành phần trong mô đun.
- Hình 3: Biểu đồ lớp của thành phần Các kiểu dữ liệu cơ bản.
- Hình 8: Vẽ vật thể với thành phần Diffuse.
- Hình 9: Vẽ vật thể với thành phần Specular.
- Hình 14: Mô hình liên kết với các thành phần khác bên ngoài.
- Hình 15: Các thành phần của mô đun Hiệu ứng ánh sáng và vật liệu.
- Hình 19: Sơ đồ “bật” nguồn sáng.
- Đâ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.
- 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..
- Đó 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..
- GEM là được chia thành nhiều thành phần để tiện cho việc phát triển và bảo trì..
- Cụ thể GEM gồm các thành phần như sau:.
- 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..
- 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:.
- 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)..
- 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..
- Render Engine là thành phần cốt lõi của một Game Engine.
- Đâ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:.
- 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ô 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.
- 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.
- 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..
- 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.
- Mỗi nguồn sáng được chia làm ba thành phần sáng cơ bản [7][12]:.
- Thành phần Ambient.
- Thành phần ánh sáng bao quanh vật thể, và đến từ mọi hướng.
- Hình 7: Vẽ vật thể với áng sáng Ambient Thành phần Diffuse.
- Thành phần ánh sáng đến từ một nguồn sáng cụ thể, sau đó phản xạ tại bề mặt vật thể theo nhiều hướng.
- Màu sắc của vật thể được chiếu sáng bởi thành phần này phụ thuộc vào vị trí, hướng, màu sắc của nguồn sáng và độ phản xạ của vật thể..
- 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..
- Quá trình chiếu sáng ngoài phụ thuộc vào vị trí, hướng, màu sắc của nguồn sáng.
- Mô hình tạo bóng định nghĩa cách tính toán màu sắc dựa vào thông tin về nguồn sáng và đối tượng được chiếu sáng [7][12]..
- Các mô hình tạo bóng khác nhau, thì triển khai tính toán các thành phần ánh sáng khác nhau.
- tạo ra các hình ảnh khác nhau với cùng một thông tin đầu vào của nguồn sáng và đối tượng được chiếu sáng..
- và khoảng giá trị của mỗi thành phần nằm trong khoảng [-1,1]..
- Trong khi đó, mỗi pixel trên ảnh bitmap là một bộ gồm ba thành phần <r, g, b>.
- và khoảng giá trị của các thành phần trong khoảng [0, 1].
- Với T = (T x T y T z ) là thành phần tiếp tuyến, B = (B x B y B z ) là thành phần phó pháp tuyến, N = (N x N y N z ) là thành phần pháp tuyến..
- Các thành phần của mô đun được thiết kế để đảm bảo:.
- Để đảm bảo các yêu cầu đặt ra, mô đun chia các thành phần thành ba nhóm cơ bản:.
- Nhóm thứ nhất bao gồm các thành phần đóng vai trò là các nút trong cây đồ thị khung cảnh scenegraph như các lớp LightSceneNode, DLightSceneNode, BumpSceneNode, và SolidSceneNode được dẫn xuất từ lớp SceneNode.
- Bật nguồn sáng: thiết lập các thông số về nguồn sáng nh ư vị trí, hướng, vùng chiếu sáng và thuộc tính của các thành phần sáng..
- Nguồn sáng ở trong GEM là một đối tượng trừu tượng - chỉ lưu thông tin mà không hiển thị trực quan trong khung cảnh 3D.
- Vật liệu định nghĩa tính chất phản xạ ánh sáng của bề mặt vật thể, bao gồm các thành phần cấu thành sau: illum mô tả mô hình tạo bóng được sử dụng.
- lượt mô tả các tính chất phản xạ các thành phần ánh sáng đã nêu ở chương trước của bề mặt.
- Như đã giới thiệu, ngoài ba thành phần sáng cơ bản, nguồn sáng còn có những tính chất riêng đặc tả sự khác nhau giữa các nguồn sáng.
- Nguồn sáng có hướng song song (directional light): nguồn sáng này mô tả các nguồn sáng ở rất xa vật bị chiếu sáng, và có cường độ sáng gần như không đổi (ví dụ như mặt trời).
- Loại nguồn sáng này chỉ cần quan tâm đến hướng ánh sáng..
- Thiết lập vị trí, Cường độ, Màu sắc các thành phần sáng: Các bước này được thực hiện với tất cả các loại nguồn sáng..
- Nếu nguồn sáng là:.
- Nguồn sáng có góc giới hạn chiếu: Thiết lập vùng chiếu sáng..
- DLightSceneNode có thêm các thành phần parameter, dlight_effectID và using_IDs..
- Thành phần parameter là một đối tượng DLightParameter, các thành phần cấu thành nên đối tượng này tương ứng với các thành phần trong DLightSceneNode – các thông tin về nguồn sáng.
- Thành phần dlight_effectID là một tham chiếu định danh đến một đối DLightEffect – được quản lý bởi mô đun quản lý tài nguyên.
- Thành phần using_IDs chứa danh sách các định danh của các Effect và dẫn xuất của nó mà có đăng ký sử dụng hiệu ứng ánh sáng.
- Lớp này gồm các thành phần hLighti* là các tham số lưu thông tin của tất cả các nguồn sáng có trong hệ thống – với triển khai trong GEM là 10 nguồn sáng (0≤i≤10).
- Tính các thành phần sáng ambient, diffuse và specular dựa vào hướng nhìn, hướng chiếu sáng và điểm được chiếu sáng..
- Tính màu tại điểm P dựa vào các thành phần sáng và vật liệu tại điểm P..
- //tính vùng chiếu sáng //tính thành phần ambient.
- //tính thành phần diffuse.
- //tính thành phần specular float3 H = normalize(L + V);.
- Hình dưới đây mô tả quá trình bật nguồn sáng và vẽ đối tượng sử dụng hệ thống áng sáng động:.
- “Bật” nguồn sáng, DLighSceneNode cập nhật tham số về nguồn sáng cho các đối tượng trong có trong using_IDs..
- Thành phần cấu tạo nên lớp Shadow gồm shadowVolume và shadowColor.
- Thành phần shadowVolume lưu mạng lưới đa giác của vùng giới hạn đổ bóng (SV).
- Thành phần shadowColor định nghĩa màu của bóng..
- File GEMShadow.cgfx triển khai chương trình vertex shader thực hiện việc chuyển một đỉnh vIn(x, y, z, w) đến vô cực theo hướng từ ánh sáng đến đỉnh này nếu thành phần w của vIn bằng 0..
- Lớp BumpSceneNode có thêm các thành phần normalSampler là một Texture lưu bản đồ pháp tuyến, bump_effectID tham chiếu định danh đến một đối tượng BumpEffect, parameter là một đối tượng BumpParameter chứa tham số cập nhật cho BumpEffect (bản đồ pháp tuyến normalSampler, và texture của bề mặt textureSampler)..
- Chỉ tính thành phần pháp tuyến normal bằng phương thức calculateNormal.
- Còn thành phần phó pháp tuyến binormal được tính trên GPU, theo công thức binormal = crossProduct(normal, tangent) (tích có hướng của hai vector)..
- Như vậy, các thông số về nguồn sáng của đối tượng sẽ được cập nhật trong quá trình “bật”.
- nguồn sáng bằng lời gọi phương thức updateLightParameter.
- Trên GPU, triển khai tính toán để tọa hiệu ứng bump từ các tham số được truyền vào: hướng ánh sáng lightVec, hướng nhìn viewVec, tọa độ texture texCoord, thành phần pháp tuyến N và tiếp tuyến T của ma trận TBN, và bản đồ pháp tuyến gNormalSampler.
- Trước hết là tính thành phần phó pháp tuyến B.
- Tính thành phần pháp tuyến của ma trận TBN - Tính thành phần tiếp tuyến của ma trận TBN - Cập nhật tham số cho parameter.
- Số nguồn sáng 1 2 3 4 5.
- Tạo bóng cho các đối tượng trong khung cảnh 3D..
- Trong thời gian tới chúng tôi sẽ tiếp tục hoàn thiện hệ thống GEM theo hướng xây dựng các thành phần còn thiếu: âm thanh, vật lý và kiểm tra va chạm, và trí tuệ nhân tạo..
- Ambient Thành phần phản xạ ánh sáng đối với ánh sáng đến từ mọi hướng..
- Diffuse Thành phần phản xạ khuếch tán..
- Nguyên liệu gồm các thành phần màu ambient, diffuse, specular, độ bóng và màu nguyên thủy..
- Model Các mô hình đối tượng được dựng nên từ mạng lưới đa giác Shader Tính toán màu sắc bề mặt đối tượng hay còn gọi là tạo bóng Specular Thành phần phản xạ gương.