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

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


Tóm tắt Xem thử

- 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ển Game 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 đang xâ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ác chuyển động của đối tượng.
- 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ượng trong 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.
- Quản lý tài nguyên trong GEM.
- 244.3.Kỹ thuật tạo chuyển động nhân vật.
- 244.3.1.Kỹ thuật nội suy Key-Frame.
- Nội suy bậc 1.
- Nội suy bậc 2.
- 254.3.1.4.Triển khai kỹ thuật key-frame.
- 284.3.2.Kỹ thuật skinning.
- Kỹ thuật Skeletal Subspace Deformation.
- Kỹ thuật Animation Space.
- Kỹ thuật Multi-Weight Enveloping.
- Demo key-frame.
- Ví dụ key-frame.
- Thành phần trong một nhân vật.
- Hạn chế kỹ thuật SSD.
- Sử dụng kỹ thuật SSD.
- Sử dụng kỹ thuật SBS.
- Đằng sau những Game phát triển và nổi tiếng như vậy đều có một Game Engine.
- 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ột Game engine để phát triển tại Việt Nam.
- 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 Game bao giờ cũng phải có các đối tượng chuyển động, vì vậy cần có cách thứ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..
- 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.
- Game engine hỗ trợ việc xây dự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.
- 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ác nhau, hướng đến phân khúc phát triển game nhập vai trực tuyến (MMO).
- 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.
- AnimatedMesh là một loại mesh có sẵn các chuyển động, để tạo ra được loại mesh này ta dùng hai kỹ thuật: key-frame và skinning.
- Lớp AnimatedMesh sẽ được thừa kế từ 2 lớp Key-frame và skinning.
- Để có thể tương tác được với các mesh có sẵn chuyển động này thì ta sẽ phải quản lí các thông tin sau.
- interpolate(factor): hàm tính nội suy theo factor, hàm này sẽ gọi các phương thức nội suy ở lớp Key-frame và skinning để lấy ra các đỉnh, normal.
- Chương 4.CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG 4.1.Giới thiệu Trong lịch sử phát triển game từ trước đến nay thì một phần hết sức quan trọng làm nên thành công của game đó là chuyển động của các nhân vật trong game.
- Tuy những game nhỏ như vậy nhưng các nhân vật trong game cũng đã bắt đầu có chuyển động.
- Chẳng hạn như game Mario hay Ninja các nhân vật cũng đã có các chuyển động như đi, chạy, đấm, đá.
- Tuy những chuyển động đó còn rất thô sơ nhưng đã đánh dấu những bước phát triển của game.
- Đáp ứng theo sự phát triển đó thì các hiệu ứng trong game ngày nay cũng rất cao cấp, các chuyển động của nhân vật cũng phong phú và uyển chuyển hơn rất nhiều.
- Game ngày càng hướng tới mục đích tạo ra những không gian gần gũi và giống thật nhất, các cử chỉ, chuyển động của nhân vật trong game cũng ngày càng giống người hơn.
- Vì vậy để tạo ra những chuyển động cho nhân vật thì những người thiết kế nhân vật cũng như những người lập trình viên đã phải rất nỗ lực để đem lại cho người chơi những trải nghiệm thú vị nhất.
- Các game được sử dụng kỹ thuật animation sẽ đem lại hiệu quả cao hơn về hình ảnh, giúp hình ảnh di chuyển, chuyển động một cách uyển chuyển, mượt mà, tạo sức hấp dẫn cho các hoạt cảnh [3].
- Ngày nay với những máy móc, công cụ hiện đại thì các nhân vật trong game được thiết kế ngày càng giống người hơn, và các kỹ thuật để tạo ra chuyển động cho nhân vật ngày càng được cải tiển và phát triển.
- Kỹ thuật chính để tạo ra animation có hai kỹ thuật là nội suy Key-Frame và Skinning.
- 4.3.Kỹ thuật tạo chuyển động nhân vật.
- 4.3.1.Kỹ thuật nội suy Key-Frame 4.3.1.1.
- Kỹ thuật nội suy Key-frame là một kĩ thuật rất cổ điển và hữu dụng cho việc tạo hoạt cảnh.
- Khi f=1 tức là chuyển động kết thúc tại trạng thái B (frameB).
- Nội suy bậc 1 có ưu điểm đối với các hoạt cảnh diễn ra có nhiều trạng thái thay đổi và tốc độ chuyển động nhanh.
- 4.3.1.4.Triển khai kỹ thuật key-frame Khi xây dựng một game nào đó thì bao giờ cũng có sự kết hợp chặt chẽ giữa deginer (người thiết kế) và programer (người lập trình).
- Trong kỹ thuật key-frame mỗi đối tượng (nhân vật) ta sẽ phải biết được các thông tin sau.
- Mỗi đối tượng (nhân vật) sẽ có các loại animation như: STAND, RUN, JUMP, FLIP, WAVE… Thông tin về các loại animation này sẽ gồm có key-frame bắt đầu và key-frame kết thúc.
- Trong một loại animation nào đó thì sẽ có các key-frame, số lượng key-frame cho một loại animation là khác nhau (phụ thuộc vào người thiết kế).
- Mô hình lớp của các đối tượng sử dụng key-frame:.
- vertexArray: mảng chứa tất cả các đỉnh của tất cả các key-frame (các đỉnh sẽ được đặt liên tiếp nhau trong mảng hết key-frame này đến key-frame khác).
- num_frame: số lượng key-frame.
- num_xyz: số lượng đỉnh trong một key-frame Các phương thức:.
- Muốn cho nhân vật chuyển động nhanh lên thì ta giảm duration đi và tăng duration chuyển động sẽ chậm lại..
- phương thức này sẽ tính toán nội suy ra các frame, dựa vào thời gian chạy và số lượng key-frame cuả loại animation mà nó sẽ quyết định chuyển đến key-frame tiếp theo hay sẽ tính nội suy ra các frame..
- 4.3.2.Kỹ thuật skinning 4.3.2.1.Giới thiệu.
- Kỹ thuật skinning được phát triển dựa trên kỹ thuật nội suy key-frame và dựa trên cấu tạo của con người, cấu tạo của các con vật.
- Với kỹ thuật nội suy key-frame để tạo ra animation thì ta sẽ trộn các frame với nhau, tuy nhiên kỹ thuật này sẽ làm tốn tài nguyên của chúng ta hơn.
- Còn kỹ thuật Skinning để tạo ra được animation thì ta sẽ dùng khung xương (skeleton) và các khớp nối điều khiển chuyển động của nhân vật.
- Ngày nay kỹ thuật Skinning được sử dụng rất phổ biến, hầu hết các game đều sử dụng kỹ thuật này bởi tính hữu ích của nó.
- Những nhân vật chuyển động bằng khớp xương là thành phần cơ bản trong ngành đồ họa máy tính và các ứng dụng tương tác.
- Kỹ thuật đắp vỏ bề ngoài của nhân vật (skin) bằng việc sử dụng trọng số của các đỉnh gắn lên một khung xương, hoặc việc tính nội suy ra các mô hình, hình dạng có sẵn là những kỹ thuật rất phổ biến trong games hoặc các ứng dụng animation khác.
- Chuyển động bằng khung xương là một kỹ thuật rất phổ biến trong việc tạo ra các cử động, động tác cho nhân vật.
- Kỹ thuật này sử dụng một hệ thống các khớp nối (joint) để liên kết các khúc xương (bone) và điều khiển các chuyển động, trong quá trình chuyển động các khớp nối này sẽ biến đổi (transformation) hoặc xoay (rotate) các đỉnh của mesh, và một đỉnh có thể bị điều khiển bởi một số khớp nối (từ 2 đến 4), chẳng hạn như trên một điểm nào đó thuộc bàn tay sẽ bị tác động bởi khớp của cổ tay và khớp của ngón tay.
- Quá trình đắp các đỉnh của mesh vào khung xương được gọi là skinning, có ba kỹ thuật skinning phổ biến là.
- Kỹ thuật Skeletal Subspace Deformation Skeletal Subspace Deformation (SSD) là một kỹ thuật đơn giản và phổ biến nhất để tính toán sự thay đổi hình dáng theo khung xương của skin .
- Theo kỹ thuật SSD thì không thực hiện được với những nhân vật được thiết kế khung xương có các khớp nối theo kiểu xoay quanh trục.
- Một phương pháp đó là tập hợp lại các dữ liệu đúng của các kỹ thuật nội suy khác mà phổ biến để sửa lỗi cho những vị trí đỉnh sai của SSD.
- Lỗi của mỗi đỉnh sẽ được tính lại theo các mesh ví dụ đó sau đó ghép vào mesh được tạo ra bằng kỹ thuật SSD, càng sử dụng nhiều mesh ví dụ thì sẽ đem lại độ chính xác càng cao, tuy nhiên sẽ tốn tài nguyên để lưu trữ .
- Một phương pháp khác là sử dụng kỹ thuật Spherical Blend Skinning (SBS) [7,11]..
- Sử dụng kỹ thuật SSD Hình 24.
- Kỹ thuật Animation Space Animation Space (AS) [13] cung cấp một cách mềm dẻo hơn SSD bằng việc chỉ thay đổi các vị trí còn lại của các đỉnh.
- Kỹ thuật Multi-Weight Enveloping (MWE) cũng thay đổi trọng số từ công thức (1).
- Chiều chuyển động của bone thì liên quan đến model vì vậy có thể giới hạn trong một số trường hợp cụ thể..
- 4.3.2.5.Triển khai skinning Để triển khai kỹ thuật skinning, đối với một mesh ta sẽ phải quản lí các thông tin sau.
- Như vậy theo cách triển khai của kỹ thuật skinning đã giảm được rất nhiều tài nguyên cho việc lưu trữ các nhân vật.
- Ở kỹ thuật Key-frame ta phải lưu trữ rất nhiều key-frame, mỗi key-frame tương ứng với mesh trong skinning.
- Nhân vật càng nhiều chuyển động thì số lượng key-frame càng tăng lên làm tốn rất nhiều tài nguyên.
- Với kỹ thuật skinning ta chỉ phải lưu một mesh điển hình và khung xương của nó.
- Các mesh khác sẽ được tính toán trong quá trình chuyển động dựa vào khung xương, các đỉnh của mesh sẽ chuyển động thay đổi theo khung xương..
- Để minh họa cho các cơ sở lý thuyết ở trên, khóa luận sẽ trình bày demo cho hai kỹ thuật tạo chuyển động cho nhân vật.
- Như đã trình bày trong phần triển khai, để quản lí được đối tượng có các chuyển động, ta sẽ phải quản lí tất cả các key-frame.
- Mỗi key-frame sẽ có các thông tin về: vị trí các đỉnh, véc tơ normal, textcoord.
- Và trong tất cả các key-frame số đỉnh, véc tơ normal, textcoord là như nhau, chỉ khác nhau về vị trí.
- Hiện tại hỗ trợ loại file chứa các đối tượng có chuyển động ở dạng MD2.
- Key-frame bắt đầu · Key-frame kết thúc · Số lượng fps cho 1s (số lượng khung hình).
- Từ bảng trên ta sẽ xác định được vị trí key-frame bắt đầu và vị trí key-frame kết thúc của loại animation đó.
- Như vậy với cách tính nội suy như trên kỹ thuật key-frame được triển khai..
- Để có thể tạo ra được animation bằng kỹ thuật skinning thì thông tin về model sẽ được quản lí bằng khung xương và mesh phủ bên ngoài.
- Các tham số này sẽ thay đổi theo thời gian, mỗi thời điểm thì trọng số sẽ khác nhau, từ đó dùng các kỹ thuật nhân trọng số với ma trận biến đổi các bone kết hợp với mesh cho model đó tạo ra được các frame khác nhau tạo thành animation.
- Phần 3: Chương 5 khóa luận đã trình bày các kỹ thuật để tạo chuyển động cho các đối tượng trong game.
- và các hiệu ứng như: ánh sáng, đổ bóng, hiệu ứng mặt nước, lửa, chuyển động.
- Chúng tôi sẽ tiếp tục hoàn thiện và năng cấp tính năng cho hiệu ứng chuyển động cho các nhân vật của mình, để đem lại cho người chơi những trải nghiệm thú vị.
- và đưa các hiệu ứng chuyển động cho nhân vật vào cho GPU để tính toán, giảm tải cho CPU và GPU cũng chuyên dụng hơn cho việc tính toán đồ họa..
- Các loại chuyển động bank.
- Game Engine.
- Khớp nối các xương trong khung xương Key-frame