不能在 OBJLoader 中补间对象

Can't tween object inside OBJLoader

我对 Three JS 和 Tween JS 真的很陌生。我为我的项目选择了它,但最近一直很沮丧。我在尝试补间 object1 时遇到了麻烦。场景中还有其他对象。 object2, obeject3, 等等。我不确定我是否应该给 mtlLoaders 和 objLoaders 加上数字。

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);

当我将补间动画放在 scene.add( object1 ) 之后并立即启动时,补间动画似乎可以正常工作,但我希望它在单击按钮时启动。感谢任何帮助。

object1onLoad 回调函数范围内的局部变量。看到这个 。而且我还会以如下方式向按钮添加事件侦听器:

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

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