Вопрос - ответ

25 февраля 2016 22:27
Если fps ниже скорости обновления экрана (обычно 60 гц), то будут наблюдаться задержки в перетаскивании объектов. Это справедливо и для обычных десктопных игр.
FPS включается при инициализации b4w свойством show_fps: true. Просмотрите примеры в code snippets
Посмотрел, что выводит fps:
1. на моноблоке core i5, 6Гб ОЗУ (что с видеокартой не смотрел)
показывает 17-20fps при этом даже высокополигональная сцена с тенями можно сказать, практически не тормозит
Правда при этом в моноблоке начинает дико шуршать куллер :) (но на штатных примерах тоже шуршит).

2. на стационаре тоже core i5 2500 3.3GHz, 16Гб (со своим графическим ядром, т.е. отдельной карты на борту нет) сцена с включенными тенями (без разницы все-таки с лоу или хай-поли мешами) fps 3-5 и тормоза.
По поводу зависания при переключении вкладок (сталкивался с таким):
Возможно вы запустили какойнить цикл, который продолжает работать, даже если вкладка не активна. При этом рендер сцены b4w останавливается, если вкладка не активна.
Нет. Цикл есть только при инициализации, который точно отрабатывает только один раз (размножение объектов) и при переключении закладок он уже не отрабатывает повторно.
Дальше все только на событиях без циклов внутри их обработчиков.
Возможно при копировании объектов вы используете глубокое копирование, что сильно загружает память.
Проверил. Размножил объекты не глубоким копированием и материал на них тоже не копировал.
Ничего не изменилось - fps - 4.
При этом когда начинаешь перетаскивать объект по сцене мышью fps падает до одного вообще
Больше того.
Всем объектам назначил один материал, который создается по дефолту - тоже fps-4.
Потом удалил все объекты и вместо них сгенерил просто 50 uv-сфер с сабдивайдом до 2000 полигонов каждая (тоже не глубоким копированием) - fps 3-4. НО при этом при переключении закладок не тормозит.
Потом вместо сфер с кучей полигонов попробовал кубики аналогично - fps - 4
Т.е. падает именно при включенных тенях.
Завтра сравню видеокарты на машинах, основная разница скорее в этом.
Но как-то надеюсь, что core i5, ну должен бы вытягивать и сам.

Например, на машине, где наблюдаются тормоза
raytest показывает fps 15.
25 февраля 2016 22:59
И еще появился вопрос.
Попробовал ортогональную камеру.
С ней не работает camera.calc_ray.

Т.е. при камере с перспективой, чтобы переместить объект, куда показывает курсор на нужной плоскости, мы
используем calc_ray для поиска точки пересечения луча камеры с нужной плоскостью.
В случае с ортогональной камерой вроде как пересечение искать и не надо наверно - куда ткнули, туда и ставим объект видимо. Но как преобразовать координаты мыши в координаты сцены, чтобы переместить туда объект (при ортогональной камере, которая смотрит на сцену строго перпендикулярно сверху)?
26 февраля 2016 05:39
function init_cb(canvas_elem, success) {
    ...
    canvas_elem.addEventListener("mousedown", main_canvas_click, false);
    ...
}        

function main_canvas_click(e) {
    if (e.preventDefault)
        e.preventDefault();

    var x = e.clientX;
    var y = e.clientY;

    var obj = m_scenes.pick_object(x, y);

    if (obj) {
        if (_previous_selected_obj) {
            m_anim.stop(_previous_selected_obj);
            m_anim.set_frame(_previous_selected_obj, 0);
        }
        _previous_selected_obj = obj;

        m_anim.apply_def(obj);
        m_anim.play(obj);
    }
}


kak tut napisat chtoby obratnaya Animaciya sygrala
m_anim.set_frame(_previous_selected_obj, 0);
?????
Акылбек
26 февраля 2016 07:23
B4W ERROR: Object "1_button" has no applied animation
teper takaya oshibka vyxodit )
Акылбек
26 февраля 2016 09:31



pomogite Rebyata
Акылбек
26 февраля 2016 09:45

kak tut napisat chtoby obratnaya Animaciya sygrala
Потестируйте вот эту функцию, выставляющую скорость анимации:
m_anim.set_speed(obj, -1);
m_anim.play(obj);
26 февраля 2016 09:48

Ответ на сообщение пользователя Акылбек
B4W ERROR: Object "1_button" has no applied animation

teper takaya oshibka vyxodit )

Вы применили какую-нибудь анимацию к объекту? Если да, то как вы это сделали?
В уроках, на которые я ссылался это делается следующим образом:
m_anim.apply(obj, "action_name_from_blender"); // применяем экшн к объекту
m_anim.set_behavior(obj, m_anim.AB_FINISH_STOP); // выставляем поведение: остановиться после проигрывания анимации
26 февраля 2016 09:52
Grohot, не могли бы вы подготовить простой пример, где на вашей машине наблюдается отстование объекта от курсора или прислать ваш проект? Так было бы гораздо быстрее разобраться в чём дело. И еще: лучше создать отдельную тему в соответствующем разделе, чтобы ваши сообщения не терялись. А то в этой теме обычно задают простые вопросы, требующие ответа в одно предложение, как правило
26 февраля 2016 10:02

Ответ на сообщение пользователя Семенцов Роман
Вы применили какую-нибудь анимацию к объекту? Если да, то как вы это сделали?
Акылбек
26 февраля 2016 10:42
Здравствуйте подскажите пожалуйста.
Есть ли возможность в Blend4web организовать то же самое что и здесь я сделал с помощью скетчфаба, но без фона. Я хочу что бы 3д модель крутилась на фоне плывущих облаков.
ссылка
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.