Переключение камеры с Perspective на Orthographic

13 ноября 2017 05:00
Добрый день,

Столкнулся с проблемой изменения типа камеры: нужно переключать вид на сцену по внешнему событию (нажатию кнопки) с "3D" на "вид сверху".
Нашел все необходимое для изменения позиции камеры и типа ее движения, но "вид сверху" неполноценен без Orthographic Lens

Делаю примерно так:
// получаю активную камеру
const cam = this.m_scenes.get_active_camera();
// если она не статическая (второй вариант = Target)
if (!this.cam.is_static_camera(cam)) {
  // устанавливаю камеру как статическую, смотрящую сверху вниз
  this.cam.static_setup(cam, {
    pos: [0,0,12], 
    look_at: [0,0,0]
  });
  // здесь должно быть изменение Lens=Orthographic
  ...
}

Есть ли возможность такого изменения через API?
Может быть, такого пока нет в публичном API, но теоретически это возможно, покопавшись в коде API и добавив интерфейс вручную? (если так, то подскажите, пожалуйста, куда копать)
13 ноября 2017 15:01
К сожалению сейчас нет возможности переключения типа камеры, однако, имеется метод set_projection, который вторым параметром принимает матрицу проекции, которую можно получить с использованием следующих методов: ortho, perspective, perspectiveFromFieldOfView, frustum. Таким образом можно изменять проекцию, но тип камеры останется прежним, и логика некоторого функционала будет работать некорректно (например, привязка к камере).
Команда Blend4Web
kirill@blend4web.com
17 ноября 2017 21:24
Спасибо, это, действительно, похоже на то, что нужно!

К сожалению, я довольно слабо разбираюсь в вопросе и не могу вручную задать необходимые параметры для проекций.
Подскажите, пожалуйста, есть ли возможность получить все необходимые для получения матрицы параметры из действующей камеры? - это было бы очень полезно для задачи переключения

Например,
  • есть perspective камера - как узнать fovy, aspect, near, far?
  • есть ortho камера - как узнать left, right, bottom, top, near, far?
22 ноября 2017 18:31
Ответ на сообщение пользователя frown
Спасибо, это, действительно, похоже на то, что нужно!

К сожалению, я довольно слабо разбираюсь в вопросе и не могу вручную задать необходимые параметры для проекций.
Подскажите, пожалуйста, есть ли возможность получить все необходимые для получения матрицы параметры из действующей камеры? - это было бы очень полезно для задачи переключения

Например,
  • есть perspective камера - как узнать fovy, aspect, near, far?
  • есть ortho камера - как узнать left, right, bottom, top, near, far?

В основном курить вот этор раздел
https://www.blend4web.com/api_doc/module-camera.html
Обратить внимание на функции "get_".
Near|Far если не ошибаюсь задаются изначально в блендере.
Координаты камеры это те же координаты объекта.
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.