天天看點

XNA之進階--3D模型的加載和控制

Ok,我們要顯示3d模型,是以我們首先需要對應的模型,建立一個spacewar工程,但是我們隻想要美術資源,而不是要整個未編譯的代碼,是以我們的第一項工作就是把美術資源獨立出來.我們來建立一個空戰(Spacewar)Starter Kit工程.

建立一個windowsgeme工程,我們看到已經為我們準備好了一個名為content的檔案夾,我們的所有素材都将放到這個檔案夾裡,建立一個Audio檔案夾,在該檔案夾下建立一個Textures和Models檔案夾;如果觀察代碼的話,我們可以看到Content.RootDirectory = "Content";在這裡我們就設定了遊戲素材加載的根目錄是在Content檔案夾下;

我們需要兩件美術資源.第一個是将放入Content/Models檔案夾的3D模型,第二個是需要貼在3D模型上的一個紋理,它将被放在Content/Textures檔案夾;

  • 在解決方案管理器中右鍵點選Models檔案夾,選擇添加,然後選擇已有項... 使用彈出的對話框浏覽到你放置空戰的那個路徑,找到Contents/Models檔案夾,選擇p1_wedge.fbx如果你看不到任何檔案,請确認你把檔案類型下拉清單中選擇了Content Pipeline Files.點選OK.
  • 在解決方案管理器中右鍵點選Textures檔案夾,然後選擇已有項... 使用彈出的對話框浏覽到你放置空戰的那個路徑,找到Contents/Textures檔案夾,選擇wedge_p1_diff_v1.tga ,點選OK.
  • 在所有的素材都添加完畢之後,資料總管中将顯示如下:
    XNA之進階--3D模型的加載和控制
  • 當檔案加入到工程以後,素材管道将自動把它們識别成素材檔案,并且給它設定一個合适的素材處理器,這些都是自動的,你無需做任何事

好的,所有的準備 工作都做好了,下面就是從遊戲裡加載素材。在game.cs中,在LoadContent中我們加載所有的資源

XNA之進階--3D模型的加載和控制

這是xna1.x版本的方法,在新的版本中,應該在 LoadContent函數中加載模型;注意你必須傳入資源相對于工程目錄的路徑,另外要注意資源名不帶任何擴充名.資源名稱可以是任意的,但是預設的資源名稱是檔案名去掉擴充名;

這樣就将資源加載在了工程中,下面我們要做的是顯示該模型:

  • 在Draw函數中,我們将把模型繪制到螢幕上,帶紋理和燈光.
  • 在Update函數中,我們将按時間改變模型的方位,這樣它将随時間而旋轉.

我們先來做最難的那部分工作:繪制模型.我們要做的是使用一些XNA Framework函數來設定模型的坐标,然後在螢幕上繪制模型并打光:

  • 在代碼中找到Draw函數. 修改代碼如下
    XNA之進階--3D模型的加載和控制

首先定義一個Vector3的對象,用來存儲目前對象的空間坐标

繼續閱讀