我正在制作一个有3个行星的程序,我可以使用滑块在每个轴上单独移动它们,我设置了一个autoRotate,但我不能在控件上使用它作为切换。
到目前为止,下面是我的gui控件:
const autoRotate = {
rotate: false
};
function updateCamera() {
camera.updateProjectionMatrix();
}
const gui = new dat.GUI();
gui.add(camera, 'fov', 1, 180).name('zoom').onChange(updateCamera);
//rotate moon
const moonFolder = gui.addFolder('Rotate Moon');
moonFolder.add(moon.rotation, "x", 0, Math.PI * 2, 0.01);
moonFolder.add(moon.rotation, "y", 0, Math.PI * 2, 0.01);
moonFolder.add(moon.rotation, "z", 0, Math.PI * 2, 0.01);
// rotate earth
const earthFolder = gui.addFolder('Rotate Earth');
earthFolder.add(earth.rotation, "x", 0, Math.PI * 2, 0.01);
earthFolder.add(earth.rotation, "y", 0, Math.PI * 2, 0.01);
earthFolder.add(earth.rotation, "z", 0, Math.PI * 2, 0.01);
// rotate mars
const marsFolder = gui.addFolder('Rotate Mars');
marsFolder.add(mars.rotation, "x", 0, Math.PI * 2, 0.01);
marsFolder.add(mars.rotation, "y", 0, Math.PI * 2, 0.01);
marsFolder.add(mars.rotation, "z", 0, Math.PI * 2, 0.01);
gui.add(autoRotate, "rotate").name("autoRotate").onChange(updateCamera);这是我为autoRotate做的,它在控件之外工作,但我想让它在命令下工作。
const rotate = [
moon.rotateX(0.002),
moon.rotateY(0.01),
moon.rotateZ(0.001),
earth.rotateX(-0.002),
earth.rotateY(0.01),
earth.rotateZ(0.002),
mars.rotateX(0.004),
mars.rotateY(-0.01),
mars.rotateZ(0.001),
]; 有没有一种更简单的方法可以做到这一点,我没有呢?
发布于 2020-12-07 06:51:49
我弄清楚了,我只需要把旋转添加到我的渲染函数的if语句中,然后添加
options{
rotate: true;
};在gui控件之前
https://stackoverflow.com/questions/65173517
复制相似问题