繁体   English   中英

如何使用 dat gui 为 three.js 设置自动旋转切换

[英]how to set up autoRotate toggle using dat gui for three.js

我正在制作一个有 3 个行星并排在一起的程序,我可以使用 slider 自行在每个轴上移动它们,我设置了一个 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),
  ]; 

有没有更简单的方法可以做到这一点,我错过了?

我想通了,我只需要将旋转添加到我的渲染 function 中的 if 语句中,然后添加

options{
  rotate: true;
};

在 gui 控件之前

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM