我对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 )
之后并立即启动时,补间似乎可以正常工作,但是我希望它在单击按钮时开始。任何帮助表示赞赏。 最佳答案
object1
是onLoad
回调函数范围内的局部变量。参见此SO answer。而且我还可以通过以下方式将事件监听器添加到按钮:
document.getElementById("engage").addEventListener("click", engage, false);
function engage() {
test.start();
};
关于javascript - 无法补间OBJLoader中的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40876273/