Unity3D加載火炬之光資源(3Dmax帶動畫)


一、目標

上一篇研究了下將火炬之光的資源導入到Blender中,結果找的幾個腳本都不支持動畫的導入,不知道是不是因為會blender的程序比較少,

於是去找了個3dmax的導入腳本,經過一些復雜的工作終於成功在Unity3D 4.0中實現了動畫。

 

二、工具准備

1.導入插件

http://pan.baidu.com/s/1qWmEVcK

將它放在3dmax的安裝目錄下的plugin里,就可以用來導入OGRE的模型和動畫了,不過這個只是支持轉換為XML的.mesh和.skeleton文件

看下界面:

先是點Import Mesh,導入.mesh.xml文件,之后是點Import Animation,導入.skeleton.xml文件。

在游戲中自帶的只有.mesh和.skeleton文件,想要得到上面的文件,就要通過OGRE的工具(OgreXMLConverter.exe)來轉換了。

為了方便,我用python寫了個簡單的腳本,這樣我就不用去一個個轉換了:

import os
import re


CONVERT_PATH = 'E:\GameEngine\Ogre\OgreCommandLineTools_1.7.2\OgreXMLConverter.exe';
SOURCE_PATH = 'E:\GameEngine\Ogre\Cat';

def get_matchedfiles(path):
    matchedlist = [];
    if os.path.exists(path):
        filelist = os.listdir(path);
        print filelist;
        for orifilename in filelist:
            filename = orifilename.lower();
            if re.match('\S*\.mesh$',filename) or re.match('\S*\.skeleton$', filename):
                matchedlist.append(orifilename);

        print matchedlist;
    return matchedlist;
    

def ogre2xml(path):
    matchedlist = get_matchedfiles(path);
    
    for filename in matchedlist:
        cmd = CONVERT_PATH + ' "' + path+'//'+filename + '"';
        print cmd;
        os.system(cmd);

    print os.listdir(path);
    

if __name__=="__main__":
   #get_matchedfiles(SOURCE_PATH);
    ogre2xml(SOURCE_PATH);


把SOURCE_PATH換成你自己模型所在路徑文件夾,CONVERT_PATH換成你所下載的工具的路徑就可以了,想要遞歸搜索的就自己再加一些代碼吧。

 

2.編輯動畫

對於max的動畫我了解的不深,從我目前看來,用插件導入的這幾個動畫都不在一個時間軸上,意味着你每次想導出一個動畫,都得有一個FBX文件,這顯然是不對。

在Unity3D中應該是用的一個FBX,然后在同一個時間軸上,取不同的時間段來分離出一個個動作。

在經過多方資料的查詢,終於發現在max 2009以上有動畫的導出和導入功能,這樣我就能把幾個動畫人工的合並到一個動畫的時間軸上

參考資料:

http://forum.unity3d.com/threads/88388-3DS-Max-Export-Multiple-Animations-in-Single-FBX

首先在導入面板雙擊idle這個動畫,可以在底下時間軸拖動滑動條來觀察動畫。

為了導出動畫,我們需要選取骨骼,先按F3進入線框模式,這樣我們就能看到骨骼了,雙擊其中一根,就可以選中所有骨骼了。

選擇菜單中的動畫-》保存動畫

在彈出的對話框中設置好參數:

因為我想把idle放第一段,而他的長度(從剛才說的滑動條那里可以看到)是100,所以在分段中設置為0~100。

保存為idle.xaf。

然后對attac1的動畫做同樣的操作,不過把右邊的設置變為101-136。

現在我們就有兩個動畫了,我要把他們合並到一個時間軸上,現在我們要找一個沒有動畫的帶骨骼的模型,正好

游戲本身就提供這么一個,就是和模型同名的skeleton文件,這邊就是Cat.Skeleton。導入之后會變成是bind,

在導入面板中可以看到。

不過我們雙擊它會看到他的時間軸最大也就到100,而現在兩個合並后會延長到136,所以我們要設置一下長度。

點開設置結束時間為136

 

現在導入剛才導出的兩個動畫文件。

就可以看到它們在一個時間軸里並成一個動畫了,拖動滑動條可以看到結果。

導出FBX就OK了。

3.導入Unity3D中

將FBX直接copy到Unity3D的assets中,我把可以看到他會自動的分出一個Take001的動畫。

Unity4.0的動畫系統有了重大的變化,詳情還是自己google吧,我自己也還沒搞清楚,只是聽

說很是強大。

本來這個地方是Take001,這是我經過操作后變成這兩個動畫。

點擊左邊那個cat模型,可以看到inspect

可以看到有個amiation的查看器,底下有clip,可以增加和刪除,點擊其中的item就可以進入編輯狀態,

最開始是只有一個136的Take001的clip,我改成了一個idle和一個attact1。

編輯模式里是可以預覽的,所以你只要點一個那個三角形的開始按鈕,就可以看到你設置的時間對不對。

最后的結果:

 

參考

http://forums.runicgames.com/viewtopic.php?f=6&t=2311&start=140#p75286

http://forum.unity3d.com/threads/88388-3DS-Max-Export-Multiple-Animations-in-Single-FBX

Unity4.0角色動畫系統使用,英文視頻:

http://v.youku.com/v_show/id_XNDI1OTUzMTA4.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM