我正在用Three.js
寫一個簡單的太陽系。此時我已經增加了3顆行星,每個行星都在它的軸上旋轉。在中間我加入了太陽。以不同的速度在幾個軌道上旋轉行星
- 對於每個星球我創建一個不同的組(
mesh
); - 所有的行星都在一個主組(
Object3D
);
我可以:
- 在其軸線上旋轉,每一個行星(行星使用對象/組);
- 在他們的軌道上旋轉每個行星(使用主要物體/組)。
的問題是,當使一個旋轉的例如1
主組中,每一個行星由1移動例如:
如果我旋轉通過180的行星度,每個行星都在他們的軌道上旋轉180度。那麼我怎樣才能以不同的速度旋轉每個星球?
我想,不需要主組,我必須寫一個算法,並將其用於每個星球,但我不知道這樣的算法是如何工作的。有人能幫助我嗎?代碼
重要部分:
...主循環:
function loop() {
jQuery.each(planets, function(key, value) {
value.rotation.y += 0.005;
value.rotation.x += 0.005;
});
group.rotation.z -= 0.005;
requestAnimationFrame(loop);
}
...添加星球:
var data = {
0: {
texture: "images/telos.png",
radius: 10,
segments: 20
},
1: {
texture: "images/ako.png",
radius: 8,
segments: 20
},
2: {
texture: "images/alba.png",
radius: 21,
segments: 20
}
};
var planets = {}
jQuery.each(data, function(key, value) {
var planet = creator.planet({
texture: value.texture,
radius: value.radius,
segments: value.segments
});
planet.position.set(key * 60, 0, 0);
planets[ key ] = planet;
group.add(planets[ key ]);
});
任何提示嗎?
你能用行星的信息CONSOLE.LOG你'data'變量 – Vikram
這只是一個對象。我編輯了主要信息。 – guest459473