Бинарные гладкие воксели с острыми чертами
Я пытаюсь создать трехмерный мир, состоящий из вокселей (кубов). Я пытаюсь сгладить мир, но мне нужно, чтобы некоторые блоки были "блокированными". Марширующие кубы - очень популярный способ сглаживания мира, но я не вижу хорошего способа добавления к ним "блочных" кубов.
Поскольку я использую только 1 или 0 в качестве плотности, существует ли простой способ упростить мир для обычных блоков, как в этом видео, и сохранить "блочные" кубы такими, как они есть?
Мне известен ряд других алгоритмов, которые допускают четкие функции и тому подобное. Но так как мне нужно только 1 проход, меш не нужно сглаживать полностью, есть ли лучший способ сгладить это, чем с помощью одного из многочисленных, гораздо более сложных алгоритмов?
Отредактируйте для уточнения того, что я имею в виду с гладкими и "блочными" кубами
Я считаю, что сетка, показанная в видео, гладкая. Под "блочными" кубами я имею в виду кубы с углами 90 градусов. Эти сглаженные воксели не такие гладкие, но этого достаточно для моей цели.
1 ответ
Предположение 1) Различие между "гладкими" и "квадратными" секциями будет основано на типе отображаемого / игрового материала.
Предположение 2) Использование бинарной плотности обусловлено не фактическим хранением плотности, а скорее хранением (возможно, сжатым образом) идентичности или типа материи в каждой точке.
Предположение 3) Сетка не нуждается в многообразии. (самопересечение разрешено, хотя отверстий быть не должно).
Результат: отдельные проходы сетки для каждого материала. Если материал "гладкого типа", запустите на нем марширующие кубики. Если материал "блочный", поместите некоторые из шести четырехугольников вокруг каждой точки.
Чтобы сохранить "твердость" (непрерывность поверхности, без отверстий), гладкий проход должен учитывать любое твердое тело как занятое пространство, в то время как проход блока должен игнорировать только те случаи, когда грань является блоком (или непрерывно гладким материалом, но для этого требуется дополнительный 8 чеков подаются на чек, что может быть хуже, чем таскать с собой кучу пустых внутренних граней). Чтобы избежать дублирования, сглаженная поверхность рисуется только в том случае, если хотя бы одна из 8 точек имеет "гладкий тип", в то время как прохождение блока отрисовывается, если центральная точка имеет "блочный тип".
Насколько я могу судить, проблема 3^8 возникает из-за одного прохода со значениями по углам. При добавлении второго прохода (с точками по сторонам и в центре) необходимо вычислить только 2^6 + 1 случаев, помимо 2^8, уже присутствующих в проходном проходе кубов.