Вопрос - ответ
29 июня 2017 14:55
29 июня 2017 17:57
29 июня 2017 18:55
Для этого нужно вычесть из координат камеры координаты пустышки? Как найти их координаты?Если нужно использовать текущее смещение между камерой и пустышкой, то можно вот так:
var _vec3_tmp = new Float32Array(3);
var _vec3_tmp2 = new Float32Array(3);
var _vec3_tmp3 = new Float32Array(3);
var cam_trans = m_trans.get_translation(cam_obj, _vec3_tmp);
var empty_trans = m_trans.get_translation(empty_obj, _vec3_tmp2);
var result_vec = m_vec3.subtract(cam_trans, empty_trans, _vec3_tmp3);
29 июня 2017 20:22
30 июня 2017 21:06
Ответ на сообщение пользователя Иван Любовников
Если нужно использовать текущее смещение между камерой и пустышкой, то можно вот так:
Иван, спасибо в очередной раз. К сожалению результат все равно непредсказуем:( Я не понимаю, что происходит и как это работает:) Если не трудно, взгляните на сцену. Камера прыгает когда срабатывает
append_stiff_trans_rot
Экспортированный проект в приложении к сообщению.
В начале камера летает, закрепленная за пустышкой. При нажатии клавиши мыши связь разрывается и если ничего не делать, то через 3 секунды связь должна восстановиться, но происходит это очень странно.
06 июля 2017 19:25
Иван, спасибо в очередной раз. К сожалению результат все равно непредсказуем:( Я не понимаю, что происходит и как это работает:) Если не трудно, взгляните на сцену. Камера прыгает когда срабатываетПо append_stiff_trans_rot камера прыгает т.к. после разрыва связи она останавливается (ну или крутится пользователем), а пустышка продолжает двигаться, поэтому потом при привязке у них будет разница в повороте т.е. рассинхрон. Надо будет ещё параметр rotation_offset использовать, чтобы это учесть. Почему дальше ломается, пока не ясно, похоже на баг констрейнтов, будем разбираться.
append_stiff_trans_rot
и в дальнейшем при анимации скачет туда-сюда.
Меня не покидает ощущение, что можно сделать все гораздо проще.Тут зависит от конкретной задачи. Вариант с анимированной пустышкой неплох - можно довольно легко заанимировать какую-угодно траекторию в Блендере и не париться, но можно ещё и крутить камеру вручную процедурно, например, методом camera_anim.rotate_camera, правда придется определять траекторию/углы самому в коде. А можно вообще через camera_anim.auto_rotate, только там будет крутиться только в одной плоскости.
Вообщем, завтра постараюсь подробнее посмотреть, что здесь может подойти.
10 июля 2017 12:00
10 июля 2017 12:15
В начале камера летает, закрепленная за пустышкой. При нажатии клавиши мыши связь разрывается и если ничего не делать, то через 3 секунды связь должна восстановиться, но происходит это очень странно.Вообщем, разобрались, в движке есть баги, но следующий код позволяет их избежать:
function mouse_up_cb() {
var _vec3_tmp = new Float32Array(3);
var _vec4_tmp = new Float32Array(4);
var _vec4_tmp2 = new Float32Array(4);
var _vec4_tmp3 = new Float32Array(4);
var timeout_id = setTimeout(function(){
var cam_trans = m_trans.get_translation(cam, _vec3_tmp);
var rotator_tsr = m_trans.get_tsr(cam_rotator);
var offset = m_tsr.transform_vec3_inv(cam_trans, rotator_tsr, cam_trans);
var cam_quat = m_trans.get_rotation(cam, _vec4_tmp);
var empty_quat = m_trans.get_rotation(cam_rotator, _vec4_tmp2);
m_quat.invert(empty_quat, empty_quat);
var rot_offset = m_quat.multiply(empty_quat, cam_quat, _vec4_tmp3);
m_const.append_stiff_trans_rot(cam, cam_rotator, offset, rot_offset);
}, 3000);
}
- если вкратце, то нужно выставить ещё и rotation_offset - это устранит дергание камеры.
28 февраля 2018 10:23
Как вернуть показ курсора в фпс в полноэкранном режиме для взаимодействия с модальным окном в HTML?
Стиль курсора меняется, но он не виден.
$(function () { //вызов модального меню
$('.b-modal-menu').fadeIn();
m_main.pause();
document.getElementById("main_canvas_container").style.cursor = "auto";
$('#input1').on("click", function () {
$('.b-modal-menu').fadeOut();
m_main.resume();
});
});
Стиль курсора меняется, но он не виден.