Сообщения, созданные пользователем Александр Ковеленов
18 июля 2015 21:57
Hello, It's actually a bit tricky to do so. One of the possible solution is using STATIC collision and the following code:
This code moves one object out of another along the normal which is calculated in collision point.
var collision = m_ctl.create_collision_sensor(obj, null, true);
var collision_cb = function(obj, id, pulse) {
if (pulse == 1) {
var coll_dist = m_ctl.get_sensor_payload(obj, id, 0).coll_dist;
if (coll_dist < 0) {
var coll_norm = m_ctl.get_sensor_payload(obj, id, 0).coll_norm;
var recover_offset = _vec3_tmp;
m_vec3.scale(coll_norm, -0.25 * coll_dist, recover_offset);
var trans = m_trans.get_translation(obj, _vec3_tmp2);
m_vec3.add(trans, recover_offset, trans);
m_trans.set_translation_v(obj, trans);
}
}
}
m_ctl.create_sensor_manifold(obj, "COLLISION", m_ctl.CT_CONTINUOUS,
[collision], null, collision_cb);
This code moves one object out of another along the normal which is calculated in collision point.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
06 июля 2015 20:47
Please note that the third argument to client_to_canvas_coords() is optional.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
06 июля 2015 20:43
Hello!
Yes, that method should do the trick. Starting from Blend4Web v15.06 all coordinates are considered relative to the canvas. Methods get_coords_x()/get_coords_y() are exceptions to this rule because they simply return mouse/touchscreen client coordinates without any conversion (e.g. relative to browser window). So that's why you need client_to_canvas_coords() method here.
Yes, that method should do the trick. Starting from Blend4Web v15.06 all coordinates are considered relative to the canvas. Methods get_coords_x()/get_coords_y() are exceptions to this rule because they simply return mouse/touchscreen client coordinates without any conversion (e.g. relative to browser window). So that's why you need client_to_canvas_coords() method here.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
03 июля 2015 18:12
Можно, хотя автоматически это сделать не всегда возможно. Можно также подождать WebGL 2.0, там это ограничение отсутствует.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 июня 2015 18:56
Тогда лучше вернуться к физике и создать специальный объект, который будет играть роль детектора. Этот детектор должен иметь тип Ghost в Блендере и должен быть привязан к камере (например с помощью append_stiff()). Далее на нём определяются collision-сенсоры, в полезной нагрузке которых и будет нужная вам информация.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 июня 2015 18:49
Действительно формат именно этой функции не изменился, однако изменился формат полезной нагрузки соответствующего сенсора (чтобы её получить, нужно вызывать get_sensor_payload()). Как раз полезная нагрузка и включает в себя объект/позицию/нормаль.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 июня 2015 15:15
Используйте get_canvas() чтобы получить canvas-элемент, а затем его ширину и высоту как canvas.clientWidth/canvas.clientHeight. Потом делите эти значения пополам, это и будут координаты центра канваса ("экрана").
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 июня 2015 14:34
Здесь написано что конректно изменилось https://www.blend4web.com/doc/ru/release_notes.html#id3, соответственно в модулях physics и controls ищите определение нового формата вызова этих функций.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 июня 2015 11:39
Hi!
You see, that black box is actually unscaled canvas being rendered during scene load. Yes alpha=true definitely fixes the issue, but if you already have some custom preloader it would be better to draw it above the canvas. To do that, assign "z-index" property to it's CSS style or use container.insert_to_container() method (pass "LAST" order to it).
Morphing app is already fixed, wait for our release today.
You see, that black box is actually unscaled canvas being rendered during scene load. Yes alpha=true definitely fixes the issue, but if you already have some custom preloader it would be better to draw it above the canvas. To do that, assign "z-index" property to it's CSS style or use container.insert_to_container() method (pass "LAST" order to it).
Morphing app is already fixed, wait for our release today.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
29 июня 2015 18:13
Application developers: Please pay attention to incompatible API changes for collision detection and ray casting.
Команда Blend4Web
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel