threejs加载3D模型例子

加载3D模型

首先要引入ColladaLoader加载器,Collada是一个3D模型交换方案,即不同的3D模型可以通过Collada进行相互转换,言外之意,threejs可以使用Collada将3D模型的数据转换成自己支持的格式,从而在浏览器上渲染出来。引入ColladaLoader如下:

<script src="http://threejs.outsidelook.cn/r89/source/examples/js/loaders/ColladaLoader.js">script>

然后使用ColladaLoader的Load方法加载模型,然后使用onLoad回调函数在模型加载完成之后将模型添加到场景中。onLoad函数会接受到一个包含了所加载的资源的对象,这个对象的结构如下:

threejs加载3D模型例子_第1张图片
对于这个对象中具体包含了哪些东西,暂时不用全部弄明白。但是我们看到了上面有一个scene,在threejs中,scene是场景,是包含所有可视部件的容器,我们要做的就是(1)从这个scene中找出我们需要操控的模型对象,保存起来(2)将模型的场景添加到程序的场景中去。

下面是整个加载模型的函数:

function load3DModel(){
   /
     1、collada是一种基于XML的3D模型交互方案,简单来说,就是一种3D模型可以通过collada转换成另一种3D模型,
     从而,各种3D模型都可以通过collada转换成web支持的3D模型。
     2、。dae是一个钟3D模型的格式
     3、加载时注意浏览器同源策略的限制
    /
   var loader = new THREE.ColladaLoader();
   loader.load( "./model/avatar.dae", function ( collada ) {
      //找到模型中需要的对象。将相机看向这个对象是为了让这个对象显示在屏幕中心
      collada.scene.traverse( function ( child ) {
         if ( child instanceof THREE.SkinnedMesh ) {
            modelObj = child;
            camera.lookAt( child.position );
         }
      } );
      //将模型的场景加入到整体的场景
       modelObj.material.opacity = 0.8;
      scene.add( collada.scene );

      //显示出模型的骨骼的代码,不需要可删去
      var helper = new THREE.SkeletonHelper( modelObj );
      helper.material.linewidth = 3;
      scene.add( helper );
   } );
}

需要注意的是,加载是异步的,所以,要使用render循环来渲染,可参考下面的例子。

整个例子请看:【加载3D模型例子】,整个例子的效果:
threejs加载3D模型例子_第2张图片


持续更新

你可能感兴趣的:(前端,threejs,three.js基础教程)