无法在OBJLoader中补间对象

时间:2016-11-29 21:41:59

标签: javascript three.js tween.js

我是Three JS和Tween JS的新手。我为我的项目选择了它并且最近感到沮丧。我一直在尝试补间object1。场景中还有其他对象。 object2,obeject3等。我不确定是否应该向mtlLoaders和objLoaders添加数字。

SigningCertificate

这是我的补间。我不希望补间立即启动,因为我希望它在按下按钮时启动。

var mtlLoader = new THREE.MTLLoader( );
mtlLoader.transparency = true;
mtlLoader.setBaseUrl( 'assets/' )
mtlLoader.setPath( 'assets/' );
mtlLoader.load( 'exterior.mtl', function ( materials ) 
{
materials.side = THREE.DoubleSide;
materials.preload();

materials.opacity = 0
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'assets/' );
objLoader.load( 'exterior.obj', function ( object1 ) 

{
object1.position.y = .01
object1.position.z = -8
object1.scale.set( .04, .04, .04 );
object1.castShadow = true;
object1.receiveShadow = true;


scene.add( object1 );


}, onProgress, onError );

});

document.getElementById("engage").onclick =     function engage()
{
test.start()
};

当我把它放在var test = new TWEEN.Tween(object1.position).to({ x: 1, y: 0, z: 0 }, 2000); test.easing(TWEEN.Easing.Quartic.InOut); 之后并且立即启动它时,补间效果似乎有效,但我希望它在单击按钮时启动。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

object1onLoad回调函数范围内的局部变量。见SO answer。此外,我还会按照以下方式向按钮添加事件监听器:

document.getElementById("engage").addEventListener("click", engage, false);

function engage() {
    test.start();
};