Three.js变换控件 - 如何仅显示两个箭头

时间:2017-12-27 10:48:36

标签: javascript three.js

我必须仅使用场景中的变换控件在XY方向上仅显示两个箭头或变换对象。

1 个答案:

答案 0 :(得分:2)

通常情况下,我会问你到目前为止所尝试的内容,但没有关于此控件的文档,如果你不知道这是一个相当复杂的对象你正在寻找什么......

假设您有一个名为TranformControls的{​​{1}}。

control是一个数组,代表各种" gizmos",索引control.children正在翻译。那" gizmo"也有3个孩子,但只有第一个与这个答案有关。所以,我们不是在看0,它也有孩子,但这就像我们一样深,因为这些孩子是代表各种轴控制的网格。作为参考,我们只会查看:control.children[0].children[0]

TransformControls.js列出了他们的设置配置,如下所示:

control.children[0].children[0].children

控件采用这些定义并按顺序将它们添加到//three.js r89 this.handleGizmos = { X: [ [new THREE.Mesh(arrowGeometry, new GizmoMaterial({ color: 0xff0000 })), [0.5, 0, 0], [0, 0, -Math.PI / 2] ], [new THREE.Line(lineXGeometry, new GizmoLineMaterial({ color: 0xff0000 }))] ], Y: [ [new THREE.Mesh(arrowGeometry, new GizmoMaterial({ color: 0x00ff00 })), [0, 0.5, 0]], [new THREE.Line(lineYGeometry, new GizmoLineMaterial({ color: 0x00ff00 }))] ], Z: [ [new THREE.Mesh(arrowGeometry, new GizmoMaterial({ color: 0x0000ff })), [0, 0, 0.5], [Math.PI / 2, 0, 0] ], [new THREE.Line(lineZGeometry, new GizmoLineMaterial({ color: 0x0000ff }))] ], XYZ: [ [new THREE.Mesh(new THREE.OctahedronGeometry(0.1, 0), new GizmoMaterial({ color: 0xffffff, opacity: 0.25 })), [0, 0, 0], [0, 0, 0] ] ], XY: [ [new THREE.Mesh(new THREE.PlaneBufferGeometry(0.29, 0.29), new GizmoMaterial({ color: 0xffff00, opacity: 0.25 })), [0.15, 0.15, 0]] ], YZ: [ [new THREE.Mesh(new THREE.PlaneBufferGeometry(0.29, 0.29), new GizmoMaterial({ color: 0x00ffff, opacity: 0.25 })), [0, 0.15, 0.15], [0, Math.PI / 2, 0] ] ], XZ: [ [new THREE.Mesh(new THREE.PlaneBufferGeometry(0.29, 0.29), new GizmoMaterial({ color: 0xff00ff, opacity: 0.25 })), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0] ] ] }; ,这样组成X轴控件的网格就是索引0和1。

这意味着要关闭X轴控制,您需要设置:

control.children[0].children[0].children

同样,要关闭YZ平面控制,您可以设置:

control.children[0].children[0].children[0].visible = false;
control.children[0].children[0].children[1].visible = false;

设置这些网格的可见性就足够了,因为用于确定您正在使用哪个控件的control.children[0].children[0].children[8].visible = false; 将忽略不可见的网格物体。随着网格的消失,您还会删除用户对该轴/平面可转换的了解。