Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.10.2012, 13:30
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 1  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
По умолчанию Траектории взаимодействий физ.объектов(Nape, Box2D) оптимизация

Всем привет!

Есть некая сцена с падающими по разным траекториям физ объектами. Задача: отрисовать траектории объектов сцены до того как они начнут непосредственно взаимодействовать) После запуска симуляции нарисованные траектории и движения объектов должны совпадать.

Cейчас для просчета и симуляции используется Nape(в Box2D на просчет уходит в 10 раз больше времени, 300ms против 30); Просчет производится следующим образом создается копия сцены со всеми объектами ускоряется симуляция space.step() в цикле и относительно позиций объектов рисуются траектории в спрайте. По окончанию цикла объекты удаляются и запускается симуляция физики уже в реальном времени. Объекты повторяют нарисованные траектории т.к. сцены идентичны. Все вроде бы хорошо. НО! Проблема в том что есть объекты учитывающие положение курсора мыши, и соответственно траектории должны быть изменены на каждую новую позицию. На каждый перепросчет уходит по 30 ms, и в динамике это выходит очень много.

Вопрос: Как можно оптимизировать данную процедуру? Чтобы снизить время просчета хотя бы до 1-2 ms. Есть идеи?

Спасибо!

p.s. Восстановление положения объектов на старте вместо повторного создания ускоряет процесс на ~10 ms, но появляются большие погрешности т.к. объекты участвуют в симмуляции на момент восстановления и их позиции варьируются на каждый step.
__________________
uglan

Старый 26.10.2012, 17:49
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 2  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
Да ни как. Ваш мир должен же пересчитаться, а на это в любом случии будет уходить время. Я бы извротился в другую сторону. У вас есть 2 сцены одна визуализатор, другая симулятор (рабтает в 20 раз быстрее), после окончания работы симулятора замисываеш траекторию, и опять запускаеш, а после второго цыкла визуализируеш красиво изменение траэкторий, ну и так далие. Так же на втором и после цикле работы симулятора не создаюш заново объекты а возвращаеш старые обьекты в позиции визуализатора. Так же не рекомендую space.step() запихивать в цикол, будут дергания, просто у тебя должн симулятор работать в 20-100 раз быстрее визуализатора. ХЗ это мою мнение.

Старый 26.10.2012, 18:16
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 3  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Не совсем понял.
Цитата:
после окончания работы симулятора замисываеш траекторию, и опять запускаеш
Я в цикле не вызываю отрисовку, то есть движок просчитывает сцену не перерисовывая объекты, то есть по сути это и есть симулятор. Единственное можно действительно отсюда исключить отрисовку траектории, а писать данные в <Vector> например. Но тут прирост будет максимум на 1-2 мс.

Цитата:
Так же на втором и после цикле работы симулятора не создаюш заново объекты а возвращаеш старые обьекты в позиции визуализатора.
Об этом я также писал здесь:
Цитата:
p.s. Восстановление положения объектов на старте вместо повторного создания ускоряет процесс на ~10 ms, но появляются большие погрешности т.к. объекты участвуют в симмуляции на момент восстановления и их позиции варьируются на каждый step.
Но там имеет место другая проблема.

Цитата:
Так же не рекомендую space.step() запихивать в цикол, будут дергания, просто у тебя должн симулятор работать в 20-100 раз быстрее визуализатора.
Такой прирост скорости выглядит заманчиво, но можешь пояснить что ты имеешь в виду под "симулятором" в данном случае? Не понимаю как можно запустить "симулятор" в Nape взамен space.step() в цикле?
__________________
uglan

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
nape , траектория , физика

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.