三j-单击“移动相机”不工作
我是三名J的新手,希望有人可以提供帮助。
当我单击按钮时,我正在尝试移动相机,但是什么也没有发生,也没有错误。
我拥有的功能应该在各个方向上移动200个相机,但是没有这样的效果:
var button = document.getElementById("button");
button.addEventListener("click", function() {
var tween1 = new TWEEN.Tween(camera.position)
.to({
x : 200,
y : 200,
z : 200
} , 1000)
.easing(TWEEN.Easing.Linear.None)
.start();
});
我在做什么错?
这是整个三js脚本以提供更好的上下文:
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
camera.position.z = 4;
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
controls.dampingFactor = 0.25;
controls.enableZoom = true;
var keyLight = new THREE.DirectionalLight(new THREE.Color('hsl(30, 100%, 75%)'), 1.0);
keyLight.position.set(-100, 0, 100);
var fillLight = new THREE.DirectionalLight(new THREE.Color('hsl(240, 100%, 75%)'), 0.75);
fillLight.position.set(100, 0, 100);
var backLight = new THREE.DirectionalLight(0xffffff, 1.0);
backLight.position.set(100, 0, -100).normalize();
scene.add(keyLight);
scene.add(fillLight);
scene.add(backLight);
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setTexturePath('assets/');
mtlLoader.setPath('assets/');
mtlLoader.load('r2-d2.mtl', function (materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath('assets/');
objLoader.load('object.obj', function (object) {
scene.add(object);
object.position.y -= 0;
});
});
var animate = function () {
requestAnimationFrame( animate );
controls.update();
renderer.render(scene, camera);
};
animate();
var button = document.getElementById("button");
button.addEventListener("click", function() {
var tween1 = new TWEEN.Tween(camera.position)
.to({
x : 200,
y : 200,
z : 200
} , 1000)
.easing(TWEEN.Easing.Linear.None)
.start();
});
I'm new with ThreeJS, so hopefully someone can help.
I'm trying to move my camera when I click the button, but nothing happens and I have no errors.
This is the function I have that should move camera by 200 in all directions, but no such effect:
var button = document.getElementById("button");
button.addEventListener("click", function() {
var tween1 = new TWEEN.Tween(camera.position)
.to({
x : 200,
y : 200,
z : 200
} , 1000)
.easing(TWEEN.Easing.Linear.None)
.start();
});
What am I doing wrong?
Here is the entire ThreeJS script for better context:
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
camera.position.z = 4;
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
controls.dampingFactor = 0.25;
controls.enableZoom = true;
var keyLight = new THREE.DirectionalLight(new THREE.Color('hsl(30, 100%, 75%)'), 1.0);
keyLight.position.set(-100, 0, 100);
var fillLight = new THREE.DirectionalLight(new THREE.Color('hsl(240, 100%, 75%)'), 0.75);
fillLight.position.set(100, 0, 100);
var backLight = new THREE.DirectionalLight(0xffffff, 1.0);
backLight.position.set(100, 0, -100).normalize();
scene.add(keyLight);
scene.add(fillLight);
scene.add(backLight);
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setTexturePath('assets/');
mtlLoader.setPath('assets/');
mtlLoader.load('r2-d2.mtl', function (materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath('assets/');
objLoader.load('object.obj', function (object) {
scene.add(object);
object.position.y -= 0;
});
});
var animate = function () {
requestAnimationFrame( animate );
controls.update();
renderer.render(scene, camera);
};
animate();
var button = document.getElementById("button");
button.addEventListener("click", function() {
var tween1 = new TWEEN.Tween(camera.position)
.to({
x : 200,
y : 200,
z : 200
} , 1000)
.easing(TWEEN.Easing.Linear.None)
.start();
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
与tween.js一起工作时,要做的第一件事是将
tween.update()
添加到动画循环中。
The first thing to do, when you work with Tween.js, is add
TWEEN.update()
to your animation loop.