mesh-avatar-studio
일러스트를 코딩 에이전트와 로컬 편집기로 2D 메쉬 애니메이션 아바타로 변환
브라우저에서 이미지를 슬라이스·노이즈·대각 깊이로 변형·RGB 분할·레이어링하고 파라미터 조정 후 PNG로 내보내기
Slice, displace by noise + diagonal depth, RGB-split and layer any image in the browser. Tune every parameter and export a PNG.
디자인JavaScript · HTMLGitHub @thumpersecure온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기🪩📀 working glitch engine for 3d
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A browser-based scanline-displacement + RGB-offset glitch tool with a 3D reveal mode. Upload a photo and pick an intensity level 1–5. The exported image looks glitched as a flat picture, and a depth-parallax viewer at one tilt angle shifts every strip back so the original reappears. Also exports a depth map and a GIF sized for micro.blog. Everything runs client-side — nothing is uploaded anywhere.
▶ Live tool: https://thumpersecure.github.io/scanline-glitch/
Facebook / iOS "3D photos" fake parallax: they shift pixels sideways by their depth value as you tilt. Reveal mode runs that in reverse:
The page has a Tilt preview slider that simulates this: 0 = the flat image you would
post, 1.00 = the reveal. In the simulator the reconstruction is exact (mean difference
0.000) when RGB offset is 0. The R/B colour fringe is not depth-driven, so with RGB offset
on, a fringe stays at every angle by design.
<name>.png and
<name>_depth.png into the composer. On iPhone the Facebook app reads depth embedded
in the photo; a 2019 walkthrough used the DepthCam app to embed it. Neither is
confirmed for 2026. iOS Photos' own "Spatial Scene" estimates depth itself, so a
supplied map does not apply there.strip px tall).amp plus a centred depth ramp (diag).Displacement uses row copies; any shift size leaves no gaps in classic mode.
Pure intensity levels, scaled to image width (tuned at 1080 px). All use normal blending.
| Level | Strip | Displacement | RGB offset | Layers | Opacity |
|---|---|---|---|---|---|
| 1 | 24 | 0.8 % of width | 2 px | 1 | 1.0 |
| 2 | 20 | 1.2 % | 3 px | 2 | 0.5 |
| 3 | 16 | 1.5 % | 4 px | 2 | 0.5 |
| 4 | 12 | 2.5 % | 6 px | 3 | 0.6 |
| 5 | 8 | 4.0 % | 10 px | 4 | 0.8 |
(Layers/opacity apply to classic mode; reveal mode always renders one layer.) Touching a slider switches to custom. Level 5 shifts up to ~5 % of the width, which is probably more than a real 3D photo tilts, so the reveal may only be partial at high levels — calibrate with one upload.
| Button | Output |
|---|---|
| Download PNG | reveal_L<level>_seed<n>_<timestamp>.png (glitch_… in classic mode) |
| Download depth map | <same name>_depth.png, same size, grayscale. In reveal mode each gray band is one strip's shift |
| Export GIF | reveal mode: a looping tilt sweep that shows the reveal; classic mode: seamless noise loop |
Uploads are scaled to a 1080 px working width.
| Preset | Width | Frames | Colors | Measured size |
|---|---|---|---|---|
| micro.blog | 640 px | 20 @ ~14 fps | 256, dithered | ~1.4–2.5 MB on test photos |
| Small | 400 px | 20 | 64 | ~0.4 MB |
micro.blog's real upload/size limits are unconfirmed — conservative guesses (edit
PRESETS in gif.js). The UI warns above 3 MB.
| Control | Effect |
|---|---|
| Reveal mode / Tilt preview / Flip polarity | 3D reveal and its simulator |
| Level 1–5 | preset intensity |
| Strip height / Displacement / Noise scale / Diagonal depth | the slicing |
| RGB offset / spread | channel split (set RGB to 0 for a clean reveal) |
| Layers / scale / opacity / blend | classic mode only |
| Seed | deterministic: same seed + settings = same image |
| Animate | reveal mode: sweeps the tilt; classic mode: evolves the noise |
No build step, no CDN at runtime.
| File | Role |
|---|---|
engine.js | pure seeded renderer, buildReveal, simulateTilt (browser + node) |
gif.js | GIF export; encoder vendored at vendor/gifenc.esm.js (gifenc 1.0.3) |
app.js | UI wiring, single requestAnimationFrame scheduler, downloads |
index.html, style.css | markup and responsive styles |
python3 -m http.server 8000
# open http://localhost:8000
MIT — see LICENSE.