Khóa luận Nghiên cứu và xây dựng thử nghiệm 3D Engine - Phần 7
Có hai loại diễn hoạt chính của các đối tượng là diễn hoạt khung xương và diễn
hoạt nội suy. Diễn hoạt khung xương tức là các sựchuyển động dựa trên cấu trúc
khung xương và thực hiện diễn hoạt dựa vào các khung hình làm khoá. Diễn hoạt
nội suy là việc thực hiện diễn hoạt bằng phép nội suy giữa chuyển động ngay trước
và ngay sau nó. Trong các Game ngày nay hầu hết đềlưu các mô hình bằng cấu trúc
khung xương và kết hợp cảhai loại diễn hoạt đểtạo ra một chuyển động đẹp mắt.
à xây dựng lên một hệ thống đảm bảo được tốc độ, tính trong sáng dễ sử dụng, khả năng mở rộng cao, và cung cấp ra các chức năng nâng cao cho phép giải quyết được những tình huống diễn hoạt trong Game. Chương 6. Hệ thống vật lý (Physics System) - 102 - Chương 6 Hệ thống vật lý (Physics System) Giới thiệu hệ thống vật lý Các yếu tố cần xử lý trong hệ thống vật lý Engine vật lý NovodeX Sử dụng NovodeX Tóm tắt Chương 6. Hệ thống vật lý (Physics System) - 103 - 6.1. Giới thiệu hệ thống vật lý Hiện nay đòi hỏi của người chơi về chất lượng Game rất cao. Bên cạnh Game phải có hình ảnh đẹp, nội dung hay còn yêu cầu phải chân thực, gần với thực tế bên ngoài. Để cho Game mô phỏng được các tình huống xảy ra trong thực tế thì phải xây dựng một hệ thống quản lý các tương tác vật lý. Có thể nói rằng tương lai của Game chính là vật lý. Game sẽ trở nên rất thật khi xử lý tốt được những hiệu ứng theo quy luật vật lý như va chạm, nổ, chuyển động của các vật trong cảnh Game, nhân vật di chuyển và tương tác với các yếu tố trong môi trường, và các hiệu ứng đặc biệt như mô phỏng quần áo, tóc bay trong gió. Tóm lại, hệ thống vật lý giúp chúng ta có thể xử lý cách các đối tượng di chuyển, cách chúng ứng xử trong môi trường với từng tình huống cụ thể, và cách chúng tương tác với nhau. Nhờ hệ thống vật lý mà Game của chúng ta sẽ sinh động, tự nhiên. 6.2. Các yếu tố cần xử lý trong hệ thống vật lý ¾ Các thuộc tính của vật liệu Các thuộc tính của vật liệu chính là các đặc trưng vật lý về vật chất như trọng lượng, ma sát, đàn hồi. Chúng ta có thể tạo ra các mặt phẳng trơn khiến cho nhân vật có khó di chuyển được, các vật được làm bằng chất liệu gỗ với các chỗ nối có thể gẫy được khi có lực va chạm lớn, các bề mặt đàn hồi như cao su, các bề mặt bằng kim loại có thể uốn cong được khi tác động lực, và có thể tạo được các tảng đá có thể vỡ vụn khi bị tác động lực mạnh. ¾ Các đối tượng bao bọc động và phát hiện va chạm Các đối tượng bao bọc giúp chúng ta bao các đối tượng trong Game để thực hiện các hiệu ứng vật lý lên đối tượng đó và phát sinh ra các sự kiện tương ứng khi các va chạm xảy ra giúp chúng ta có thể đưa ra các cách thức xử lý tương ứng. Để thực hiện được sự mô phỏng vật lý như vậy chúng ta phải dựa vào các định luật vật lý cổ điển trong đó quan nhất là các định luật Newton. Các định luật vật lý này giúp Chương 6. Hệ thống vật lý (Physics System) - 104 - chúng ta có thể tạo được các va chạm tự nhiên và nhiều hiệu ứng đẹp mắt ví dụ như sự rung khi một đồng tiền rơi xuống sàn nhà, chiếc xe trượt theo quán tính khi phanh, … Hầu hết các Engine vật lý xây dựng nên các hình bao bọc động như là những yếu tố cốt lõi và xây dựng các yếu tố khác thông qua chúng. ¾ Các khớp và sự co giãn Các khớp và các đặc tính co giãn dùng để mô hình hoá cho các cơ cấu phức tạp như các máy móc, xe cộ, sự di chuyển của các nhân vật, cửa, đòn bẩy, và cung cấp khả năng cho các nhân vật cầm và thao tác các đối tượng trong Game. ¾ Các chất lỏng và vô định hình Bên cạnh việc mô phỏng các hiệu ứng như gợn sóng trên mặt hồ thì chúng ta còn có thể tăng thêm hiệu ứng chất lỏng trong nhiều cảnh vật như dầu, các cột nước bắn lên, lửa, các vũ khí bắn ra các chất vô định hình. Các chất lỏng này có thể tương tác với các vật động trong cảnh như bao quanh chúng chẳng hạn. ¾ Áo quần và hiệu ứng khác Hệ thống vật lý có thể giúp mô phỏng chính xác, trung thực về áo quần như áo choàng cho nhân vật. Hay hệ thống có thể cung cấp cho ta chức năng mô phỏng về lửa, khói, sương mù. Tuy nhiên đây chỉ là một khía cạnh phụ có thể bỏ qua trong hệ thống vật lý, ta có thể xây dựng hệ thống Particle riêng để thực hiện cho các hiệu ứng này. 6.3. Engine vật lý NovodeX Hiện nay có rất nhiều Engine vật lý được tạo ra để kết hợp vào các 3D Engine để tạo ra các Game. Một số Engine vật lý tốt có thể kể đến là Navok được dùng trong Game Haff Life và NovodeX. NovodeX là Engine vật lý của hãng AGEIA. Hiện nay (tháng 6 năm 2005) NovodeX đang có phiên bản 2.2 và chưa được hoàn thiện. NovodeX là một Engine vật lý rất mạnh và cung cấp miễn phí cho các hoạt động phi thương mại. Engine vật lý này còn có kèm nhiều ví dụ và tài liệu hướng dẫn cũng chính vì vậy chúng tôi Chương 6. Hệ thống vật lý (Physics System) - 105 - chọn để nghiên cứu và ứng dụng kết hợp với Nwfc 3D Engine để xây dựng Game ứng dụng. Engine vật lý NovedeX cung cấp cho chúng ta một giải phát rất mạnh và hiệu quả để kết hợp một hệ thống xử lý vật lý thời gian thực vào trong hệ thống Game của chúng ta. NovodeX được thiết kế để dễ dàng kết hợp với các thành phần khác trong một Game Engine. NovodeX có thể làm việc tốt trên nhiều API khác nhau như Direct3D, OpenLG, NDL Gamebryo, Quake và OGRE. NovedeX còn thể thể đuợc bao bọc bởi Unreal 3 của Engine Epic Game và Reality Engine của Artificial Studio. Những kết quả đầu ra của NovodeX còn có thể cung cấp cho Discreet 3D Studio Max, SoftImage XSI và các công cụ khác cho phép các nhà phát triển có thể xem công việc của mình thực hiện trong những môi trường tương tự. Để đễ dàng kết hợp với những công nghệ kèm theo, bản thân NovodeX cung cấp một loạt các công cụ để tạo ra các hiệu ứng và môi trường động dựa trên vật lý. Những công cụ đó bao gồm: Rocket viewer để cài đặt và mô phỏng cho các cảnh vật lý. Debug render cho phép chúng ta phân tích và chỉnh lại Game. Bộ xử lý dữ liệu cho phép ta nạp dữ liệu vào nhanh chóng. NovodeX được thiết kế hoạt động tối ưu trên trên chip AGEIA PhysX. NovodeX là API duy nhất cho phép các nhà phát triển Game dùng phần cứng để gia tăng các hiệu ứng vật lý trong Game dựa trên AGEIS PhysX chip, đây là đơn vị xử lý vật lý (PPU – Physics Processing Unit) đầu tiên trên thế giới. NovodeX còn là API đa tiểu trình đầu tiên và duy nhất hiện nay cho phép các nhà phát triển Game sử dụng để tăng thêm khả năng xử lý trong Game của mình. NovodeX cung cấp hệ thống hoàn hảo các đối tượng bao bọc động và hệ thống phát hiện, xử lý va chạm tốt. NovodeX có thể thực thi trên nhiều môi trường khác nhau như Microsoft Window XP, Mac OS X, PhysX PPU. Một điểm mạnh nữa của NovodeX là nó cung cấp sẵn cho chúng ta các lớp dùng để điều khiển di chuyển các nhân vật. Chương 6. Hệ thống vật lý (Physics System) - 106 - ¾ Các chức năng của NovodeX trong lúc thực thi chương trình gồm: Hệ thống kiểm soát đụng độ cho mặt phẳng, hộp, khối cầu, đỉnh các vật thể, mesh của môi trường, các điểm lõm của đối tượng. Cho phép tạo ra các nhóm va chạm. Tức là chúng ta có thể nhóm 1 số đối tượng thành một nhóm để tiện cho việc kiểm tra và xử lý va chạm giữa các đối tượng này. Cung cấp các loại khớp như Fixed (cố định), Revolute(bọc ở bên ngoài theo một trục), Sperical (cầu), Prismatic (lăng trụ), và Six Degree of Freedom (6 bậc tự do) (tham khảo thêm ở phần phụ lục) cùng với các phép chiếu, độ đàn hồi, qui định giới hạn cho các khớp quay. Các vật liệu cho các bề mặt với các hệ số ma sát động, ma sát tĩnh và độ đàn hồi. Cung cấp những hình trigger cho phép chúng ta có thể xử lý các sự kiện khi có một vật bắt đầu va chạm, đi vào hay ra khỏi một vật thể nào đó. Cung cấp tia chiếu từ một vật thể vào môi trường xung quanh. Nhờ tia chiếu này chúng ta có thể xác định được khoảng cách cũng như tính chất của đối tượng có cắt với tia chiếu và có thể có những ứng xử tương ứng. Đây cũng là cách chúng ta có thể xây dựng những ứng xử thông minh đơn giản cho các đối tượng, ví dụ khi con quái vật đến gần nhân vật một khoảng nào đó thì ta cho con quái vật tấn công. Cung cấp các lớp do người dùng định nghĩa với các hàm xử lý các sự kiện trả về. Đây là những hàm rất quan trọng cho phép chúng ta có thể xử lý khi có va chạm xảy ra. Ví dụ khi nhân vật di chuyển trong môi trường và va chạm một hộp thì sẽ có sự kiện va chạm trả về, trong hàm xử lý va chạm ta có thể thiết lập lực tác động vào cái hộp chẳng hạn. Cung cấp một bộ điều khiển nhân vật dựa trên một chiếc hộp tạm. Khi di chuyển nhân vật, chiếc hộp tạm này thực hiện di chuyển trước để xác định xem Chương 6. Hệ thống vật lý (Physics System) - 107 - nhân vật sẽ phải di chuyển tiếp theo như thế nào để có thể áp dụng lên nhân vật cho chính xác. Thực hiện đồng bộ hoá hệ thống vật lý với một bộ xử lý đa tiểu trình. Cho phép hiển thị chế độ Debug cho hệ thống toạ độ, các đối tượng có trong cảnh, các điểm va chạm, các vector pháp tuyến, … ¾ Các công cụ phát triển kèm theo gồm có: Xuất ra định dạng tập tin PML có thể sử dụng trong các phần mềm 3DS Max, SoftImage, và Maya. Cung cấp sẵn mã nguồn cho việc đưa các đối tượng trong định dạng tập tin PML vào trong cảnh của NovodeX. NovodeX Rocket, một ứng dụng riêng biệt cho phép ta nạp và mô phỏng một cảnh với định dạng PML. NovodeX FX, một môi trường kết hợp để mô phỏng các hiệu ứng nâng cao trong các hệ thống quản lý Game hiện có. 6.4. Sử dụng NovodeX 6.4.1. Kết hợp NovodeX vào Game NovodeX là một phần hoàn toàn độc lập, chức năng chính là chỉ quản lý về vật lý và nó được xây dựng trên một thư viện toán học riêng. Do đó để có thể sử dụng được các tính năng của NovodeX thì cần phải bao bọc nó lại để có thể sử dụng kết hợp với các thành phần khác như hệ thống hiển thị, hệ thống diễn hoạt. Việc bao bọc hệ thống vật lý còn giúp chúng ta có thể sử dụng nó một cách thống nhất với các phần khác thông qua cùng một thư viện toán. Tư tưởng chính để sử dụng hệ thống vật lý NovodeX là ta dùng các vật thể và mesh do NovedeX cung cấp để bao bọc hay chứa các vật thể và nhân vật của Game. Việc quản lý vật lý ta để cho hệ thống NovodeX thực hiện. Sau khi hệ thống NovodeX thực hiện xong ta lấy vị trí và góc quay mới của các vật thể bao bọc của NovodeX để cập nhật lại vị trí và góc quay tương ứng cho các vật thể và nhân vật trong Game. Ví dụ như ta có một khối hộp trong màn Game, ta sẽ dùng một đối
File đính kèm:
- thu_nghiem_3d_engine_7.pdf