BabylonJS,如何旋转网格而不是相机

BabylonJS, how to rotate mesh instead of the camera?

本文关键字:网格 相机 旋转 何旋转 BabylonJS      更新时间:2023-09-26

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

大家好

我已经玩巴比伦几天了,对此感到兴奋。但是,如果我没有问题,我为什么要在这里。

连接了游乐场链接,现在一个弧形旋转摄像机围绕网格旋转。它给人一种网格本身正在旋转的错觉,但是当我将对象移离 (0,0,0) 时,它开始显示相机正在旋转而不是对象。与其进行这样的相机黑客攻击,我想从任何地方旋转网格本身,我在 babylonjs 论坛上搜索并找到了几个主题,但解决方案并不像相机解决方案那样流畅或轻松。如果有人能在这方面帮助我,那就太好了。干杯,提前感谢您的帮助。

我想你要找的是旋转功能?

尝试cylinder.rotate(new BABYLON.Vector3(1, 1, 1), 30);...它将在所有轴上旋转圆柱网格 30 度 iirc。这是一个更新的游乐场。

如果要使用鼠标输入旋转网格,下面介绍了如何使用一些指针事件围绕 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 轴旋转。

更新的游乐场