畢設(shè)的時(shí)候,剛開始找到了一個(gè)大森林場(chǎng)景,想要導(dǎo)出給threejs用,于是查了一下怎么用,以下是碰到的一些問題。
1.從unity中導(dǎo)出模型
unity有多款插件可以導(dǎo)出模型為各種格式,例如:
Scene OBJ Exporter:https://www.assetstore.unity3d.com/en/#!/content/22250
UnitySceneWebExporter:https://github.com/if1live/unity-scene-web-exporter
Three.js JSON Exporter:https://www.assetstore.unity3d.com/en/#!/content/40550
以及專門用來導(dǎo)出地形圖的,TerrainExporter:http://blog.csdn.net/lingbaoer1234/article/details/45307643
但是以上插件均不能導(dǎo)出樹或者森林,于是考慮導(dǎo)出單棵樹
2.成功導(dǎo)出單棵樹之后的任務(wù)就是在threejs中導(dǎo)入obj和mtl文件
2.1 OBJLoader和MTLLoader,OBJMTLLoader已經(jīng)不再使用了,具體使用實(shí)例如下:
THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath( 'obj/male02/' );
mtlLoader.load( 'male02_dds.mtl', function( materials ) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'obj/male02/' );
objLoader.load( 'male02.obj', function ( object ) {
object.position.y = - 95;
scene.add( object );
}, onProgress, onError );
});
https://threejs.org/examples/webgl_loader_obj_mtl.html
http://www.linhongxu.com/post/view?id=227
2.2 實(shí)際操作之后發(fā)現(xiàn),材質(zhì)并不能貼上,貼圖找不見了。后來打開mtl文件看了一下,發(fā)現(xiàn)它有一條記錄貼圖路徑的,路徑是本地的路徑。于是,將貼圖放到項(xiàng)目文件夾中,并將mtl中的路徑改為相對(duì)路徑,并且mtlLoader.setBaseUrl設(shè)置路徑
2.3之后發(fā)現(xiàn)貼圖能找到,但是效果不對(duì)勁,應(yīng)該是沒有設(shè)置為透明。查看了materials的transparent確實(shí)是false,于是通過如下方法設(shè)置透明
object.traverse(function(child)
{
if(childinstanceofTHREE.Mesh)
{
child.material.transparent=true;
}
});
3.有用的網(wǎng)站:https://threejs.org/editor/,https://read.douban.com/reader/ebook/7412854/
更新:
使用ThreeExporter導(dǎo)出整個(gè)場(chǎng)景后,可以直接導(dǎo)入Threejs中,使用var loader=new THREE.ObjectLoader()創(chuàng)建loader,其他類似。