All Projects → songrun → Vectorskinning

songrun / Vectorskinning

Licence: apache-2.0
SVG Image deformation tool. Support cubic Beizer spline only.

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Vectorskinning

Jeelizweboji
JavaScript/WebGL real-time face tracking and expression detection library. Build your own emoticons animated in real time in the browser! SVG and THREE.js integration demos are provided.
Stars: ✭ 835 (+7490.91%)
Mutual labels:  svg
Snowflake
❄️ SVG in Swift
Stars: ✭ 924 (+8300%)
Mutual labels:  svg
Chart.xkcd
Chart.xkcd is a chart library that plots “sketchy”, “cartoony” or “hand-drawn” styled charts.
Stars: ✭ 6,982 (+63372.73%)
Mutual labels:  svg
Screenshotframes
A small CSS library for adding responsive frames (mobile device, desktop computer, or browser toolbar) to images
Stars: ✭ 18 (+63.64%)
Mutual labels:  svg
Amcharts4
The most advanced amCharts charting library for JavaScript and TypeScript apps.
Stars: ✭ 907 (+8145.45%)
Mutual labels:  svg
Graphicsjs
A lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology.
Stars: ✭ 937 (+8418.18%)
Mutual labels:  svg
Octicons
A scalable set of icons handcrafted with <3 by GitHub
Stars: ✭ 7,039 (+63890.91%)
Mutual labels:  svg
Gi
Native Go (golang) Graphical Interface system (2D and 3D), built on GoKi tree framework
Stars: ✭ 864 (+7754.55%)
Mutual labels:  svg
Itext7
iText 7 for Java represents the next level of SDKs for developers that want to take advantage of the benefits PDF can bring. Equipped with a better document engine, high and low-level programming capabilities and the ability to create, edit and enhance PDF documents, iText 7 can be a boon to nearly every workflow.
Stars: ✭ 913 (+8200%)
Mutual labels:  svg
Squib
A Ruby DSL for prototyping card games.
Stars: ✭ 850 (+7627.27%)
Mutual labels:  svg
Mono Icons
Stars: ✭ 899 (+8072.73%)
Mutual labels:  svg
Svg Logos
SVG logos of Kazakhstani companies
Stars: ✭ 19 (+72.73%)
Mutual labels:  svg
Create Content Loader
✏️ Tool to create your own react-content-loader easily.
Stars: ✭ 937 (+8418.18%)
Mutual labels:  svg
The Graph
SVG custom elements for FBP graph editing and visualization. Used in noflo/noflo-ui
Stars: ✭ 896 (+8045.45%)
Mutual labels:  svg
Dompurify
DOMPurify - a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. DOMPurify works with a secure default, but offers a lot of configurability and hooks. Demo:
Stars: ✭ 8,177 (+74236.36%)
Mutual labels:  svg
Vue Unicons
1000+ Pixel-perfect svg icons for your next project as Vue components
Stars: ✭ 828 (+7427.27%)
Mutual labels:  svg
React Circle
Renders a svg circle + progress, it just works 💘
Stars: ✭ 925 (+8309.09%)
Mutual labels:  svg
Angular Svg Timer
An SVG-based timer button in AngularJS
Stars: ✭ 11 (+0%)
Mutual labels:  svg
Element
Programmatic UI for macOS
Stars: ✭ 855 (+7672.73%)
Mutual labels:  svg
React Planner
✏️ A React Component for plans design. Draw a 2D floorplan and navigate it in 3D mode.
Stars: ✭ 846 (+7590.91%)
Mutual labels:  svg

Skinning Cubic Bézier Splines

This code implements the cubic Bézier spline portion of our SIGGRAPH Asia 2014 paper Skinning Cubic Bézier Splines and Catmull-Clark Subdivision Surfaces by Songrun Liu, Alec Jacobson, and Yotam Gingold. The implementation consists of a web GUI that communicates with a Python back end.

This work has been adopted and implemented by Adobe as Puppet Warp in Illustrator.

Installation

The software depends on Python 2.7+ and several modules:

  • numpy
  • scipy
  • autobahn
  • twisted
  • cffi
  • cvxopt (optional; disabled by default)

(Note: On OS X, you should not install modules into the built-in system Python. Instead, install a copy of Python with a package manager such as homebrew or macports, or fink.)

You can install these modules with your favorite package manager, or using pip:

pip install numpy scipy
pip install autobahn
pip install cffi
pip install cvxopt

(If you don't have pip, install it using your OS package manager or get it from http://www.pip-installer.org/en/latest/installing.html .)

The software depends on several compiled components. Binaries are provided in the repository for OS X. See below for compilation instructions (for other platforms, or when making changes).

Running

Run python web-gui.py open to run the computation back-end and (the open argument) launches the web GUI in your default browser. (You can run the web GUI independently, and then later run python web-gui.py and click the "Reconnect" button in the GUI to attach to it.)

Usage

Drag and drop an SVG file onto the web GUI to load the SVG. There are many examples in web-gui-tests and in results. Not every SVG can be loaded. (A good one to start with is Alec Jacobson's clam: web-gui-tests/clam-songrun.svg.)

Click on the "Handles" pane to switch to the mode that allows you to add and manipulate handles. In this mode, clicking inside the SVG view adds a handle; dragging an existing handle modifies the transform associated with the handle.

Click on the "Control point" pane to inspect and change constraints on interpolated control points.

Various global options are available in the GUI under "Toggles". More global options are hidden inside parameters.py. You will have to restart the server component (web-gui.py) to see their effect. You can restart the server independently of the GUI. Every time you restart the server, simply reconnect to it with the "Reconnect" button. (Note: Some server-side options in parameters.py are "defaults", so they won't have an effect when using the "Reconnect" button. For example, kG1andAconstraints has an effect only when parsing an SVG initially, and kArcLengthDefault has a button in the GUI under "Toggles" which overrides it.)

Compiling from scratch

Although largely written in Python, there are several optional compiled components required. Compiled versions are checked into the repository, but you can compile them from scratch.

  1. (required for BBW weights) Triangle. There should be a triangle directory containing a compiled binary of triangle.
  2. (required for BBW weights) libigl. There should be a directory or symbolic link to the root of libigl in the src directory.
  3. (required for BBW weights) bbw_wrapper contains a compiled dynamic library. cd into the directory and run the appropriate one-liner located at the top of bbw_wrapper/bbw.py.
  4. (optional for comparison with Schneider 1990 Graphics Gems) FitCurves contains a compiled dynamic library. cd into the directory and run the appropriate one-liner located at the top of FitCurves/FitCurves.py.
  5. (optional for barycentric interpolation; disabled by default) raytri contains a compiled dynamic library. cd into the directory and run the appropriate one-liner located at the top of raytri/raytri.py.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].