Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 10
Реализовал свою маленькую гравитацию с блекджеком и Ньютоном для n тел на Blueprint.
В целом конечно ничего сложного, но всё же продемонстрирую результат:

Каждая сфера имеет рандомную позицию по Z и рандомный Scale.
https://www.youtube.com/watch?v=yhvG0En15s4

Каждая сфера расположена на Z=0 и Scale=1
https://www.youtube.com/watch?v=wHU1yxWeUQw

Blueprint
Изображение
http://s1.uploadpics.ru/images/-1ajVxwtHx.jpg

Изображение
http://s1.uploadpics.ru/images/ZkHjEePYSl.jpg

Изображение
http://s1.uploadpics.ru/images/Zyv2NgvKBx.jpg

Изображение
http://s1.uploadpics.ru/images/W1ep4lwKHe.jpg
_________________
https://currencr.me/
Аватара пользователя
Тех. администратор
Сообщения: 367
Неплохо, очень даже.
Однако, на видео всё довольно сильно дёргается - вероятно, этого можно избежать прилагая ускорение более аккуратно.

А ещё у вас сложность получается O(n^2) - это очень много для такой задачи. Кажется это можно очень неплохо оптимизировать.
Аватара пользователя
Пользователь
Сообщения: 10
Да, сложность квадратичная - FPS низковат. Есть варианты упрощения - занимаюсь оптимизацией.
Дёрганье на видео, это скорее тормазнутость родного виндового (Win 10) ПО для записи роликов.

Вот ещё видео:
https://www.youtube.com/watch?v=ZFgRkxsOoTY

Кстати, хочу заметить, что у меня гравитационная постоянная увеличена в 100 000 000 раз.=)
Пришлось прийти к такому решению из-за проблемы "слабости" гравитации.
Если бы использовал реальную константу, то можно было бы каждый ролик длиной в месяц делать.
_________________
https://currencr.me/
Аватара пользователя
Тех. администратор
Сообщения: 367
Без записи видео не дёргается?
Да, я отметил это, насчёт константы - ну чтож, масштабы масс и расстояний тут тоже не космические.

Что думаете над тем, чтобы предвычислять гравитационное поле, а потом использовать его? Так можно, кажется, достичь сложности O(n log(n))...

UPD: Ох, прикинул - сложновато получается для блупринтов. %) Да и ассимптотика тут не показатель - для маленьких n на всё это уйдёт значительно больше тактов, а с большими уже эффективнее будет сразу переложить вычисления на GPU, хотябы в таком виде, в котором они есть сейчас.
Аватара пользователя
Пользователь
Сообщения: 10
Без записи не дергается, с записью даже FPS проседает до значений ок. 10.

На счет сложности. Хочу попробовать распределить вычисления на постоянные и периодические. Если тело далеко или совсем маленькое, то его воздействием на крупные тела можно принебречь или считать реже, например раз в секунду.

Все это уже лучше делать на С++.

UPD: Вообще, я думаю здесь есть большое поле для использования многопоточности.
_________________
https://currencr.me/
Аватара пользователя
Пользователь
Сообщения: 216
Для записи видео используйте matinee.
_________________
Активные темы форума
Аватара пользователя
Тех. администратор
Сообщения: 367
Heterotroph
Да да, многопоточность, а также OpenCL тут весьма кстати.


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

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