Unreal Engine 4
https://uengine.ru/forum/

Загрузка и выгрузка чанков карты в генерации мира
https://uengine.ru/forum/viewtopic.php?f=19&t=69853
Страница 1 из 1

Автор:  Monolag [ 31 дек 2019, 23:12 ]
Заголовок сообщения:  Загрузка и выгрузка чанков карты в генерации мира

Здравствуйте, пытаюсь разобраться в генерации мира. Более-менее получилось написать алгоритм, который рандерит терреин в стиле майнкрафта
Нужно немного подредактировать значения в simplex noise.

Изображение

Вопрос:
Естественно, никакой компьютер не позволит создать условно бесконечную карту без выгрузки и загрузки ее частей.
Поэтому, хочу узнать: как, собственно, эти чанки выгружать? Не нужно писать про level streaming, пожалуйста, это совершенно не то.
Существует плагин, который выгружает и загружает, но я совершенно не могу понять как они это делают.
https://github.com/AndrewScheidecker/BrickGame

Занимаюсь этим ради личного интереса, поэтому, если у меня получится сделать нормальный оптимизированный террейн, то обязательно выложу код

Автор:  gary_cho [ 09 янв 2020, 00:32 ]
Заголовок сообщения: 

быстро глянул код. там руками создаются кубики и складываются в буфер. Карта вроде как из чанков. Всё складывается в компоненты. И вроде где-то там видел идёт проверка на попадание в камеру. Можно воспользоваться октодеревом для таких целей, все воксельные движки используют это.

Автор:  Monolag [ 17 янв 2020, 23:47 ]
Заголовок сообщения:  Re:

gary_cho писал(а):
быстро глянул код. там руками создаются кубики и складываются в буфер. Карта вроде как из чанков. Всё складывается в компоненты. И вроде где-то там видел идёт проверка на попадание в камеру. Можно воспользоваться октодеревом для таких целей, все воксельные движки используют это.


Спасибо за ответ! Про октодерево не слышал никогда, почитаю.
Про то, что руками создаются объекты - понял, а вот что именно делают буферы и как с ними работать - нет, было бы неплохо узнать.
Я сейчас делаю довольно глупо, но работает. Сделал класс - чанк, в котором есть Instanced Static Mesh и задал ему cull distance. Выходит, что террейн - это множество отдельных экторов. Проблемно, особенно для памяти, но работает отлично :)
Конечно, если разберусь с буферами, сделаю через них

Автор:  gary_cho [ 19 янв 2020, 18:44 ]
Заголовок сообщения: 

чтобы отрисовать модель тебе как минимум нужен вершинный буфер( а по-хорошему ещё индекстный, для нормалей, UV и может ещё что ). Вот туда складываешь координаты вершин куба. Если ты грузишь например модель из FBX анрил сам экспортирует всё оттуда и создаёт всё сам. Но можно сделать и руками. Например есть ProceduralMeshComponent, где ты сам пишешь руками в эти буферы координаты вершин, нормали и UV. Вот у них там была функция, которая создаёт эти кубки. Те генерит все данные и раскладывает в буферы.В UE4 навигация сделана октодеревом, чтобы быстро искать пути.

Автор:  Monolag [ 20 янв 2020, 09:09 ]
Заголовок сообщения:  Re:

gary_cho писал(а):
чтобы отрисовать модель тебе как минимум нужен вершинный буфер( а по-хорошему ещё индекстный, для нормалей, UV и может ещё что ). Вот туда складываешь координаты вершин куба. Если ты грузишь например модель из FBX анрил сам экспортирует всё оттуда и создаёт всё сам. Но можно сделать и руками. Например есть ProceduralMeshComponent, где ты сам пишешь руками в эти буферы координаты вершин, нормали и UV. Вот у них там была функция, которая создаёт эти кубки. Те генерит все данные и раскладывает в буферы.В UE4 навигация сделана октодеревом, чтобы быстро искать пути.


Отлично, большое спасибо, теперь все стало понятнее! Доводилось пользоваться ProceduralMeshComponent, так что теперь я понимаю о чем вы говорите
Буду копать в эту сторону :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/