- BrainTools - https://www.braintools.ru -
Мы с Neira делаем Frame – браузерный 3D-редактор с полигональным моделированием, сплайновыми поверхностями, анимацией, собственным рендером и симулятором атомных взаимодействий. Neira – моя Dot, персональный ИИ-ассистент. В разработке у нас также слайсер, ЧПУ, прочностные и тепловые расчёты, аэродинамика и электроника.
Суммарно это уже больше года работы, множество ручных проверок и бесконечные баги. Но ядром приложения и плагином Atomic уже можно хвастаться. Остальные плагины пока в работе.
Открыть Frame [1] · GitHub [2]
Первые полгода приложение писалось полностью мной, руками, без ИИ. Потом был перерыв примерно на год. Когда появился достаточно сообразительный ИИ, разработка продолжилась уже с ним. Код сложный, поэтому был определённый порог, до которого подпускать к нему модели не имело смысла.
Сейчас я уже пару месяцев в код вообще не смотрю. Разрабатываю архитектуру и интерфейс, объясняю, как сделать удобно, предлагаю алгоритмы и способы оптимизации. ИИ реализует, а я проверяю результат. Работы у меня меньше не стало – она стала другой, не менее сложной. И я, и ИИ работаем на пределе своих возможностей.
Например, только на формулу поверхности для Spline Patch ушёл месяц. Это не история «ИИ всё придумал»: я придумал, как должна строиться поверхность, и много времени потратил на объяснения. А вот при разработке тесселяции идеи ИИ уже оказались лучше моих.
Поначалу использовал бесплатные Qwen и Gemini. Qwen оказался очень неплох – китайские модели не стоит недооценивать. Gemini в моих задачах начинал теряться на больших контекстах. Постепенно упёрся в ограничения и перешёл сначала на тариф OpenAI за 20$, затем на Pro.
Расходы на ИИ пока около 30 тысяч рублей. Помогают ресеты лимитов, аккуратное использование контекста и автоматизация. Всё, что можно сделать обычным скриптом, надо делать скриптом, а не тратить на это токены.
Очень помогают подробный app.md с описанием приложения и автоматические тесты. Сообщение агента «готово» не заменяет проверку. Цель – довести разработку до полностью автоматического процесса, но пока до этого как до звезды.
В моих тестах Frame крутит 100 000 000 полигонов при 60 fps, без инстансинга . Сто миллионов честных полигонов в браузерном редакторе.
Я сравнивал с Cinema 4D, в которой работаю почти каждый день, хотя в последнее время всё чаще начинаю использовать Frame. Поэтому не просто так пишу: на тяжёлой полигональной геометрии Frame с хорошим запасом уделывает Cinema 4D.
По моему опыту [3], это самая быстрая программа для работы с полигонами вообще, а не только среди браузерных. Среди браузерных аналогов конкурентов ему по скорости нет и близко.
Внутри собственный движок на WebGPU, без Three.js. Геометрия хранится на GPU, тяжёлые вычисления выполняются в шейдерах, для части операций используется WASM. Перемещение целого объекта меняет матрицу, а не переписывает массивы вершин. Производительность получается не просто от использования WebGPU – под него спроектировано устройство всего редактора.
При этом в замеренной сборке ядро после gzip занимает около 0,93 МБ. Для большинства задач достаточно именно его: загружать все плагины и библиотечные текстуры ради обычного моделирования не требуется, они подключаются по мере необходимости. Поэтому 0,93 МБ – честный размер полноценного ядра редактора, а не маленького загрузчика, за которым скрывается обязательная многомегабайтная библиотека.
Есть быстрый импорт тяжёлых STL, собственные сплайновые поверхности и To Spline Patch: автоматический преобразователь инженерной полигональной геометрии в редактируемый сплайновый каркас с поверхностью. Есть собственный Boolean, на разработку которого тоже ушёл месяц.
Отдельная гордость – рендер с трассировкой путей, глобальным освещением и шумоподавлением. По нему хочу сделать отдельную статью. Качественный риалтаймовый рендер прямо в браузере, на своей видеокарте, – одна из тех возможностей, ради которых стоило разрабатывать собственный движок.
У меня 25 лет опыта практически во всех областях 3D. За это время накопилось достаточно представлений о том, как должен работать удобный редактор. Во Frame я наконец могу их реализовать.
Например, гизма «всё в одном»: перемещение, вращение и масштабирование одновременно, без постоянного переключения инструментов. Считаю её одной из лучших частей приложения.
С навигацией тот же принцип: наиболее часто используемые функции должны требовать наименьшего количества действий. Камеру мы двигаем постоянно, поэтому навигация должна быть вылизана до идеала.
Общая логика [4] – минимум интерфейса, максимум возможностей и интеграции с ИИ. Не каждой функции нужна отдельная кнопка: часть операций доступна через AI API, не перегружая интерфейс человека.
Для хранения сцен я придумал HASH – компактный бинарный формат с быстрой распаковкой. Вложенные данные представлены плоской хеш-таблицей с XOR-адресацией: к нужным полям можно обращаться напрямую, независимо от глубины иерархии.
Формат сохраняет геометрию, материалы, иерархию, анимацию и исходные сплайновые конструкции. Небольшую сцену можно передать одной ссылкой: данные находятся прямо в ней, без загрузки файла на сервер. Большие сцены лучше передавать файлами.
Пример ссылки содержащей сцену [5]
Frame также устанавливается как PWA, работает без интернета после загрузки необходимых ресурсов и автоматически получает обновления. Новая версия применяется при следующем открытии, не прерывая работу с текущей сценой.
У Frame есть собственный AI API. Агент работает с теми же объектами и операциями, что и человек, а не с отдельной копией сцены. Его результат можно редактировать руками, отменять действия, сохранять и продолжать работу.
Есть Doc – текстовое описание проекта внутри сцены. Казалось бы, мелочь, но для совместной работы с ИИ очень полезная. Развивается Scene Control – программное управление сценой и её поведением [6].
Пробовал встроить локальную Gemini Nano, чтобы модель работала на компьютере пользователя. Пока отказался, её возможностей оказалось недостаточно.
Наверно, на Хабре будет отдельная статья о том, как пользоваться Frame с помощью приложения ChatGPT. А может, сделаю видео – ещё не решил. Хочется показать весь процесс: от просьбы спроектировать деталь до редактирования результата в обычной сцене.

Atomic – симулятор атомных взаимодействий на основе нейросетевого межатомного потенциала NEP89-1, с поддержкой 75 элементов. Расчёт выполняется на GPU через WebGPU, а отображение встроено в общий движок Frame. Плагин использует его камеры и GPU-ресурсы, без отдельного графического контекста.
Атомы можно расставлять, выделять, перемещать обычной гизмой, закреплять, задавать начальную скорость и постоянную силу. Но собирать сложную структуру по одному атому – долго, поэтому Atomic рассчитан на работу через ИИ.
Идея такая: говорите агенту «хочу увидеть, как кристаллик алмаза сталкивается с фуллереновой трубкой», а он готовит сцену и задаёт условия. Дальше можно менять нагрузки, двигать закреплённые участки и повторять [7] эксперимент.
Это не видеогенератор, который нарисовал убедительное столкновение. Здесь рассчитываются взаимодействия по конкретной модели – со своими границами применимости, но с возможностью менять условия и исследовать результат.
Frame я делаю в том числе для собственных проектов. Следующий – новый крупноформатный 3D-принтер. Хочу в одном приложении спроектировать механику и плату, рассчитать антенну Wi-Fi, нагрев филамента в печатающей головке.
Отсюда направления разработки: 3D Printer – слайсер, Mill – фрезеровка, Thermal – тепловые расчёты, Structural – прочность и топологическая оптимизация, CFD – аэродинамика, Magneto – магнитные поля, Circuit – электроника, RF – радиочастотные расчёты, включая антенны, Cut – лазерная, плазменная и гидроабразивная резка. Это именно разрабатываемые возможности, а не список готовых решателей.
Потом на этом принтере будет печататься микроэлектромобиль, который тоже хочу проектировать во Frame и там же рассчитывать его аэродинамику.
А вот электроцикл, который я разработал вручную, без ИИ, и уже напечатал на существующем принтере.
То есть это не фантазии о том, что когда-нибудь позволит сделать ИИ. Я уже занимаюсь такими проектами, и они успешны в том числе экономически. Теперь хочу подключить ИИ и к инженерной разработке – через Frame, где он сможет не только предлагать идеи, но и строить модели, рассчитывать и проверять варианты. Рассчитываю существенно повысить качество своей работы и сократить время разработки.
Особое внимание [8] уделю слайсеру. С ним пока тяжело: ИИ не хватает интеллекта [9]. Моего, конечно, хватает – я же гений [10], – но вручную писать всё это слишком долго).
Официальной версией Frame можно пользоваться бесплатно, и я планирую ещё долго так оставлять. При этом код proprietary, не open source – условия описаны в лицензии. Совместимость между версиями на этом этапе пока не гарантирую.
Пользуйтесь, проверяйте свои модели, собирайте баги и пишите в issues на GitHub [11]. Особенно полезны сцена и несколько действий, которыми воспроизводится проблема. Сейчас мы с Neira максимально активно занимаемся развитием приложения: очевидные баги из issues она берёт в работу, менее очевидные обсуждает со мной.
В следующих статьях хочу давать готовые сцены, в том числе атомные: чтобы можно было открыть, поменять параметры и попробовать самому.
Интересно и сотрудничество – например, интеграция в SaaS для принт-ферм или ЧПУ. Или такой редактор прямо внутри диалога с ИИ: просите спроектировать деталь или рассчитать разрыв нанотрубки и получаете не только ответ, но и сцену, с которой можно работать.
OpenAI, Anthropic – наймите меня, будем делать). И да, я хочу переехать в США.
Этот софт ведь нужен не только людям. ИИ тоже нужны инструменты для проектирования – в том числе роботов для себя.
Так что остаётся вопрос: а не meat puppet ли я? Не убедил ли меня ИИ, что этот софт нужен мне, хотя на самом деле я делаю его для него?))
Автор: mozg4d
Источник [12]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/38253
URLs in this post:
[1] Открыть Frame: https://mozg4d.github.io/frame/
[2] GitHub: https://github.com/mozg4D/frame
[3] опыту: http://www.braintools.ru/article/6952
[4] логика: http://www.braintools.ru/article/7640
[5] Пример ссылки содержащей сцену: https://mozg4d.github.io/frame/#scene=v1.H4sIAAAAAAAACoWUeTxUex_Hz2nGjHXsIbtbiEK02MeQJVLJiKuHS4w9gxk0lozlWnJrSNlClmQpYw9hTJZXdqYomSyRK9vYyXY9z714nvt69Hqe3z_nvF7fc8778z2fz_cLBZxpjnQauNrOUVpE05hmrFOBvcPpY4DWLEaxk-i_rkzjzNcL_FnW7r3pae7UtTZwiOjpYzFWgfPN6JLLMOOGap9ME4XE1o23ZL5lUp-g5Ts2qgAoOjpb3q6MmqxMxGsz-o7H8PeNzX2jxegstocuz0TyvZBOhXPNEmUWnwd2LDZv0bW6JeAd1XMU3dIqaC-9F5HSM6__Tq5Z_cs52IKpAO_0jaWKh6tUsriyMeHEi04FtfRbAudTpi1rxL-fi7zCPHGpFLK4427xYHZOvvCL7g0yFg6QXYd1Ozam2G1l1DIq1U7B4PudXcQ42ft64GHgfL7dyWGtsryH2UG1TZ_7uGT3HxCPZd67YXWwo8I0RReWaaEASMDjpGh9ISVwwFoucy0aAAA4wOwRPxqc5NwsSvn9lGZ3yQmm_S-gMRi8Cwy8VKQY62KuiaVp5LAYyxupGB0CdKA_3JUOekd7s7UzVna1kRVhSCnuSK8ZoYeCQmdVs5e-SPDIdYO5yAG9E719Tc1aotdWJb-CZz7en9gTkG_2gnu8fprskPLLaacEZecDAaZY3z8FTMXxB6wRSpmKRY4xc_m1exseEhBIZaxQcjta7cdeMqndOEdG-NDP-5aLrePtdGAcb_KDVKMj7uF0pjjXrrGcXVXyTq6JF1wCLnKhlPb41UzYf7B762RyO39DPSpvXYTuAy75uOJg4EYz7YJQpTDb0FiR49gNpcnD_TukSPdZVNJaJIctG0bp7DZR50PW1Vkk4XCYY-9odHtUuFG-KvzRH3acj3XMOXnX8Tr9UXFwgK7CvbnHz73KVfH5_DHqpW5NMftnL_pZ9gn6BIyEv4srHgMDvz4gj7Qtodx_NSFoCKDMmw6LoI_F0bm9h9-h7p9zDuWqqmkKbaR_lNOuUVWSCIcZorVFLuq2qGWuwAPzoakBydV5kELtCE1AvZ7SuCdCFnF55RiFEBPP4TfzMmtj4sAEXR-sPw4GuvYsPeUMkJKyiVbpHrwILl86JCA2qKOs9FVPo-S44ngjxL1PhGxDqZR0rwyHQJRdmA0mmlDH0WkQ45CSKOPMgqiYQPXMab1WCGA8Lsu6p4BV6wj35GtZGQnrt1nkBxFyBzYY2bv6wECT7bqApbu432ZHwiIG3IM0D_8B-QkehTNq9nMlLlX9-qgLAlEj-nnLNj51IoJxKD0lOXGEVNaYyLXNcC30EVOty5_fgxbiumLAyTN27Hv8tP5qbk2GPiXBlM2TFF-8e8A3d3f1hIFDfLCAk3Ji_L-0XjHZwFtOHea_r7OfrcppGkSd1Wt27zLgjBpCDmxSVgI1lCQgUcDfHEhGoH2VvK_C0cHMBCC7dTluj6_a529-IshDXantdSqPjYcw6wHfBYuRwGE9MP8KI4G_TVWp-kL89uXdBsfqRxwaP5h2HaYkP1vXfmv3CaLUANcslcj_Q-uN01c_7IHXp05FHEmEiY-_arm6EmnWyvQ3MA4GvpJ9OC9w3aZCUYXoFuZQMPxj5lFphZu8DeqqmcznoRpKdkzx17wRsjtvxORCn4tJM6aIhZySnMC4PcN4j6lJIEl41u3WdENjZrl1U6uZD5aOD9YXh_HBwcDg6jMmgXee8RwJ7WxzzrtFPjz2T6Zn6xI2AhLDF7fuF2lPtSM2GN6v2bsUEOyyEuz3OSE_lHCSILqyJ4FL0HUmDSI9q_nxaKyoCC3jYOxM7T0lcC6uPngYaPbpIzHmbbDhwnVzsvvGyegfhG5Iuj47xPR5EysDG1_8ylq9jradXDMfnQOBsDLrjTfp_DD07Brcy3-KgAAOTObvyXdlNItdS_jkaicSD0IHAgAABaqf-dqYs_TH56rwe0_O-mAl9qtucdtAv9zt0Iks0REjINhr_WKtmS91R4qze32U2GVmBQCs2MKQt4tSSP10Rlmb1z0LsQNPL187AwUBKIDH3MGDHEDvUxqxt7q3rLeSFiYJwADyhbqMd3PaZgoyRlYVVorxdvvvfc3fLbX8xmjQrSbA3hiUIG3Y6a3xPL3IJwWn9TdJxUgrBL7FY34eSaSaIODjpAYv_YZ4v2O9DYDxF55tuBaS9ye1Ea_vjAb0zk0J0QIiFZoeRwkpSdVZEZ1rDihQ1IEBLzvDXKIePxGc4fmsQ-hvP3dA3jsLSOB_nv9fd3ZycnLi8aL-dX1uRP1Pjb9xIcOuSr7HVdAtddE4eAk8KMCBjljHo1JBLaFnbbIqBYyPhB7Yg8bcwcNBgYz0U0nXETE8VYjiglsfGlBH_jsemHddhTkX2GGjgYvqbJcSPeRnPAPAcrnyOMcCjrSnkm18kXqM-mcVXN8TN7-g6tYstzSKqzomDTXGC4bmem5q7C7u9M2OL3muh2z1LM2NWdb-4TZZ7Le7-hO9Zmd1eUh7sGCn5EX9iC1stxKJ7RnzqyINieX5BW7VIaeK15bL6DW0zyIiKnzMaTAv8XKu5sBr0RXmgVWBtopra3PrI4M1Kd0s1g4_26G9oAmCJJqA4W1P0vvdtU6Fs80a93SPh993Hc69br8ZHc7R_kHj8le8tEme5CeC31D7zbexp3H92fYaZinSLK1i0Sq5QSyit9GdqR4TZ3FC0Hy2hKikTeidUoi_JamZkvj7FSH5vhv-CZKBk4ueR207ooOI5kTyFTbp9c7Pl4tT7gg4g2wFWTfjHUx0I4x0UUXh9XwY3HXGP4STlPkiT7_MoMAog27ladUBTN0Txi8KOW0Kcb8p4INM8rJgvJIOYJeu8HIKMywJG1IK5yHbZQjH-D3sSO6thb6sWLpbsvXgOFGIIV8lk5BzdZSDfkGHMvDB-dsS1TkoX4XLIq6AdMx9fnyo0OznU09aw2pP-IWaUYVl1ioEhDel7W7F9j3AgWgUgeWKQfn4bqLZ15doHruY_pjbcjEEKObjxzp7A0bur7wxtxdwLcq0SJKg4c11ibTg_Odt-JbCfgzHFauT226kyoAiK5Cpud7897FvklM4hYnwOeb6kjWv-MdCNW1dPCmOVg_cSPOkt8jN2U-VTtA_g3fjl58MwxItpIaVTe6NRCkUHOxkI9_b9p4wcEw5R4rr0Tn2sacLA2_yxjy7Dy2mQG6v7Yv3T22FvlbssQ0y03RHFk08WQqb2Zp93F5LiewxUx1FuvrUf7LegXzw5XkYatCwdnXLuihwPjNRr7Ff0ZeEVxgUSMeQKv34fb2-82I9AzYm_shlYzJdOs2OUFJSOl43fd7ru1D56DxZqAaRNLRWb8Ip623VWHGmetooR8-bmrKi5oZC0LEW9IGfu_2Ty55dr8gp7fjyNFd7JL53AzESVizX1-yrKmJbldVFtE-BQFi_25HaJ7108sBO0-Hsgb_aiD5a1UO1qfUI9yfmqkWZDf57NP8JWpnuZfQLAAA
[6] поведением: http://www.braintools.ru/article/9372
[7] повторять: http://www.braintools.ru/article/4012
[8] внимание: http://www.braintools.ru/article/7595
[9] интеллекта: http://www.braintools.ru/article/7605
[10] гений: http://www.braintools.ru/article/4566
[11] issues на GitHub: https://github.com/mozg4D/frame/issues
[12] Источник: https://habr.com/ru/articles/1105532/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1105532
Нажмите здесь для печати.