gpt4 book ai didi

animation - 在 Three.js 中沿样条(圆)移动对象

转载 作者:行者123 更新时间:2023-12-04 22:20:44 24 4
gpt4 key购买 nike

我对 Three.js 还很陌生(1 天体验,哈哈)
我想创建一个太阳系模型,所以我得到了应该沿着它们的轨迹(圆圈)移动的行星。

function render() { 
requestAnimationFrame(render);

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

renderer.render(scene, camera);
}
render();

我尝试为此使用样条线,但未能制作动画,因为我不知道如何使用
requestAnimationFrame 带变量(只有这个最简单的增量东西,比如 +=0.03)
mercury.position = spline.getPoint(t);

也尝试用数学来做,但结果相同。不知道如何动画变量。
mercury.position.x = 20*Math.cos(4) + 0;

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

最佳答案

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();

找到了解决办法

关于animation - 在 Three.js 中沿样条(圆)移动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23541879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com