Генератор воксельных кругов — создавайте круги, сферы и купола из блоков
Создайте свой генератор воксельных кругов
Создайте самый ровный воксельный/пиксельный круг для любого диаметра — затем посмотрите его как вращаемую 3D-сферу, купол или арку из блоков. Бесплатно, без регистрации.
Генератор воксельных кругов принимает диаметр в блоках и возвращает точные ячейки, которые образуют круглую форму на квадратной сетке. Введите 15 — получите 177 блоков. Введите 9 — получите 69. На выходе — список координат, а не изображение, так что его можно вставить в постройку, посчитать как список материалов или передать другому строителю. Бесплатно, без регистрации, без лимита на экспорт.
Тот же диаметр управляет и 3D-предпросмотром: плоская схема превращается в сферу, купол или арку, и её можно вращать до того, как вы что-то поставите. Ниже — алгоритм, точное число блоков для каждого диаметра, три стиля контура и проблемы, которые проявляются при ширине меньше примерно 12 блоков.
Как работает генератор
Генератор проверяет уравнение окружности на квадратной сетке и оставляет ячейки, центры которых попадают внутрь радиуса. Для диаметра D он строит сетку D на D, измеряет расстояние от центра сетки до центра каждой ячейки и заполняет ячейку, когда dx*dx + dy*dy <= r*r, где r = D/2. В этом весь алгоритм. Сравнение идёт по квадратам расстояний, поэтому квадратный корень не извлекается и никакое округление с плавающей точкой не может сдвинуть краевую ячейку на единицу.
Диаметр D определяет, куда попадёт центр сетки, и это единственное, что меняется между схемами. При нечётном диаметре центр лежит на середине блока, поэтому смещения — целые числа: от -7 до 7 для D=15. При чётном диаметре центр лежит на общей вершине четырёх блоков, поэтому смещения — половинные числа: плюс или минус 0,5, 1,5 и так далее для D=8. Две схемы почти одинакового размера поэтому почти не совпадают координатами, и нельзя превратить схему для 15 в схему для 16, просто добавив ряд.
В этом правиле нет ничего случайного. Каждый диаметр даёт одну фиксированную воспроизводимую схему: D=15 — это всегда 177 ячеек, D=9 — всегда 69. Вы можете вставить список в отчёт об ошибке, применить его во втором мире или вернуться к нему через месяц — координаты совпадут.
Нет спорной границы
Частое опасение — ячейки, у которых расстояние до центра точно равно радиусу, и что с ними делать: оставить по <= или отбросить по строгому <. Если посчитать, этого не бывает. При нечётном диаметре смещения — целые числа, а r*r оканчивается на 0,25, поэтому целочисленная сумма никогда с ним не совпадёт. При чётном диаметре оба смещения — половинные числа, поэтому каждый квадрат оканчивается на 0,25, а сумма — на 0,5, тогда как r*r — целое число.
Две стороны не могут быть равны ни при каком диаметре, а значит, <= и < дают одну и ту же схему и целый класс отчётов об ошибке «на единицу» исчезает. Настоящий краевой случай в другом: D=3 возвращает все девять ячеек своей сетки 3 на 3, включая углы, потому что центры углов находятся примерно в 1,414 от середины, а радиус равен 1,5. D=3 — это квадрат. Первый диаметр, который убирает угол, — D=5.
Круг → Сфера → Купол → Арка
2D-схема — это срез по экватору и одновременно основание. Чтобы получить сферу, выполните ту же проверку в трёх измерениях: для каждого слоя радиус среза равен квадратному корню из (r*r - h*h), где h — расстояние от центра сферы до середины этого слоя. Сфера диаметром 15 — это 15 слоёв. Средний слой — диск из 177 ячеек. Верхний и нижний слои — по 21 ячейке, основание 5 на 5, потому что центр слоя лежит на полблока ниже вершины сферы.
Купол — это такая стопка слоёв, отрезанная горизонтальной плоскостью. Выберите линию опоры — слой, где стена перестаёт быть вертикальной, — и оставьте только слои выше неё. Если разрезать сферу диаметром 15 по экватору, получится купол высотой 8 слоёв. Если оставить только верхние 5 слоёв, получится пологий колпак, опорное кольцо которого — круг из 13 блоков, так что колпак стоит на стене шириной 13, а не 15.
Арка — это плита, а не стопка слоёв. Возьмите контур кольца вместо заполненного диска, вытяните его прямо вдоль одной оси на нужную толщину, затем удалите всё ниже линии опоры. Арка шириной 15, толщиной 3 блока, у которой удалены нижние четыре ряда кольца, стоит высотой 11 блоков. Схема даёт ширину и кольцо; толщину и высоту опоры вы задаёте отдельно.
В этом отличие от плоской схемы. Пиксельная схема круга даёт основание и на этом останавливается. Она не скажет, замыкается ли силуэт в один блок наверху или превращается в плоский уступ, и не покажет, что купол и арка одного диаметра требуют разного количества материала. Вращение 3D-предпросмотра — так вы ловите это до того, как поставлен хоть один блок.
- КругОдин диск на сетке D на D, центры ячеек внутри радиуса r. Это основание и экватор для всего остального.
- СфераТа же проверка, выполняемая для каждого слоя, с радиусом среза, равным квадратному корню из (r*r - h*h). Высота D слоёв, ширина D блоков по экватору.
- КуполСфера, отрезанная на выбранной линии опоры. Обычный случай — половина сферы; пологим колпакам нужно более широкое опорное кольцо.
- АркаКонтурное кольцо, вытянутое вдоль одной оси и затем отрезанное ниже линии опоры. Толщина и высота задаются независимо.
Количество блоков и материалы
Заполненный диск стоит ровно столько ячеек, сколько внутри него. Таблица — это вывод генератора, а не оценка: одна ячейка сетки всегда равна одному блоку.
Как читать количество как список покупок
При D=15 заполненный диск — это 177 блоков, то есть две стопки по 64 плюс 49 в инвентаре в стиле Майнкрафт. D=16 даёт ровно три стопки — одна из причин, почему чётные диаметры удобны, когда вы таскаете материал. Если нужен только контур, при D=15 остаётся 40 ячеек: заполненный диск стоит более чем в четыре раза больше материала ради того же силуэта.
Выбор материала меняет число сильнее, чем диаметр. Сплошной диск выглядит плоским с уровня земли, поэтому в большинстве построек для заливки берут один блок, а для контура из 40 ячеек — второй, так что видимая стоимость — это контур, а заливка идёт из того, что осталось. Слой толщиной 3 блока утраивает число блоков контура. Основание полой башни использует только контур и оставляет внутренность пустой, и именно за эту внутренность вы платите, когда строите сплошным.
| Диаметр (блоков) | Радиус | Заполненные блоки | В стопках по 64 |
|---|---|---|---|
| 3 | 1.5 | 9 | - |
| 5 | 2.5 | 21 | - |
| 7 | 3.5 | 37 | - |
| 8 | 4 | 52 | - |
| 9 | 4.5 | 69 | 1 стопка + 5 |
| 11 | 5.5 | 97 | 1 стопка + 33 |
| 15 | 7.5 | 177 | 2 стопки + 49 |
| 16 | 8 | 192 | 3 стопки |
Три стиля контура
Стиль определяет, насколько толста обводка и где она лежит на сетке. Он не меняет число блоков заливки. Выберите стиль до того, как что-то поставите, потому что позднее переключение сдвигает каждую ячейку на осях.
Чётная толщина
Используется с чётными диаметрами: 4, 8, 16, 32. Центр фигуры попадает на вершину, где сходятся четыре блока, поэтому контур симметричен относительно обеих осей, но обводка занимает чётное число блоков сверху, снизу, слева и справа. Чётные схемы аккуратно масштабируются — удвойте диаметр, и пропорции сохранятся, — поэтому крупные постройки чаще всего опираются на них.
Нечётная толщина
Используется с нечётными диаметрами: 3, 5, 9, 15, 31. Центр попадает на блок, поэтому есть единственный средний столбец и единственный средний ряд, и фигура симметрична относительно них. Именно нечётные схемы читаются как круги в малом размере, потому что средний блок даёт глазу фиксированный центр, по которому можно судить о кривой.
Плоская сторона
Вариант с плоской стороной сохраняет чётность, но заменяет единственную крайнюю ячейку в каждой из четырёх основных точек плоским участком. При D=9 обычная нечётная схема ставит один блок у самого левого края. Вариант с плоской стороной делает этот левый столбец высотой 3 блока, так что силуэт читается как скруглённый квадрат. Используйте его, когда круг должен стыковаться с прямой стеной, дверной рамой или рельсовой линией, где ровный шов совпадает, а отдельная точка — нет.
01
При ширине меньше примерно 12 блоков стиль значит больше, чем диаметр. D=3 — это квадрат, D=5 — квадрат со срезанными углами, а D=7 — наименьшая схема, которая читается как круглая.
02
Для колодца, основания башни, фонтана или приствольной лунки в таком масштабе используйте нечётный диаметр 9 или 11 со стилем нечётной толщины.
03
Оставьте вариант с плоской стороной для всего, что должно примыкать к прямой кромке, и проверьте эту кромку в 3D-предпросмотре до расстановки блоков.
Постройте его в воксельном мире
Схема полезна только тогда, когда она стоит. 3D-конструктор игр принимает список координат как шаблон расстановки, поэтому те же числа, что дали предпросмотр, дают блоки в мире, по которому можно ходить. Не нужно заново выводить кривую вручную в редакторе или прикидывать диагонали на глаз.
Предпросмотр — это место, где вы ловите то, что скрывает плоская схема: выемку в один блок в кольце, срез купола, который у вершины меняет чётность и оставляет уступ, диагональную лестницу, по которой игрок не может подняться. Это стоит секунд на исправление на экране и куда больше — после сотни поставленных блоков. Mini World и The Cyclops' Island построены именно так — сначала плоский план, затем подъём, затем прогулка.
Если вам нужен круг как плоский спрайт, а не как форма из блоков — монета, круговой счётчик, значок интерфейса, — Agent Sprite Forge берёт тот же радиус и сохраняет пиксельную версию согласованной с блочной, чтобы они не расходились.
01
Выберите диаметр и стиль контура, затем скопируйте список координат. Сохраните числа; одна и та же схема понадобится для каждого среза.
02
Откройте новый мир в 3D-конструкторе игр и задайте сетку земли равной вашему диаметру или кратной ему, чтобы основание совпадало без сдвига на полблока.
03
Сначала поставьте ячейки контура, затем заполняйте внутрь. Контур первым сразу выдаёт неверную координату; заливка первой скрывает её, пока вы не замкнёте кольцо.
04
Поднимите фигуру. Вытяните контур прямо вверх для стены или башни либо подставьте диаметры срезов по слоям для купола или сферы.
05
Проверьте силуэт с уровня земли, прежде чем добавлять второй материал. Строго сверху любой круг выглядит правильно.
06
Войдите в режим игры и пройдите по периметру. Столкновения поймают вас на диагональной лестнице, если кольцо толщиной в один блок и за ним ничего нет.
Зайдите в мир, которому он принадлежит
Спрайт — это персонаж, которому негде стоять. Последний шаг — тот, которого не предлагает больше никто: возьмите лист, который вы только что собрали, и поместите его в мир, по которому можно ходить, — небольшой остров, планету, дождливый перекрёсток. Каждый мир на этом сайте сделан из одного текстового описания и опубликован как страница, в которую можно играть.
FAQ
Генератор воксельных кругов бесплатен? +
Да. Нет входа, нет лимита на экспорт и нет водяного знака на списке координат. На выходе — обычный текст, так что ничего из этого не спрятано за аккаунтом.
Я получу точную схему блоков один к одному? +
Да. Одна ячейка сетки — один блок при любом диаметре: круг из 15 блоков возвращает 177 ячеек, и вы ставите 177 блоков. Между схемой и постройкой нет ни масштабирования, ни округления.
Он умеет делать сферы и купола или только плоские круги? +
И то и другое, из одного диаметра. Сфера выполняет проверку радиуса на каждом слое, где радиус среза равен квадратному корню из (r*r - h*h), а купол — это та же сфера, отрезанная на выбранной вами линии опоры.
Использовать нечётный или чётный диаметр? +
Нечётный — для всего, что меньше примерно 16 блоков. Нечётные диаметры ставят блок в центр, поэтому форма симметрична относительно среднего ряда и столбца. Чётные диаметры помещают центр на вершину и заметно сужаются в четырёх основных точках.
Что такое воксель? +
Воксель — это одна ячейка в 3D-сетке, куб фиксированного размера. В этих схемах один воксель — один блок, поэтому подсчёт ячеек заодно служит подсчётом материалов.
Можно ли использовать схему для построек в стиле Майнкрафт? +
Да. Считайте каждую ячейку одним блоком. Схема подходит как основание, стена, основание башни, край фонтана или слой купола, а подсчёт ячеек переносится как список материалов.
Назад в 3D-конструктор игр
Все 31 готовых 3D-мира, игры и сцены собраны на одной странице — в каждую можно играть.