Форум

Гибкая настройка анкоров

08 ноября 2016 14:27 #13570
Слишком сильно падает, вроде, не должно быть такого. Всего 11 анкоров на простой сцене? А в каком браузере смотрели? И какие у вас GPU/CPU?
Браузеры все доступные. FX-8300 и GTX-760
Да, так сильно. В любом случае я нашел выход. У меня, как я и умничал в предыдущем сообщении выпуклый объект и выпуклое множество анкоров (ну, считайте объект - сфера, а анкоры расположены на бОльшей сфере). Я разбил всё множество анкоров (11 шт) на 4-ре подмножества (лево,право,зад, перед) и в зависимости от угла камеры (таргет в центре объекта) скрываю анкоры, которые находятся "за" объектом. т.е. одновременно у меня видно не более 2-х граней анкоров. Плюс добавил ограничения на видимость по вертикальному углу, т.е. когда камера смотрит "сильно сверху" - все анкоры убираются.
Плюс добавил вашу методику скрытия по дистанции.
В итоге я получил псевдо-функцию скрытия невидимых анкоров как мне кажется меньшими аппаратными затратами.
Однако это будет идеально работать в случае "все анкоры снаружи геометрии". Если допустим объект сложный (ну, планировка 3-х комнатной квартиры например, где анкоры находятся внутри каждой из комнат), то тут эта логика работать не будет, и нужно будет что-то допиливать.
ВОЗМОЖНО это связано с геометрией анкоров (ну, типа обводка с затуханием), но не тестировал.
В любом случае пожелание "сделать скрытие анкоров менее тормознутым" у меня осталось. Для демок и обучалок подсказка на объекте - первичная вещь.

ХОТЯ можно сделать и следующий вариант. Я его реализовал, но не в качестве анкора. Делаем "анкоры" обычными мешами (можно билбордами) проблемы с тормозами при определении невидимости не будет, а при ховере (или клике) на них по координатам мыши на канве выводим div с нужной нам инфой.

Просто, если вы не допилите незатратное скрытие анкоров, то на сложных проектах - придется делать именно так.

Еще замечание по производительности.
У меня на сцене всего 2 селектабл(или пикабл) объекта. Когда я вращаю таргет камеру вокруг объекта (ЛМБ+драг) не то чтобы фпс падает, сложно сказать, но микрофризы каеие-то происходят. Отключил функцию выделения объектов (при mousemove)- фризы ушли.
Видимо вот этот блок вызывает напряг.
				var x = e.clientX;
				var y = e.clientY;
				var objME = m_scenes.pick_object(x, y);


В общем, решил следующим образом - "при нажатой ЛМБ - не осуществлять пикинг объекта" - фризы как бабка отшептала.

Смотрел я видео по оптимизации проектов , но оно какое-то поверхностное и не охватывает эти моменты.
Нужна какая-то более конкретная тулза для профилирования. Если знаете - порекомендуйте.

Еще, было бы хорошо, если бы вы сопоставили функциям - условный "вес", и разработчикам можно было бы ориентироваться применять или не применять их в своих проектах . Понимаю, что зависит от железа, но думаю вам можно собрать комп с неизменной конфигурацией, на котором исследовать затратность ресурсов. Пропорция то меняться не будет. Вот например рэйкастинг на mousemove создает микрофризы, и чтобы этого не замечать - оптимально рэйкастить неподвижную модель, и т.д.
10 ноября 2016 15:54 #13708
Браузеры все доступные. FX-8300 и GTX-760
Да, так сильно.
Проц и видеокарта хорошие, поэтому такое падение фпс неадекватное. По сути на сцене с кубиком падения не должно было быть вообще. Протестил даже на стареньком mac mini 2011 года - аналогичная сцена падает с 60 до 40 фпс. Проблема может быть в том, что, как я писал выше, операция чтения из текстуры отрендеренных анкоров "не очень хорошая" - если не вдаваться в подробности, то считывание данных обратно из GPU может приводить к тормозам - в течение этого времени все подвиснет. В большинстве это не должно так сильно сказываться и мощности современного железа вполне должно хватать. Тут могут повлиять какие-нибудь заморочки железа, особенности драйвера и т.д. - в общем сложный момент, можно сказать, что вам не повезло.
Есть возможность оптимизировать этот процесс и сделать, чтобы все это по сложности не зависело от количества анкоров, т.е. как будто он один в сцене. Этим мы, наверное, займемся.
Также есть ещё возможности неплохой оптимизации в WebGL2, но до этого ещё надо подождать.

Еще замечание по производительности.
У меня на сцене всего 2 селектабл(или пикабл) объекта. Когда я вращаю таргет камеру вокруг объекта (ЛМБ+драг) не то чтобы фпс падает, сложно сказать, но микрофризы каеие-то происходят. Отключил функцию выделения объектов (при mousemove)- фризы ушли.
Видимо вот этот блок вызывает напряг.
Там то же самое зло, что и для анкоров.

Нужна какая-то более конкретная тулза для профилирования. Если знаете - порекомендуйте.
Можно использовать встроенный профайлер в Chrome или FF. Я привык к хромовскому - он довольно удобен.
Команда Blend4Web
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.