2008年11月28日

Papervision3D入門第6步

建模過程略,如果有人需要我可以做個簡單視頻。

達達不會用3Ds MAX,所以這篇教程選擇的是Google SketchUp Pro 6,它是我見過最容易上手的3D建模工具了。。。我剛使用,就能建出我在3Ds MAX建不出來的模型,所以挺喜歡它的 。

雖然不是用3Ds MAX,但是最後導出的模型都是Collada文件,所以不用擔心你用的建模工具和我的不一樣,有興趣就繼續往下吧。

直接進入主題,使用Collada模型文件,和我們前面的基本教程中教的內容沒有多大差別,唯一不同的地方就是顯示對象換成了Collada類型,並且需 要根據Collada的模型文件中的材質貼圖設置,相應的在AS3代碼中進行貼圖。這一步也是初使用Collada模型的朋友,最容易失敗的地方,這個地 方處理好了,就沒什麼難度了

這裡我只寫出代碼有變化的地方,完整代碼請參考以前的教程。首先,需要引用Collada類,並將3D模型文件作為內嵌資源,嵌入到程序中:

主意Embed標籤的source和mimeType值,source是模型文件的相對路徑,mimeType一定不要搞錯了。

接著,我們需要在初始化3D場景的時候把模型一起初始化:

注意上面的_materialList中的Sketchy_Stone_Ashlar屬性,這個屬性一定要和Collada的模型文件中的材質貼圖名稱一樣!否則什麼也顯示不出來,比如我的模型中的材質貼圖信息如下:

Sketchy_Stone_Ashlar對應的就是上面的name=」Sketchy_Stone_Ashlar」,我這裡沒有相應的設置 BackColor和ForegroundColor,因為這兩個是SketchUp自動生成的,因為這兩個材質貼圖不影響我的模型的顯示。

如果你是用3Ds MAX你可以在設置材質貼圖的時候設置這個名稱,記得這個名稱要符合命名規範,3Ds MAX自動給你生成的通常是不符合命名規範的,用起來會有些問題。

其它的代碼就和顯示一個球體模型或者立方體模型一樣了,大家參考以前的代碼吧。

如果你和我一樣使用SketchUp的話,那請你再繼續往下看…

按我上面的步驟做,顯示SketchUp導出的3D模型時是會出錯的,運行時會報「無法訪問空對象引用的屬性或方法。」。需要對PV3D的代碼做一處小修 改,來避免這個空引用異常。打開PV3D的Collada類的源文件,找到379行處的var len:Number = semVertices.length;,將它改為var len:Number = semVertices == null ? 0 : semVertices.length; 這樣就可以了 ;)

顯示效果如下:

PV3D對SkechUp導出的Collada模型似乎支持得不好,或者是SketchUp的Collada模型導出功能還不夠完善,所以顯示出來的效果和建模時的效果有些差別。

modeling3.png

完整項目文件:try08_sketchmodeling.rar