Проект: 3DPot: Генератор 3D-моделей плошек для бонсай  Публичный пост
16 января 2025  854
3DPot: Генератор 3D-моделей плошек для бонсай
https://3dpot.net/

tl;dr: Оказалось, что не только плошек, но и чего угодно ещё.

Расскажите о себе и сути проекта? Как появилась идея? Что вдохновило?

Всем привет, я Владлен, и я люблю заниматься всякой ерундой.

Два года назад я решил угореть по бонсай, и по плану первое худо-бедно приличное дерево должно появиться у меня ещё лет через пять (я уже в том возрасте, когда это не кажется чем-то странным). И как выяснилось, что угодно для бонсай найти в наших краях непросто. Включая плошки (горшки). Особенно если хочется конкретных форм и размеров. А даже если находишь плошку, часто под неё нет поддона.

Помимо этого в прошлом году я снова обзавёлся 3D-принтером, в очередной раз проклял все CAD'ы, в которые надо тыкать мышкой, и по совету из твиттера упоролся в OpenSCAD.

А ещё более 15 лет я занимаюсь веб-разработкой.

Короче говоря, это всё каким-то образом объединилось в моей голове в странную идею создания сервиса, который позволит сгенерировать плошки (а также поддоны и прочие нужные штуки типа дренажных сеточек), выбрав нужный дизайн и задав все необходимые размеры и параметры. После чего чего скачивается STL, который можно отправить на печать.

Да, когда я объяснял жене, кому это может быть интересно, я так и сказал: «Хорошо если человека три найдётся, которые одновременно интересуются и бонсай, и 3D-печатью».

Что вошло в прототип и сколько времени на него было потрачено?

От начала работы над непосредственно сайтом до релиза прошло ровно 7 дней. Но это не совсем честная оценка, потому что многие подготовительные работы проводились заранее.

  • Модель первой тестовой плошки раздобыл из своих запасов.
  • Разбирался с тем, как затолкать OpenSCAD в браузер и заставить его работать тоже в декабре. Это было не просто смело, а... ну вы поняли.
  • Как любой уважающий себя разработчик, под проект я писал новый фреймворк, начатый также слегка заранее.

Так что суммарно можно предположить, что ушло до месяца.

Какой технологический стек вы использовали? Почему?

Фреймворк: Autobun!

Это сопутствующий проект, который я тоже когда-нибудь опубликую (чур имя не занимать). Если вкратце — фреймворк, похожий на Next.js первых версий. Но ещё легче и проще. Потому что мне хотелось что-то достаточно современное, но при этом почти полностью сведённое к старым добрым и тупым шаблонизаторам. В итоге получается фреймворк, в коде которого можно разобраться за полчаса (а начать писать с ним — за пару минут). Без современного некстового булшита и магии.

Под капотом — preact. Работает всё на базе Bun* (и от него неотделимо). Сейчас, к сожалению, пришлось притащить ещё одну зависимость в виде esbuild, но надеюсь уйти от этого со временем. И плагин с lightningcss, потому что CSS Modules в нужном мне виде из коробки пока не завезли.

*Bun — новый модный рантайм для JS, написанный на Zig, и в теории имеющий на борту почти всё, что может пригодиться для нормальной работы.

IDE: Cursor

Да, это не просто проект, это испытательный полигон для всего. Раньше я просто радовался копайлоту, а тут решил поэкспериментировать с Cursor и бОльшая часть самого проекта написана Claude 3.5 Sonnet. Включая всю вёрстку и подбор цветов (под моё нудное «Хочу чтобы дизайн был более "эко", поиграй с отступами и террактового добавь»).

Одного его гулять по проекту не отпустишь, но несколько недель он мне, думаю, сэкономил.

Рендеринг модели: Three.js

Всё круто, но уже есть жалобы от обладателей старых железок — из three.js выпилили фолбек на webgl первой версии.

cssmem

Ещё один мой микро-велосипед (на этот раз проверенный временем) для работы с CSS Modules в стиле БЭМ.

Почему акцентирую внимание на нём? Ну просто кроме three.js и cssmem зависимостей самого проекта больше и нет, так что почему бы и не написать.

OpenSCAD

Даже несмотря на то, что якобы он уже собран в WASM и есть даже прототип полноценного браузерного OpenSCAD, это всё равно страшно. Билды крайне нестабильны, найти работающий — та ещё задачка, а даже если работает — то часто медленно и периодически падает из-за каких-то приколов с округлениями.

Инфраструктура

Хотел хоститься на Hetzner, но тот меня забанил на этапе регистрации. Долго выбирал между Namecheap и Digitalocean. В итоге решил не рисковать и остановиться на последнем.

На сервере всё устроено очень просто в силу моей лени и нищенского дроплета:

  • Всё через SSH.
  • Обновления подтягиваются через git pull.
  • Процессом сервера управляет systemd.
  • Фронтендом выступает traefik на случай, если захочу разместить рядом что-то ещё.

Как вы запускались и искали первых пользователей?

Путём написания поста в Клуб :D

На самом деле вчера кинул ссылку в твиттер и на сайте побывало 1300 человек на момент написания сего поста. Пока всё, проекту два дня.

С какими самыми неожиданными трудностями пришлось столкнуться?

Openscad с wasm доставил больше всего боли, пожалуй. Куча проблем с самим бинарём. И с тем, чтобы его эффективно переиспользовать для нескольких рендерингов. Изначально он на каждый рендер загружал здоровенный .wasm заново, что я починил каким-то костыльным кэшированием блоба в памяти и подменой ссылки на него.

Кроме того я решил, что чем проще, тем проще (и лучше). И не стал заморачиваться с раздачей статики каким-то отдельным способом, свалив всё на Autobun. В итоге перед запуском понял две вещи:

  1. Не хватает кэширования. Благо работа с etag пилится в несколько строк.
  2. Тот самый здоровенный .wasm. Целых 13 мегабайт даже с кэшированием создают не самый приятный пользовательский опыт. В итоге для него лично появились отдельные строчки кода, позволяющие слать по сети gz-версию и ужать всё это безобразие где-то в 4 раза.

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

  • DO пока что показывает Estimated costs: $0.41.
  • Плюс где-то $12 за домен.
  • Можно ещё $20 за Cursor посчитать.

Про монетизацию думал. Можно делать «премиумные» модели. Можно ограничивать диапазон бесплатных параметров (бесплатно можешь сгенерить модель с заданными параметрами, для своих параметров — плоти).

Но это в первую очередь проект для фана, и наиболее вероятно, что он как родился бесплатновым, так бесплатновым и умрёт. Или перепрофилируется в генерацию чего-нибудь ещё.

Какие планы на будущее?

Это пока только MVP. В планах как доработки и фиксики, так и расширение возможностей.

Из важного на первое время:

  • Оптимизации производительности, оно сейчас буквально в дев-режиме запущено.
  • Разработка и добавление новых моделей поддонов, горшков и всяких ништяков.

Бонсайная тематика остаётся, но это скорее применимо для любого домашнего садоводства. Хотя в целом там уже можно на единственной модели нагенерировать что угодно, от плошки и тарелки до йо-йо и космической ракеты.

Бонусный уровень. Модели, которые успел нагенерить твиттер из того, что должно было быть плошкой

Модель с базовыми параметрами можете глянуть на сайте. Интереснее, когда люди пробуют менять параметры, доводя модель до безумия.

Непонятное яблоко: https://x.com/goodboy_nomore/status/1879679550889845024


Что-то инопланетно-мистическое: https://x.com/Remstam/status/1879529853902557331

Космические бонсаи бороздят просторы галактики:
https://x.com/michael___so/status/1879759566344532459

Внезапная тарелка:
https://x.com/webholt/status/1879789242626523501

8 комментариев 👇
Anton Zhornikov Metal 3d print, Wi-Fi, LTE developer 16 января в 13:41

Блин, по КДПВ подумал что ты научился генерить дизайн с помощью ИИ и как-то его описывать автоматически с помощью другого ИИ в Openscad :) Заманушечка получилась)))
Если это так и я ничего не упустил, то тогда вопрос, может быть опубликовать это дело на https://makerworld.com/en/makerlab/parametricModelMaker?from=makerlab в виде доступной для параметризации модели (как у тебя на сайте) ? Там еще бонусы (реальные деньги для покупок в их магазине) за скачивание пользователями дают.

  Развернуть 1 комментарий

@storm21110, поэкспериментировать с генерацией моделей силами ИИ я тоже планирую. Попутно проверял — Соннет уже неплохо осознаёт такие штуки.

А обязательно КДПВ я осознал в последний момент, пришлось просить Грока что-то сделать с этим.

Что касается makerworld — он же для меня в некотором смысле конкурент, зачем мне ему помогать?! :D

  Развернуть 1 комментарий

@gwer, Завидую твоей уверенности если у тебя конкурент makerworld 😂😂😂

А какая у тебя цель проекта?)

Просто ты его можешь даже как генератор рекламы использовать - выложить туда какую-то сильно урезанную модель с 2-3 параметрами и брендированием, и ссылку на сайт в описании.

На мой взгляд там охват аудитории 3д печати гораздо больше. Другого такого охвата наверно не добиться никакими твиттерами. Ну и на https://www.printables.com/
https://www.thingiverse.com/ тоже выложить урезанную в качестве рекламы.
На мейкеркворлде просто плюсом еще сразу монетизация идет нативная.

А по поводу сонета - не покажешь примеры промта/результата? Я пол года назад пробовал с Gemini, ChatGPT и Perplexity экспериментировать но они так галюцинировали в коде что просто ужас...

  Развернуть 1 комментарий

Да я просто угораю. Цели нет, просто попробовать разные штуки, плюс самому пользоваться, а дальше будь что будет.

История с урезанными моделями интересная, надо подумать и правила почитать про это.

Про генерацию — я тут вспомнил, что знакомый рассказывал, как он проверяет куда дошёл ИИ, прося написать код для генерации модели коровы. И вот попросил Sonnet сделать то же самое. И он уже прям на голову уделывает генерации прошлого года:

  Развернуть 1 комментарий

Напомнило https://shapecastmolds.com/

Там чел занимающийся керамикой угорел по 3D печати, и сделал в итоге инструмент для генерации моделей из скетчей, чтобы делать формы для отливки керамики

  Развернуть 1 комментарий

@stek29, О, вот это круто. Спасибо за ссылку.

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб