用指南针旋转3D对象(空间)

时间:2015-03-03 20:09:23

标签: android augmented-reality spatial jmonkeyengine

我在Android应用中使用jMonkey生成了3D叠加层。一切都很好 - 我的忍者模型走在循环中。 Awsome!

现在我想根据手机的方向旋转相机。我认为罗盘是最好的方法,但不幸的是我有很多问题。所以我走了

我创建了在活动中调用的方法

public void rotate(float x, float y, float z) {
    Log.d(TAG, "simpleUpdate: Nowa rotacja: " + y);
    newX = x;
    newY = y;
    newZ = z;
    newPosition = true;
}

简单更新'方法I以这种方式管理

    if(newPosition && ninja != null) {
        Log.d(TAG, "simpleUpdate: rotacja: " + newY);
        ninja.rotate((float)Math.toRadians(newX), (float)Math.toRadians(newY), (float)Math.toRadians(newZ));
        newPosition = false;
    }

在我的活动中,我正在检查手机是否已移动

            if(lastAzimuth != (int)azimuthInDegress) {
                lastAzimuth = (int)azimuthInDegress;

我转向int因此失真不会是一个大问题

                if ((com.fixus.towerdefense.model.SuperimposeJME) app != null) {
                    ((com.fixus.towerdefense.model.SuperimposeJME) app).rotate(0f, azimuthInDegress, 0f);
                }

目前我想只在Y轴上旋转

现在主要的问题是旋转更像是跳转。当我移动我的手机并且我有6度的差异(我在我的日志中看到这个)时,模型旋转90度并且他转回去。这与我的康帕斯的轮换或改变无关。

有什么想法吗?

更新

我想我明白了。方法旋转,从当前状态旋转,值I设置。所以它看起来更像old Y rotate + new value。因此,我设置当前值和旧值之间的差异,现在看起来很好。这是好方法吗?

0 个答案:

没有答案