Форум

Скорость scene.pick_object

11 апреля 2016 10:39 #8788
Всем привет.
Все-таки отрабатывает метод на слабых машинках с отключенными тенями 0.2-0.35сек.
Если включить тени, то вообще долго.
Т.е. медленный отклик от клика мыши, для быстрых игр очень критично, но даже и в обычной работе это подвисание очень заметно.
В ранних сообщениях говорилось, что это из-за сабрендерринга сцены.

Но если сцена статическая возможно ли сабрендеринг хранить как бы в кеше, чтобы по клику сцена не рендерилась, а сразу вычислялся нужный объект?
То есть отрисовали сцену и заодно сразу отрисовали ее в памяти для пикинга. Потом прошел пик и мы уже не рисуем, а сразу на этой модели в памяти вычисляем нужный объект.
Или например, вывести наружу для программистов возможность управления сабрендерингом для пикинга? (чтобы он сам мог рулить, что с этого момента сцену можно зарендерить для дальнейшего пикинга, при этом он должен идти асинхронно, и иметь признак завершенности, т.е. когда прошел пик, смотрим завершился ли сабрендеринг, т.е. есть ли готовая сабсцена, если есть, то быстрый вариант (уже без отрисовки), если нет, то такой как есть сейчас).
Или меш и вычисляется именно по ходу сабрендеринга?

Может есть возможность частичного рендеренига? Т.е. разбиваем сцену на квадраты, по какому квадрату кликнули только ту часть и рендерим дабы найти нужный объект?
Или например, чтобы в сабрендеринге для пикинга участвовали только объекты с выставленным селектбл свойством (тогда в частном случае меши можно окружить просто некими квадратами из одного полигона с селектбл-свойством, чтобы в сабрендеринге участвовали примитивные объекты для увеличения его скорости).

Так же было бы неплохо по-моему сделать, чтобы на этот сабрендереринг не влияли тени или был параметр, который бы их отключал, т.к. для пикинга тени по-моему не критичны, а между тем тормозов добавляют ощутимо. Ну и отключение теней в сцене для пользователя тоже было бы удобно по-моему (хотя можно создать две сцены одна с тенями, другая без).
12 апреля 2016 09:48 #8806
Добрый день.

Но если сцена статическая возможно ли сабрендеринг хранить как бы в кеше, чтобы по клику сцена не рендерилась, а сразу вычислялся нужный объект?

Сцену нужно перерисовывать с позиции камеры, которая может измениться.
Так же было бы неплохо по-моему сделать, чтобы на этот сабрендереринг не влияли тени или был параметр, который бы их отключал, т.к. для пикинга тени по-моему не критичны, а между тем тормозов добавляют ощутимо.

Теней там нету. Смотрите, что там происходит (нижний левый угол):


Сама по себе эта процедура не сильно затратная: отрисовка геометрии одим цветом (градации синего) и чтение из буфера. Но из-за включенных теней, видимо, видеокарта работает на пределе своих возможностей, что приводит к тормознутому пиккингу. Попробуйте проанализировать тайминги, используя HUD (включается в стандартном просмотрщике сцен, смотрите на нижний правый угол)



Или например, чтобы в сабрендеринге для пикинга участвовали только объекты с выставленным селектбл свойством (тогда в частном случае меши можно окружить просто некими квадратами из одного полигона с селектбл-свойством, чтобы в сабрендеринге участвовали примитивные объекты для увеличения его скорости).

Всё так и есть. Не нужные объекты туда не попадают
Разработчик Blend4Web
12 апреля 2016 12:03 #8810
Спасибо за пояснения, Роман.
Посмотрю что за HUD такой )
Сцену нужно перерисовывать с позиции камеры, которая может измениться.
У меня и сцена статическая и камера статическая - только мышью меши можно таскать
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.