Materializr
오픈소스 파라메트릭 3D CAD로 제약 스케치·솔리드 모델·나사·SVG·텍스트 조각·STL/STEP 내보내기를 지원합니다
Animo: 브라우저용 무료 오픈소스 2D 애니메이션 편집기, DragonBones 내보내기
Animate like in Flash, export for your game. Animo is a free, open source 2D animation editor that runs in the browser: timeline, symbols, bones and IK, masks, onion skin. It exports DragonBones 5.5 f
디자인TypeScript · CSSGitHub @justmorenoise온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A Flash-style animation editor that exports DragonBones
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Flash-style animation editor that exports DragonBones.
I used Flash for fifteen years. Now that I am making my own 2D games I wanted an
animation program with the same approach: a timeline, layers, keyframes, symbols you
can open and animate inside.
But I wanted the result to be compatible with DragonBones skeletal animation, so I
could use it in PixiJS today and in other frameworks later. That is where Animo comes
from. It keeps full compatibility with the DragonBones format and, at the same time,
most of what made Flash worth using, with the same feel.README 전문 보기 ↗A Flash-style animation editor that exports DragonBones.
Website · Architecture · Contributing
I used Flash for fifteen years. Now that I am making my own 2D games I wanted an animation program with the same approach: a timeline, layers, keyframes, symbols you can open and animate inside.
But I wanted the result to be compatible with DragonBones skeletal animation, so I could use it in PixiJS today and in other frameworks later. That is where Animo comes from. It keeps full compatibility with the DragonBones format and, at the same time, most of what made Flash worth using, with the same feel.
The two models line up better than they have any right to. DragonBones composes a transform exactly as Flash does:
a = cos(skY)·scX c = -sin(skX)·scY tx = x
b = sin(skY)·scX d = cos(skX)·scY ty = y
A pure rotation is skX == skY; shear is the difference between them. Scale, skew and
rotation map one-to-one, so nothing is approximated between what you draw and what the
runtime plays.
It runs in the browser. No install, no account, no upload: your project is a file on your disk.
The Preview panel and Play mode are not a second renderer. They export the project in memory and hand the actual DragonBones runtime the exact bytes that would go to disk. If the stage and the preview disagree, the export is wrong, and you find that out while authoring, not after shipping.
Editor and runtime world matrices currently agree to 0 at keyframes and to ~3e-6 mid-tween, which is the exporter's own rounding.
| Timeline | Flash frame algebra: F5/F6/F7, keyframe drag, frame ranges, three clipboards, Paste and Overwrite, per-property easing with a curve editor |
| Symbols | Symbol = armature. Convert to Symbol, edit in place with the scene dimmed behind, nested symbols drawn at the playhead |
| Bones and IK | Two-bone and look-at chains, solved with a transcription of the runtime's own solver, so the stage shows what the runtime will do |
| Layers | Groups, z-order as one depth-first list, several displays per layer, exclude-from-export for reference art |
| Masks | A mask layer clipping the layers linked to it, nested symbols included |
| Onion skin | Ghosts between two markers on the ruler, past/future tinted, plus Edit Multiple Frames, which moves every keyframe in the range as one object |
| Motion blur | Per-sprite, from real pixel motion, driven by a shutter angle |
| PSD import | Groups become symbols, layers become images, raster masks applied, positions preserved |
| Export | DragonBones 5.5 skeleton, MaxRects atlas with alpha trimming, as a zip or straight to a folder |
| The rest | Undoable everything, rebindable keymap, dockable and floatable panels, rulers, guides, snapping, preferences |
npm install
npm run dev # http://localhost:5180
Chrome or Edge. Saving to a real file needs the File System Access API (elsewhere it falls back to a download and a file picker); the preview needs WebGL.
npm test # vitest
npm run build # tsc --noEmit && vite build
M, bind artwork to them, add IK targets with K.F6, tweens in between, easing per property.The export contains <name>_ske.json, the atlas pages and, when the project uses a
feature the format cannot carry, <name>_ext.json plus animo-pixi.js. In your game:
import { installExtensions } from "./animo-pixi.js";
const factory = dragonBones.PixiFactory.factory;
factory.parseDragonBonesData(skeletonJson); // <name>_ske.json
factory.parseTextureAtlasData(atlasJson, atlasTexture);
const display = factory.buildArmatureDisplay("<armature>");
app.stage.addChild(display);
// extJson is <name>_ext.json, loaded as plain JSON.
const extensions = installExtensions(display, extJson, { PIXI, ticker: PIXI.Ticker.shared });
display.animation.play();
// When the armature is removed:
extensions.destroy();
A project that uses neither masks nor motion blur exports plain DragonBones 5.5 and needs none of this.
DragonBones is the format and the runtime. Animo writes DragonBones 5.5 data read out
of the runtime's own parser rather than out of documentation. Every part of that contract
fails silently when you guess it wrong, so the source is the authority
(the list is in the architecture doc).
The runtime is vendored in public/vendor/ so the preview can run the real thing.
PixiJS 8 is the reference host. DragonBones 5.5 has no mask and no motion blur, not in
the format, not in the parser, not in PixiSlot, so both ship beside the skeleton as
runtime extensions, in a manifest modelled on glTF's. Each one is written into the export
only when the project actually uses it:
ANIMO_masks lets you show one part of the artwork and hide another, softly if you
want: the clip follows the alpha channel, so a semi-transparent mask leaves what is
under it semi-transparent. An export that carries masks marks it required, because a
player that skips it draws artwork meant to be hidden.ANIMO_motion_blur makes fast movement read as more cinematic, dialled in per
element. It is optional: a player that skips it plays the animation without the
softening.One file, src/runtime/animo-pixi.js, implements both. The editor's own preview imports it
and the export ships it byte for byte, so the preview cannot drift from what a game sees.
The manifest stores intent (a shutter angle, not a Pixi filter setup), so another runtime
can implement the same extension names, and a future video export can honour the same
numbers exactly.
A stock DragonBones player (the official one, Cocos, Unity) ignores the extensions. The export diagnostics say so out loud rather than letting you find out later.
The one rule everything else rests on: core/ imports nothing from view/, app/ or
io/, and touches no DOM. That is what lets the risky logic (transform maths, frame
algebra, the export contract, the atlas packer) run under vitest in Node.
src/
core/ pure logic: math · document model and frame algebra · history · atlas · export · keys
app/ Store, AssetStore, TimelineOps, clipboards, ProjectService, Keymap
view/ shell, dockable panels, canvas viewport, tools, timeline
io/ atlas rendering, zip bundling, file access, PSD reading
preview/ the runtime iframe host and its client
runtime/ animo-pixi.js, the extension module that ships inside the export
docs/ARCHITECTURE.md is the real documentation: 1500 lines on how this is put together and, mostly, on the things that fail silently when you get them wrong. Read the section covering what you are about to touch.
Stated plainly, because a feature list that quietly omits these is worse than useless:
PixiSlot applies only the colour multipliers, so Flash's
additive Tint is not reproducible. The exporter warns if a document carries offsets.A paid desktop edition is in the works, and it pays for the work on this one: video and spritesheet export, extra export formats, and an MCP server so an agent can drive the editor. It will be at morenoise.it. Everything you see in this repository stays free and open source.
You can also sponsor the project.
AGPL-3.0-or-later. See LICENSE.
What you export is yours. The skeleton, the atlas, the extension manifest and
animo-pixi.js shipped beside them are MIT-licensed and put no obligation on the game you
put them in. That carve-out is explicit: LICENSE-EXCEPTION.md.
Commercial licences for the editor are available: [email protected].
Issues and pull requests are welcome. Please read CONTRIBUTING.md first; it is short, and it points at the three rules in this codebase that are easy to break by accident. Contributors sign a CLA, which is what keeps the dual licence above possible.
Built on DragonBones and PixiJS, both MIT, plus ag-psd and fflate. Full notices in THIRD-PARTY-NOTICES.md.
By Morenoise.
DragonBones is a trademark of Egret Technology. PixiJS, Photoshop and Adobe Animate are trademarks of their respective owners. Animo is an independent project, not affiliated with or endorsed by any of them.