使用Three.js中的OBJLoader动画obj文件

时间:2014-01-11 13:35:20

标签: javascript three.js

我目前要用obj文件做动画。我想水平旋转加载的肋骨。是否可能为obj文件设置动画?如果是这样,你怎么做?我在网上搜索,我发现的唯一动画示例是使用JSONLoader制作的,我没有使用。这是我的代码:

window.onload = function() {
 var container, stats;
 var camera, scene, renderer, object;

 var windowHalfX;
 var windowHalfY;

init();
animate();


function init() {

    width = 500;
            height = 500;

            windowHalfX=width/2;
            windowHalfY=height/2;

    camera = new THREE.PerspectiveCamera( 45, width / height, 1, 2000 );
    camera.position.z = 300;

    scene = new THREE.Scene();

        var ambient = new THREE.AmbientLight( 0x101030 );
    scene.add( ambient );

    var directionalLight = new THREE.DirectionalLight( 0xffeedd );
    directionalLight.position.set( 0, 1, 1 );
    scene.add( directionalLight );

    var loader = new THREE.OBJMTLLoader();
            for ( var i = 1; i < 13; i ++ ) {
              var chem = './three/obj/Cotes/left/CG';
              if (i<10) {
                 var nomcote = chem+'0'+i+'.obj';
                 var matcote = chem+'0'+i+'.mtl';
              }
              else{
                 var nomcote = chem+i+'.obj';
                 var matcote = chem+i+'.mtl';
              }
              loader.load( nomcote, matcote, function ( object ) {
                 object.position.y = - 70;
                 object.name = "cotesG"+i;
         scene.add( object );
              } );
           }
           for ( var i = 1; i < 13; i ++ ) {
              var chem = './three/obj/Cotes/right/CD';
              if (i<10) {
                 var nomcote = chem+'0'+i+'.obj';
                 var matcote = chem+'0'+i+'.mtl';
              }
              else{
                 var nomcote = chem+i+'.obj';
                 var matcote = chem+i+'.mtl';
              }
              loader.load( nomcote, matcote, function ( object ) {
                 object.position.y = - 70;
                 object.name = "cotesD"+i;
         scene.add( object );
              } );
           }
    renderer = new THREE.WebGLRenderer();
    renderer.setSize( width, height );

            controls = new THREE.OrbitControls(camera,renderer.domElement);
        controls.addEventListener( 'change', render );

    document.body.appendChild( renderer.domElement );

    //
    window.addEventListener( 'resize', onWindowResize, false );

}

    function onWindowResize() {
            windowHalfX = width / 2;
    windowHalfY = height / 2;

    camera.aspect = width / height;
    camera.updateProjectionMatrix();
    renderer.setSize( width, height );
    render();
}

function animate() {
        requestAnimationFrame( animate );
    controls.update();

}

function render() {
          // camera.lookAt( scene.position );
        renderer.render( scene, camera );

}
  }

0 个答案:

没有答案