Я думаю проще добавить ограничения к контролам движка. Можно вот такой функцией:
function setupVertCons(camera, verticalMin, verticalMax) {
var ctl = camera.controls;
if (ctl !== null) {
ctl.constrainVertical = true;
ctl.verticalMin = verticalMin;
ctl.verticalMax = verticalMax;
var CAM_VIEW_LOCAL = new v3d.Vector3(0, 0, -1);
var _dir = new v3d.Vector3();
var _sph = new v3d.Spherical();
ctl.updateVertCons = function() {
if (ctl.constrainVertical) {
_dir.copy(CAM_VIEW_LOCAL).applyQuaternion(camera.quaternion).normalize();
_sph.setFromVector3(_dir);
_sph.phi = v3d.MathUtils.clamp(_sph.phi, ctl.verticalMin,
ctl.verticalMax);
_sph.makeSafe();
_dir.setFromSpherical(_sph);
_dir.add(camera.position);
camera.lookAt(_dir);
}
}
}
}
Её нужно вызвать для настройки камеры, а потом зарегистрировать колбек, чтобы они срабатывали каждый кадр:
function runCode(app) {
var cam = app.camera;
setupVertCons(cam, 1/4 * Math.PI, 3/4 * Math.PI);
app.renderCallbacks.push(function() {
if (cam.controls.updateVertCons !== undefined) {
cam.controls.updateVertCons();
}
});
}
Co-founder and lead developer at Soft8Soft.