javascript - 如何使用 dat gui for three.js 设置 autoRotate 切换
问题描述
我正在制作一个有 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),
];
有没有更简单的方法可以做到这一点,我错过了?
解决方案
i figured it out, i just had to add the rotations into an if statement in my render function, and added
options{
rotate: true;
};
before the gui controls
推荐阅读
- reactjs - 方法“props”意味着在 1 个节点上运行。找到了 0 个
- spring-boot - 自定义 FlatFileItemReader 继续读取以前的作业状态 - 不重置行数
- linux - 有谁知道为什么会发生这种 ABRT?
- python - Django自动增量模型
- c++ - Vulkan,单渲染通道,2 个着色器,不同数量的输出
- java - CompleteableFuture 代码执行返回错误
- vue.js - 访问计算的 VueJS 的先前值
- gobblin - 如何独立调试 Gobblin?
- sql - 如何进行原始 SQL 查询,选择与区号相关联的人口最多的城市(有重复的区号)
- kotlin - ViewModelProviders 在 2.2.0 中已弃用