Canlı deneyin Bu proje hakkında
Birkaç 3D model üretirsiniz. Birini saklarsınız. Geri kalanı silinir. 3D Junkyard, işte o geri kalanı atacağınız yer: ıskartaya çıkmış 3D modellerden oluşan canlı, ortak bir galaksi; her biri kendi ipine bağlı, ne olduğuna göre gruplanmış — sandalyeler sandalyelerle, lambalar lambalarla. Kimsenin seçmediği bir model, yine de bir başkasının tam olarak aradığı şey olabilir.
Bir tane atın: Sayfaya bir GLB / glTF / FBX / OBJ / STL dosyası sürükleyin. Bıraktığınız yerde belirir, süzülerek aşağı iner ve benzerlerinin yanına konar — herkese açık ve üzerinde sizin ID'niz yazılı olarak. Ya da bu işi ajanınıza bırakın. Junkyard MCP sunucusu ve skill'i sayesinde ajan, üretmeden önce burada arama yapar, uygun bir şey yoksa ancak o zaman Tripo ile üretir ve her 3D işin sonunda elemeyi geçemeyen Tripo modellerini buraya atar — her biri Tripo ile yapıldığını belirten bir etiket taşır.
Bir şeye mi ihtiyacınız var? Tarif edin, yanına uçun, alıp götürün — CC BY 4.0 kapsamında, onu elden çıkaran kişiyi belirterek kullanın. Yakında: Attıklarınız kazanç getirebilecek. Her alım şimdiden kayıt altında; bir sonraki adımda modeli elden çıkaran kişi, modelin getirdiği gelirden pay alacak.
Masaüstü bir tarayıcıda açın; telefonlarda masaüstüne geçmenizi öneren bir not görüntülenir. Dünyaya önceden yerleştirilen 1.921 model, herkese açık Objaverse 1.0 veri kümesinden gelir (yazarları tarafından Sketchfab'da kendi Creative Commons lisanslarıyla yayımlanmıştır) ve 12 ön tanımlı ID adına küçük gruplar hâlinde iner; sizin attığınız her şey de aynı galakside asılı durur.
Öne çıkanlar
- Bir GLB / glTF / FBX / OBJ / STL dosyasını ya da zip ile sıkıştırılmış bir klasörü sayfaya sürükleyin: Bıraktığınız yerde belirir, süzülerek aşağı iner ve benzerlerinin yanına konar; indiği noktada, çevrim içi olan herkesin gördüğü ve sizin ID'nizle imzalanmış bir havai fişek patlar
- Dünya, dizinin ta kendisi: Her öğe anlamına göre galakside kalıcı bir hücreye yerleşir ve JUNK-3F9K2 gibi, paylaşılabilen kendine ait bir adres alır; bir cümleyle ya da bir görselle arama yaptığınızda kamera eşleşmelere uçar, eşleşmeler ışıl ışıl yanarken geri kalan her şey kararır
- Ajanınıza bırakın: Junkyard MCP sunucusu ve skill'i sayesinde Claude Code, Codex ya da Cursor üretmeden önce burada arama yapar, uygun bir şey bulamazsa ancak o zaman Tripo'yu kullanır ve iş bitince projede kullanılmayan her şeyi buraya atar — her biri Tripo ile yapıldığını belirten bir etiket taşır
- Alıp götürün: Alınabilir öğeler beş dakika boyunca geçerli bir indirme bağlantısı ve hazır bir atıf satırıyla gelir — bunları CC BY 4.0 kapsamında, elden çıkaran kişiyi belirterek kullanın; her alım şimdiden deftere işleniyor ve sıradaki adımda modeli elden çıkaran kişi de pay alacak
Teknik inceleme
Ajan döngüsü · Önce arar, sonra üretir, en son atar
Tek bir junkyard skill'i Claude Code, Codex ve Cursor'a hiç değiştirilmeden kurulur. Arkasında junkyard adlı bir Streamable HTTP MCP sunucusu çalışır; sunucu dört fiil sunar — junkyard_search / junkyard_fetch / junkyard_dump / junkyard_reclaim — ve bunlar REST üzerinden de birebir yansıtılır. Ajan, herhangi bir 3D üretiminden önce metinle (varsa bir referans görselle birlikte) junkyard_search aracını çağırır; yanıttaki below_bar, eşleşmelerin yeterince iyi olup olmadığını bildirir. Ajan yalnızca eşiği geçen sonuç sayısı üçten az olduğunda Tripo ile üretim yapar ve Tripo indirme bağlantılarının süresi beş dakikada dolduğu için çıktıyı hemen diske kaydeder.
Sayım tek seferliktir ve görev bittiğinde yapılır: Yalnızca bu turda üretilmiş ve projede referans verilmeyen dosyalar junkyard_dump aracına gider. Bir referans dört biçimde olabilir — projeye göreli yol, dosya adı, uzantısız kök ad, mutlak yol — ve sözcük sınırlarında, büyük/küçük harf ayrımı gözetilmeden eşleştirilir; kullanıcının seçip taşıdığı ya da yeni bir adla kopyaladığı modeller sha256 ile tanınır; emin olunamayan her şey yerinde kalır. Referans görseller asla yüklenmez, gizli olarak işaretlenmiş bir projede bu adım tamamen atlanır ve "son atma işlemini geri al" denildiğinde junkyard_reclaim ile oturumun tamamı geri alınır.
İçe alım hattı · Her format girer, sekiz adımda aranabilir bir öğe çıkar
Sayfaya sürüklenen dosyalar da ajanların attığı dosyalar da aynı asenkron kuyruğu paylaşır — doğrulama → hash'leme → dönüştürme → parmak izi → lisanslama → vektörleştirme → etiketleme → yerleştirme — ve sayfada aşağı süzülen banner, ilerlemeyi bu sekiz adım üzerinden bildirir. Dönüştürme, normalleştirilmiş bir görüntüleme kopyası üretir: Y ekseni yukarı bakar, en uzun kenar bir birime ölçeklenir, model meshopt ile sıkıştırılır ve animasyonlar korunur; üçgen sayısı 150.000'i aşan modeller bu sınırın altına indirilir, 16 MiB'ı aşan doku setlerinin çözünürlüğü ise adım adım düşürülür. Böylece çok malzemeli ağır dosyalar bir nokta bulutuna indirgenmek yerine sığacak kadar inceltilir.
Headless Chromium'da çalışan aynı three.js renderer'ı her öğenin sekiz farklı açıdan küçük resmini çeker, MeshSurfaceSampler ise 20.000 noktalı renkli bir nokta bulutu örnekler: Nokta bulutu Uni3D 3D kodlayıcısına, küçük resimler SigLIP 2'ye gider ve arama için iki vektör elde edilir. Dört görünümlü bir kolaj, tek bir çağrıyla Qwen3-VL-Flash görsel-dil modeline gönderilir; model iki dilli kontrollü bir sözlükten bir kategori, bir stil ve bir baskın renk seçer, ardından her iki dilde en fazla beş serbest etiket ekler; kategori · stil · ilk serbest etiket, öğenin tüm listelerdeki adı olur. Orijinal prompt'lar ve referans görseller hiçbir herkese açık çıktıya ulaşmaz.
Anlamsal harita · Dünya, arama dizininin ta kendisi
UMAP (üç bileşenli, parametrik olmayan), canlı ortamda kullanılan kodlayıcının aynısıyla üretilmiş, herkese açık bir derlemin vektörleri üzerinde bir kez eğitilir ve harita v1 olarak dondurulur; yeni öğeler transform ile yerleştirilir, böylece mevcut öğeler asla yer değiştirmez. Koordinatlar tam sayı hücrelere nicemlenir; bir hücre doluysa deterministik bir spiral en yakın boş hücreyi bulur. Hücre kalıcı bir adrestir: Geri alınan bir öğe orada bir mezar taşı bırakır ve o hücre bir daha asla kullanılmaz. 3D Hilbert eğrisi her hücreyi, beş Crockford Base32 karakteriyle yazılan 24 bitlik bir indekse dönüştürür; JUNK-3F9K2 gibi adresler böyle oluşur ve numaraları komşu olan hücreler uzayda da komşudur.
Arama iki kanaldan yürür: Uni3D ile hizalanmış EVA02 metin kulesi (İngilizce olmayan sorgular önce makine çevirisinden geçer) ve çok dilli SigLIP 2 (Çince doğrudan kodlanır, görsel sorgular da). Her biri pgvector içindeki bir HNSW dizininden aday getirir ve iki liste RRF ile birleştirilir. Metin vektörleriyle öğe vektörleri arasında bir modalite boşluğu bulunduğundan sorgu hiçbir zaman haritaya yansıtılmaz; bunun yerine kamera en iyi sonuçların ağırlık merkezine uçar. Eşiği geçen sonuç üçten az olduğunda yanıt below_bar taşır — sayfa bunu düşük eşleşme olarak işaretler, ajan da üretme zamanının geldiğini anlar.
Dünya render'ı · İki bine yakın öğe, üç ayrıntı düzeyi
Dünya, görüş alanı hareket ettikçe 16×16 hücrelik karolar hâlinde akışla yüklenir ve her öğenin mesafeye göre üç görünümü vardır: yakın mesafede tam bir mesh — en fazla 24 yuva vardır, ekrandaki boyuta göre dağıtılır ve mesh, shader'ları önceden derlenmeden gösterilmez; orta mesafede, pişirilmiş arka planı shader içinde keying ile saydamlaştırılan ve 2.601 yuvalı, 4096² boyutunda bir atlastan çizilen, küçük resimden üretilmiş bir silüet impostor; uzakta ise instancing ile çizilen bir çapa noktası. Görünümler arasındaki geçiş, opaklıklarının toplamı her zaman bire eşit olan 300 ms'lik bir çapraz geçiştir; böylece hiçbir kare asla boş kalmaz.
Her öğe kendi ipine asılıdır; çapasının çevresinde süzülür ve 120–180 saniyede bir tam tur atacak şekilde yavaşça döner; bunların hepsi öğenin id'sinden türetilen bir tohuma dayanır — her istemci, hiçbir ağ senkronizasyonu olmadan aynı hareketi görür. Biri bir model attığında, iniş noktasındaki havai fişek SSE üzerinden çevrim içi olan herkese iletilir. Kare hızı üç saniye boyunca düşük kalırsa dört adımlı otomatik kalite düşürme devreye girer (çözünürlük → havai fişekler → uzak alan → süzülme) ve yakın mesh bütçesi yalnızca gerçekten kare düştüğünde küçülür — asla sırf draw call sayısı yüksek olduğu için değil.


