Posted on 2015-01-06 13:41
TWaver 閱讀(4230)
評論(1) 編輯 收藏
游戲中經常會出現一些大型的戶外場景,例如一個小鎮、一座古城等。通常這種場景中包含了較多的建筑、道路、橋梁等等元素,其3D模型比較大且復雜。在使用TWaver加載時,可使用一些技巧,讓加載速度更快、顯示更流暢。

TWaver 3D支持導入json或obj等格式的3D場景。如果是obj格式,可將obj文件、mtl文件、所有貼圖文件,以字符串參數形式傳給TWaver進行加載。當然這些文件也都可以是網絡上的URL字符串。
1 2 | var loader = new mono.OBJMTLLoader();
loader.load(obj, mtl, images);
|
TWaver支持在加載過程中對每一個物體進行進一步處理。例如材質貼圖、特性等。我們通過下面的代碼,可以將每一個加載的物體強制用白模顯示:
1 2 3 4 5 6 | var loader = new mono.OBJMTLLoader();
loader.load(obj, mtl, images, function (object) {
box.addByDescendant(object);
box.forEach( function (element){
element.setStyle( 'm.texture.image' , null );
});
|

或者直接使用wireframe的方式忽略物體表面,直接顯示物體的線條形狀:
1 2 3 4 5 6 | var loader = new mono.OBJMTLLoader();
loader.load(obj, mtl, images, function (object) {
box.addByDescendant(object);
box.forEach( function (element){
element.setStyle( 'm.wireframe' , true );
});
|



這個obj文件超過16兆,TWaver解析的過程不超過5秒。但是實際應用中,資源文件可能存在網絡上,網絡傳輸則需要一定的時間。可以將obj文件或json文件進行打包壓縮,加快傳輸效率。對于材質也可以適當降低精度,在顯示出場景后再逐漸加載或按需加載高精度的貼圖,進行動態的更換。