Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 围绕型号'旋转;移动(平移)模型后的s中心_Javascript_Three.js - Fatal编程技术网

Javascript 围绕型号'旋转;移动(平移)模型后的s中心

Javascript 围绕型号'旋转;移动(平移)模型后的s中心,javascript,three.js,Javascript,Three.js,我使用Three.js使用JSONLoader加载JSON模型。我还使用TrackballControls.js进行基本交互。如果移动(平移)对象,旋转的效果会有所不同。移动(平移)后如何将旋转更改为模型的中心 提前感谢。因为轨迹球控件旋转相机而不是网格。平移后旋转似乎很奇怪。因此,不要使用轨迹球控件,而是基于四元数旋转网格。 在mousemove事件中包含此代码 trackBallControls.noRotate = true; if (isDragging ===

我使用Three.js使用JSONLoader加载JSON模型。我还使用TrackballControls.js进行基本交互。如果移动(平移)对象,旋转的效果会有所不同。移动(平移)后如何将旋转更改为模型的中心


提前感谢。

因为轨迹球控件旋转相机而不是网格。平移后旋转似乎很奇怪。因此,不要使用轨迹球控件,而是基于四元数旋转网格。 在mousemove事件中包含此代码

trackBallControls.noRotate = true;
            if (isDragging === true) {
                var deltaMove = {
                    x: event.offsetX -previousMousePosition.x,
                    y: event.offsetY -previousMousePosition.y
                };
                var deltaRotationQuaternion = new THREE.Quaternion()
                        .setFromEuler(new THREE.Euler(toRadians(deltaMove.y * 0.3),
                                toRadians(deltaMove.x * 0.3),
                                0,
                                'XYZ'
                                ));
                if (event.which === 1) {
                    mesh.quaternion.multiplyQuaternions(deltaRotationQuaternion, mesh.quaternion);
                }
            }
            previousMousePosition = {
                x: event.offsetX,
                y: event.offsetY
            };
在鼠标移动事件中,设置为false。 在mousedown中,设置为true

function toRadians(angle) {
            return angle * (Math.PI / 180);
        }

这已经是关于平移后围绕对象中心的旋转。如果可能的话,你可以在JS FIDLE中添加这一点,这将非常有用吗