Мы используем файлы cookie, чтобы упростить навигацию на этом сайте. Если вы даете свое согласие на использование файлов cookie и обработку ваших персональных данных, нажмите «Принимаю».

Как менять позицию камеры вслед за мышкой. [РЕШЕНО]

Домой Форумы Для программистов Как менять позицию камеры вслед за мышкой. [РЕШЕНО]

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #14547
    webgl
    Customer

    Суть в том что камера Flying, она находится в (0,0,0), надо менять position вслед за мышью для эффекта паралакса (если перед нами объекты на разном удалении от камеры), тоесть камера должна двигаться влево/вправо, принимая mouse.x и вверх/вниз, принимая mouse.y. Вверх/вниз проблем нет, эта ось не зависит от поворота камеры, поэтому это решается легко – app.camera.position.y = mouse.y. И вроде бы с влево вправо должно быть не слишком сложно, просто делать вектор, который будет принимать в vec.x = mouse.x, а затем просто поворачивать этот вектор на угол поворота камеры по вертикальной оси, но на деле у меня не выходит этого сделать.

    let rt = app.camera.rotation
    
    let v1 = new v3d.Vector3(mouse.x*6,mouse.y*6,0)
    let v2 = new v3d.Vector3();
    v2.copy(v1)
    v2.applyAxisAngle(new v3d.Vector3(0,1,0), rt._y);
    app.camera.position.set(v2.x,v2.y,v2.z)

    в этом случае, если я смотрю ровно по оси X или Z, всё работает как надо, а если смотрю в средние значения то камера двигается вперёд/назад, у меня не хватает компетенции, чтобы решить эту задачу.
    Ощущение что applyAxisAngle для angle требуются не те значения которые даёт app.camera.rotation._y.

    #14549

    Ощущение что applyAxisAngle для angle требуются не те значения которые даёт app.camera.rotation._y.

    вроде, код правильный, проверил на простой сцене – работает

    можно ещё вместо

    
    v2.applyAxisAngle(new v3d.Vector3(0,1,0), rt._y);
    

    попробовать

    
    v2.applyQuaternion(app.camera.quaternion);
    

    – должно то же самое делать

    Co-founder and lead developer at Soft8Soft.

    #14550
    webgl
    Customer

    С applyQuaternion работает, и это странно, вроде на первых подступах пробовал этот способ, ну да ладно. Спасибо.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Для ответа в этой теме необходимо авторизоваться.