Libgdx arcball摄像机和广告牌

Libgdx arcball摄像机和广告牌,libgdx,Libgdx,我刚刚在libgdx中实现了一个arcball-cam private void rotate(float pitch, float yaw, float roll) { tempQuat.setEulerAngles(pitch, yaw, roll); rotationQuat.mulLeft(tempQuat); } 一切正常,但有一点不好: 我有一些贴花,它总是作为广告牌旋转到相机上: p.decalPoint.setP

我刚刚在libgdx中实现了一个arcball-cam

    private void rotate(float pitch, float yaw, float roll) {
        tempQuat.setEulerAngles(pitch, yaw, roll);
        rotationQuat.mulLeft(tempQuat);
    }

一切正常,但有一点不好:

我有一些贴花,它总是作为广告牌旋转到相机上:

        p.decalPoint.setPosition(p.pos.x, p.pos.y, p.pos.z);
        p.decalPoint.setRotation(camera.direction, camera.up);
现在这个坏了。为什么?我怎样才能解决这个问题

我需要一个像这样的arcball相机:


上述代码运行良好,但公告牌不适用于cam。

您绕过了摄像头,手动更新了矩阵和平截头体成员,但忘记了更新其他成员。因此,您必须更新其他成员,如位置、方向和向上,或者使用相机提供的功能:

不需要调用camera.projection.setToProjection。 不需要调用camera.view.setToLookAt。 对camera.view.rotate的调用将是camera.rotate。 不需要调用camera.combined.set和Matrix4.mul。 不需要调用camera.invProjectionView.set和Matrix4.inv。 不需要调用camera.frustum.update。 添加对camera.update的调用;
更多信息请参见。

我最终使用了两个旋转矩阵和一个camfocusvector作为弧球


四元数不适用于此

专用四元数GetRotatedQuaternion浮动俯仰、浮动偏航、浮动滚动{tempQuat.setEulerAnglespitch、偏航、滚动;rotationQuat.mulLefttempQuat;return rotationQuat;}camera.lookAtAxis.ORIGO;camera.RotategeTrotatedQuaterniongTestureListener.mXAngle,gestureListener.mYAngle,0;camera.update;它并没有像预期的那样工作:也许然后首先解释一下你的预期。尽管这些片段看起来很不一样。所以,如果你有不同的问题,那么最好问一个新问题。这将是一个电弧球相机。所以万向节问题在这里用我的第一个代码解决了。如何从这里更新方向和上方向向量?您可以根据需要更新方向和上方向向量,例如:camera.up.setWhateYouwant;您最初的问题是您发布的代码片段有什么问题,它与万向节无关。您可能需要阅读以下内容:并更新您的问题或提出新问题。已添加新问题
        p.decalPoint.setPosition(p.pos.x, p.pos.y, p.pos.z);
        p.decalPoint.setRotation(camera.direction, camera.up);