当Mesh.position.x为负

时间:2016-12-14 01:41:50

标签: camera three.js rotation cube

我是ThreeJS的dummie \ newbie。 :)

无论如何,我认为这是设置网格位置时ThreeJS的默认行为。

我试图在ThreeJS中设计\复制一个类似于Project的工作分解结构(WBS)的结构。见下图。 WBS中的所有box \ cubes都是对齐的。

enter image description here

这是我在ThreeJS中的代码所发生的事情:

enter image description here

我创建了一个名为createCube的辅助函数,它接受像这样的对象作为参数:

var gestaoProjeto = createCube(
{ face1: { color: 'yellow', text: '1', textColor: 'yellow' },
  face2: { text: '2', textColor: 'blue' },
  face3: { text: '3', textColor: 'black' },
  face4: { text: '4', textColor: 'cyan' },
  face5: { color: 'red', text: 'Gestão do Projeto', textColor: 'yellow' },
  face6: { text: '6', textColor: 'gray' },
  x: -400,
  y: 125
});

我希望将立方体的红脸放在相机\用户面前,并且只有当用户与场景交互时才让它与OrbitControls一起移动。如上图所示,部分face1(黄色)已经显示,face5已旋转。

如果我这样做:

gestaoProjeto.rotation.set(-0.1,0.5,0);

它旋转但不好,我必须根据它们的位置旋转每个立方体。

是否有可能实现我想要的"自动化"?

1 个答案:

答案 0 :(得分:1)

ThreeJS IRC Channel的用户bai回答并且是现场点击。

他告诉我使用OrthographicCamera代替样本中大部分时间使用的PerspectiveCamera

对于那些对某些背景感兴趣的人,这里有一个关于相机类型的非常好的解释:

  

为了渲染这些网格,必须放置摄像机以告诉渲染器应该如何查看它们。 Three.js有两种类型的摄像头,正交和透视。正交投影消除了透视,无论距离相机有多远,都能以相同的比例显示所有物体。这对于工程非常有用,因为透视不同的尺寸可能使得难以区分对象的大小。您可以在任何方向识别用于组装家具或模型车的正交投影。透视摄像机包括其相对于场景的位置的属性,并且顾名思义,可以基于属性与摄像机的距离来渲染模型的大小。   摄像机控制场景的视锥体或可视区域。视锥体可以被描绘为由其近和远属性(区域开始和停止的平面)定义的框,以及定义框的尺寸的“纵横比”。

在场景中不会绘制任何存在于视锥体空间之外的对象 - 但仍会被渲染。

来源:https://www.smashingmagazine.com/2013/09/introduction-to-polygonal-modeling-and-three-js/#cameras