我目前正在进行一个 THREE.js 项目,但是在缩放对象时遇到了问题。使用 trackball controls 时,它基于渲染的中心位置进行缩放,但我想根据鼠标光标位置进行缩放。我尝试使用 controls.noZoom=true
禁用 trackball controls 下的缩放,并在 mousewheel 下编写了一段代码。结果还不错,但只能放大无法缩小。
mousewheel = function (event) {
event.preventDefault();
event.stopPropagation();
var factor = 15;
var mX = (event.clientX / jQuery(container).width()) * 2 - 1;
var mY = -(event.clientY / jQuery(container).height()) * 2 + 1;
var vector = new THREE.Vector3(mX, mY, 0.5);
zoomstart = vector.unproject(camera);
vector.sub(camera.position);
camera.position.addVectors(camera.position, vector.setLength(factor));
trackBallControls.target.addVectors(trackBallControls.target, vector.setLength(factor));
};
帮我处理这段代码,使其能够根据鼠标位置进行缩放。