javascript - 无法在 OBJLoader 内补间对象

标签 javascript three.js tween.js

我对 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 回调函数范围内的局部变量。看这个SO answer 。我还会向按钮添加一个事件监听器,如下所示:

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

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

关于javascript - 无法在 OBJLoader 内补间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876273/

相关文章:

javascript - 如何在 Javascript 中将数组对象转换为 XML

javascript - JSON 到 CSV/XLS 不会在 IE 上保存文件

three.js MeshBasicMaterial 这个颜色为什么不一样,看图

javascript - 沿着另一个对象移动一个对象,在 tween.js 中创建动画

javascript - CreateJS 使用 Tween.js 增加阴影 offsetX

javascript - 在 tween.js 中创建无限动画

javascript - 如何在node.js中以非阻塞方式让连接等待?

javascript - 类型错误 : undefined is not an object (evaluating '_reactNative.Image.propTypes.resizeMode' )

javascript - Three.js 中的平面与立方体重叠

javascript - WebGl - 未加载纹理