Полезное

Мы Вконтакте

Discord канал

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

Изображение

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

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


Спасибо за ответ! Про октодерево не слышал никогда, почитаю.
Про то, что руками создаются объекты - понял, а вот что именно делают буферы и как с ними работать - нет, было бы неплохо узнать.
Я сейчас делаю довольно глупо, но работает. Сделал класс - чанк, в котором есть Instanced Static Mesh и задал ему cull distance. Выходит, что террейн - это множество отдельных экторов. Проблемно, особенно для памяти, но работает отлично :)
Конечно, если разберусь с буферами, сделаю через них
Аватара пользователя
Пользователь
Сообщения: 195
чтобы отрисовать модель тебе как минимум нужен вершинный буфер( а по-хорошему ещё индекстный, для нормалей, UV и может ещё что ). Вот туда складываешь координаты вершин куба. Если ты грузишь например модель из FBX анрил сам экспортирует всё оттуда и создаёт всё сам. Но можно сделать и руками. Например есть ProceduralMeshComponent, где ты сам пишешь руками в эти буферы координаты вершин, нормали и UV. Вот у них там была функция, которая создаёт эти кубки. Те генерит все данные и раскладывает в буферы.В UE4 навигация сделана октодеревом, чтобы быстро искать пути.
Аватара пользователя
Пользователь
Сообщения: 47
gary_cho писал(а):
чтобы отрисовать модель тебе как минимум нужен вершинный буфер( а по-хорошему ещё индекстный, для нормалей, UV и может ещё что ). Вот туда складываешь координаты вершин куба. Если ты грузишь например модель из FBX анрил сам экспортирует всё оттуда и создаёт всё сам. Но можно сделать и руками. Например есть ProceduralMeshComponent, где ты сам пишешь руками в эти буферы координаты вершин, нормали и UV. Вот у них там была функция, которая создаёт эти кубки. Те генерит все данные и раскладывает в буферы.В UE4 навигация сделана октодеревом, чтобы быстро искать пути.


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


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

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