Подтвердить что ты не робот

Что такое редкие октеты вокселей?

Я много читаю о потенциальном использовании разреженных октетов вокселей в будущих графических движках.

Однако я не смог найти техническую информацию о них.

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

Может кто-нибудь объяснить или указать мне на это объяснение?

4b9b3361

Ответ 1

Технический документ NVIDIA под названием Эффективные разреженные воксельные октри - анализ, расширения и внедрение  описывает это очень подробно здесь

Ответ 2

Вот фрагмент о id Software на эту тему.

id Tech 6 будет использовать более продвинутый метод, который основывается на идее MegaTexture и виртуализирует как геометрию, так и текстуры, чтобы получить уникальную геометрию вплоть до эквивалента texel: Sparse Voxel Octree (SVO).

Он работает путем раскодирования геометрии, представленной вокселями (вместо треугольников), хранящимися в октете.

Цель состоит в том, чтобы иметь возможность передавать части окта в видеопамять, идя далее вдоль дерева для соседних объектов, чтобы дать им более подробную информацию и использовать более высокие уровни, более крупные воксели для дальнейших объектов, которые дают автоматический уровня детализации (LOD) для геометрии и текстуры одновременно.

Также здесь статья об этом.

В этой была найдена большая запись в блоге.

Ну, только вокселы не так интересны, потому что для любого достаточно подробного моделирования вам понадобится огромное количество вокселей (если использовать единую сетку).

Итак, необходима иерархическая система, которая подводит нас к октавам. Octree - очень простая структура пространственных данных, которая подразделяет каждый node на 8 одинаково больших подузлов.

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

Ответ 3

octree имеет 8 соседей, потому что, если вы представляете себе квадрат, который был разрезан на 4 равных четверти, так

______________
|     |      |
|     |      |
|_____|______|
|     |      |
|     |      |
|_____|______|

то это будет "четверка" (четыре) три.

но в трех измерениях у вас есть кубик, а не квадрат, поэтому разрезайте его по горизонтали, по вертикали и вдоль оси Z, вы найдете 8 кусков, а не 4 так

    _____________
   /     /     / |
  /-----/-----/  |
 /_____/_____/ | |
 |     |     | |/|
 |-----|-----|/| |
 |     |     | |/
 |_____|_____|/

надеюсь, что с тех пор.

что делает SVO уникальным, заключается в том, что он хранит информацию Voxel, которая является точкой в ​​пространстве, которая имеет такие свойства, как Color, Normal и т.д.

идея SVO заключается в том, чтобы игнорировать треугольники и необходимость текстур, объединяя их в единый SVO, который содержит Voxelized Triangle Hull (модель) и его текстуры поверхности всего в одном объекте.

Причина, по которой здесь нужен Octree, заключается в том, что в противном случае единая структура сетки потребует гораздо большей памяти для существующих видеокарт.

поэтому использование SVO допускает нечто вроде Mip-Mapped 3D Texture..

MipMapping в основном представляет собой одно и то же изображение, но в разностных масштабах, которое имеет более подробную информацию и последнее, которое имеет наименьшую детализацию (но выглядит довольно похоже на расстоянии)

Таким образом, объекты вблизи могут передаваться из SVO с большей детализацией, в то время как другие объекты обтекают с меньшей детализацией. То есть, если вы используете Ray-Casting. Чем дальше от луча от камеры, тем меньше мы копаем в нашу Mega-Texture/SVO

Но, если вы думаете, что вне коробки, как "Euclideon", с ее "неограниченной детализацией", вы просто используете кусочки frustum и пересечение плоскости /aabb с проецируемым UV нашего нарезанного рекламного щита для поиска каждого цвета текселей на экран, против Width * Высота пикселей, стрельба лучей, с nvidia наивные "оптимизации луча".

PS (sorta off topic): для тех, кто не понимает, как Euclideon делает свой ши, я считаю, что это наиболее практичное решение, и у меня есть основания для его резервного копирования (что они НЕ используют лучевое кастинг)

Самая большая тайна, которую они имеют, - это не рендеринг, а хранение их данных. RLE просто не режет его... потому что некоторые данные объема/вокселя могут быть более случайными и менее "твердыми", где RLE бесполезно, также сжатие которого для меня обычно требует как минимум 5 байтов во что-то меньшее. они говорят, что они выводят примерно половину того, что помещается) через их сжатие.. поэтому они используют 2,5 байта, что примерно такое же, как и Triangle now-adays

Ответ 4

на самом деле, 1.15 бит заставляют меня подозревать, что они просто хранят вещи последовательно, каким-то блестящим образом простым способом. то есть, если они хранят только объемные данные, а не такие данные, как цветные или текстурные данные.

подумайте об этом так: 1 voxel должен быть только 1 бит: это там или нет? (быть или не быть, другими словами: P). octree node он состоит из 8 вокселов и немного для хранения, если вещь содержит что-либо вообще. что один бит на воксел плюс один на 8. 1 + 1/8 = 1,125. добавьте еще одного родителя node с 7 братьями и сестрами, и вы получите 1 + 1/8 + 1/8/8 = 1,140625. подозрительно близкие к упомянутым 1.15. хотя я, вероятно, далеко, он может дать кому-то подсказку.

Ответ 5

В наши дни вы можете просто растрировать все точки, вы нуждаетесь в raytrace или raycast, поскольку видеокарты могут проектировать непристойные количества очков. Вы используете octree, потому что его кубическая фигура, непрерывно делясь на меньшие и меньшие кубики. (voxels) У меня теперь есть двигатель, который использует растровую технику и хорошо выглядит. Для тех, кто говорит, что вы не можете оживить вокселы, я думаю, что они действительно не слишком много думали о теме, конечно, это возможно. Как я вижу, это делает мир очень "бесконечным 3D-пальто", так что посмотрите на 3d-пальто, и дизайн уровня будет очень похож на способ работы этой программы. Основная обратная связь связана с тем, что скорость потоковой передачи не является достаточно быстрой, трассировка или растрирование, не совсем составляющая 60 кадров в секунду, а построение фактических воксельных объектов очень дорого стоит вычислить, на данный момент я могу построить сферу 1024x1024x1024 примерно за 12 секунд, но все эти проблемы может быть исправлено, его захватывающее будущее. Мой максимальный размер на данный момент - мега мега мега, но на самом деле я могу сделать это в 8 раз больше, чем это. Конечно, другая проблема, которая на самом деле довольно серьезная, занимает около 100 мегабайт, чтобы сохранить символ 8192x8192x8192 даже после сжатия, поэтому среда будет еще больше. Хотя, говоря, что у вас есть персонажи 8192x8192x8192, совершенно абсурдно по сравнению с тем, что мы видим в играх сегодня... весь мир был 8192x8192x8192:)

Как вы это делаете, только сохраняя бит на указатель, указатели создаются во время выполнения в видеопамяти... обдумайте это, и у вас может быть свой собственный движок.:)