CG13 – Telegram
CG13
147 subscribers
84 photos
57 videos
1 file
52 links
STEAM: https://store.steampowered.com/app/4296180/YAguar/?beta=0

Про ягуар и не только

канал: https://www.youtube.com/c/@CG13dev

ссылка для буста: https://news.1rj.ru/str/boost/cg13dev
Download Telegram
Forwarded from MSX (Максем)
Льюис Хемильтон, не смог пройти первую миссию в оригинальном Driver. Прикольчик))))
пропал на полтора месяца но не сидел без дела
в следующие Х постов расскажу над чем работал и это не Ягуар

расскажу как из этого
https://youtu.be/k3w8AESScQo?si=Kh6wOidXmHevSgI8
кратко напомню, что Иван Новожилов, автор крутого физического решения для машины выкатил свою работу, я ее потестил и остался в восторге

конечно переносить это решение в ягуар у меня цели не было, но пришлось)

а все дело в том что при переезде на новую версию Unreal Engine 5.4 где как раз появилась та самая доработанная фича Motion Matching про которую я тоже раньше писал, произошли изменения в физике которые к сожалению аффектнули мою реализацию машины. попытки поправить поведение не увенчались успехом, даже при повторном переезде на 5.3 проблема сохранилась
я примерно понимаю в чем дело, эпики дорабатывают физику в угоду стабильности и производительности, но мое кастомное решение судя по всему конфликтует с последними апдейтами.

В связи с чем было принято решение все таки использовать решение Ивана в Ягуаре,
для чего я вначале настроил машину в демо проекте NWheel


Дальше начинается настоящий УГАР
👍2
Очень хотелось найти какой-нибудь реалистичный трек для теста вместо аркадных и простеньких карт
Поэтому я отправился в интернет и нашел вот такое чудо (пик)

Это мод для Assetto Corsa с очень детализированным дорожным полотном и я хочу рассказать про эту работу

Автор мода Тодд, живет в Калифорнии, и очень любит гору Санта Моника (а также игру Assetto Corsa)
И он поставил себе цель перенести ее в игру
👍21
Перенести гору в игру на самом деле не самая сложная задача
Я не уверен точно как эту часть работ сделал именно автор мода, но примерный путь такой
открываем Google Earth
находим гору делаем скрины горы с разных ракурсов
на самом деле требуется не мало ракурсов, порядка двухсот, чем больше тем большей детализации можно добиться

И с помощью фотограмметрии можно воссоздать гору в 3D
это с учетом того что гугл не позволяет выгружать геометрию, хотя этого я точно не знаю
👍2
а вот дальше начинается самое интересное
чтобы сделать дорожное полотно, Тодд вооружился камерой Go Pro Max 4k 360 и проехался по дорогам на небольшой скорости

Каждый кадр из видео имеет метаданные где также есть GPS координаты
Весь пайплайн весьма сложной но вот из этого (пик 1)
он сделал это (пик 2)
🔥3
Совсем вкратце прежде чем загрузить в софт для фотограмметрии необходимо обработать каждый кадр, с помощью маски исключить небо и машину, чтобы софт без ошибок состыковывал кадры
после создания облака точек получается естественно много мусора который надо очищать (например деревья и кусты тяжело поддаются фотограмметрии)

Короче ничего лучше не придумаешь и это отличный плацдарм для теста физона
тут конечно я уже лукавлю и мне просто захотелось покататься по горам но на физическом ядре которое будет использоваться в Ягуаре
👍4🔥1
Поэтому я скачал данный мод
расковырял его выдернул всю геометрию и перенес его в Unreal Engine
Не уверен точно с какой версии, но движок научился рисовать 3D облака внутри сцены а не как пост процесс, поэтому горы уходят выше облаков.
🔥3
После переноса Карты в игру я просто не мог нарадоваться этой красоте
я гонял по горам наслаждался пейзажами, но потом встала новая проблема.
Автор мода Тодд, отсканировал буквально около 40км дорог
чтобы проехать все дороги надо буквально не мало времени.
По этому я решил сделать интерфейс выбора трассы

Но что такое трасса с точки зрения гоночной игры?
это Старт и Финиш, а также трасса обычно поделена на участки.

По этому я замутил вот такую систему
(К сожалению текст не читаемый из-за того что в одной точке есть несколько объектов и анрил накладывает названия друг на друга)
На что обратить внимание так это на фиолетовые фигуры - это узлы графа
🔥32
Вдоль всех дорог я поставил такие “узлы” старт, финиш и на всех чек поинтах.
Вблизи это выглядит так

Флажки процедурно ставятся на место узла по краям дороги
Каждый узел имеет информацию о соседних узлах

Все это требовалось для того чтобы я мог указать старт и финиш, а как результат генерировался бы трек который бы выглядел как цепочка узлов от старта до финиша и в этом мне помог ChatGPT

Я ему просто сказал в какой структуре данных хранится мой граф и попросил его написать мне алгоритм поиска пути по не взвешенному графу (все узлы равны)
Так вот он выдал полностью рабочий код (программисты бойтесь)
3🔥1
Осталось дело за малым

Для каждого трека указываю
1 Начало
2 Конец
3 Название
4 Вспомогательный меш дороги который будет подсвечиваться из меню и отображаться на миникарте
5 Специальная камера спектатор которая с нужного ракурса смотрит на трек
🔥2
Выглядит забавно
🔥2
И вот результат

Так как трек содержит начало финиш а также все чекпоинты, стало возможным фиксировать время прохождения трека и всех участков, а вместе с тем можно отображать призрака прошлого рекорда.
👍2🔥2
Новая задача!
При прохождении трека необходимо сохранять позицию игрока каждый момент времени, если сохранять позицию каждый кадр, то мало того что данных будет слишком много, так еще проблема в том что данных будет еще больше если игра идет с высоким фреймрейтом. не порядок
поэтому я подобрал оптимальный интервал через который сохраняется позиция плюс время “снапшота”
Вторая проблема что теперь нужно отрисовывать призрака каждый кадр, но ведь информация есть только через больший промежуток времени чем частота кадров
на помощь приходит интерполяция
Постараюсь не душить, но идея в том что условно в массиве снапшотов есть 0й кадр, и через 0.1 секунду, мне же требуется отрисовать машину на 0.05 секунде, значит мне надо посчитать процент и взять соответствующую интерполяцию между двумя трансформами

Таким образом в игре появился интерфейс выбора машины и трассы
сохранение времени прохождения трека и участка, и призрак
🔥1
Чуть позднее когда я дал ребятам поиграть билд, стало ясно что требуется вынести большинство настроек машины в меню. так как для разных условий требуется разные настройки (например для спуска нужно менять распределение тормозов между осями или настройки дифференциала) в общем я не стал гадать и вытащил вообще все возможные настройки в меню
что можно заценить в этом видосе

https://youtu.be/7s24hm_ckrE?si=sJh2cc1kn133WqBV
🔥6👍2🤔2
И на этом все

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

А тем временем я вернулся к Ягуару на данный момент я переношу физическое ядро в ягуар, поскольку там все реализовано на блюпринтах, а у меня все на C++
Естественно гладко такие вещи не проходят, поэтому работа пока не завершена
Вот так анрил мне подкинул телегу работы, а я потом докинул еще вагон.
Но с другой стороны я довольно не плохо разобрался как устроена машина внутри, поэтому успокаиваю себя тем что это была работа над Ягуаром
Из бонусов этого решения, теперь в шинах есть давление, а значит можно пробить выстрелом колесо.
🔥7👍4👏2
CG13 pinned «пропал на полтора месяца но не сидел без дела в следующие Х постов расскажу над чем работал и это не Ягуар расскажу как из этого https://youtu.be/k3w8AESScQo?si=Kh6wOidXmHevSgI8»
🔥122👍1