#webgl #quadtree
#webgl #quadtree
Вопрос:
Меня интересует структура данных «quadtree», и для моего проекта я хочу их использовать. Хорошо, давайте приведем пример :
У нас есть трехмерное пространство, где положение камеры заблокировано, но я могу вращать камеру. Всякий раз, когда я поворачиваю камеру до определенной точки, отображается большое 2d image
(больше усеченного).
1. Загрузка всего изображения не требуется, когда я вижу только 1/4 его части! . Имеет ли смысл использовать quadtrees здесь, чтобы загружать только те части изображения, которые видны мне?(При использовании opengl / webgl) Если это так, каждый узел quadtree должен содержать свой собственный vertexbuffer и текстуру или нет?
Комментарии:
1. Каков вариант использования этого большого изображения? У вас есть что-то вроде карты окружения?
2. Да, например
3. Вы могли бы просто разделить карту на несколько меньших частей и определить видимость для каждой из них. Quad tree наиболее полезен, если у вас есть серии плиток с повышающимся качеством (например, географические карты). Таким образом, вы могли бы увеличить масштаб и показать изображения лучшего качества. Если вы планируете всегда оставаться на том же уровне точности, я думаю, что quad tree является чрезмерным усложнением.
4. Спасибо за ваш ответ. Я думаю, почти то же самое, но, например, если размер изображения превышает 50 мб, было бы неплохо загрузить только 2 МБ, а ЗАТЕМ динамически загружать другие части изображения? Что вы думаете об этом?
5. Конечно, вы можете загрузить полное изображение низкого качества, а затем загружать фрагменты по запросу. С другой стороны, вам нужен действительно большой экран, чтобы получить всю точность изображения размером более 50 МБ. А также, если это высокое разрешение, вы должны быть уверены, что сэмплеры текстур могут работать с такой точностью. Это 16 кб?
Ответ №1:
Quad tree хорошо подходит, когда вам нужно переключаться между несколькими уровнями точности по требованию. Географические карты с масштабированием — хороший пример. Если у вас есть плитки только с одним уровнем точности, должно быть удобнее контролировать их загрузку / видимость без такой сложной структуры. Вы могли бы просто быстро загрузить изображение с низкой точностью, а затем загружать изображения с высокой точностью по требованию.
Кроме того, говоря о вашем случае — 50 мб для изображения 4k звучит странно. Сжатые текстуры DDS / dxt1 или PVRTC должны занимать меньше места (а несжатые jpg / png намного меньше). Кроме того, полезно определить, какова наименьшая применимая точность изображения в вашем случае (чтобы вы не тратили пространство / трафик без причины).