mesh-avatar-studio
일러스트를 코딩 에이전트와 로컬 편집기로 2D 메쉬 애니메이션 아바타로 변환
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Local browser for a 3D-print model library: orbitable thumbnail grid, semantic search, open-in-slicer. Bun · Hono · React · three.js
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A local browser for a 3D-print model library. Point it at a directory tree full of
STL/3MF/OBJ files (zips included) and it gives you a thumbnail grid you can orbit,
search, and send to your slicer.
Open http://localhost:5173 and type an absolute path to your model library in the
path bar. That's it — thumbnails render in the background and cache to
~/.cache/model-browser/.README 전문 보기 ↗Live demo: models.masamaeda.com
A local browser for a 3D-print model library. Point it at a directory tree full of STL/3MF/OBJ files (zips included) and it gives you a thumbnail grid you can orbit, search, and send to your slicer.
bun install
bun run dev # server on 127.0.0.1:3177, UI on http://localhost:5173
Open http://localhost:5173 and type an absolute path to your model library in the
path bar. That's it — thumbnails render in the background and cache to
~/.cache/model-browser/.
pack.zip!/part.stl).The context menu offers "open in …" for every application your OS associates with the model's type (STL/3MF/OBJ), default first. It reads your desktop-entry registry — there is no in-app slicer configuration:
Pin a default: xdg-mime default lycheeslicer.desktop model/stl, or use any
"always open with" affordance your desktop has.
Slicer missing from the menu? Its desktop entry probably doesn't declare
model types. Drop a corrected entry in ~/.local/share/applications/ — a
ten-line file. Example (photon-workshop.desktop for a Wine-installed slicer):
[Desktop Entry]
Type=Application
Name=Photon Workshop
Exec=wine start /ProgIDOpen PhotonWorkShop %f
MimeType=model/stl;
"Open with…" hands the file to a chooser command of your choice (e.g. a
rofi picker). Configure it in ~/.config/model-browser/launch.json; the menu
item is hidden until you do:
{
"chooser": ["/home/you/bin/open-with", "{file}"]
}
The same file can override any launch operation with an argv template
({mime}, {appId}, {file} placeholders; no shell involved) — see
docs/platform-surface.md for the operations and their contracts. Linux is the
implemented platform; the doc sketches what Windows/macOS ports would swap in.
The server must run inside your graphical session (it launches GUI apps on your
display) — starting bun run dev from a normal terminal is exactly that.
A separate embedding service (SigLIP) answering on port 8077 adds three things, all from the same index — the UI calls it meaning search:
The service is mini-classify, started by hand:
cd mini-classify
.venv/bin/python serve_api.py <collection root> --cache-dir <embedding cache> --port 8077
The collection root must lie inside your model library — an index of models the
app can't reach covers nothing. The positional root overrides whichever root the
cache recorded when it was built, which is how one cache can serve a moved or
re-derived copy of its corpus. For a containerised setup, see deploy/demo/README.md.
MODEL_BROWSER_INDEX points the server at a different address; setting it to the
empty string turns the feature off outright.
The app runs fine: browsing, thumbnails and name search don't touch the index, and the meaning toggle simply doesn't appear. The states the UI reports are distinct and worth reading literally:
--cache-dir: a cache with no embeddings in it.The panel also states what the index covers for the folder you're in ("12 of 40 models here are indexed"), so a thin result set is legible rather than mysterious.
The Search tab exposes what the ranking does: read the phrase as written or through a template, pool a model's views by mean/max/softmax, and bound the results by a count (default 60), a score floor (default 0.10), or both — at least one is always in force, since an unbounded meaning search is the entire collection. Mode and tuning ride in the URL, so a meaning search is a link you can share.
Worth knowing before you read a flat result as a bug:
bun run test # vitest, both workspaces
bun run typecheck # tsc, both workspaces
cd client && bunx vitest run)
— not from the repo root.openspec/specs/, changes flow
through openspec/changes/. CLAUDE.md carries the working agreements
(architecture constraints, testing sharp edges) and is worth reading even if
you're human.server/ is Hono and must run on Node unchanged (Bun-only APIs are confined to
its entry point); client/ is React + Vite + three.js with a single shared
WebGL renderer.