我对Three.js很新(1天经验大声笑) 我想创建一个太阳系的模型,所以我得到的行星应该沿着它们的轨迹(圆圈)移动。
function render() {
requestAnimationFrame(render);
sun.rotation.y += 0.01;
mercury.rotation.y +=0.03;
renderer.render(scene, camera);
}
render();
我尝试使用样条线,但未能制作动画,因为我不知道如何使用 requestAnimationFrame with variables(只有这个最简单的增量内容,比如+ = 0.03)
mercury.position = spline.getPoint(t);
也尝试用数学做,但结果相同。不知道如何为变量设置动画。
mercury.position.x = 20*Math.cos(4) + 0;
但是我没有任何使用JS动画的经验。所以我的思绪被这个请求动画框架所震惊,我从一些教程中得到了它,它就像一个黑盒子给我。
答案 0 :(得分:10)
var sunGeo = new THREE.SphereGeometry(12,35,35);
var sunMat = new THREE.MeshPhongMaterial();
sunMat.map = THREE.ImageUtils.loadTexture("image/sunmap.jpg");
var sun = new THREE.Mesh(sunGeo, sunMat);
sun.position.set(0,0,0);
scene.add(sun); // add Sun
var mercuryGeo = new THREE.SphereGeometry(2,15,15);
var mercuryMat = new THREE.MeshPhongMaterial();
mercuryMat.map = THREE.ImageUtils.loadTexture("image/mercurymap.jpg");
var mercury = new THREE.Mesh(mercuryGeo, mercuryMat);
scene.add(mercury); // add Mercury
var t = 0;
function render() {
requestAnimationFrame(render);
t += 0.01;
sun.rotation.y += 0.005;
mercury.rotation.y += 0.03;
mercury.position.x = 20*Math.cos(t) + 0;
mercury.position.z = 20*Math.sin(t) + 0; // These to strings make it work
renderer.render(scene, camera);
}
render();
找到解决方案