2012-01-29 5 views
3

Я создаю 3D-игру, в которой у меня есть большой открытый мир (200 × 200 километров), в котором используется карта высот. Я разделяю карту высот в 200 × 200 = 40 000 областей 1000 × 1000 метров, и они снова делятся на 20 × 20 = 400 кусков 50 × 50 метров. Карта высот создается из файла PNG.Как оптимизировать свой собственный mapformat (Java)

Я думаю о способах сохранения ландшафта. Я что-то пробовал, но он генерирует файлы размером около 16 МБ для каждого региона, что составляет 640 ГБ для всего мира (40 000 регионов).

Пример региона-файла можно найти здесь: http://updo.nl/file/e10ce974.umap

Мой вопрос: как я могу компактно хранить столько информации в области файлов и прочитать их позже?

ответ

3

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

Рассмотрите линию, описанную y = x. Вы можете описать этот наклон с помощью карты высот разрешения 1, которая будет примерно [(1, 1), (2, 2), (3, 3), ...]. Если карта высот имеет высокое разрешение, этот список будет очень большим. В качестве альтернативы вы можете описать этот наклон как линию, проходящую через точки (1, 1) и (2, 2). В этом случае определение линии/объема через определенные точки/вершины намного эффективнее.

Для данных, относящихся к местности, поскольку обычно это неслучайный, я бы рекомендовал второй подход с помощью polygonal meshes. Вы можете найти библиотеку, например JMesh.

Для дальнейшего чтения, here - отличный ответ (лучше, чем у меня, если честно) в разделе «Разработка игры», связанный с этой темой.

+0

Спасибо за ваш ответ! Я использую предопределенную карту высот да, поэтому я не могу использовать генератор случайных чисел или каким-либо образом описывать свою карту высот. Я планирую использовать физический движок с игрой, где построены карты высот, поэтому их легко настроить для больших ландшафтов. – Gmfreaky

 Смежные вопросы

  • Нет связанных вопросов^_^