mesh-avatar-studio
일러스트를 코딩 에이전트와 로컬 편집기로 2D 메쉬 애니메이션 아바타로 변환
Procedural animation in Rust: scenes are async fns, every .await is time on the timeline. Deterministic engine, signals, 2D nodes with flexbox layout, text and code, GPU (vello) and CPU rendering, video export via ffmpeg.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The reel on oxframe.dev, made by examples/src/showreel.rs.
Status: oxframe is under very active development. The API is not stable yet and may change from version to version. Pin the exact version in your Cargo.toml and check the changelog before upgrading.
The Rust SDK of oxframe.
Procedural animation in Rust, modelled after Motion Canvas: a scene is an
async fn, and every .await on an animation is a frame boundary.
use oxframe::prelude::*;
#[oxframe::scene]
async fn intro(view: View) {
let square = view.add(Rect::new().size(200.0).x(-300.0).fill(color!("#e13238")));
all((
square.x().to(300.0, 1.0),
square.radius().to(100.0, 1.0),
))
.await;
}
fn main() {
Project::new("intro").scene(intro()).main();
}
Install the CLI and create a project; its src/main.rs starts from a scene
like this one:
Made by examples/src/quickstart.rs (scripts/readme-gif.sh); the command output is oxframe-cli 0.21.0's.
cargo install oxframe-cli # needs Rust; rendering needs ffmpeg on PATH
oxframe init my-video
cd my-video
oxframe dev # live editor — or:
oxframe render # writes out/my-video.mp4
Or skip the install and open the playground.
(cargo run -p oxframe-examples --bin <name> runs the bundled examples from a
clone of this repo.)
oxframe is made for agents that write the video and check their own
frames (oxframe check).
npx skills add oxygenframe/oxframe-sdk # Cursor, Copilot, Codex, Claude Code and others
In Claude Code, the plugin adds the skill and the oxframe mcp server:
/plugin marketplace add oxygenframe/oxframe-sdk
/plugin install oxframe@oxframe
The same plugin works in Cursor (.cursor-plugin/): the skills and the
oxframe mcp server. Until it is listed in the Cursor Marketplace, load it
locally:
git clone https://github.com/oxygenframe/oxframe-sdk
cp -r oxframe-sdk/plugins/oxframe ~/.cursor/plugins/local/oxframe # then reload Cursor
In Codex:
codex plugin marketplace add oxygenframe/oxframe-sdk
codex plugin add oxframe@oxframe
All of them need the CLI: cargo install oxframe-cli (or the
install script). Every release
gets a video of its notes from
release-video-action,
made by Oxframe.
| Crate | Purpose | wasm32 |
|---|---|---|
oxframe-core | signals, tweens, Ease, Lerp (incl. path morphing, gradients), deterministic executor, all / sequence / spawn / wait_for / wait_until, seeded random | yes |
oxframe-2d | scene graph: Rect, Circle (arcs, pies), Polygon, Star, Path, Line (smooth, arrows), Txt (rich spans, glyph morph), Code (highlighting, focus), Img (PNG/JPEG/SVG), Layout (flexbox/grid via taffy), Grid, Group; gradients, dashes, clip, blend modes, blur, shadow, z-index, anchor | yes |
oxframe-text | text layout (parley) and glyph outlines (skrifa), embedded Inter and JetBrains Mono, syntax highlighter | yes |
oxframe-render | Renderer trait; tiny-skia CPU backend; vello GPU backend (native and WebGPU into an OffscreenCanvas) | yes |
oxframe-export | ffmpeg pipe (mp4, webm, ProRes 4444, PNG), audio muxing, waveform | no |
oxframe-preview | protocol session; native WebSocket server | session only |
oxframe-protocol | Command / Event, meta.json schema, TS types via ts-rs | yes |
oxframe-macros | #[oxframe::scene], color!, ease!, tune! | — |
oxframe-components | ready-made blocks: TitleCard, BulletList, CodeExplainer, FlowDiagram, Callout, LowerThird, EndCard; Axes with plots, bars and vectors; Matrix, Table | yes |
oxframe-3d | , meshes (cube, sphere, plane, cylinder, models), lights, camera; deterministic software rasterizer shown through (feature ) |
cargo run --release -p oxframe-examples --bin <name> -- render|preview|info
with intro, text, morph, layout, chart, particles, showcase,
effects, shapes, typography, benchmark.
meta.json give byte-identical frames:
fixed dt = 1/fps, single-threaded executor, no wall clock, ordered maps only.meta.json is the source of truth for markers (wait_until), named
eases (ease!) and tunables (tune!); code only supplies defaults, which are
recorded on first run. Unknown keys are preserved; output is sorted and
2-space indented.cargo test --workspace
cargo test --release -p oxframe-examples --test acceptance # M0 acceptance, seek budget
cargo bench -p oxframe-examples --bench seek
cargo test -p oxframe-protocol --features ts # writes crates/oxframe-protocol/bindings
cargo test -p oxframe-render --features gpu --test golden # CPU and GPU against golden frames
OXFRAME_UPDATE_GOLDEN=1 cargo test -p oxframe-render --test golden # regenerate references (CPU)
Licensed under either of MIT or Apache-2.0 at your option.
Scene3d.glbView3d3d| yes |
oxframe-icons | icon!("lucide:server"): Lucide, Tabler and Simple Icons; only the named icons go into the binary (feature icons) | — |
oxframe-math | Math::new("x^2"): formulas set by Typst with a bundled math font (feature math, not in the playground) | not used |
oxframe | facade: prelude, Project, Engine, project CLI (render, preview, check, inspect, snapshot, info), browser API (wasm feature); features gpu, 3d, icons, math, video, unstable-node-api | yes |