Как поменять клавиши мыши в управлении камерой?
07 октября 2016 14:10
В общем суть такова, камера с типом Hover вроде подходит.
Однако, по умолчанию паннинг забинден на левую клавишу мыши, а вращение на правую.
Хотелось бы сделать наоборот (ЛКМ-вращение, ПКМ-паннинг)
За логику камеры насколько я понял отвечает "ext_camera.js", но я боюсь туда влазить, т.к. возможно моё вмешательство где-нибудь создаст глюк.
Как лучше поменять клавиши?
Однако, по умолчанию паннинг забинден на левую клавишу мыши, а вращение на правую.
Хотелось бы сделать наоборот (ЛКМ-вращение, ПКМ-паннинг)
За логику камеры насколько я понял отвечает "ext_camera.js", но я боюсь туда влазить, т.к. возможно моё вмешательство где-нибудь создаст глюк.
Как лучше поменять клавиши?
07 октября 2016 16:03
Конкретно за обработку мыши и клавиатуры отвечает аддон app.js, который просто подает нужные значения через API.
Можно поправить аддон - это не так страшно, т.к. он не часть движка, а построен на его API.
Вам нужно вот это место: app.js. Там как раз по нажатой кнопке определяется нужное действие. В режиме HOVER можно поменять кнопки местами, например, так:
Можно поправить аддон - это не так страшно, т.к. он не часть движка, а построен на его API.
Вам нужно вот это место: app.js. Там как раз по нажатой кнопке определяется нужное действие. В режиме HOVER можно поменять кнопки местами, например, так:
var mouse_cb = function(obj, id, pulse, param) {
if (pulse == 1) {
var value = m_ctl.get_sensor_value(obj, id, 1);
m_cam.get_velocities(obj, velocity);
if (!use_hover) {
var left_mult = TARGET_EYE_MOUSE_ROT_MULT_PX * velocity.rot;
var right_mult = TARGET_EYE_MOUSE_PAN_MULT_PX * velocity.trans;
} else {
var left_mult = HOVER_MOUSE_PAN_MULT_PX * velocity.trans;
var right_mult = HOVER_MOUSE_ROT_MULT_PX * velocity.rot;
}
var button = m_ctl.get_sensor_payload(obj, id, 0).which;
if (use_hover)
if (button == 1)
button = 3;
else if (button == 3)
button = 1;
if (button === 1) {
dest_x_mouse += (param == "X") ? -value * left_mult : 0;
dest_y_mouse += (param == "Y") ? -value * left_mult : 0;
} else if (button === 2
|| button === 3) {
dest_pan_x_mouse += (param == "X") ? -value * right_mult : 0;
dest_pan_y_mouse += (param == "Y") ? -value * right_mult : 0;
}
}
}
07 октября 2016 16:46
Нашел эти строки (988-1010) в файле app.js, находящемуся по адресу "blend4web_ce_16_09_1\blend4web_ce\src\addons"
Произвёл замену, как вы написали.
В итоге перестала работать и левая и правая кнопка (единственная свобода - зуммирование колесом).
Сервер перезапускал, кэш чистил.
Синтаксис вашего участка валидный. В консоли ошибок нет.
Прикрепил исправленный app.js , однако он, к сожалению не рабочий.
Произвёл замену, как вы написали.
В итоге перестала работать и левая и правая кнопка (единственная свобода - зуммирование колесом).
Сервер перезапускал, кэш чистил.
Синтаксис вашего участка валидный. В консоли ошибок нет.
Прикрепил исправленный app.js , однако он, к сожалению не рабочий.
07 октября 2016 17:14
странно, у меня ваш файл работает
можно подебажить,
например, если закомментировать следующие строчки, то все должно работать по старому:
здесь вообще 1 означает лев. клавишу, 2 - колесо, 3 - правую
по этим условиям:
- для 1 осуществляется поворот; для 2,3 - паннинг, вроде ничего особенного больше не должно происходить
можно подебажить,
например, если закомментировать следующие строчки, то все должно работать по старому:
if (use_hover)
if (button == 1)
button = 3;
else if (button == 3)
button = 1;
здесь вообще 1 означает лев. клавишу, 2 - колесо, 3 - правую
по этим условиям:
if (button === 1) {
dest_x_mouse += (param == "X") ? -value * left_mult : 0;
dest_y_mouse += (param == "Y") ? -value * left_mult : 0;
} else if (button === 2
|| button === 3) {
dest_pan_x_mouse += (param == "X") ? -value * right_mult : 0;
dest_pan_y_mouse += (param == "Y") ? -value * right_mult : 0;
}
- для 1 осуществляется поворот; для 2,3 - паннинг, вроде ничего особенного больше не должно происходить
07 октября 2016 17:28
07 октября 2016 17:43