Форум

Сообщения, созданные пользователем Александр Ковеленов
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:

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
06 июля 2015 20:47
Please note that the third argument to client_to_canvas_coords() is optional.
Команда Blend4Web
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.
Команда Blend4Web
https://twitter.com/AlexKowel
03 июля 2015 18:12
Можно, хотя автоматически это сделать не всегда возможно. Можно также подождать WebGL 2.0, там это ограничение отсутствует.
Команда Blend4Web
https://twitter.com/AlexKowel
30 июня 2015 18:56
Тогда лучше вернуться к физике и создать специальный объект, который будет играть роль детектора. Этот детектор должен иметь тип Ghost в Блендере и должен быть привязан к камере (например с помощью append_stiff()). Далее на нём определяются collision-сенсоры, в полезной нагрузке которых и будет нужная вам информация.
Команда Blend4Web
https://twitter.com/AlexKowel
30 июня 2015 18:49
Действительно формат именно этой функции не изменился, однако изменился формат полезной нагрузки соответствующего сенсора (чтобы её получить, нужно вызывать get_sensor_payload()). Как раз полезная нагрузка и включает в себя объект/позицию/нормаль.
Команда Blend4Web
https://twitter.com/AlexKowel
30 июня 2015 15:15
Используйте get_canvas() чтобы получить canvas-элемент, а затем его ширину и высоту как canvas.clientWidth/canvas.clientHeight. Потом делите эти значения пополам, это и будут координаты центра канваса ("экрана").
Команда Blend4Web
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
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.
Команда Blend4Web
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