three.js加载obj模型的实例代码
three.js是一款webGL框架,由于其易用性被广泛应用。如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择。好了,下面通过一段代码给大家介绍three.js加载obj模型,具体代码如下所示:
varscene=null; varcamera=null; varrenderer=null; varmesh=null; varid=null; functioninit(){ renderer=newTHREE.WebGLRenderer({//渲染器 canvas:document.getElementById('mainCanvas')//画布 }); renderer.setClearColor(0x000000);//画布颜色 scene=newTHREE.Scene();//创建场景 camera=newTHREE.OrthographicCamera(-5,5,3.75,-3.75,0.1,100);//正交投影照相机 camera.position.set(15,25,25);//相机位置 camera.lookAt(newTHREE.Vector3(0,2,0));//lookAt()设置相机所看的位置 scene.add(camera);//把相机添加到场景中 varloader=newTHREE.OBJLoader();//在init函数中,创建loader变量,用于导入模型 loader.load('libs/port.obj',function(obj){//第一个表示模型路径,第二个表示完成导入后的回调函数,一般我们需要在这个回调函数中将导入的模型添加到场景中 obj.traverse(function(child){ if(childinstanceofTHREE.Mesh){ child.material.side=THREE.DoubleSide; } }); mesh=obj;//储存到全局变量中 scene.add(obj);//将导入的模型添加到场景中 }); varlight=newTHREE.DirectionalLight(0xffffff);//光源颜色 light.position.set(20,10,5);//光源位置 scene.add(light);//光源添加到场景中 id=setInterval(draw,20);//每隔20s重绘一次 } functiondraw(){//们在重绘函数中让茶壶旋转: renderer.render(scene,camera);//调用WebGLRenderer的render函数刷新场景 mesh.rotation.y+=0.01;//添加动画 if(mesh.rotation.y>Math.PI*2){ mesh.rotation.y-=Math.PI*2; } }