User posts Alexander Kovelenov
18 July 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 Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
06 July 2015 20:47
Please note that the third argument to client_to_canvas_coords() is optional.
Blend4Web Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
06 July 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 Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
03 July 2015 18:12
Можно, хотя автоматически это сделать не всегда возможно. Можно также подождать WebGL 2.0, там это ограничение отсутствует.
Blend4Web Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 June 2015 18:56
Тогда лучше вернуться к физике и создать специальный объект, который будет играть роль детектора. Этот детектор должен иметь тип Ghost в Блендере и должен быть привязан к камере (например с помощью append_stiff()). Далее на нём определяются collision-сенсоры, в полезной нагрузке которых и будет нужная вам информация.
Blend4Web Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 June 2015 18:49
Действительно формат именно этой функции не изменился, однако изменился формат полезной нагрузки соответствующего сенсора (чтобы её получить, нужно вызывать get_sensor_payload()). Как раз полезная нагрузка и включает в себя объект/позицию/нормаль.
Blend4Web Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 June 2015 15:15
Используйте get_canvas() чтобы получить canvas-элемент, а затем его ширину и высоту как canvas.clientWidth/canvas.clientHeight. Потом делите эти значения пополам, это и будут координаты центра канваса ("экрана").
Blend4Web Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 June 2015 14:34
Здесь написано что конректно изменилось https://www.blend4web.com/doc/ru/release_notes.html#id3, соответственно в модулях physics и controls ищите определение нового формата вызова этих функций.
Blend4Web Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
30 June 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 Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel
29 June 2015 18:13
Application developers: Please pay attention to incompatible API changes for collision detection and ray casting.
Blend4Web Team
https://twitter.com/AlexKowel
https://twitter.com/AlexKowel