4

最近我花了一些时间研究three.js。我在搅拌机中创建了一个 3d 模型,然后将其导入到 three.js 中。一切正常,morphAnimMesh 中的数据,如 currentKeyframe 和 lastKeyframe 都在更新,但它只是不渲染动画,只是一个静态的 3d 对象。有人可以帮我吗?谢谢。

这是我工作的网址:http ://www.dustedge.com/mathspace/three_test2.html

我所有的代码都在这里:

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
var histLookVector = new THREE.Vector3(1,1,1);
var currentLookVector = new THREE.Vector3(1,1,1);
var xAxis = new THREE.Vector3(1,0,0);
var yAxis = new THREE.Vector3(0,1,1);
var renderer = new THREE.WebGLRenderer();
var mesh;
var time;
var oldTime;
var delta;
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

camera.position.x = -20;
camera.position.y = 20;
camera.position.z = 20;
camera.lookAt(currentLookVector);
var x=0;
var loader = new THREE.JSONLoader();
loader.load( "nets.js", createGeometry  );
function createGeometry(model){
    var material = new THREE.MeshNormalMaterial({morphTargets:true});

    mesh = new THREE.MorphAnimMesh(model, material);
    mesh.scale.x = mesh.scale.y = mesh.scale.z = 4;
    mesh.position.x = 10;
    mesh.time = 0;
    mesh.duration = 2000;

    oldTime = time = new Date().getTime();
    scene.add(mesh);
    render();
}

function render() {
    requestAnimationFrame(render);
    time= new Date().getTime();
    delta= time-oldTime;
    oldTime=time;


    if(mesh){
        mesh.updateAnimation(delta);
        //console.log('current: ' + geometry.currentKeyframe);
    }

    renderer.render(scene, camera);
}
4

0 回答 0