Я использую периодический код мистера Дуба c в своем веб-приложении:
https://threejs.org/examples/css3d_periodictable.html
Я использую его в Helix просмотр. Когда я поворачиваю объект влево, я также сдвигаю положение Y камеры на определенную величину. Мое желание состоит в том, чтобы создать впечатление, что спираль штопор вертикально вверх и вниз при вращении камеры. Это код, который я использую, где angle и panAmount - это константы, управляющие частотой вращения и вертикального панорамирования в секунду:
let g_RotationMatrix = new THREE.Matrix4();
g_RotationMatrix.makeRotationY(angle);
// Apply matrix like this to rotate the camera.
self.object.position.applyMatrix4(g_RotationMatrix);
// Shift it vertically too.
self.object.position.y += panAmount;
// Make camera look at the target.
self.object.lookAt(self.target);
У меня проблема в том, что с точки зрения камеры объект наклоняется к вам и от вас, соответственно, в зависимости от направления вращения, когда камера смещается вертикально. Это имеет смысл для меня, потому что я предполагаю, что функция lookat () заставляет камеру смотреть в центр цели, а не в точку на цели, которая находится ближе всего к ней, поэтому камера должна наклоняться, чтобы сфокусироваться на центре масс цели. Я вижу тот же эффект, когда использую мышь для вертикального панорамирования с помощью элементов управления Orbit. Я полагаю, что другой способ описать эффект состоит в том, что объект отображается с высотой вверх и вниз при вертикальном смещении камеры.
Вместо этого мне нужен эффект омывателя окна на автоматическом поднимите лифт вверх и вниз по стороне здания, при этом сторона здания будет выглядеть идеально плоской для камеры независимо от текущего положения Y камеры.
Как мне добиться этого эффекта с камерой?