Полезное

Мы Вконтакте

Discord канал

#
Пред.
12
Аватара пользователя
Пользователь
Сообщения: 9
Когда-то я делал это для BGE (Blender Game Engine)

В блендере эта задача решалась через запись ключей анимации. Хочу повторить для UE4.
Но не знаю как правильнее подступиться к этой задаче.
Суть задачи такова:
Катаемся на машинке, данные о перемещении пишутся во внешний файл. Если прокатились хорошо, сохраняем данные, если плохо, перезаписываем.
В общем-о стандартная фишка для многих "гонялок" - повторное воспроизведение движения.
Не ясно что лучше писать. То-ли записывать нажатия кнопок пользователем, а потом это воспроизводить повторно (сомневаюсь, что физика отработает со 100% схожестью), то-ли записывать само перемещение, а потом повторно это воспроизводить. И тогда другой вопрос - а с каким интервалом писать? Привязка к FPS - сомнительно, привязка к реальному времени, что делать с промежутками? Обрабатывать через интерполяцию?
А может есть еще какие-то методы, которые я выпустил из виду?
Аватара пользователя
Тех. администратор
Сообщения: 367
Очень хороший вопрос. Физика в PhysX сама по себе не детерминирована, и в UE4 часто возникают с этим проблемы.

https://devtalk.nvidia.com/default/topi ... -machine-/ (тут пишут что она детерминирована, но тесты показывают что нет, и тесты правы)

http://www.nvidia.com/object/physx_knowledge_base.html (искать по PhysX SDK is not deterministic)
Аватара пользователя
Тех. администратор
Сообщения: 367
Я думаю лучше писать координаты позиции/угла и состояния анимаций, правда это придётся делать для всего что есть на сцене и что взаимодействовало с физикой.
Аватара пользователя
Пользователь
Сообщения: 860
С физикой будут погрешности достаточно большие. Возможно стоит копать в сторону ключевых точек и времени. Т.е. типичный checkpoints + время на нём.
_________________
https://www.facebook.com/groups/uejob/
Аватара пользователя
Пользователь
Сообщения: 995
Есть же sequncer.
Аватара пользователя
Пользователь
Сообщения: 9
Пока попробовал писать в UDataAsset структурированные данные. На простых объектах вроде падающего кубика работает отлично. Копаю дальше.
Забыл пояснить, пишу Location и Rotator + нажатия Fire (от последнего откажусь со временем)
Пока тупо через Tick, завтра добавлю хронометр с интерполяцией, чтобы не зависеть от fps
Аватара пользователя
Пользователь
Сообщения: 2319
Seliverstoff, почему сразу не писать трансформ матрицу? экономия на скейле? ротатор в каком виде хранится?
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 9
Snake, ну да, зачем лишние нолики писать.
Аватара пользователя
Пользователь
Сообщения: 9
Vladimir488 к сожалению sequncer не подходит, матин тоже. Нужно "налетать" 20-30 траекторий с хронометражом около 3 минут на каждую, а потом одновременно воспроизвести. В ручную такое анимировать очень проблематично. Может я чего-то не знаю, если так, поделитесь пожалуйста рецептом. Буду очень рад и признателен.

Пока как и планировал, запилил привязку ко времени, и не боюсь плаванья FPS. Теперь можно ставить FrameRate для записи и воспроизведения. Тестировал на 25 кадров\секунда, количество записей в массиве сократилось примерно в 2 раза, плавность воспроизведения за счет интерполяции не пострадала. Пилю дальше. Завтра буду делать физ. модель для корабля, + джойстики и прочее.
Записанная "анимация" немного странно реагирует на коллизии с другими объектами, естественно, что свою траекторию не меняет, если она уже записана, в данном алгоритме это не возможно, но соседние объекты реагируют более-менее верно. Меня это вполне устраивает.
Чем это чревато...
Ну к примеру я записал траекторию корабля №1. Потом пишу траекторию для №2. Если №2 столкнется с №1, то должным образом отреагирует, а вот №1 как летел, так и будет лететь... Это пока тема для размышлений.

Да, забыл пояснить, пока упростил до "корабля" (самолетик - только тело), но потом тоже самое попробую переложить на машинку (тело + 4 колеса).
Аватара пользователя
Пользователь
Сообщения: 1297
Если с записью движения объектов все более менее понятно. То как делать с частицами пока не решил. Например я разбегаюсь и прыгаю в воду, брызги волны и так далее. И вот мне надо сделать реверс
_________________
Мои работы.
Youtube Channel
Форум по геймдеву.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница