游戲中經(jīng)常會出現(xiàn)一些大型的戶外場景,例如一個小鎮(zhèn)、一座古城等。通常這種場景中包含了較多的建筑、道路、橋梁等等元素,其3D模型比較大且復雜。在使用TWaver加載時,可使用一些技巧,讓加載速度更快、顯示更流暢。
TWaver 3D支持導入json或obj等格式的3D場景。如果是obj格式,可將obj文件、mtl文件、所有貼圖文件,以字符串參數(shù)形式傳給TWaver進行加載。當然這些文件也都可以是網(wǎng)絡上的URL字符串。
1 2 | var loader = new mono.OBJMTLLoader(); loader.load(obj, mtl, images); |
TWaver支持在加載過程中對每一個物體進行進一步處理。例如材質(zhì)貼圖、特性等。我們通過下面的代碼,可以將每一個加載的物體強制用白模顯示:
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秒。但是實際應用中,資源文件可能存在網(wǎng)絡上,網(wǎng)絡傳輸則需要一定的時間??梢詫bj文件或json文件進行打包壓縮,加快傳輸效率。對于材質(zhì)也可以適當降低精度,在顯示出場景后再逐漸加載或按需加載高精度的貼圖,進行動態(tài)的更換。