Вопрос - ответ

02 марта 2016 18:05
Тут завалялся вопрос, пожалуй, отвечу.

И еще появился вопрос.
Попробовал ортогональную камеру.
С ней не работает camera.calc_ray.

Т.е. при камере с перспективой, чтобы переместить объект, куда показывает курсор на нужной плоскости, мы
используем calc_ray для поиска точки пересечения луча камеры с нужной плоскостью.
В случае с ортогональной камерой вроде как пересечение искать и не надо наверно - куда ткнули, туда и ставим объект видимо. Но как преобразовать координаты мыши в координаты сцены, чтобы переместить туда объект (при ортогональной камере, которая смотрит на сцену строго перпендикулярно сверху)?

Да, calc_ray не рассчитан на использование с орто-камерой, но мы решили добавить эту возможность в ближайшем релизе.

А пока можно посчитать самому вручную. Найти точку пересечения будет довольно просто. Для перевода координат мыши в координаты сцены потребуется знать размеры фрустума ("пирамида видимости" как-то плохо звучит ) камеры. Метод get_ortho_scale вернет его вертикальный размер в метрах. С канвас-контейнера берем размеры вьюпорта в пикселях. Дальше считаем коэффициент соотношения :

var camera = m_scenes.get_active_camera();
var v_size = m_cam.get_ortho_scale(camera);

var container = m_cont.get_container();
var coeff = v_size / container.offsetHeight;


Текущая позиция камеры соответствует центру вьюпорта, так что смещение от центра в пикселях можно перевести в смещение относительно позиции камеры в метрах. Так мы получим координаты нужной точки в горизонтальной плоскости, проходящей через камеру. Если плоскость, с которой ищется пересечение - горизонтальная, то можно легко спроецировать точку на неё, если нет - то можно воспользоваться методом line_plane_intersect.

Да, ещё, если камера будет вращаться, то понадобится учитывать её кватернион поворота.
02 марта 2016 18:09
Вот скрины. Сделал файл в blendere. Вывел сразу в html. Второй закинул в менеджер проектов получил плоскость. Как с этим бороться?
02 марта 2016 18:10
Тут завалялся вопрос, пожалуй, отвечу.
Спасибо большое, Иван. Пока постараюсь дождаться в одном из релизов, чтобы потом не переделывать, если не дождусь, буду вникать в квантерион
02 марта 2016 18:25

Вот скрины. Сделал файл в blendere. Вывел сразу в html. Второй закинул в менеджер проектов получил плоскость. Как с этим бороться?
Я говорил про скриншот консоли браузера, а не просто вид 3D контента в нем. Ну или пришлите сам blend файл.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
02 марта 2016 18:40
Вот файл.
02 марта 2016 18:42
В менеджер проектов я пересохраняю в файл json
04 марта 2016 00:21
Вопрос. Как анимировать вращения объектов по локальным осям и локальным раздельно? Пример: самолёт летает по сцене, а пропеллер крутится вдоль своей локальной оси.
04 марта 2016 06:14

Ответ на сообщение пользователя Андрей
Вопрос. Как анимировать вращения объектов по локальным осям и локальным раздельно? Пример: самолёт летает по сцене, а пропеллер крутится вдоль своей локальной оси.


1 Action propeller ) vybiraesh object Propeller Ctrl+ object Samolet > Ctrl+p Object
Акылбек
04 марта 2016 10:36
Спасибо, именно то что мне нужно было!
04 марта 2016 10:54
Ну, или же просто на арматуру все посадить и анимировать кости Так будет проще, имхо
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.