我在移动鼠标时尝试旋转3D实例。我使用正交相机,我在背景中有一个平铺的isomap。
[编辑]我使用此代码:
public boolean mouseMoved (int x, int y) {
Vector3 direction = new Vector3();
Vector3 worldCoordinate = cam.unproject(new Vector3(x, y, 0));
direction = (worldCoordinate).sub(position).nor();
direction.set(-direction.x, -direction.y, -direction.z);
Matrix4 instanceRotation = instance.transform.cpy().mul(instance.transform);
instanceRotation.setToLookAt(direction, new Vector3(0,-1,0));
instanceRotation.rotate(0, 0, 1, 180);
quat = new Quaternion();
instanceRotation.getRotation(quat);
instance.transform.set(position, quat);
return false;
}
现在,实例跟随光标,但在所有轴上。我只想打开Y轴。我可以改变quat.x = 0和quat.z = 0来锁定旋转。之后,旋转仅适用于Y轴。但是,如果我的光标位于屏幕顶部,模型应该翻转,但无论光标位于何处,它都会保持面对。
我不知道如何转换坐标以告诉我的旋转它需要翻身。而以这种方式修改quat并不是很优雅
编辑:一些图片用于说明我想要的内容
在这里,光标位于屏幕底部,模型转向方向:
此处,模型不会翻转,就像光标位于屏幕底部一样: