Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
RUPA3D_RUANGNoOverride the workspace directory. Defaults to ~/.rupa3d.~/.rupa3d
RUPA3D_BLENDERNoPath to the Blender executable. If not set, Blender is searched under C:\Program Files\Blender Foundation\*, on PATH, or via other standard locations.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
rupa_statusA

Versi Blender, akar ruang kerja, dan apakah adegannya sudah ada. Panggil sekali di awal.

rupa_baruA

Mulai adegan KOSONG. Menghapus isi adegan ruang kerja ini — panggil sekali di awal sebuah model, bukan di tiap langkah.

rupa_muatA

Impor berkas 3D (.glb .gltf .obj .fbx .stl .ply) atau VEKTOR 2D (.svg) ke adegan. Untuk SVG, ekstrusi > 0 langsung menebalkannya jadi 3D — ini jalur 2D→3D paling presisi yang ada, karena memakai kurva aslinya dan bukan tebakan.

rupa_skripA

PRIMITIF PEMODELAN: jalankan Python bpy di dalam Blender headless, lalu simpan adegannya. Tersedia: bpy, bmesh, math, mathutils, RUANG (jalur ruang kerja), dan dict keluaran yang ikut dikembalikan. Tulis bentuk dari ANGKA BERNAMA, bukan nilai ajaib — itu yang membuatnya bisa diubah lagi tanpa dibangun ulang.

rupa_ukurA

Angka untuk tiap objek mesh: segitiga, simpul, n-gon, tepi tak-manifold, simpul lepas, luas, ukuran, letak, skala, apakah skala sudah diterapkan, bahan — plus kotak batas seluruh adegan dan daftar peringatan. Inilah yang membuat hasilnya presisi; mata tidak bisa membaca skala.

rupa_lihatA

Render beberapa sudut ke PNG dan kembalikan jalurnya — BACA gambarnya sesudah ini, jangan mengaku selesai dari angka saja. Kamera dan lampu dipasang otomatis dari kotak batas adegan, jadi objek sekecil atau sebesar apa pun tetap terbingkai. Sudut bernama: depan, belakang, kiri, kanan, atas, bawah, hero, serong; atau "yaw,pitch" dalam derajat.

rupa_eksporA

Ekspor adegan ke GLB. Skala diterapkan ke verteks lebih dulu (manual three.js menyebut skala pada node sebagai sumber masalah runtime), dan hasilnya dilaporkan bersama jumlah segitiga, kotak batas, dan peringatan.

rupa_lodA

Rantai LOD dengan GALAT GEOMETRIS tiap tingkat — jarak sesungguhnya tiap simpul hasil ke permukaan asli, mutlak dan sebagai persen diagonal. Mengecilkan mesh selalu "berhasil"; yang menentukan layak atau tidak adalah berapa banyak yang hilang. Di atas 2% diagonal, siluetnya mulai terbaca berubah.

rupa_tabrakanB

Proksi tabrakan + dua arah kesalahannya. "tembus" = permukaan asli yang berada DI LUAR proksi (benda menembus dinding); "longgar" = proksi yang jauh di luar permukaan asli (tabrakan terasa di udara kosong). Untuk mesin fisika web seperti Rapier, cembung adalah kuda bebannya — mesh_sederhana hanya untuk benda STATIS, karena trimesh dinamis tidak didukung sebagian besar mesin.

rupa_bakeA

Panggang detail dari mesh RAPAT ke mesh RENGGANG jadi peta tekstur. UV dibuat otomatis kalau belum ada, jarak cage DIHITUNG dari selisih kedua permukaan (bukan ditebak), dan hasilnya dilaporkan dengan cakupan UV serta variasi piksel. Arah terbalik diperiksa dari kerapatan poligon — ia tidak bisa dideteksi dari gambarnya, karena membalik arah tetap menghasilkan peta yang tampak sah.

rupa_rantaiA

Jalankan beberapa op Blender dalam SATU proses. Ini bukan kemudahan — ini perbedaan 7 kali lipat, dan angkanya diukur.

Menyalakan proses Blender cuma 449 ms; sisa 2,5–4 detik tiap panggilan adalah MUAT dan SIMPAN berkas .blend yang sama, diulang untuk setiap op. Enam op satu per satu makan 22,2 detik; enam op yang sama berantai makan 3,1 detik. Hasilnya terbukti IDENTIK bidang demi bidang, termasuk galat LOD dan dua arah galat proksi tabrakan.

RANTAI BERHENTI DI KEGAGALAN PERTAMA, dan itu disengaja: op berikutnya hampir selalu bergantung pada yang sebelumnya, dan menjalankannya di atas adegan setengah jadi menghasilkan angka yang tampak wajar untuk keadaan yang tidak pernah dimaksudkan.

YANG TIDAK BISA DIRANTAI: urutan yang punya KEPUTUSAN di tengah — misalnya memilih objek proksi tabrakan dari hasil pengukuran sebelumnya. Pecah jadi beberapa rantai di batas keputusan yang nyata; rakit.mjs memakai tiga.

Waktu per-op TIDAK diukur dalam mode ini; yang dilaporkan waktu seluruh rantai.

rupa_periksaA

Nilai adegan terhadap SPEK, dan terbitkan SERTIFIKAT. Inilah yang membuat Rupa3D berbeda: hasilnya bukan "berhasil", melainkan daftar janji berikut angka yang membuktikan atau membantahnya. Aturan berbobot wajib menggagalkan; peringatan dilaporkan lengkap dengan angkanya tetapi tidak menjadi gerbang. Ukuran yang HILANG dihitung GAGAL — aturan yang diam-diam tidak dijalankan adalah cara paling halus sebuah pemeriksa berbohong.

rupa_cad_statusA

Kernel b-rep OCCT: nyala atau tidak, dan bentuk apa saja yang ada di ruang ini. Panggil sekali sebelum memakai tool rupa_cad_* lain — menyalakan kernelnya makan sekitar 0,4 detik, dan sesudah itu gratis.

rupa_cad_bentukA

Buat primitif b-rep bernama. Beda mendasar dengan rupa_skrip: silinder di sini disimpan sebagai SILINDER — permukaan analitik berikut toleransinya — bukan segitiga yang menghampirinya. Volumenya EKSAK, dan itu bisa dibuktikan: silinder r=7,5 t=12 memberi angka yang sama persis dengan pir^2t.

rupa_cad_booleanA

Potong, gabung, atau iris dua bentuk. Arah volumenya DIPERIKSA, dan itu bukan formalitas: boolean yang gagal separuh sering mengembalikan salah satu operand utuh, yang tampak berhasil sampai ada yang mengukurnya. Hasil yang arah volumenya salah tidak pernah tersimpan.

rupa_cad_tepiA

Daftar tepi sebuah bentuk berikut ARAH dan PANJANGNYA. Panggil ini SEBELUM fillet selektif — tanpa daftar ini, "fillet tepi tegak saja" berarti menebak indeks, dan indeks tepi bukan sesuatu yang bisa ditebak.

rupa_cad_filletA

Bulatkan (fillet) atau serong (chamfer) tepi — SEMUA tepi, tepi searah tertentu, atau daftar indeks dari rupa_cad_tepi.

PERINGATAN YANG TERUKUR: di atas setengah sisi terkecil, fillet mengembalikan ok dengan solid RUSAK. Pada kotak 10x20x30, radius 5,001 memberi volume 7971 dari 6000 — fillet yang MENAMBAH material. Kernelnya tidak mengeluh. Tool ini menolaknya lewat dua pemeriksa bebas (isShapeValid dan arah volume), dan hasil yang gagal tidak pernah tersimpan. chamfer tidak punya masalah itu; ia gagal bersih.

rupa_cad_sketsaA

Sketsa 2D → padat 3D: dorong (ekstrusi), putar (revolve), atau loft. Inilah cara benda nyata dimodelkan — gambar penampang, lalu bangkitkan. Satu tool ini membuka arsitektur (denah → dinding), pemodelan mesin (profil → poros/flange/wadah), dan 2D→3D (path → padat).

YANG MEMBEDAKANNYA: tiap padat DIPERIKSA terhadap RUMUS TERTUTUP. Ekstrusi dibandingkan dengan luas × jarak (luasnya dihitung shoelace dari polilinenya, bukan ditulis tangan); putar 360° dibandingkan dengan teorema Pappus (2π·R_centroid·luas). Terukur pada kernel ini: ekstrusi meleset 1e-14%, putar cocok dengan Pappus sampai 0,000000%. Hasil yang melenceng dari acuannya TIDAK disimpan.

DUA HAL YANG MENGHANCURKAN PUTAR, dijaga di depan karena galat kernelnya berupa pointer mentah yang tak terbaca: profil yang MELINTASI sumbu putar, dan sudut di luar 0..360.

rupa_cad_ubahA

Geser, putar, skala, atau cermin sebuah bentuk. Volumenya diperiksa terhadap yang DIHARAPKAN secara matematis: geser dan putar tidak boleh mengubahnya sama sekali, skala mengubahnya pangkat tiga. Transformasi yang menggeser volume adalah gejala matriks yang salah, dan itu tidak terlihat sampai ada yang mengukur.

rupa_cad_ukurB

Volume dan luas EKSAK, jumlah tepi dan muka, kotak batas — plus ongkos hampiran meshnya pada satu toleransi. Dua angka itu selalu dilaporkan bersama, disengaja: yang eksak sendirian tidak memberi tahu berapa yang HILANG saat bentuknya dikirim ke web.

rupa_cad_daftarB

Semua bentuk di ruang CAD ini berikut volume, luas, jumlah tepi, dan apakah bentuknya sah — bukan cuma namanya.

rupa_cad_eksporA

Tulis bentuk ke berkas. Pembagian yang menentukan, dan tidak disebut pesan galat mana pun:

.step .iges b-rep EKSAK, permukaan analitik — untuk CAD & CNC .stl .glb .obj SEGITIGA, hampiran — untuk web & cetak

Yang kedua SELALU melenceng, berapa pun toleransinya diperkecil, jadi galatnya ikut dilaporkan. "Sudah diekspor" tanpa angka adalah kalimat yang tidak bisa dipercaya.

rupa_cad_imporA

Baca STEP/IGES/STL dari CAD lain, lalu UKUR isinya. Impor tanpa ukur tidak memberi tahu apa pun tentang apa yang masuk — dan STEP dari dunia luar sering membawa bentuk yang tidak sah, yang baru ketahuan saat dioperasikan.

rupa_adegan_baruA

Mulai adegan KOSONG yang sudah sah: kamera, cahaya lingkungan, dan matahari. Menimpa adegan ruang ini. Adegan adalah DATA — ia bisa diperiksa, dibandingkan, diberi versi, dan disusun oleh siapa pun, termasuk agen lewat tool ini.

rupa_adegan_asetA

Daftarkan GLB ke adegan. Yang dicatat bukan cuma jalurnya: ukuran berkas, KOTAK BATAS (dibaca dari accessor min/max glTF, tanpa memuat mesh), dan SERTIFIKATNYA kalau ada. Kotak batas itu yang membuat kesalahan skala bisa ditangkap sebelum terbit — kesalahan skala tidak muncul di daftar node, tidak menggagalkan apa pun, dan baru ketahuan kalau kebetulan kameranya menghadap ke sana.

rupa_adegan_nodeB

Tambah, ubah, atau hapus node. jenis boleh aset (memakai GLB terdaftar) atau bentuk dasar — bentuk dasar ada supaya lantai dan latar tidak menuntut satu GLB sendiri.

peran menentukan apakah node ikut dinilai skalanya: properti = benda di panggung (dinilai), latar = lantai/dinding/langit (dikecualikan), pandu = grid/sumbu/penanda. Lantai 40 m di adegan bermedian 1,7 m BUKAN kesalahan skala, dan membedakannya lewat peran lebih jujur daripada melonggarkan ambang sampai lantai lolos.

rupa_adegan_cahayaA

Atur atau tambah cahaya. id yang sudah ada akan DITIMPA, jadi tool ini juga cara mengubah matahari bawaan. Adegan tanpa satu pun cahaya berkekuatan > 0 ditolak saat terbit — ia akan terbit HITAM, dan layar hitam tanpa pesan adalah kegagalan yang paling mahal.

rupa_adegan_kameraA

Posisi, target, dan bidang pandang kamera awal. Ini kamera yang dilihat orang saat halaman pertama dibuka — orbit sesudahnya milik pembaca.

rupa_adegan_lingkunganC

Langit gradien, paparan (tone mapping ACES), bayangan, dan kabut. Paparan adalah pengatur terang yang BENAR di alur kerja PBR — menaikkan kekuatan cahaya untuk membuat gambar lebih terang akan merusak pantulan dan bayangannya.

rupa_adegan_lihatA

Isi adegan berikut ANGKANYA: tiap node dengan ukuran DUNIA-nya, sertifikat tiap aset, dan pemeriksaan SKALA TIMPANG — node yang diagonalnya menyimpang jauh dari median adegan. Panggil ini sebelum terbit. Kesalahan skala terjadi pada adegan pertama alat ini sendiri: sebuah ikon terbit 438 satuan di adegan bermedian 1,7 karena skalanya dipakai dari ingatan tentang aset LAIN, tanpa mengukur aset itu.

rupa_adegan_terbitA

Adegan jadi SATU halaman HTML yang berdiri sendiri — orbit, klik-pilih, dan tiap objek membawa angkanya. Aset ditanam sebagai base64 di dalam halamannya, bukan ditunjuk lewat URL: halaman yang memuat asetnya lewat jaringan akan tampil sebagai LAYAR KOSONG di lingkungan ber-CSP ketat, tanpa galat yang menyebut sebabnya.

Ongkosnya diukur, bukan diabaikan: base64 membengkakkan bita sekitar 4/3, dan anggaran 16 MB diperiksa SEBELUM menulis dengan menyebut aset penyumbang terbesar. Mode mandiri menghasilkan dokumen utuh untuk server statis mana pun; mandiri: false menghasilkan potongan tanpa / untuk penerbit yang memasang kerangkanya sendiri.

rupa_topologiA

Periksa TOPOLOGI sebuah GLB — bagaimana verteksnya TERSAMBUNG, bukan di mana letaknya. Bekerja pada berkas dari mana pun, termasuk keluaran generator AI, tanpa perlu Blender.

Yang dilaporkan: tepi tak-manifold, tepi batas (lubang), segitiga berputar terbalik, segitiga degenerasi dan sliver, nisbah pecah verteks, sebaran kerapatan texel, dan UV di luar 0–1.

SATU HAL YANG MENENTUKAN: verteks DILAS menurut posisi sebelum dihitung. glTF memecah verteks di tiap jahitan UV, jadi menghitung manifold pada indeks mentah membuat setiap jahitan terlihat sebagai lubang — terukur pada satu aset: 30.790 mentah vs 360 setelah dilas, menggelembung 85 kali.

DAN YANG TIDAK BISA DIUKUR DARI GLB, disebut apa adanya: nisbah quad/n-gon dan pola edge loop sudah HILANG sebelum berkasnya ditulis, karena glTF selalu tersegitiga. Alat mana pun yang mengklaim menilai quad-dominance dari sebuah GLB sedang mengarang.

rupa_topologi_sumberA

Topologi SUMBER: quad, n-gon, valensi verteks, KUTUB, dan EDGE LOOP — diukur dari mesh di dalam Blender, satu-satunya tempat keempatnya masih ada.

glTF SELALU tersegitiga, jadi rupa_topologi (yang membaca GLB) menyebut keempat ukuran ini "tidak bisa diukur" di tiap keluarannya. Itu benar, dan tool ini bukan penghampirannya — ia membaca sumbernya.

KENAPA INI YANG MENENTUKAN: yang membuat aset generatif menuntut dua sampai empat jam retopology manual bukan jumlah segitiganya, melainkan tidak adanya STRUKTUR — tidak ada edge loop yang mengikuti lipatan, valensi kacau, quad tidak ada. Mesh begitu tidak bisa dideformasi, di-subdivide, atau di-UV tanpa dibangun ulang.

BATAS YANG DISEBUT: memuat GLB ke Blender TIDAK memulihkan quad-nya. Kalau mesh yang diukur seluruhnya segitiga, keluarannya memuat peringatan yang menyatakan bahwa itu bisa berarti mesh memang bertopologi segitiga ATAU informasinya sudah musnah saat impor — dan alat ini tidak bisa membedakannya. Terukur: sebuah GLB 2.976 segitiga diimpor ulang keluar sebagai 2.976 segitiga dan NOL quad.

VERTEKS BATAS dikeluarkan dari analisis kutub: valensi != 4 di tepi terbuka itu wajar, bukan cacat — bidang datar 4x4 punya seluruh tepinya bervalensi 2 atau 3.

rupa_proksiA

Bangun proksi tabrakan CEMBUNG dari sebuah GLB, berikut ongkosnya yang terukur. Titiknya bisa langsung dipasang ke rupa_adegan_node sebagai fisika.bentuk = "cembung".

Diukur dengan collider Rapier yang PERSIS akan berjalan (projectPoint), bukan dengan model hull terpisah — mengukur proksi dengan alat yang berbeda dari yang menjalankannya berarti mengukur benda yang berbeda.

PERINGATAN YANG TERUKUR: convexHull Rapier RUSAK DIAM-DIAM di atas sekitar 8.000 titik — tidak null, tidak melempar, tidak memperingatkan; ia mengembalikan collider bervolume NOL, dan benda dengan collider bervolume nol tidak menabrak apa pun: ia jatuh menembus dunia. Karena itu titiknya selalu direduksi lebih dulu dan hasilnya dijaga dua pemeriksa eksak.

rupa_teksturA

Periksa TEKSTUR sebuah GLB, dan jawab pertanyaan yang sebenarnya ditanyakan orang: apakah teksturnya CUKUP untuk benda ini, atau TERLALU BESAR.

Jawabannya PIKSEL PER METER — kerapatan texel (UV per meter dunia) dikalikan ukuran tekstur. Kedua bahannya sudah ada di setiap GLB dan tidak ada alat yang mengalikannya. Di bawah ~100 px/m benda seukuran manusia buram dari dekat; di atas ~2000 px/m hampir selalu pemborosan.

TIGA PEMBOROSAN YANG TIDAK TERLIHAT DI LAYAR: peta RATA (1024² berisi satu nilai = 4 MB VRAM untuk sebuah angka), ALFA SIA-SIA (RGBA yang alfanya 255 di mana-mana = 25% memori terbuang), dan RESOLUSI SEMU (gambar 256² yang di-upscale jadi 1024² = memori empat kali lipat untuk detail yang sama persis).

Normal map diperiksa DUA syarat sekaligus: |v| mendekati 1 DAN biru tinggi. |v| sendirian tidak cukup — gambar gradien sembarang memberi |v|=1,105, cukup dekat untuk lolos.

FAKTOR ikut dilaporkan, dan itu bukan kelengkapan: di glTF nilai efektif = faktor × saluran tekstur. Melaporkan "saluran B = 255" tanpa menyebut metallicFactor: 0 mengundang kesimpulan bahwa bendanya logam penuh, padahal hasilnya nol.

rupa_tekstur_buatA

Bangun material PROSEDURAL di Blender, PANGGANG jadi peta gambar, lalu ganti materialnya dengan yang berbasis gambar supaya bisa diekspor.

Langkah terakhir itu yang paling mudah terlupa dan paling mahal: material prosedural Blender TIDAK BISA diekspor ke glTF sama sekali. Eksportirnya cuma mengerti nilai tetap dan peta gambar, jadi material prosedural yang indah di Blender terbit ke web sebagai ABU-ABU RATA, tanpa satu pun peringatan.

Tiga hal yang menentukan hasilnya: node gambar harus AKTIF sebelum bake (kalau tidak Blender memanggang ke tempat tak tentu dan diam saja); bake DIFFUSE bawaannya menyertakan pencahayaan sehingga bayangan lampu ikut terpanggang ke albedo; dan ruang warna harus disetel SEBELUM disimpan — albedo sRGB, sisanya Non-Color.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 36 tools

Disambiguation4/5

Most tools have clearly distinct purposes (modeling, CAD, scene assembly, inspection), but there is some overlap between rupa_lihat and rupa_adegan_lihat (both involve viewing/checking the scene), and between rupa_ukur and rupa_cad_ukur (both measure objects). The descriptions are detailed enough to disambiguate, but an agent could hesitate between these pairs.

Naming Consistency4/5

The naming follows a consistent rupa_ prefix with snake_case verbs (rupa_baru, rupa_muat, rupa_ukur, rupa_ekspor). The CAD and scene subdomains use rupa_cad_* and rupa_adegan_* prefixes, which is a clear pattern. Minor deviation: rupa_cad_daftar and rupa_adegan_lihat use nouns rather than verb_noun, but the overall pattern is strong.

Tool Count3/5

36 tools is on the heavy side, but the server covers three distinct domains (core modeling, CAD kernel, scene assembly/publishing) plus inspection tools. Each tool has a specific job, but the count is high enough that an agent will need careful routing. It is not excessive for the scope, but it is at the upper edge of reasonable.

Completeness5/5

The tool surface is remarkably complete: modeling (create, import, script, measure, render, export, LOD, collision, bake, topology, texture), CAD (status, primitives, boolean, edges, fillet, sketch, transform, measure, export, import), and scene (new, assets, nodes, lights, camera, environment, publish). The only minor gap is no explicit tool for deleting individual objects outside the scene node tool, but rupa_adegan_node covers add/update/delete. The domain is fully covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues