dalboris / vpaint Goto Github PK
View Code? Open in Web Editor NEWExperimental vector graphics and 2D animation editor
Home Page: http://www.vpaint.org
License: Apache License 2.0
Experimental vector graphics and 2D animation editor
Home Page: http://www.vpaint.org
License: Apache License 2.0
I don't know how to tell you this. Your tool, in specific the Pen width tool, is JUST PERFECT. If Synfig, Pencil 2D and Tupi have it, they may be better animation softwares. It's what I have notice that those apps lack of, pen pressure support.
I would tell you that add a sound layer, but if you check the source of pencil2d, it seems more close to be a replace of Adobe Flash as Traditional/ Digital Animation program.
What I see pencil2d lacks of is a Color wheel. Tupi have a color mixer, but Color Wheels are more up to art and animation.
It would be good add a motion shapes thigs, to move have a large background, and just pan in animation to not redraw it again and again, for example a character on it's walk cycle and a moving background to make feel the sensation of that character alive, or you know I hope you could understand it.
Maybe you want to do your version, that is quite good, but also you could join forces with the other guys that already have an Animation app, and are multiplatform, or you can check the source of them, and improve your software. I think is not cheating, or you can check a commercial animation software to add features. In anyway we as users will refer to those softwares that are already on the market looking to fullfill that needs or things we have the behavior to use.
I miss a lot Adobe flash and TV paint is just amazing, but I can't afford a license for any of each, and Flash it is not for linux, and may not it the future, since market according to them is not profitable. I hope some day Linux could be the real 3rd Solution for Software Developers.
Krita animation is working on module that is on the way, but is not an animation software, is more for painting.
And anyway thanks for reading.
The ability to HOLD a drawing/keyframe for more than 1 frame!
And also be able to turn on and off all existing tweening globally. That way it would be easier to determine the timing of action, before you set up it's spacing.
I made another crude mockup:
Holding a drawing for more than one frame is very important early on in the workflow, before you do any work on the inbetweening!
Was trying to compile in qtcreator, but got a /Gui/VPaint.rc missing error. On Windows 10, Qt 5.4.2
If the vertex elements come before the edge elements in the .vec file, the vertices will be unselectable. Presumably you are just progressively rendering and the edge is being drawn over top of the vertices. Example files for testing:
Selectable vertices (expected behavior)
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with VPaint (http://www.vpaint.org) -->
<vec
version="1.6">
<playback
framerange="0 47"
fps="24"
subframeinbetweening="off"
playmode="normal"/>
<canvas
position="0 0"
size="1280 720"/>
<layer>
<background
color="rgba(255,255,255,1)"
image=""
position="0 0"
size="cover"
repeat="norepeat"
opacity="1"
hold="yes"/>
<objects>
<edge
id="2"
startvertex="0"
endvertex="1"
curve="xywdense(5 100,360,20 1180,360,20)"
color="rgba(0,0,0,1)"/>
<vertex
id="0"
position="100 360"
color="rgba(0,0,0,1)"/>
<vertex
id="1"
position="1180 360"
color="rgba(0,0,0,1)"/>
</objects>
</layer>
</vec>
Unselectable vertices (unexpected behavior)
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with VPaint (http://www.vpaint.org) -->
<vec
version="1.6">
<playback
framerange="0 47"
fps="24"
subframeinbetweening="off"
playmode="normal"/>
<canvas
position="0 0"
size="1280 720"/>
<layer>
<background
color="rgba(255,255,255,1)"
image=""
position="0 0"
size="cover"
repeat="norepeat"
opacity="1"
hold="yes"/>
<objects>
<vertex
id="0"
position="100 360"
color="rgba(0,0,0,1)"/>
<vertex
id="1"
position="1180 360"
color="rgba(0,0,0,1)"/>
<edge
id="2"
startvertex="0"
endvertex="1"
curve="xywdense(5 100,360,20 1180,360,20)"
color="rgba(0,0,0,1)"/>
</objects>
</layer>
</vec>
At least on OS X, it does not seem to be possible to have multiple documents open at the same time. Choosing File > New or File > Open โฆ from the menu automatically closes the current document (without asking whether to save changes made to it, see #23) and then opens the next document.
I don't see "Export animations as SMIL SVG" on the roadmap. Please add it to your roadmap, it is very important. SMIL is the THE standard format for animations, used both for the Web as part of SVG:
http://www.w3.org/TR/SMIL/
http://codepen.io/search?q=smil&limit=all&depth=everything&show_forks=false
โฆ and as the official OpenDocument format for animations and graphic effects:
Many professional animation packages can import, edit and save directly in SMIL. With SMIL support you can do in minutes things that would require days to do otherwise. It also provides an universal interchange format for animations. SMIL is the "lingua franca" of vector animation. Please support it.
Layers that contain different drawings/keyframes, ability to turn on and off onion skinning on a per layer basis, to add and remove layers, hide layers, layer opacity, etc. Here is a crude mockup
btw the krita developer working on animation features this year made a timeline design mockup:
http://kritaanimation.blogspot.com/2015/05/hitting-ground-running.html
Maybe you would find it interesting :) Not saying its the solution here, just a source of ideas. He obviously ripped off the onion skin editor from tvpaint :D
Other features that can be added to a layer system:
At least on OS X, files created by VPaint are not associated with the VPaint application. This has multiple implications:
test.vec
create a new file called test.vec copy
).Currently, it selects all cells in the animation.
Both operations should be available, but selecting cells in current frame should be the default.
Can the documentation please be moved to gh-pages or a wiki so that people are able to add to and improve upon it. If someone decides to implement a new feature, they should be able to add that feature to the official documentation.
I find that adding to a selection is a little bit unintuitive. Unless you are familiar with the program, you might find that selecting one object, then drag-selecting another with shift, deselects the first object.
You have to make sure that when you drag-select with shift you let go of the mouse button before you let go of the shift key. If you let go of the shift key first, as I naturally just did, it won't be shift-selection but regular selection, deselecting anything that's currently selected first.
No?
Under MacOS X, if you have a using a retina display, then when the mouse pointer it at location (x,y), VPaint actually draws it at location (0.5_x, 0.5_y).
See the following for info on how to fix it (in particular, see the paragraph about QGLWidget)
http://blog.qt.io/blog/2013/04/25/retina-display-support-for-mac-os-ios-and-x11/
VPaint's download link on vpaint.org refers to SourceForge. I suggest changing that to a different host. Because of the recent issues with SourceForge (manipulating files they host, injecting ads, malware and so on) some ad blockers[0] already block SourceForge downloads with an alarming warning.
What would you think of removing traces of the project from SourceForge and pointing the download link at a GitHub release page instead?
[0] I see this on uBlock Origin.
@dalboris Can you please update the expected dates on the roadmap? I'm not rushing your or anything like that, I just want to know where we're at, and in particular how long you expect before the 1.8 release so that I can get the importer and maybe a couple other things done in time.
Hi, frst of all thank you for this amazing contrubution to the open source world of animation and vector graphics.
Would it be possible to share the development roadmap for vpaint? I am very excited as to what is to come to future releases!
As an animator and cleanup artist/inbetweener - I've used toonboom and tvpaint in the past.
Vpaint is a very exciting piece of software for me, because of it's open source nature and the underlying technology which is really revolutionary!
Some of the biggest features that would get me to use vpaint more professionally:
I think the behavior of the spline where the extremities react differently to drag and drop than the others should be removed, because it prevents someone who reshaped a spline to reshape the extremities the way they want to.
Rotating a selection is important because a big part of movement is based on rotating joints that cause arcs.
I hope is manages to get in 1.6 :)
Brush stabilization can be seen in most other open source drawing software. Krita has it implemented in a variety of different ways. Mypaint and inkscape have it too. Japanese drawing software also tend to have it. Tvpaint has it.
Photoshop does not yet, but photoshop users tend to fill that gap with lazynezumi
http://lazynezumi.com/
It's so much easier to compile it using qmake and make than use qtcreator:
qmake src/VPaint.pro
make
The sculpting feature is pretty handy, but it can make lines pretty lumpy. How about a smoothing brush that also decimates the number of control points in the line?
Ability to import an image sequence to use for reference/cleanup - this way cleanup artists can import rough animation from other software and clean it up in vpaint and then do inbetweens - take advantage of vpaint's awesome vector drawing and inbetweening.
Settings do not get written if application is quit via the menu or shortcut (tested on Mac). I have looked at this briefly and it seems that moving the code from MainWindow::closeEvent
to a new slot and connecting it to QApplication::aboutToQuit
will probably fix this.
Let's say you've made some keyframes but decide there too far apart or near. there should be a way to change which frame number the keyframes are on. This could be either a simple edit field or you could click and drag them on the timeline.
I saw scripting on the roadmap, and just wanted to make a suggestion: see for another language than python. Python sure can be embedded in an app, but it is quite heave, and there are better languages for this, like lua, squirrel, or scheme. I suggest that if this feature is implemented, one of the aforementioned languages be chosen. The one i would recommend for this purpose would be scheme, with guile (AGPL) or chibischeme (BSD) as an implementation.
At least on OS X, when I create a new document or open an existing document, edit it and then close the application (by closing the main window or by choosing VPaint > Quit VPaint), my changes are lost.
I suggest that the user is asked whether they want to save their changes to the document before it is closed.
The rotation center should be kept between two operations on an edge, as it would be more practical for rigging, etc.
Please make a shell script to automate compiling on MacOS X. Something like make_vpaint.sh.
There are many tools written in Node.js to automate the download and install of dependencies: NPM, BOWER, GRUNT, NODE-GYP, etc.
For example here is a popular open source app you can learn from:
https://git.popcorntime.io/popcorntime/desktop/tree/development
You can look at the make shell script here (this script is all you need to execute to build the app):
https://git.popcorntime.io/popcorntime/desktop/blob/development/make_popcorn.sh
For the Node.js dependencies this is the NPM configuration:
https://git.popcorntime.io/popcorntime/desktop/blob/development/package.json
This is the Grunt script:
https://git.popcorntime.io/popcorntime/desktop/blob/development/Gruntfile.js
This is the dependencies configuration for BOWER:
https://git.popcorntime.io/popcorntime/desktop/blob/development/bower.json
This is the shell script for code signing the binary (required on MacOS X):
https://git.popcorntime.io/popcorntime/desktop/blob/development/dist/mac/codesign.sh
For installing GCC and the C++ dependencies, just take a look at the NODE-GYP examples:
https://github.com/TooTallNate/node-gyp
You can use NODE-GYP to execute the the QT Mac deployment tool that can be found in the QTDIR/bin/macdeployqt folder.
http://doc.qt.io/qt-4.8/deployment-mac.html#macdeploy
You can also use those tools for automate the build on all the other OS platforms, like this app does.
Open toonz is a professional open source animation package which has been recently released. I would be interested to hear the opinion of Boris and any other developers involved in vpaint.
It is almost on the same level as toonboom harmony, but it is open source and free for everyone to use/fork.
https://github.com/opentoonz/opentoonz
However, here is the opinion of a blender developer on the state of it's code at the moment:
On the other hand they (opentoonz developers)...
- Have been slow at accepting pull requests (check their git page).
- Have not made any statements for their plans for the open-source version (except that they will continue to work on a closed fork).
- Have not been significant contributions from any of the original developers (from what I can see).
- Have not made efforts to make the build process easy (readme was in Japanese for example).
And we know it was only opened because the company that bought them demanded it.
We will of course wait-and-see, so far this has all the hallmarks of a code-dump that won't receive much attention.
Open toonz can and will revolutionize the 2d animation industry - the way blender is doing with the 3d industry - and open doors to alot of indie studios - but that is not going to happen if it's left in it's current state and the open source community doesn't embrace it fully.
http://blenderartists.org/forum/showthread.php?394970-ToonzPremium-(2D-Animation-tool)-now-Open-Sourced/page5
Open Toonz is in a dire need of open source developers at the moment.
The design of opentoonz seems to be very compatible with vpaint. Perhaps vpaint could be a new level type?
Just throwing ideas out there :)
Mostly have opentoonz support saving to your file format.
Users should be able to select any selection of cells at frame 1, and any selection of cells at frame 2, then hit "automatic inbetween" to generate all required inbetween cells to interpolate frame 1 into frame 2.
Obviously, this is a very hard research problem, but I'll see how far I can go down that line.
See also #40 for an alternative UI as implemented in Cacani.
Improve onion skinning
Currently vpaint can create nice tweens for shapes. But when it comes to rotation on an axis, the tweening technology can not create desireable effects. In that case I propose the adition of a different type of a tool and keyframe.
In addition to being able to do shape tweens, it would be good to be able to do entire layer deformation and be able to also animate it.
New dock:
Here is how it could look like in the timeline:
Layer transformation keyframes could coexist with shape tweens.
If you add the ability to have parent-child relationships between layers (like it is in toonboom), then you could have a special "peg" layer type to do this type of animation and just make the shape tween vpaint layer a child of it when needed.
Wow, this is really going to change the way vector animations are done! But please support the SVG file format instead of limiting yourself to the VEC format. You need to make your application able to communicate with the world of graphic design.
All you need is to save frames as SVG files or as SVG SMIL animations and to import vector images as keyframes. The SVG file format is an open standard widely used, and the accepted standard for vector images.
We need four options:
Please add support for SVG if you want your app to become popular and used in real world applications (from websites icon animations to cartoon movies).
P.S:
You can also consider the option to integrate vpaint in Inkscape as a Plugin. It would be awesome. There are already some morphing plugins, but they are so primitive to be useless. Yours, instead, will make a true revolution, and people using Inkscape will start making SVG animations immediately and making your app very popular. Here is a proposal I made some time ago for a SVG animation plugin for Inkscape:
I think it's better to support add vertex in edge.
Good to see some activity here! Anyway, I was wondering if having VPaint check for updates in the background is something you would be interested in.
It should be pretty straightforward to implement. Just download Github's release feed for this project, parse it to find the latest tag, and then compare version numbers. VPaint already has XML parsing, so that makes it even easier.
If this is something you are interested in, let me know and assign this issue to me, I should have the time to do it soon since I've just finished up a larger project ๐
Tvpaint has this feature and it is a must have for traditional animation. I wrote about it at drawpile and the developer implemented it:
drawpile/Drawpile#191
In a vector application, you can find it in inkscape. To try it in such a workflow there:
now all the sketch blue lines are gone and what you are left with is the clean lineart ink black lines
Can you please include an SVG file for the main application icon in the images folder? I would like a larger version of the icon to make the Mac .vec file icon.
Both tweenmaker and Cacani have the ability to connect two frames and make inbetweens by showing you the order in which you need to draw the lines in the new empty frame. It takes the line order from the first frame.
here is how it looks like in cacani:
https://www.youtube.com/watch?v=UQL8pyY9P2E&list=PL453xPZwguXLvaSvNuLBR3vc_lEunaQ0v&index=3
They call it stroke matching.
tweenmaker (see line recorder section)
http://www.elecorn.com/tweenmaker//help/windows.html
Tween maker calls it "lines recording"
cacani
https://cacani.sg/product/cacani/
Right now to make a tween in vpain, one has to first draw the lines and then connect them one by one manually. Or be limited to pasting lines from the first frame and then altering them. Both are not ideal solutions. The first takes too many steps and is repetitive labor, the second is rigid and limited as to compared to drawing the lines manually.
The "action and reaction" interpolation effect should either have an option for better control (aka tween control), or be fixed if it is a bug. It gives an "alive" effect on tweens, but sometimes it is not desirable. And the way it works is hardly predictable. I made an animation, and the mouth swings like miley cyrus after a move while the eyes are normal after making the same movement!
I'm not sure if this is wanted behavior, but stepping to next and previous frames can go in both directions infinitely.
I suggest bounding at least the negative end, adding a check to lines like https://github.com/dalboris/vpaint/blob/master/src/Gui/Timeline.cpp#L1030
What would be a nice feature would be to have a kind of skeleton system, like in 3d animation, that would affect the vertices nearby and treat edges like skin. I think that would be nice and that splines are more adapted to this than the current raster techniques. I've never heard about such a thing for vector graphics anywhere else, and that would be long, painful, and complicated to program, but please close this issue if you deem this suggestion useless, as this is just an idea.
Right now vpaint can only create a linear interpolation. I suggest we have the ability to add a way to control the tween spacing. Here is how that looks like in both tween maker and cacani:
When the time line cursor is at a tween, the user can adjust the tween's spacing and add a slow up at the start, the end, or both. This is especially important for animation.
The title pretty much sums it up. The error is an out of bounds error from QList. Here is the contents of a vec file that can replicate this bug:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with VPaint (http://www.vpaint.org) -->
<vec
version="1.6">
<playback
framerange="0 47"
fps="24"
subframeinbetweening="off"
playmode="normal"/>
<canvas
position="0 0"
size="1280 720"/>
<layer>
<background
color="rgba(255,255,255,1)"
image=""
position="0 0"
size="cover"
repeat="norepeat"
opacity="1"
hold="yes"/>
<objects>
<face
id="99"
cycles="[]"
color="rgba(127,255,212,1)"/>
</objects>
</layer>
</vec>
I find class MainWindow
very big. I find it handles more responsibilities than it must. If I ask myself, are there bugs in class MainWindow
, frankly, I have very low confidence in answering either way.
What would you think of breaking it down to smaller responsibilities? So that ultimately it's easier to reason about?
Ultimately, maybe if things get small enough we can start adding test code too?
Hi all,
I'd like to discuss a potential issue here. About a year ago, I was brainstorming names, and I settled with "VPaint". It was short, made sense, was easy to pronounce and remember, and I checked if domain names were available (.com was empty and for sale, and .org, .net, etc... were all available), so I concluded it was unique and didn't clash with anything.
Unfortunately:
I am not very concerned about the first point, but I think the second is more problematic. TVPaint and VPaint are very related products, and having so similar names for related products might be confusing.
I'd like to hear your opinion on the subject. What do you think? Do you think VPaint should be renamed?
A cool thing would be to be able to create straight lines by pressing the shift key while clicking with the pen, so a line would be drawn between the last location of the pen and the current location of the pen.
Add a camera feature: pan, rotate, zoom, etc.
Possibly, it would be nice to assign z/depth values to layers, so that panning the camera create a parallax effect, without having to manually translate different layers at different speed.
It would be nice to extract external libraries from the build, or extract them within the build. This way, it would be possible to filter out compiler warnings from external libraries.
Right now I see the build is flooded with warnings, many of which come from external libraries, and are therefore not so interesting in the context of this project. When there are so many irrelevant warnings, it's too easy to miss an important warning that you can actually fix.
camera.camera pan.camera rotate.object layer panel.object move....
please ckeck tweenmaker.and make this better.
thank you
Users should be able to animate colors, more info in this forum post
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.