首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用适用于three.js的dat gui设置autoRotate切换

如何使用适用于three.js的dat gui设置autoRotate切换
EN

Stack Overflow用户
提问于 2020-12-07 05:57:02
回答 1查看 69关注 0票数 3

我正在制作一个有3个行星的程序,我可以使用滑块在每个轴上单独移动它们,我设置了一个autoRotate,但我不能在控件上使用它作为切换。

到目前为止,下面是我的gui控件:

代码语言:javascript
复制
  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做的,它在控件之外工作,但我想让它在命令下工作。

代码语言:javascript
复制
  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),
  ]; 

有没有一种更简单的方法可以做到这一点,我没有呢?

EN

回答 1

Stack Overflow用户

发布于 2020-12-07 06:51:49

我弄清楚了,我只需要把旋转添加到我的渲染函数的if语句中,然后添加

代码语言:javascript
复制
options{
  rotate: true;
};

在gui控件之前

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65173517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档