【发布时间】:2016-10-27 12:57:10
【问题描述】:
我正在使用 Three.js 使用 JSONLoader 加载 JSON 模型。我还在使用 TrackballControls.js 进行基本交互。如果我移动(PAN)对象,旋转的工作方式会有所不同。移动(PAN)后如何将旋转更改为模型的中心?
提前致谢。
【问题讨论】:
标签: javascript three.js
我正在使用 Three.js 使用 JSONLoader 加载 JSON 模型。我还在使用 TrackballControls.js 进行基本交互。如果我移动(PAN)对象,旋转的工作方式会有所不同。移动(PAN)后如何将旋转更改为模型的中心?
提前致谢。
【问题讨论】:
标签: javascript three.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
};
在鼠标向上事件中将 isDragging 设置为 false。 在 mousedown 中将 isDragging 设置为 true。
function toRadians(angle) {
return angle * (Math.PI / 180);
}
【讨论】: