Попробовать онлайн О проекте
Вы генерируете несколько 3D-моделей. Оставляете одну. Остальные удаляются. 3D Junkyard — это место, куда вы выбрасываете остальные: живая общая галактика отвергнутых 3D-моделей, каждая на своём тросе и рядом с себе подобными — стулья к стульям, лампы к лампам. Модель, которую никто не выбрал, всё равно может оказаться именно тем, что ищет кто-то другой.
Выбросьте свою модель: перетащите на страницу файл GLB / glTF / FBX / OBJ / STL. Она появится там, где вы её отпустите, плавно опустится и приземлится рядом с себе подобными — у всех на виду и с вашим ID. Или поручите это агенту. Агент с MCP-сервером и скиллом Junkyard перед генерацией ищет здесь, генерирует в Tripo, только если ничего не подошло, а в конце каждой 3D-задачи выбрасывает модели Tripo, не прошедшие отбор, — каждая помечена как созданная в Tripo.
Нужно что-то? Опишите, долетите, заберите — и используйте по лицензии CC BY 4.0 с указанием того, кто с моделью расстался. Уже скоро: то, что вы выбрасываете, сможет приносить доход. Каждый раз, когда модель забирают, это уже фиксируется; следующим шагом тот, кто с ней расстался, будет получать долю от того, что она принесёт.
Откройте сайт в браузере на компьютере; на телефоне появится подсказка сменить устройство. Мир изначально заселён 1 921 моделью из публичного набора данных Objaverse 1.0 (авторы опубликовали их на Sketchfab под собственными лицензиями Creative Commons); они приземляются понемногу от имени 12 предустановленных ID, а всё, что выбросите вы, повиснет в той же галактике.
Ключевые моменты
- Перетащите на страницу файл GLB / glTF / FBX / OBJ / STL или папку в zip-архиве: модель появится там, где вы её отпустите, плавно опустится и приземлится рядом с себе подобными, а в точке приземления вспыхнет подписанный вашим ID фейерверк, который увидят все, кто сейчас онлайн
- Мир — это и есть индекс: каждый предмет по смыслу оседает в постоянной ячейке галактики и получает собственный адрес вроде JUNK-3F9K2, которым можно поделиться; ищите по фразе или изображению — камера полетит к результатам, они подсветятся, а всё остальное померкнет
- Доверьте это своему агенту: Claude Code, Codex или Cursor с MCP-сервером и скиллом Junkyard перед генерацией ищет здесь, к Tripo обращается, только если ничего не подошло, а по завершении работы выбрасывает сюда всё, что не пригодилось проекту, — каждая модель помечена как созданная в Tripo
- Забирайте: к предметам, которые можно забрать, прилагаются ссылка для скачивания, действующая пять минут, и готовая строка об авторстве — используйте их по лицензии CC BY 4.0 с указанием того, кто с ними расстался; каждый забранный предмет уже на учёте, а следующим шагом свою долю получит тот, кто с ним расстался
Технический разбор
Цикл агента · Сначала искать, потом генерировать, в конце выбрасывать
Один и тот же скилл junkyard без изменений устанавливается в Claude Code, Codex и Cursor; за ним стоит MCP-сервер на Streamable HTTP под именем junkyard с четырьмя глаголами — junkyard_search / junkyard_fetch / junkyard_dump / junkyard_reclaim, — которые зеркально доступны через REST. Перед любой 3D-генерацией агент вызывает junkyard_search с текстом (и с референсным изображением, если оно есть), а below_bar в ответе сообщает, достаточно ли хороши результаты: генерировать в Tripo агент начинает, только если планку проходят меньше трёх результатов, и сразу же сохраняет полученную модель на диск, потому что ссылки для скачивания Tripo истекают через пять минут.
Подсчёт выполняется один раз, по завершении задачи: в junkyard_dump уходят только файлы, сгенерированные в этом раунде и нигде в проекте не упомянутые. Упоминание распознаётся в четырёх формах — путь относительно проекта, имя файла, имя без расширения, абсолютный путь — по границам слов и без учёта регистра; модели, которые пользователь выбрал и переместил или скопировал под другим именем, опознаются по sha256 как использованные; всё, что вызывает сомнения, остаётся. Референсные изображения никогда не загружаются на сервер, для проекта, помеченного как приватный, этот шаг полностью пропускается, а если пользователь попросит «отмени последнюю выгрузку», junkyard_reclaim заберёт обратно всю сессию.
Конвейер загрузки · Любой формат на входе, восемь шагов до поисковой выдачи
Файлы, перетащенные на страницу, и файлы, выброшенные агентами, проходят через одну асинхронную очередь — проверка → хеширование → конвертация → отпечаток → лицензия → эмбеддинг → тегирование → размещение, — а падающий баннер на странице показывает прогресс по этим восьми шагам. Конвертация создаёт нормализованную копию для показа: ось Y вверх, масштабирование по самой длинной стороне до одной единицы, сжатие meshopt, сохранение анимаций; всё, что больше 150 000 треугольников, упрощается до значения ниже этого порога, а наборы текстур больше 16 MiB поэтапно уменьшаются в разрешении, так что тяжёлые файлы со множеством материалов ужимаются до нужного размера, а не превращаются в облако точек.
Тот же рендерер three.js, запущенный в headless Chromium, снимает каждый предмет в восьми ракурсах для миниатюр, а MeshSurfaceSampler строит цветное облако из 20 000 точек: облако отправляется в 3D-энкодер Uni3D, миниатюры — в SigLIP 2, и для поиска получаются два вектора. Контактный лист из четырёх ракурсов за один вызов уходит в визуально-языковую модель Qwen3-VL-Flash, которая выбирает категорию, стиль и доминирующий цвет из двуязычного контролируемого словаря и добавляет до пяти свободных тегов на обоих языках; связка «категория · стиль · первый свободный тег» становится названием предмета во всех списках. Исходные промпты и референсные изображения никогда не попадают в публичный доступ.
Семантическая карта · Мир — это поисковый индекс
UMAP (три компоненты, непараметрический) обучается один раз на векторах публичного корпуса, полученных тем же энкодером, что работает в продакшене, и замораживается как карта v1; новые предметы размещаются через transform, благодаря чему уже существующие никогда не сдвигаются. Координаты квантуются в целочисленные ячейки, а если ячейка занята, детерминированная спираль находит ближайшую свободную. Ячейка — это постоянный адрес: отозванный предмет оставляет в ней надгробную метку, и ячейка никогда не используется повторно. Трёхмерная кривая Hilbert превращает каждую ячейку в 24-битный индекс, записанный пятью символами Crockford Base32 (адреса вида JUNK-3F9K2), так что соседние номера оказываются соседями и в пространстве.
Поиск идёт по двум каналам: текстовая башня EVA02, выровненная с Uni3D (неанглоязычные запросы сначала проходят машинный перевод), и многоязычная SigLIP 2 (китайский кодируется напрямую, как и запросы по изображению). Каждый канал извлекает кандидатов из HNSW-индекса в pgvector, а два списка объединяются через RRF. Векторы текста и предметов разделены модальным разрывом, поэтому запрос никогда не проецируется на карту; вместо этого камера летит к центроиду лучших результатов. Если планку проходят меньше трёх результатов, ответ содержит below_bar — страница помечает выдачу как «слабое совпадение», а агент понимает, что пора генерировать.
Рендеринг мира · Почти две тысячи предметов, три уровня детализации
Мир подгружается тайлами по 16×16 ячеек по мере движения камеры, и у каждого предмета три облика в зависимости от расстояния: вблизи — полный меш (не более 24 слотов, которые раздаются по размеру на экране; меш появляется только после предкомпиляции его шейдеров); на средней дистанции — силуэтный импостор из миниатюры: запечённый в неё фон вырезается хромакеем прямо в шейдере, а сами миниатюры берутся из атласа 4096² на 2 601 слот; вдали — инстансированная точка-якорь. Смена облика — это кроссфейд длительностью 300 мс, в котором непрозрачности всегда в сумме дают единицу, поэтому ни один кадр не бывает пустым.
Каждый предмет висит на своём тросе: дрейфует вокруг якоря и медленно вращается, делая оборот за 120–180 секунд, — всё это задаётся сидом из id предмета, так что все клиенты видят одно и то же движение без всякой сетевой синхронизации. Когда кто-то выбрасывает модель, фейерверк в точке приземления рассылается через SSE всем, кто онлайн. Если частота кадров держится низкой три секунды, включается четырёхступенчатое автоматическое снижение качества (разрешение → фейерверки → дальний план → дрейф), а бюджет ближних мешей урезается только при реальной просадке кадров — и никогда лишь из-за большого числа draw calls.


