mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證一個單螢幕工作台,用於自訂網頁游標。提供 27 個即時游標,所有參數皆可調整,且根據您調整的值產生 JS / React / CSS 程式碼片段。無需建置步驟,亦無相依性。
AI 翻譯
A single-screen workbench for custom web cursors. 27 live cursors, every parameter tunable, and the JS / React / CSS snippet is generated from the values you tuned. No build step, no dependencies.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A single-screen workbench for custom web cursors. 28 cursors — 11 drawn and 17
animated — each one live, each parameter tunable, and the JS / React / CSS snippet is
generated from the values you actually tuned.
No build step, no dependencies, no framework. Open index.html and it runs.
Most cursor collections hand you a static snippet and hope it fits. This one hands you a
control panel: drag a slider, watch the cursor change under your pointer, then copy code
that already carries your values.
Design — drawn cursors, shipped as cursor: url(data:image/svg+xml,…).檢視完整 README ↗A single-screen workbench for custom web cursors. 28 cursors — 11 drawn and 17 animated — each one live, each parameter tunable, and the JS / React / CSS snippet is generated from the values you actually tuned.
No build step, no dependencies, no framework. Open index.html and it runs.
Live demo → · MIT licensed
Most cursor collections hand you a static snippet and hope it fits. This one hands you a control panel: drag a slider, watch the cursor change under your pointer, then copy code that already carries your values.
┌──────────────────────────────────────────────────────────────┐
│ ▚ CURSOR LAB [ DESIGN │ ANIMATED ] 17 UNITS ⭐ ─ │
├────────────┬───────────────────────────────┬─────────────────┤
│ POINTER │ │ POINTER / 01 │
│ Dot & Ring │ LIVE STAGE │ DOT & RING │
│ ... │ │ ─────────────── │
│ TRAIL │ │ FOLLOW 0.14 │
│ ... │ │ ▮▮▮▮▮▮▯▯▯▯▯▯▯▯ │
│ FIELD │ │ [RESET][SOURCE] │
└────────────┴───────────────────────────────┴─────────────────┘
└── SOURCE slides up over the stage ──┘
Design — drawn cursors, shipped as cursor: url(data:image/svg+xml,…).
| Group | Cursors |
|---|---|
| Aero | Aero Arrow |
| Y2K | Candy Arrow · Bunny · Sparkle · Cherry · Love Arrow |
| 8-bit | Pixel Arrow · Pixel Heart · Pixel Pencil |
| Kawaii | Kitty · Peepers |
Animated — grouped by what they actually do.
| Group | Cursors |
|---|---|
| Pointer (replace the arrow) | Dot & Ring · Velocity Squish · Crosshair HUD · Custom Pointer · Figma Cursor · Eyes · Liquid Glass · Butterfly |
| Trail (leave something behind) | Cascading Dots · Swirl · Silky Ribbon · Pixel Trail · Fluid Smoke · Cursor Ghost |
| Field (the surface reacts) | Magnet Lines · ASCII Field · Dot Grid Warp |
0…1
(tail position, particle life, field strength), which is cheaper and reads better than
a real canvas gradient.(pointer: fine) and does
nothing on touch.git clone https://github.com/oleksand4rux-del/cursor-lab.git
cd cursor-lab
python -m http.server 5175
Then open http://localhost:5175. Opening index.html straight from disk works too.
Open any entry, tune it, hit SOURCE, pick a stack and copy. Three rules the generated code always follows:
cursor: none on a section, never the document.transform and opacity, one write per frame inside
a single requestAnimationFrame.(pointer: fine) and simply do nothing on touch.Every entry is one object. Push it into the right file and the catalogue, groups, counters, inspector and code panel pick it up automatically.
ANIM_DB.push({
id: 'my-cursor',
name: 'My Cursor',
group: 'Pointer', // Pointer | Trail | Field
desc: 'One sentence on what it does and why.',
hideCursor: true,
content: '<div class="stage__body">…</div>',
params: [
{ key: 'ease', label: 'Follow', type: 'range', min: .04, max: .4, step: .01, value: .14 },
{ key: 'count', label: 'Nodes', type: 'range', min: 3, max: 40, step: 1, value: 14, rebuild: true },
{ key: 'on', label: 'Blend', type: 'switch', value: true },
{ key: 'mode', label: 'Mode', type: 'select', value: 'a', options: ['a', 'b'] },
{ key: 'label', label: 'Name', type: 'text', value: 'you' },
{ key: 'color', label: 'Colour', type: 'paint', value: { a: '#FFFFFF', b: '#5B9BF6', on: false } }
],
mount(stage, p) { /* p mutates live */ return destroy; },
code(p) { return { js, react, css }; }
});
rebuild: true marks a parameter that needs the effect recreated (element counts, for
example). Everything else applies without a remount.
See CONTRIBUTING.md for the full walkthrough.
index.html the single screen
assets/style.css design tokens, three panes, source drawer
assets/engine.js tiny runtime: FX.mount / layer / canvas / paint helpers
assets/db-design.js 11 drawn cursors
assets/db-pointer.js 8 pointer effects
assets/db-trail.js 6 trail effects
assets/db-field.js 3 field effects
assets/app.js catalogue, inspector, code generation, clipboard
docs/NOTES.uk.md detailed build notes (Ukrainian)
Built in the Nothing design language: monochrome, typography carries the hierarchy, structure instead of ornament. Dark, OLED black. One accent per screen — a single red bar on the active catalogue row.
Type: Doto for display, Space Grotesk for UI, Space Mono for data and labels.
Researched from Awwwards, Codrops, React Bits, Motion and the Framer Marketplace. Every effect here is an original implementation.
Built by Oleksandr Yeromin.