我正在尝试创建一个Gizmo(3D
立方体),用于显示3D
空间中相机的旋转。我正在使用three.js
。
我创建了一个立方体并将其指定为主摄像机的子节点。通过这种结构,我可以在局部世界中旋转立方体,减去它的全局旋转。因此,它消除了相机旋转对立方体的影响,并且立方体仍然朝向世界坐标。
问题是我正在使用透视摄像头,我的立方体位于屏幕的左下角。这会在立方体视图中创建深度,并提供有关世界空间中摄像机方向的错误信息。
以下是一些视图示例
这是一种消除相机旋转的方法。
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material =
new THREE.MeshLambertMaterial({color: 0x282828, transparent: true, opacity:
0.4});
var cube = new THREE.Mesh( geometry, material );
camera.add(cube)
this.rotationUpdate=function(){
var worldRot=cube.getWorldRotation();
worldRot._x+=offset;
worldRot._y+=offset;
worldRot._z+=offset;
cube.rotateX(-worldRot._x);
cube.rotateY(-worldRot._y);
cube.rotateZ(-worldRot._z);
debugger;
}
所以我的问题是,如何操作旋转方法,使立方体在正交相机上被投影。