BabylonJS,如何旋转网格代替相机?

时间:2016-02-03 10:25:09

标签: javascript babylonjs

http://babylonjs-playground.com/#A83GX#0

大家好,

我已经和babylonjs一起玩了几天而且很兴奋。但如果我没有问题,为什么我会在这里呢。

附上游乐场链接,现在弧形旋转相机围绕网格旋转。它给人一种幻觉,即网格本身正在旋转,但是当我将对象从(0,0,0)移开时,它开始显示相机正在旋转而不是对象。而不是这样的相机黑客,我想从任何地方旋转网格本身,我用Google搜索并在babylonjs论坛中找到了几个主题,但解决方案并不像相机解决方案那样平滑或轻松。如果有人可以帮助我,那就太好了。欢呼并提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为你要找的是旋转功能?

尝试cylinder.rotate(new BABYLON.Vector3(1, 1, 1), 30); ...它将旋转圆柱网格,在所有轴上旋转30度。这是一个updated playground.

如果您想使用鼠标输入旋转网格,下面是如何使用一些指针事件围绕X和Y轴旋转网格:

var onPointerDown = function (e) {
    // check if we clicked on a mesh
    var pickInfo = scene.pick(scene.pointerX, scene.pointerY);
    if (pickInfo.hit) {
        currentMesh = pickInfo.pickedMesh;
        rotationInit = currentMesh.rotation.y;
    }
};

var onPointerMove = function (e) {

    dragDiff = {
        x: e.x - dragInit.x, 
        y: e.y - dragInit.y                     
    }

    var newRotation = rotationInit;
    newRotation.x = rotationInit.x - dragDiff.x /70
    newRotation.y = rotationInit.y - dragDiff.y /70

    currentMesh.rotation = newRotation;
    return true;
};

您还可以通过添加一些代码(例如收听键,如Shift)围绕Z轴旋转。

Updated playground