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

24 февраля 2016 11:36

Если у вас не загружается сцена, попробуйте открыть консоль браузера (обычно она открывается на F12) и посмотрите, пожалуйста, что браузер вам сообщает. Можете также сделать скриншот и выложить его здесь, если не будет ясно в чём дело
Добрый день с сценой я разобрался. Была проблема к пути файла json, поэтому сцена и не грузилась. А по поводу меню плеера в API это меню есть что бы прописать эти кнопки на чистой сборки сцены?
24 февраля 2016 11:43
Добрый день.

Отвечу на вопросы, касающиеся кода и алгоритмов. На вопросы оптимизации геометрии и насроек сцены лучше получить ответ от художника.

2. возможно ли с помощью m_scenes.pick_object как-то определить объект над, которым находится мышь, при условии, что нужный объект перекрывается другим объектом? (т.е. клик идет на одном объекте, а обратиться надо к обратиться надо к объекту, который за ним или например, мы тащим объект и надо выделять объекты, над которыми мы его тащим).

Вы можете сделать второй объект (который выше) не selectable в Blender'e. Тогда он не будет участвовать в работе функции m_scenes.pick_object

Ещё могу посоветовать использовать функцию из физики m_phy.append_ray_test_ext Это уже "пикинг" на стороне физического движка. Но работать с ним сложнее. Тут есть пример его использования.

3. В примере объекты таскаются мышью с большой инерционностью, т.е. не успевают за мышью.
Видимо, сам по себе js + отрисовка не успевают. Возможно ли это как-то решить особенно, если объект перемещается в одной плоскости, без большой перспективы? Например, на время перемещения перемещать не сам меш, а как бы его скрин, а на mouseup снова отрисовать объект :) Или может есть более гуманные варианты?

Это интересное поведение. Не могли бы вы обратить внимание на FPS при этом. А еще лучше, подготовить небольшой пример, где проявляется подобное поведение, чтобы сразу можно было разобраться в чем дело
24 февраля 2016 11:46
2 - уменьшил число полигонов мешей (в среднем каждый объект был порядка 3000 полигонов)
уменьшил в среднем до 500. Таких объектов порядка 50 штук на сцене.
А сколько у вас материалов на каждом объекте?
Если 1 то хорошо бы посмотреть на него.
Менеджер и 3D художник Blend4Web
Запекайте Ambient Occlusion!!!
mikhail@blend4web.com
24 февраля 2016 11:46

А по поводу меню плеера в API это меню есть что бы прописать эти кнопки на чистой сборки сцены?

Нету, поскольку это весьма специфический функционал и он не всегда бывает нужен. Тем более что существует Webplayer, который можно использовать в случае необходимости этого функционала.
24 февраля 2016 15:41
1. по scenes.set_outline_intensity. Возможно ли регулировать как бы жесткость выделения (т.е. например, чтобы меш выделялся не размытым свечением, а более четким контуром)

На вкладке Render->Object Outlining можно уменьшить значение Factor. Контур выделения станет уже и тусклее. Размытость не исчезнет, но будет не так заметна.
24 февраля 2016 23:27
Добрый вечер, Роман.
Вы можете сделать второй объект (который выше) не selectable в Blender'e. Тогда он не будет участвовать в работе функции m_scenes.pick_object
Но объект, который выше должен быть селектбл (его ж перетаскиваю мышью, а чтобы его подхватить тоже использую pick_object). Было бы неплохо, наверно, иметь в функции pick_object возможность указывать на каком слое надо "пикнуть" объект (если слои сцены экспортируются конечно), или просто какой по счету по ходу луча.
Ещё могу посоветовать использовать функцию из физики m_phy.append_ray_test_ext Это уже "пикинг" на стороне физического движка. Но работать с ним сложнее. Тут есть пример его использования.
Спасибо большое. Посмотрю.
Это интересное поведение. Не могли бы вы обратить внимание на FPS при этом. А еще лучше, подготовить небольшой пример, где проявляется подобное поведение, чтобы сразу можно было разобраться в чем дело
Как вывести fps не знаю. В примерах видел вывод fps на канву, поищу.
Пример постараюсь подготовить. Хотя это проявляется не на всех машинах.
На вкладке Render->Object Outlining можно уменьшить значение Factor. Контур выделения станет уже и тусклее. Размытость не исчезнет, но будет не так заметна.
Спасибо, Иван. Стало лучше :)
А сколько у вас материалов на каждом объекте?
Если 1 то хорошо бы посмотреть на него.
На каждом объекте по одному материалу.
Материал, свет и камеру и мир приложил в сцене.
Это материал, который принимает тени из-за рендеринга которых тормоза.

Вообще примерно так:
1. Исходная сцена имеет:
- порядка 10 исходных подвижных (по onmousemove) объектов с большим числом полигонов (геометрия разная материал один)
- 1 объект неподвижный тоже с одним материалом, представляющий собой плоскость с одним полигоном
- два источника света типа Point и освещение окр. мира
- статичная vertical камера , которая смотрит на сцену сверху вниз (т.е. вертикальная, но расположена горизонтально)
2. При загрузке сцены:
- из 10 подвижных объектов создается еще 40 глубоких копий
- из 1 неподвижного объекта создается еще 79 глубоких копий, лежащих в одной плоскости
- подвижные объекты можно перемещать по сцене и они всегда находятся над неподвижными,
соответственно выставлено, что подвижные объекты отбрасывают тени, а неподвижные принимают. Двигать можно всегда только один объект при этом все остальные стоят неподвижно, хотя пока даже изначальная отрисовка сцены идет очень долго.
Пробовал изменять число источников света, от которых считать тени - эффекта не дало.
Может надо где-то как-то включить какую-нибудь буферизацию на странице?
Т.е. странно - переключаешься между закладками браузера и когда переходишь на закладку сцены происходит зависание до 4-х секунд при том, что сцена уже загружена ранее же, по-новой никаких копий объектов не создается (просто перешли на другую закладку и вернулись обратно).
При этом стабильное зависание при переключении на закладку со сценой наблюдается в хроме, в firefox-е на этой же машине тоже подвисает, но через раз (в ie не смотрел).

Возможно ли, что время обсчета сцены зависит от расстояния камеры до сцены? (Типа длиннее лучи,, дольше считать :)) Основная плоскость сцены размером 20 на 20 единиц, чтобы камера с дефолтными настройками всю ее захватила, глядя на нее строго сверху, приходится размещать ее на расстоянии порядка 40 единиц от сцены. При этом хотелось еще бы попробовать не перспективную камеру, а ортогональную, но при ортогональной даже с расстояния 70 сцена не лезет в кадр, а если выставить больше например 100, то сцена вообще пропадает, не видно ее становится (может уплывает из фокуса, пока не понял).
25 февраля 2016 07:58
По поводу производительности. В просмоторщике сцен (кнопка fast preview), там есть раздел debug, в котором можно посмотреть время работы отрисовки отрисовки сцены, включив оверлей отладки.
Если fps ниже скорости обновления экрана (обычно 60 гц), то будут наблюдаться задержки в перетаскивании объектов. Это справедливо и для обычных десктопных игр.
FPS включается при инициализации b4w свойством show_fps: true. Просмотрите примеры в code snippets
Чтобы объекты были видны вдалеке, нужно увеличить значение clipping->End у камеры в блендере.
P.S. размер плоскости нужно брать с запасом. Попробуйте уменьшить высоту окна браузера а ширину ставить на все экран.
Возможно при копировании объектов вы используете глубокое копирование, что сильно загружает память.

По поводу зависания при переключении вкладок (сталкивался с таким):
Возможно вы запустили какойнить цикл, который продолжает работать, даже если вкладка не активна. При этом рендер сцены b4w останавливается, если вкладка не активна. Поэтому если нужно что то обрабатывать в цикле, то привязываю это либо к сенсорам, либо к колбэку рендера.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
25 февраля 2016 14:30
Rebyata pomogite s Animaciei


logika takaya: 1 Button > Animaciya perexoda Obiekta.
2 Button> Obratnaya animaciya ili je Animaciya obratnyi perexoda Obiekta,


problema: the action "Action" has no curves pri exporte

vopros: kak mne eto vse zamutit ) ???

jelanie: kto nibud mojet pokazat ili napisat primer ( TIPA obiekt Cube pri najati 1Button dvijetsya vpered a pri najatii 2 Button obratno ili na mesto ) mojete opisat process Animaciya ispolzuia Buttonov

Акылбек
25 февраля 2016 14:57
m_anim.apply_def(obj);
      m_anim.cyclic(obj, false);
     m_anim.set_behavior(obj, m_anim.AB_FINISH_RESET);
        m_anim.play(obj);

Дорогу осилит идущий
25 февраля 2016 18:20
Посмотрите на работу с анимацией в этом уроке. Так же можно посмотреть тут.
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.