Автор описывает концепт минималистичного 3D‑редактора для 2.5D RPG‑графики (как в классических изометрических/топдаун‑RPG), который по простоте похож на пиксель‑арт‑редактор, но позволяет создавать более сложные формы, чем воксельные редакторы.
Ключевая идея: 3D через две 2D‑плоскости
В фиксированной 2.5D‑перспективе большинство 3D‑примитивов можно описать через две плоскости куба, в который они вписаны:
- Top Plane — верхняя грань объёма;
- Front Plane — фронтальная грань объёма.
Манипулируя объектом в этих двух проекциях, можно сильно упростить 3D‑операции: перемещение и масштабирование выполняются в 2D, при этом полностью убирается произвольное вращение. Автор предполагает, что, как и в воксель‑редакторах, отказ от вращения всё равно оставляет большой художественный простор.
Дополнительно объект можно «переворачивать» на 90° вперёд/назад, меняя назначение плоскостей (Front — экструзия и позиция по XY, Top — масштаб и позиция по XZ).
Базовый пайплайн моделирования
- Добавить примитив к объекту.
- Расположить (масштабировать, сдвинуть) и покрасить примитив.
- Собирать из таких «тайловых» объектов сцены в игре.
Минимальный набор операций
- Добавление примитивов: Cube, Cylinder, Arc (полуцилиндр), Ramp (варианты по направлениям N/S/E/W).
- Выбор примитива: клик по объекту, вокруг появляются 6 точек (4 для фронтальной плоскости, 4 для верхней).
- Перемещение в XY: перетаскивание фронтальной грани.
- Масштаб в XY: перетаскивание углов фронтальной грани.
- Экструзия по Z: перетаскивание задних углов/рёбер.
- Перемещение в XZ: перетаскивание верхней грани.
- Выбор цвета: при выделенном примитиве клик по цвету палитры.
Ограничения, упрощающие работу
- Снэп к сетке: все операции привязаны к сетке 16×16×16.
- Бюджет примитивов: один объект — максимум 32 примитива.
- Без вращения: примитивы нельзя свободно вращать.
- Ограниченная палитра: 16 общих цветов на объект. Это позволяет «сшивать» несколько примитивов в визуально цельную форму за счёт одного цвета.
- Детали поверхностями: мелкие детали (например, кирпичи) создаются отдельными примитивами; копланарные поверхности рендерятся как единая 2D‑текстура.
- Порядок отрисовки: определяется порядком создания или позицией в списке примитивов.
Дополнительные функции
- Список примитивов (до 32 штук) с возможностью выбора, миниатюрами и, по возможности, изменением порядка.
- Сокрытие/показ примитивов через иконку «глаз» в списке.
- Скруглённые углы: для выделенного примитива можно задать скругление 1–4 «клетки» сетки.
- Flip Front/Top: поворот примитива на 90° вперёд/назад (например, плоский диск превращается в колесо).
- Cutter object: примитив вычитает объём из других (boolean subtract) — для отверстий и вырезов.
- Текстуры: помимо сплошных цветов, простые текстурные паттерны.
Рендеринг
Чтобы объекты не выглядели грубо, автор рекомендует:
- Параллельный источник света сверху (как солнце), фронт слегка в тени.
- Тени от объектов на другие объекты.
- Лёгкий ambient occlusion для связности форм.
- Вертикальный градиент: темнее внизу, светлее вверху для усиления глубины.
Тестовые кейсы
Для проверки инструмента автор предлагает набор целевых моделей: дом (House), фабрика (Factory), камень (Stone), дерево (Tree), сурок/woodchuck. Также упоминается рабочий прототип от Angry Octopus.
Выводы
- Фиксированная 2.5D‑перспектива позволяет свести управление 3D‑формой к двум 2D‑плоскостям и отказаться от сложного вращения.
- Жёсткие ограничения (сетка, лимит примитивов, единая палитра) делают редактор проще и ближе по ощущениям к пиксель‑арту.
- Минимальный набор примитивов и операций уже позволяет собирать сложные объекты и сцены.
- Допфичи (boolean‑вырезы, скругления, flip, текстуры) расширяют выразительность без усложнения базового UX.
- Качественный рендер (свет, тени, AO, градиенты) критичен, чтобы простые примитивы выглядели эстетично в игре.