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