Git Product home page Git Product logo

looom-tools's Introduction

looom-tools

A suite of JavaScript-based tools for parsing and rendering Looom animation software files. This project is experimental/WIP.

โœจ Web Exporter โ†’ looom-tools.netlify.app

Looom

Looom is an experimental animation software for iOS tablets, which allows you to draw and animate short loops like this:

animation

This is the "Earthy" loop that comes packaged with Looom

The drawings are recorded as vector shapes, and saved as SVG on your iPad, so they can be accessed and shared from the Files application.

Looom-Tools

This package and website is a small suite of tools for working with Looom's SVG files, allowing you to render them in real-time on the web, re-export them with different settings, and parse and restructure them programmatically. In this way, Looom could be used as a general purpose animation software for the web, in the way that Lottie is often used for scalable web animations.

Website

One facet of this project is an easy-to-use web renderer and exporter, allowing for GIF/MP4/WebM exporting of your loops. See looom-tools.netlify.app.

Parsing API / CLI

Another facet of this project is parsing the .SVG files from Looom into a more manageable JSON format. This could be useful for developers wishing to build more extensions/hacks/renderers on top of the file format.

This is still WIP.

Rendering API

The third part of this project is a working web-based renderer of the parsed JSON file that achieves feature parity with Looom, as well as a few additional features. This can help make Looom a more general purpose animation framework for the web, in the way that Lottie is often used for web animations, and also provides a reference for those wishing to implement custom renderers (such as with WebGL or another framework) for more specific features.

The current renderer uses Canvas2D, as it seems to be able to achieve feature parity with Looom.

This is still WIP.

What this Enables

Once you start hacking the Looom files, you can do a lot of interesting things that aren't yet possible in the app, such as:

  • Processing & cleaning up jagged/low-detail curves (this library includes a {resamplePaths} option)
  • Changing colors and other rendering parameters procedurally
  • Exporting at specific dimensions and formats (SVG/PNG frames, MP4/GIF)
  • Combining weaves to create animations with more than 5 threads, or higher frame rate / frame counts
  • Introducing real-time interactivity to your loops
  • & more...

Progress

If you'd like to contribute, please open an issue. Some things still need to be worked on:

  • Docs & API cleanup
  • CLI tool for converting Looom SVG to JSON (allowing for a slimmer web parser)
  • Improving polyline offsetting code for edge cases
  • Testing different files to ensure feature parity with Looom
  • Examples of more interactive loops
  • Improving the overall UX/UI and design of the website.

License

MIT, see LICENSE.md for details.

looom-tools's People

Contributors

ioramastudio avatar mattdesl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.