沿Three.js中的样条线(圆)移动对象

Ale*_*nov 4 animation spline tween three.js requestanimationframe

我是Three.js的新手(1天经验大声笑)我想创建一个太阳系模型,所以我得到的行星应该沿着他们的轨迹(圆圈)移动.

function render() { 
    requestAnimationFrame(render); 

    sun.rotation.y += 0.01;
    mercury.rotation.y +=0.03;

    renderer.render(scene, camera); 
} 
render();
Run Code Online (Sandbox Code Playgroud)

我尝试使用样条线,但没有动画,因为我没有得到如何使用requestAnimationFrame与变量(只有这个最简单的增量的东西,如+ = 0.03)

mercury.position = spline.getPoint(t);
Run Code Online (Sandbox Code Playgroud)

也尝试用数学做,但结果相同.不知道如何动画变量.

mercury.position.x = 20*Math.cos(4) + 0;
Run Code Online (Sandbox Code Playgroud)

但我没有任何在JS中动画的经验.所以我的思绪被这个requestAnimationFrame的东西所震撼,我从一些教程中得到的东西,对我来说就像一个黑盒子.

Ale*_*nov 12

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();
Run Code Online (Sandbox Code Playgroud)

找到了解决方案