@Ksushqa
Unity developer

Как вы работаете с heightmap resolution (2^k+1) (unity)?

Привет!
Подскажите, когда вам нужно корректировать из кода карту высот ландшафта, при этом необходимо разбить его на некоторое число равных частей, как вы делите его? Если, например, разрешение 513, а шаг, с которым надо делить область, составляет 8?
  • Вопрос задан
  • 300 просмотров
Решения вопроса 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Разбивать нужно с дублированием вершин внутри шва. Возьмём примитивный случай с террейном четыре на четыре клеточки, размер массива вершин в данном случае будет пять на пять. Разобьём его на четыре части, каждая сторона будет разделена пополам. Чтобы посчитать размер нужных массивов, нужно вычесть единичку из стороны, поделить на два и прибавить единичку. Таким образом, получаем четыре массива три на три, каждый содержит в себе два на два клеточек.
Для вашего случая аналогично, вычитаете единицу из 513, делите на восемь, получается 64, прибавляете единицу, получается 65. Вот и размер нужного вам массива. На стыке вершины будут дублироваться, но каждый кусочек будет независимый.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Griboks
@Griboks Куратор тега C#
Нельзя дать правильный ответ, пока вы не расскажите, почему на 1 больше, зачем на зоны и как выбирается их размер. Разрешение 513, я понимаю как byte[513,513].
Ответ написан
@Ksushqa Автор вопроса
Unity developer
Нельзя дать правильный ответ, пока вы не расскажите, почему на 1 больше, зачем на зоны и как выбирается их размер.

В документации вполне прозрачно написано, откуда тут +1:
Heightmap Resolution Разрешение карты высот terrain’а в пикселях (должно быть степенью двойки плюс один, например, 513 = 512 + 1).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы