Anthroposcaper - веб-приложение для параметрического создания 3D-моделей городской и архитектурной среды
Всем привет! Лет 15-20 назад я занимался визуализацией экстерьеров.
И очень хотелось автоматизировать процесс. Тогда всё упёрлось в то, что в 3Ds max нельзя было скриптом сделать loft, а в MAYA было неудобно работать со сплайнами. Речь про планировку. Есть скажем чертёж небольшого микрорайона. Нужно все линии руками замкнуть, создать везде бордюры, между травой и тротуаром лофт пустить с переходной текстурой. Очень хотелось автоматизировать процесс.
Все эти годы я потихоньку шёл к этому. И пришёл) Видео, что бы было понятно:
Схема простая:
1. Исходные данные. Импортируешь план из DXF или рисуешь чертёж прямо в редакторе. Сложную геометрию для шаблонов (бордюр, секция забора) — подгружаешь готовыми 3D-моделями (glTF/GLB).
2. Параметризация. Помечаешь грани и линии чертежа своими тегами и атрибутами. А из 3D-моделей делаешь шаблоны.
3. Сборка. Нажимаешь кнопку, и редактор сам из шаблонов по размеченному чертежу собирает 3D-модель.
Это ранняя версия, но в которой уже можно пройти весь путь. Результат экспортируется в .glb который можно импортировать в ваш привычный 3D редактор.
Что я хотел:
- Чтобы зоны находились сами.
- Была возможность параметризации всех объектов чертежа.
- Простые правила, по которым генерировалась бы геометрия.
Я пришёл к шаблонам. По сути это просто кусочек 3D-сцены, который будет на выходе, плюс кусок чертежа, который должен быть на входе. Т.е. мы просто рисуем то, что должно быть на входе, и то, что должно быть на выходе. Кажется интуитивно и логично. Но так как чертёж у нас не один в один с шаблоном, а немного везде по-разному, то нужно ещё в шаблон добавить параметры, как он будет на эти несоответствия реагировать. Может ли сжиматься, тайлится ли текстура при растяжении и т.п.
По всему этому записал вводный урок и подготовил тестовый проект:
В идеале, конечно, на входе должен быть произвольный подграф чертежа. Но пока реализация с рёбрами - стыки двух зон. В планах добавить хотя бы ещё точки с произвольным числом примыкающих рёбер. Я исходил из того, что в основном что-то происходит на стыках разных зон. Например, дороги и газона - бордюр.
Дальше в голове, конечно, что план сверху ничем принципиально не отличается от развёрнутого плана фасада здания. Там тоже зоны (двери, окна), стыки. Ну и, конечно, докрутить параметризацию до того, чтобы, помечая зону как дом, из него по шаблонам генерировался бы уже полноценный дом в столько этажей, сколько указал в параметре. Да и решатель с ограничителями был бы местами полезен.
В общем там есть куда идти дальше, поэтому хотел бы услышать обратную связь)
Спасибо за внимание! <3