Danh mục

Beginning DirectX9 - Chương 7

Số trang: 22      Loại file: pdf      Dung lượng: 569.19 KB      Lượt xem: 18      Lượt tải: 0    
Thu Hiền

Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

CHIA NHỎ VÀ LÀM MỊN CÁC ĐỐI TƯỢNGạn đã học được cách làm thế nào để tạo các object 3D bằng code và biểu diễn nó lên màn hình. Có lẽ bạn đang nghĩ rằng đây là một quá trình thật nhàm chán và chưa có cách nào để có thể tạo tất cả các object bằng code. Bạn nghĩ rất đúng. Hiện nay 3D đã nhập cuôc. Nó có thể mô tả mọi thứ trong game của bạn rất giống với thực thể. Những mô hìnhcó thể thể hiện vật thể và đặc điểm xung quanh bạn và...
Nội dung trích xuất từ tài liệu:
Beginning DirectX9 - Chương 7 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9 CHƯƠNG 7CHIA NHỎ VÀ LÀM MỊNCÁC ĐỐI TƯỢNGB ạn đã học được cách làm thế nào để tạo các object 3D bằng code và biểu diễn nó lên màn hình. Có lẽ bạn đang nghĩ rằng đây là một quá trình thật nhàm chán và chưa có cách nào để có thể tạo tất cả các object bằng code. Bạn nghĩ rất đúng.Hiện nay 3D đã nhập cuôc. Nó có thể mô tả mọi thứ trong game của bạn rất giống vớithực thể. Những mô hìnhcó thể thể hiện vật thể và đặc điểm xung quanh bạn và cũng cóthể là chính chính nó. Với những đặc điểm này bạn có thể đưa những mô hình này vàogame, bạn có thể biểu diễn nó với đối tượng Mesh và dịch chuyển hoặc điều khiển chúng. Đây là các phần mà bạn sẽ học trong chương này: Direct3D điều khiển mesh như thế nào ? Cần những gì để hợp lý hóa một model 3D? Định dạng file X là gì? Làm thế nào để tạo và lưu giữ mesh? Làm thế nào để load một model 3D vào game?Xây dựng một thế giới 3DMô hình 3D giúp chúng bạn thể hiện thế giới ảo mà bạn muốn tạo. Những mô hình nàyđược bổ xung bởi gamer và đối thủ của gamer trong môi trường này. Những mô hình nàyđược lấy từ đâu? Nếu bạn có một package thiết kế 3D giống như Max hoặc Maya, bạn đãcó những công cụ cần thiết để tạo mọi thứ cho game của bạn khi cần. Nếu những chươngtrình trên bạn không có thì bạn có thể dùng những package khác như MilkShape 3D, nócũng có thể làm việc tốt.Sau khi đã tạo các model, bạn đưa chúng vào một trong những định dạng file 3D hiện có.Nhưng bạn cần biết làm thế nào để load một file định dạng 3D vào game của mình. Mụcđích của cuốn sách này là giúp bạn làm việc với những định dạng file mà Microsoft đãtạo ra. Chú ý: Bạn có thể tìm MilkShape 3D tại trang http://www.swissquake.ch/chumbalum- soft/index.html. 96 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9Mesh là gì?Code của bạn điều khiển những mô hình 3D được load vào trong game cũng được xemnhư là một Mesh. Một Mesh là một code container mà chứa mọi thứ liên quan đến đốitượng 3D. Nó bào gồm các vectơ, tọa độ texture và các dữ liệu khác. Bằng cách sử dụngdữ liệu có trong mesh object bạn có thể biểu diễn các mô hình 3D lên màn hình . Chú ý: Thư viện tổng hợp D3DX chứa tất cả mọi thứ mà bạn cần để sử dụng mesh trong Direct3DDirect3D định nghĩa một Mesh như thế nào?Hầu hết các mesh trong Direct3D đều dựa trên ID3DXBaseMesh interface. Interface nàycung cấp kho dự trữ dành cho các model của bạn, giúp các methods có hiệu lực để tăngtốc độ truy cập tới dữ liệu trong mesh. Ví dụ method GetVertexBuffer luôn sẵn có trongID3DXBaseMesh interface để giúp bạn truy cập trực tiếp tới vectơ buffer của đối tượngmesh.Dưới đây là một số kiểu Mesh khác nhau: ID3DXMesh – Đây là dạng mesh interface chuẩn mà bạn sẽ sử dụng. ID3DXPMesh – Interface này cho phép bạn sử dụng mesh tiến hành. ID3DXSPMesh – interface này điều khiển sự đơn giản hóa các mesh object. ID3DXPatchMesh - Interface này cung cấp Patch mesh theo chức năng.Mỗi một kiểu mesh có thể lưu giữ tất cả các vectơ của một model trong vectơ buffer vàcung cấp cho bạn thông tin vể model, ví dụ như số phần tử hoặc là số vectơ.Tạo MeshBước đầu tiên khi sử dụng các mesh trong game đó là sự khởi tạo mesh object. Meshobject là kho dự trữ, cất giữ tất cả các thông tin cần thiết dùn để mô tả model của bạntrong Direct3D. Sau khi bạn đã tạo ra mesh, bạn dễ dàng copy tất cả thông tin mà modelcủa bạn cần.Hai hàm trong Direct3D dùng để tạo mesh: D3DXCreaetMesh và D3DXCreateMeshFVF.Vì mỗi hàm này tạo mesh bằng các cách khác nhau, chúng ta sẽ làm rõ cả hai hàm dưới đây.D3DXCreateMeshGiao diện ID3DXMesh là một giao diện đơn giản nhất trong mesh interface, dễ dàng tổ chứcvà thực hiện một cách nhanh chóng. Trong phần này, bạn sẽ học cách làm thế nào để tạomesh trong ID3DXMesh interface bằng hàm D3DXCreateMesh. D3DXCreateMesh( DWORD NumFaces, DWORD NumVertices, DWORD Options, CONST LPD3DVERTEXELEMENT9 *pDeclaration, LPDIRECT3DDEVICE9 pDevice, LPD3DXMESH *ppMesh ); 97 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9Hàm D3DcreateMesh có 6 tham số: NumFaces. Số phần tử mà mesh sẽ chứa. NumVertices. Số vectơ mà mesh sẽ chứa. Options. Giá trị từ bảng liệt kê D3DXMESH . pDeclaration. Ma trận thuộc đối tượng D3DVERTEXELEMENT9. Những object này mô tả FVF cho mesh. pDevice. Một Direct3D device hợp lệ. ppMesh. Con trỏ trỏ tới đối tượng ID3DMesh hợp lệ.Đoạn code sau sẽ chỉ ra cách làm thế nào để tạo một đối tượng mesh mà chứa đầy đủ bộvectơ, dùng để tạo một khối lập phương. HRESULT hr; // biến giữ một mesh được tạo mới LPD3DXMESH boxMesh; // ma trận D3DVERTEXELEMENT9 D3DVERTEXELEMENT9 Declaration [MAX_FVF_DECL_SIZE]; // tạo khai báo cần thiết cho hàm D3DXCreateMesh D3DXDeclaratorFromFVF (D3DFVF_CUSTOMVERTEX, Declaration); hr= D3DXCreateMesh(12, //số phần tử của mesh 8, //số vectơ D3DXMESH_MANAGED, //sử dụng bộ nhớ cần thiết cho mesh Declaration, //ma trận kiểu đối tượng D3DVERTEXELEMENT9 pd3dDevice, //the Direct3D device &boxMesh); //biến giữ mesh //kiểm t ...

Tài liệu được xem nhiều:

Tài liệu cùng danh mục:

Tài liệu mới: