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

XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG

53 487 0
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 53
Dung lượng 2,07 MB

Nội dung

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 event, đọc ghi file, lấy thời gian hệ thống…

Trang 1

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

Hoàng Tuấn Hưng

XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA

CÁC ĐỐI TƯỢNG

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Ệ

Hoàng Tuấn Hưng

XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA

Trang 3

Lời cảm ơn

Tôi xin gửi lời cảm ơn tới các thầy cô trong khoa Công nghệ Thông tin trườngĐại học Công Nghệ, Đại học Quốc Gia Hà Nội, đặc biệt là các thầy cô ở Bộ môn Côngnghệ Phần mềm đã giúp đỡ tôi trưởng thành trong những năm học tập và rèn luyện ởmôi trường đại học

Xin chân thành cảm ơn thầy Nguyễn Việt Hà, thầy Vũ Quang Dũng và phòng thínghiệm TOSHIBA-COLTECH đã tạo điều kiện cho tôi tìm hiểu, nghiên cứu và họchỏi những kinh nghiệm trong quá trình nghiên cứu và làm khoá luận

Tôi xin gửi lời cảm ơn tới các bạn trong lớp K50CD, K50CNPM đã ủng hộ,khuyến khích tôi trong suốt quá trình học tập tại trường

Và lời cuối cùng, tôi xin bày tỏ lòng chân thành và biết ơn vô hạn tới cha mẹ, vàngười thân, những người luôn ở bên cạnh tôi những lúc tôi khó khăn nhất, giúp tôivượt qua khó khăn trong học tập cũng như trong cuộc sống

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

Sinh viên

Hoàng Tuấn Hưng

Trang 4

TÓM TẮT

Ngày nay, ngành công nghiệp Game đang trên đà phát triển nhanh chóng songsong với việc phát triển phần cứng Game engine sẽ là một công cụ hữu ích cho việcphát triển Game, nếu như các nhà phát triển mỗi khi bắt tay vào làm một Game nào đó

từ đầu thì sẽ rất vất vả và mất nhiều công sức Với một Game engine thì công việc đótrở nên đơn giản và nhanh hơn nhiều, nó sẽ cung cấp các API cho người phát triểnGame có thể sử dụng và tạo ra những hiệu ứng một cách nhanh chóng

Khóa luận sẽ trình bày tổng quan kiến trúc về Game engine mà chúng tôi đangxây dựng và đi chi tiết vào hai thành phần là quản lí tài nguyên trong Game và cácchuyển động của đối tượng

Phần đầu sẽ giới thiệu một cách tổng quan nhất về hệ thống, các thành phần sẽ cótrong Game engine, và thiết kế cho các thành phần đó

Phần thứ hai khóa luận dành để giới thiệu về các tài nguyên sẽ có trong Gameengine, tầm quan trọng của việc quản lí tài nguyên cho một hệ thống Đặc biệt khóaluận sẽ trình bày cách tổ chức và quản lí tài nguyên một cách hiệu quả nhất

Phần thứ ba của khóa luận sẽ giới thiệu về các chuyển động của các đối tượngtrong Game, các kỹ thuật để có thể tạo ra được các loại chuyển động cho đối tượng vàcách triển khai các kỹ thuật vào trong Game engine

Phần cuối cùng sẽ là tổng kết những kết quả đã đạt được của khóa luận, nhữngvấn đề còn tồn tại và hướng phát triển tiếp theo của đề tài

Trang 5

MỤC LỤC

MỞ ĐẦU 1

Chương 1.ĐẶT VẤN ĐỀ 3

1.1.Bối cảnh nghiên cứu 3

1.2.Mục tiêu 3

1.3.Giới thiệu chung 4

Chương 2.KIẾN TRÚC TỔNG THỂ 6

2.1.Các dữ liệu cơ bản 7

2.2.Giao tiếp với hệ điều hành 8

2.3.Render Engine 9

2.3.1.Khái quát về Render Engine 9

2.3.2.Kiến trúc của Render Engine 10

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

Chương 3.QUẢN LÝ TÀI NGUYÊN 12

3.1.Giới thiệu 12

3.2 Quản lý tài nguyên trong GEM 12

3.3 Liên kết giữa các thành phần 14

3.4 Các thành phần trong Resource Manager 15

3.5 Biểu đồ lớp 16

3.5.1.Quản lý Mesh 16

3.5.2.Quản lý Texture 17

3.5.3.Quản lý Effect 19

3.5.4.Quản lý AnimatedMesh 20

3.5.5.Quản lý Material 21

Chương 4.CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG 23

4.1.Giới thiệu 23

4.2.Khái quát về animation 23

4.3.Kỹ thuật tạo chuyển động nhân vật 24

4.3.1.Kỹ thuật nội suy Key-Frame 24

4.3.1.1 Giới thiệu 24

4.3.1.2 Nội suy bậc 1 25

4.3.1.3 Nội suy bậc 2 25

4.3.1.4.Triển khai kỹ thuật key-frame 25

4.3.2.Kỹ thuật skinning 28

4.3.2.1.Giới thiệu 28

4.3.2.2 Kỹ thuật Skeletal Subspace Deformation 29

Trang 6

4.3.2.4 Kỹ thuật Multi-Weight Enveloping 32

4.3.2.5.Triển khai skinning 33

Chương 5.THỰC NGHIỆM 35

5.1 Demo key-frame 35

5.2 Demo Skinning 38

Chương 6.KẾT LUẬN 39

6.1.Kết quả đạt được 39

6.2.Định hướng tương lai 39

PHỤ LỤC 40

TÀI LIỆU THAM KHẢO 44

Trang 7

BẢNG CÁC CHỮ VIẾT TẮT

Trang 8

DANH MỤC CÁC HÌNH VẼ BẢNG BIỂU

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

Hình 2 Kiến trúc tổng thể 6

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

Hình 4 Quá trình điều phối event 9

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

Hình 6 Biểu đồ gói của Render Engine 10

Hình 7 Mô hình quan hệ với các thành phần khác 12

Hình 8.Ví dụ Mesh Bank 13

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

Hình 10 Các thành phần trong Resource manager 15

Hình 11 Biểu đồ lớp Mesh và MeshBank 16

Hình 12 Biểu đồ lớp Texture và TextureBank 17

Hình 13 Biểu đồ lớp Effect và EffectBank 19

Hình 14 Biểu đồ lớp AnimatedMesh và AnimatedMeshBank 20

Hình 15 Biểu đồ lớp Material 21

Hình 16 Ví dụ key-frame 24

Hình 17 Nội suy bậc 1 và bậc 2 25

Hình 18 Mô hình tổ chức các loại animation 26

Hình 19 Biểu đồ lớp KeyFrame 27

Hình 20.Ví dụ Skinning 28

Hình 21 Thành phần trong một nhân vật 29

Hình 22 Hạn chế kỹ thuật SSD 30

Hình 23 Sử dụng kỹ thuật SSD 31

Hình 24 Sử dụng kỹ thuật SBS 31

Hình 25 Sơ đồ chuyển trục tọa độ 32

Hình 26 Mô hình tổ chức khung xương 34

Hình 27 Demo key-frame 37

Hình 28 Demo Skinning 38

Trang 10

MỞ ĐẦU

Trong thời đại công nghệ thông tin như hiện nay, sản phẩm công nghệ ngày càngchịu sự đánh giá khắt khe hơn từ phía những người dùng, đặc biệt là về sản phẩmGame được nhận rất nhiều sự đánh giá từ phía các game thủ, hay chỉ là những ngườichơi bình thường Ngành công nghiệp game hiện nay có thể nói là bùng nổ, với tốc độphát triển đến chóng mặt, rất nhiều những game hay và hấp dẫn đã được ra đời trongthời gian qua Đằng sau những Game phát triển và nổi tiếng như vậy đều có một GameEngine Game engine là một công cụ hỗ trợ, một middleware giúp người phát triển viếtgame một cách nhanh chóng, đơn giản hơ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 game từ một game engine Tại Việt Nam,ngành công nghiệp Game mới chỉ đang phát triển đa số vẫn là phát hành Game là chủyếu, còn việc xây dựng một Game Engine vẫn gần như chưa có Đây là một lĩnh vựctiềm năng, hứa hẹn sẽ phát triển nhanh ở Việt Nam trong thời gian sắp tới

Từ những xu hướng phát triển trên, khóa luận tập trung nghiên cứu xây dựng mộtGame engine để phát triển tại Việt Nam Hiện nay những Game engine nổi tiếng cũngkhá nhiều, tuy nhiên giá thành một Game engine như vậy không phải là nhỏ, vì vậynhóm phát triển muốn xây dựng một Game engine phục vụ cho những người đam mê

về làm Game nhưng không đủ tài chính để có thể mua được một Game engine thươngmại

Khóa luận sẽ tập trung đi sâu vào hai thành phần trong Game engine đó là: quản

lí tài nguyên và các chuyển động của đối tượng

Trong các phần mềm, việc quản lí tài nguyên luôn được xem xét và cân nhắc cẩnthận để làm sao có thể quản lí một cách hiệu quả nhất, đặc biệt trong Game thì vấn đềnày càng cấp thiết hơn bao giờ hết Một Game muốn được phát triển sẽ phải quản lí tàinguyên tốt, hạn chế tới mức tối đa sử dụng tài nguyên của máy tính người chơi vàcũng để tăng tốc cho chương trình Cần có cơ chế cấp phát và giải phóng bộ nhớ mộtcách hiệu quả

Trong Game bao giờ cũng phải có các đối tượng chuyển động, vì vậy cần có cáchthức phương pháp để quản lí và tạo ra được các nhân vật có chuyển động Khóa luận

sẽ tập trung vào nghiên cứu các kỹ thuật để tạo ra các chuyển động cho nhân vật đểcho các chuyển động ngày càng giống với chuyển động của con người, tạo được hiệuứng tốt cho Game

Trang 11

Ngoài phần mở đầu kết cấu khóa luận bao gồm 6 chương:

Chương 1, 2: Đặt vấn đề và tổng quan về hệ thống Game engine của cả

nhóm

Chương 3: Giới thiệu về quản lí tài nguyên và cách tổ chức tài nguyên

trong hệ thống

Chương 4: Giới thiệu về chuyển động cho các đối tượng, đi vào các kỹ

thuật tạo chuyển động

Chương 5: Thực nghiệm các kỹ thuật được nêu ở chương 4

Chương 6: Kết luận, thực hiện đánh giá kết quả đã đạt được, hướng phát

triển sắp tới

Trang 12

Chương 1.ĐẶT VẤN ĐỀ

1.1.Bối cảnh nghiên cứu

Ngành công nghiệp phát triển game trên thế giới đang phát triển như vũ bão.Cách đây 20 năm, game rất đơn giản và chỉ cần một người hoặc một nhóm nhỏ ngườiphát triển nhưng ngày nay, các game hiện đại với đồ họa và khả năng tương tác ấntượng thường được phát triển bởi một đội ngũ đông đảo người thiết kế game, lập trìnhviên, nghệ sĩ… trong thời gian ròng rã từ một đến ba năm Chính việc game ngày càngtrở nên phức tạp như vậy nên hiện nay, các game thương mại không còn phát triển từnguyên thủy nữa mà được phát triển lên từ game engine Game engine hỗ trợ việc xâydựng game một cách nhanh chóng, đơn giản hơn đồng thời cung cấp khả năng tái sửdụng code cao do có thể phát triển nhiều game từ một game engine

Ở Việt Nam, Game online mới chỉ thực sự thâm nhập vào thị trường cách đây 6năm nhưng chỉ trong khoảng thời gian ít ỏi đó, chúng ta đã có một số lượng nhà pháthành game lên tới con số hàng chục, số game được phát hành cũng tương ứng với sốlượng đó Nhưng theo như chúng tôi được biết, gần như tất cả các game online đangđược phát hành ở Việt Nam là được 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ố game nhỏ chơi trên web như đánh bài, đánh cờ ) Một câuhỏi mà có lẽ tất cả những người chơi game đều trăn trở là “bao giờ mới được chơigame Việt Nam?”

Chúng tôi chọn đề tài này làm khóa luận tốt nghiệp không phải với một thamvọng quá lớn, chỉ là muốn đi những bước chân chập chững đầu tiên vào thế giới pháttriể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 đáptrăn trở của cộng đồng người chơi game Việt Nam

1.2.Mục tiêu

Xây dựng một Game Engine đa nền có thể chạy trên nhiều hệ điều hành khácnhau, hướng đến phân khúc phát triển game nhập vai trực tuyến (MMO) Game

Engine này được đặt tên là GEM Đây là mục tiêu dài hạn, còn hiện tại, do thời gian

làm luận văn chỉ khoảng 5 tháng nên nhóm chúng tôi chỉ tập trung hoàn thiện thànhphần Render Engine trong Game Engine ( Xem chi tiết ở chương 2)

Trang 13

1.3.Giới thiệu chung

Như đã giới thiệu ở trên, Game Engine là một lớp trung gian giữa game và nềntảng bên dưới, các thư viện lập trình cấp thấp GEM là một game engine nên dĩ nhiên

nó cũng tuân thủ theo nguyên tắc này

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

Đặc điểm đầu tiên của GEM là khả năng chạy đa nền Để đạt được điều đó, GEM

sử dụng các bản build trên các nền tảng khác nhau (chứ không phải sử dụng thôngdịch) Các đoạn mã nguồn phụ thuộc nền tảng sẽ được phân chia bằng việc sử dụngcác cờ tiền biên dịch, hạn chế tối đa việc sử dụng các lớp abstract – vì việc này sẽ làmgiảm hiệu suất chương trình đáng kể [10] Cũng vì lí đo chạy đa nền nên chúng tôi lựachọn OpenGL làm giao diện lập trình đồ họa 3D cấp thấp cho GEM, do chuẩnOpenGL là chuẩn mở và không bị phụ thuộc vào hệ điều hành

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úngtô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 Đa số cácGame Engine trên thế giới hiện nay đều được phát triển bằng ngôn ngữ C++

Chúng tôi thiết kế GEM nhắm đến phân khúc phát triển game nhập vai trựctuyến, nên khả năng tương thích với một phạm vi rộng cấu hình phần cứng là một điều

Trang 14

kiện quan trọ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 cấu hình tối thiểu dự kiến

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

Trang 15

Chương 2.KIẾN TRÚC TỔNG THỂ

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:

Hình 2 Kiến trúc tổng thể

Ghi chú: Do thời gian làm luận văn có hạn, chúng tôi mới chỉ hoàn thành những

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ươngtác với chúng

Trang 16

2.1.Cá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… các phép toán trên các kiểu dữ liệu đó cung cấp chothà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 2 nhóm chính:

- Các yếu tố trong không gian 3D:

chiều và tọa độ đồng nhất

theo 3 trục xyz, được mô tả bằng 2 điểm (xmin, ymin, zmin ), ( xmax, ymax, zmax)

Trang 17

 LineSequent, Line, Ray: đoạn thẳng, đường thẳng, tia.

giãn trong không gian 3 chiều

phóng bộ nhớ

2.2.Giao tiếp với hệ điều hà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 event, đọc ghi file, lấy thời gian hệ thống… Trong đó quantrọng nhất là quá trình điều phối event:

Trang 18

Hình 4 Quá trình điều phối event

GEM lấy event từ Message System của hệ điều hành, từ đó lấy các thông tin cầnthiết tạo ra 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ăngnhận và xử lý event

2.3.Render Engine

2.3.1.Khái quát về 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ầnbiế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ụng3D Graphic API, quá trình tạo các effect… mà chỉ cần dùng giao diện do RenderEngine cung cấp

Render Engine là thành phần duy nhất trong Game Engine giao tiếp với các thư

viện đồ họa cấp thấp ( cụ thể ở đây là openGL và Cg )

Trang 19

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

Render engine gồm các module sau:

Hình 6 Biểu đồ gói của Render Engine

Trang 20

- Graphic Driver là module duy nhất trực tiếp sử dụng 3D Graphic API

(openGL), cung cấp cho các module khác một giao diện đơn giản hơn để tương tác vớicard đồ họa

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

khung cảnh 3D như mesh, animated mesh, texture 2D, cubemap…Module này đượctrình bày chi tiết trong chương 3 của khóa luận này

- Quản lý khung cảnh là module 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 render toàn bộ khungcảnh đó tạo nên hình ảnh 2D tại vị trí nhìn Module này được trình bày chi tiết trongkhóa luận “Xây dựng Game Engine đa nền tảng – Quản lý khung cảnh” - Trương ĐứcPhương

- Hiệu ứng ánh sáng và vật liệu là module 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ật liệu, và đổ bóng Module 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 – Hiệu ứng ánhsáng và vật liệu” - Bùi Hoàng Khánh

- Mô phỏng tự nhiên là module 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… Module 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à module mở rộng các thành phần của Quản lý

khung 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à key-frame và skinning.Module này được trình bày chi tiết trong chương 4 của khóa luận này

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

Các thành phần Mạng, Trí tuệ nhân tạo, Tính toán vật lí, Âm thanh chưa được

triển khai nên chúng tôi không đề cập đến trong tài liệu này

Trang 21

Chương 3.QUẢN LÝ TÀI NGUYÊN

3.1.Giới thiệu

Trong tất cả các Game thì vấn đề được quan tâm đầu tiên chính là tài nguyên củagame Những người chơi khi quyết định cho mình một game nào đó thì họ sẽ phải xemxét tài nguyên trong máy họ còn bao nhiêu, và tài nguyên mà game sẽ tiêu tốn baonhiêu để có thể quản lý tài nguyên trong máy mình một cách hợp lý nhất Đó mới chỉđơn thuần là về phía người chơi, vấn đề quan trọng và nặng nhọc nhất lại thuộc về phíanhững người viết game Game dù có hay và hấp dẫn đến bao nhiêu đi chăng nữanhưng quản lý tài nguyên không tốt cũng rất khó để thành công, bởi những người chơigame không phải ai cũng sở hữu cho mình những bộ máy tính siêu mạnh, mà mục tiêunhắm đến ở đây là nhiều người có thể chơi được và làm sao tốc độ đạt được cũng là tốtnhất Vì vậy cần phải có một cơ chế quản lý tài nguyên thật hiệu quả và hợp lý Mộtgame engine thường có các tài nguyên cơ bản: các mesh (thông tin mô tả hình dạng vậtthể), các texture (thường là các hình ảnh 2D), các animated mesh (thông tin và các vậtthể có chuyển động, thường là các nhân vật), các material (vật liệu phủ lên bề mặt cácvật thể), các effect

3.2 Quản lý tài nguyên trong GEM

Hình 7 Mô hình quan hệ với các thành phần khác

GEM sẽ có một module để quản lý các tài nguyên và sẽ được quản lý một cách

Trang 22

đã được nhập vào Như vậy thì sẽ giảm được tối đa tài nguyên, bởi vì ta chỉ lưu duynhất một phiên bản của mỗi đối tượng, còn các đối tượng giống nhau sẽ tham chiếu tớinó.

Với phương pháp quản lý như vậy thì một vấn đề đặt ra là: làm thế nào để xácđịnh được đối tượng cần (có thể) được giải phóng Để giải quyết vấn đề này thì vớimỗi một bản dữ liệu (mesh, texture, …) chúng ta sẽ có biến đếm số lần nó được thamchiếu, khi biến đếm từ 1 trở về 0 tức là nó không còn được tham chiếu nữa, thì dữ liệu

đó có thể được giải phóng

Ví dụ:

Hình 8.Ví dụ Mesh Bank

Trang 23

3.3 Liên kết giữa các thành phần

Hình 9 Mô hình liên kết với các thành phần khác

Module quản lí tài nguyên là một thành phần cốt lõi trong GEM, tất cả cácmodule khác như: quản lí sceneGraph, ánh sáng và đổ bóng, hiệu ứng tự nhiên đềuphải sử dụng đến các thành phần trong module quản lí tài nguyên Module này sẽ cungcấp các tài nguyên như: Mesh, Material, Texture, AnimatedMesh, Effect cho cácsceneNode của những module khác nhau sử dụng chúng Các module khác sẽ khôngphải quan tâm đến việc quản lí tài nguyên ra sao, mà chỉ việc khai báo và sử dụng cáctài nguyên đó Còn việc quản lí: xóa, cấp phát bộ nhớ, tham chiếu, … là việc của quản

lí tài nguyên

Trang 24

3.4 Các thành phần trong Resource Manager

Hình 10 Các thành phần trong Resource manager

Trong module quản lí tài nguyên sẽ có các thành phần: các mesh (thông tin mô tảhình dạng vật thể), các texture (thường là các hình ảnh 2D), các animated mesh (thôngtin và các vật thể có chuyển động, thường là các nhân vật), các Material (vật liệu phủlên bề mặt các vật thể), các effect để tương tác với GPU MeshBank dùng để lưu trữtập trung tất cả các mesh, tương tự như vậy có TextureBank, EffectBank,AnimatedMeshBank để lưu trữ các: Texture, Effect, AnimatedMesh Các lớpDlightEffect, ShadowEffect, BumpEffect, WaterEffect sẽ được thừa kế từ lớp Effect

để tạo ra các effect với chức năng khác nhau Lớp AnimatedMesh sẽ được thừa kế từhai lớp KeyFrame và Skinning

Trang 25

3.5 Biểu đồ lớp

3.5.1.Quản lý Mesh

Hình 11 Biểu đồ lớp Mesh và MeshBank

Để quản lí một mesh (các vật thể) ta sẽ cần lưu những thông tin quan trọng sau:

Các thuộc tính:

- vertexArray: chứa thông tin về các đỉnh của mesh

- normalArray: chứa thông tin về véc tơ normal

- texCoordArray: chứa thông tin về texcoordinate

- numVertices: số lượng đỉnh của mesh đó

- user: cho biết số lượng tham chiếu đang chiếu tới nó

Các phương thức:

lên (tăng user)

chiếu tới nó đi Khi nào user=0 thì hệ thống quản lí tài nguyên sẽ tự độngxóa mesh đó khỏi bộ nhớ

Trang 26

 Lớp MeshBank

Các thuộc tính:

- meshArray: lưu trữ một danh sách các mesh khi được nạp vào

Các phương thức:

- insertMesh(_mesh, k): thêm một _mesh vào vị trí k trong danh sách

- appendMesh(_mesh): thêm _mesh vào cuối danh sách các mesh hiện có

- deleteMesh(k): xóa một mesh ở vị trí k trong danh sách

- getMeshFromID(meshID): lấy ra một mesh ở vị trí meshID trong danh sách

- useMesh(meshID): gọi phương thức setUser() của phần tử có vị trí meshID

- dontUseMesh(meshID): gọi phương thức delUser() của phần tử có vị trí meshID

3.5.2.Quản lý Texture

Hình 12 Biểu đồ lớp Texture và TextureBank

Các thuộc tính:

- m_User: số lượng đối tượng đang sử dụng nó

- m_NativeGDID: là ID của texture được quản lí bởi card đồ họa

- m_Info: Thông tin về một texture

Ngày đăng: 25/04/2013, 10:41

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[6] A.Mohr and M. Gleicher. Deformation sensitive deformation. Technical Report 4/7/2003, University of Wisconsin, Madison, 2003 Khác
[7] BLOOMENTHAL, J. 2002. Medial-based vertex deformation Khác
[8] J. P. Lewis, M. Cordner, and N. Fong. Pose space deformation: a unified approach to shape interpolationand skeleton-driven deformation Khác
[9] Jonathan Kreuzer. Object Space Normal Mapping with Skeletal Animation Tutorial Khác
[10] Karel Driesen and Urs Hửlzle, The Direct Cost of Virtual Function Calls in C++, 1995 ACM Khác
[11] KAVAN, L., AND ˇZ ´ARA, J. 2003. Real-time skin deformation with bones blending Khác
[12] Khronos Group. OpenGL Specifcation Version 2.0 Khác
[13] Merry, P. Marais, and J. Gain. Animation space: A truly linear framework for character animation Khác
[14] Mohr, L. Tokheim, and M. Gleicher. Direct manipulation of interactive character skins Khác
[16] P. G. Kry, D. L. James, and D. K. Pai. Eigenskin: real time large deformation character skinning in hardware Khác
[17] P.-P. J. Sloan, C. F. Rose, III, and M. F. Cohen.Shape by example Khác
[18] Richard S. Wright, Michael Sweet. OpenGL Super Bible Khác
[19] X. C. Wang and C. Phillips. Multi-weight enveloping: least-squares approximation techniques for skin animation Khác

HÌNH ẢNH LIÊN QUAN

BẢNG CÁC CHỮ VIẾT TẮT - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
BẢNG CÁC CHỮ VIẾT TẮT (Trang 7)
BẢNG CÁC CHỮ VIẾT TẮT - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
BẢNG CÁC CHỮ VIẾT TẮT (Trang 7)
Hình 1. Kiến trúc phân tầng của GEM - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 1. Kiến trúc phân tầng của GEM (Trang 13)
Bảng cấu hình tối thiểu dự kiến - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Bảng c ấu hình tối thiểu dự kiến (Trang 14)
Bảng cấu hình tối thiểu dự kiến - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Bảng c ấu hình tối thiểu dự kiến (Trang 14)
Hình 2.Kiến trúc tổng thể - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 2. Kiến trúc tổng thể (Trang 15)
Hình 2. Kiến trúc tổng thể - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 2. Kiến trúc tổng thể (Trang 15)
Hình 3. Biểu đồ lớp của thành phần các kiểu dữ liệu cơ bản - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 3. Biểu đồ lớp của thành phần các kiểu dữ liệu cơ bản (Trang 16)
Hình 3. Biểu đồ lớp của thành phần các kiểu dữ liệu cơ bản - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 3. Biểu đồ lớp của thành phần các kiểu dữ liệu cơ bản (Trang 16)
Hình 4. Quá trình điều phối event - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 4. Quá trình điều phối event (Trang 18)
Hình 4. Quá trình điều phối event - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 4. Quá trình điều phối event (Trang 18)
Hình 6. Biểu đồ gói của Render Engine - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 6. Biểu đồ gói của Render Engine (Trang 19)
Hình 5. Kiến trúc phân tầng của Render Engine - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 5. Kiến trúc phân tầng của Render Engine (Trang 19)
Hình 6. Biểu đồ gói của Render Engine - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 6. Biểu đồ gói của Render Engine (Trang 19)
Hình 5. Kiến trúc phân tầng của Render Engine - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 5. Kiến trúc phân tầng của Render Engine (Trang 19)
Hình 7. Mô hình quan hệ với các thành phần khác - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 7. Mô hình quan hệ với các thành phần khác (Trang 21)
Hình 7. Mô hình quan hệ với các thành phần khác - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 7. Mô hình quan hệ với các thành phần khác (Trang 21)
Hình 8.Ví dụ MeshBank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 8. Ví dụ MeshBank (Trang 22)
Hình 8.Ví dụ Mesh Bank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 8. Ví dụ Mesh Bank (Trang 22)
Hình 9. Mô hình liên kết với các thành phần khác - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 9. Mô hình liên kết với các thành phần khác (Trang 23)
Hình 9. Mô hình liên kết với các thành phần khác - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 9. Mô hình liên kết với các thành phần khác (Trang 23)
Hình 10. Các thành phần trong Resource manager - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 10. Các thành phần trong Resource manager (Trang 24)
Hình 10. Các thành phần trong Resource manager - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 10. Các thành phần trong Resource manager (Trang 24)
Hình 11. Biểu đồ lớp Mesh và MeshBank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 11. Biểu đồ lớp Mesh và MeshBank (Trang 25)
Hình 11. Biểu đồ lớp Mesh và MeshBank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 11. Biểu đồ lớp Mesh và MeshBank (Trang 25)
Hình 12. Biểu đồ lớp Texture và TextureBank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 12. Biểu đồ lớp Texture và TextureBank (Trang 26)
Hình 13. Biểu đồ lớp Effect và EffectBank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 13. Biểu đồ lớp Effect và EffectBank (Trang 28)
Hình 13. Biểu đồ lớp Effect và EffectBank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 13. Biểu đồ lớp Effect và EffectBank (Trang 28)
Hình 14. Biểu đồ lớp AnimatedMesh và AnimatedMeshBank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 14. Biểu đồ lớp AnimatedMesh và AnimatedMeshBank (Trang 29)
Hình 14. Biểu đồ lớp AnimatedMesh và AnimatedMeshBank - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 14. Biểu đồ lớp AnimatedMesh và AnimatedMeshBank (Trang 29)
Hình 15. Biểu đồ lớp Material - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 15. Biểu đồ lớp Material (Trang 30)
Hình 15. Biểu đồ lớp Material - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 15. Biểu đồ lớp Material (Trang 30)
Hình 16. Ví dụ key-frame - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 16. Ví dụ key-frame (Trang 33)
Hình 16. Ví dụ key-frame - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 16. Ví dụ key-frame (Trang 33)
Hình 17. Nội suy bậc 1 và bậc 2 - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 17. Nội suy bậc 1 và bậc 2 (Trang 34)
Hình 17. Nội suy bậc 1 và bậc 2 - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 17. Nội suy bậc 1 và bậc 2 (Trang 34)
Hình 18. Mô hình tổ chức các loại animation - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 18. Mô hình tổ chức các loại animation (Trang 35)
Hình 18. Mô hình tổ chức các loại animation - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 18. Mô hình tổ chức các loại animation (Trang 35)
Hình 19. Biểu đồ lớp KeyFrame - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 19. Biểu đồ lớp KeyFrame (Trang 36)
Hình 20.Ví dụ Skinning - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 20. Ví dụ Skinning (Trang 37)
Hình 20.Ví dụ Skinning - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 20. Ví dụ Skinning (Trang 37)
Hình 21. Thành phần trong một nhân vật - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 21. Thành phần trong một nhân vật (Trang 38)
Hình 22. Hạn chế kỹ thuật SSD - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 22. Hạn chế kỹ thuật SSD (Trang 39)
Hình 24. Sử dụng kỹ thuật SBS - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 24. Sử dụng kỹ thuật SBS (Trang 40)
Hình 23. Sử dụng kỹ thuật SSD - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 23. Sử dụng kỹ thuật SSD (Trang 40)
4.3.2.4. Kỹ thuật Multi-Weight Enveloping - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
4.3.2.4. Kỹ thuật Multi-Weight Enveloping (Trang 41)
Hình 25. Sơ đồ chuyển trục tọa độ - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 25. Sơ đồ chuyển trục tọa độ (Trang 41)
Hình 25. Sơ đồ chuyển trục tọa độ - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 25. Sơ đồ chuyển trục tọa độ (Trang 41)
Hình 26. Mô hình tổ chức khung xương Các node có thể là: bone, joint. - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 26. Mô hình tổ chức khung xương Các node có thể là: bone, joint (Trang 43)
Hình 26. Mô hình tổ chức khung xương - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 26. Mô hình tổ chức khung xương (Trang 43)
- Số lượng fps cho 1s (số lượng khung hình) - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
l ượng fps cho 1s (số lượng khung hình) (Trang 44)
Hình 27. Demo key-frame - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 27. Demo key-frame (Trang 46)
Hình 28. Demo Skinning - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 28. Demo Skinning (Trang 47)
Hình 28. Demo Skinning - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Hình 28. Demo Skinning (Trang 47)
Key-frame Khung hình cơ sở để xây dựng animation - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
ey frame Khung hình cơ sở để xây dựng animation (Trang 49)
A. Bảng thuật ngữ - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Bảng thu ật ngữ (Trang 49)
B. Bảng biểu tượng - XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG  QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG
Bảng bi ểu tượng (Trang 51)

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