{"action":"created","issue":{"url":"https://api.github.com/repos/callaa/Drawpile/issues/180","labels_url":"https://api.github.com/repos/callaa/Drawpile/issues/180/labels{/name}","comments_url":"https://api.github.com/repos/callaa/Drawpile/issues/180/comments","events_url":"https://api.github.com/repos/callaa/Drawpile/issues/180/events","html_url":"https://github.com/callaa/Drawpile/issues/180","id":59099715,"number":180,"title":"(wild) feature request : Drawpile - the first truly collaborative animation software!!","user":{"login":"blurymind","id":6495061,"avatar_url":"https://avatars.githubusercontent.com/u/6495061?v=3","gravatar_id":"","url":"https://api.github.com/users/blurymind","html_url":"https://github.com/blurymind","followers_url":"https://api.github.com/users/blurymind/followers","following_url":"https://api.github.com/users/blurymind/following{/other_user}","gists_url":"https://api.github.com/users/blurymind/gists{/gist_id}","starred_url":"https://api.github.com/users/blurymind/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blurymind/subscriptions","organizations_url":"https://api.github.com/users/blurymind/orgs","repos_url":"https://api.github.com/users/blurymind/repos","events_url":"https://api.github.com/users/blurymind/events{/privacy}","received_events_url":"https://api.github.com/users/blurymind/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/callaa/Drawpile/labels/Feature","name":"Feature","color":"009800"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":15,"created_at":"2015-02-26T16:40:10Z","updated_at":"2015-04-07T18:41:36Z","closed_at":null,"body":"What if Drawpile had the ability to store animation frames, each animation frame contains a set of layers.\r\nThis way multiple users could work on an image sequence together. Annotate frames and chat while animating.\r\nDuring a drawing session, each of the users can play the animated sequence so far and switch between frames.\r\n\r\nThe animation frames list window:\r\nA horizontal window that shows all current animation frames in thumbnails or shows a thumbnail of a hovered on frame by mouse.\r\n\r\n- could allow for users to switch between frames to work on. \r\n- Allow for users to create new frames, move frames around\r\n- Indicate on which frame the user is working on.\r\n- Indicate on which frames the other users are working on\r\n\r\nThe animation preview/export window could work in two possible ways\r\n-When playing the animation sequence, drawpile could make a temporary snapshot of all the frames and simply play them in a new window. Then when the animation preview window/mode is closed, drawpile could delete the temporary frame files (tmp folder?).\r\n\r\n-Pause all activity for local user and just play the frames in the work area window.\r\n\r\nExport options:\r\n- Export gif file (useful for small sprites to go in games)\r\n- Export image sequence (PNG)\r\n\r\nPossible technical problems:\r\n- Huge files being created\r\n- Others I cant think of as of now, complexity of the software would fly through the roof.\r\nIt is certainly a very ambitious thing to develop. Maybe drawpile version 99999 (its over 9000!!)\r\n:)\r\n\r\n=========================================\r\n\r\nUpdate 1- Initial design proposal:\r\n\r\nI think that if you want to use the layers data to animate, you will have to create an alternative way to edit/manage the layers in Drawpile.\r\n\r\nA new X-sheet dock is needed to address the animation workflow!\r\n\r\nI put down some time to create a proposal design and a mockup. Please let me know what you think and if some stuff in there is unclear. :)\r\nClick for full screen.\r\n\r\n![xsheetindrawpile](https://cloud.githubusercontent.com/assets/6495061/6405150/a402cf9e-be28-11e4-8438-8707bd95231a.png)\r\n\r\nUnder the hood x-sheet dock is just managing the same layers that are in the layer's dock. It's just doing it in a radical new way!\r\n>key pose drawings can occupy frame ranges. So When you extend a drawing to occupy three frames instead of one, the x-sheet dock technically creates two new copies/clones of that layer above or bellow it (depending on which of the two arrows the user dragged)\r\n>when playing from xsheet, mypaint can operate in solo layer view: like the \"hide\" feature, but hides all other layers except the selected one.\r\nOnion skin mode: hide all layers above the selection and show the ones below it with adjusted opacity\r\n\r\nnote for the mockup proposal: a frame that doesnt contain a drawing yet could be just the number of the frame, but color coded.. or it could be a symbol [-] or [0]  or something.\r\nThe +(add) MENU should say \"add drawing\" instead of \"add frame\". Replace the word \"frame\" with \"Drawing\" there. I will update it later if you like the proposal\r\n\r\nThe ability to scribble annotations is very very nice, but not a must have- considering it would be complicated to implement and sync between users.\r\n\r\n>Copying and pasting+insert drawings could be done with the right click menu.\r\n>Deleting a drawing should move all the drawings bellow it upwards- filling its spot, so as not to have a missing drawing in its place.\r\n>moving a drawing in the x-sheet could be done by just dragging it.\r\n\r\n=============================\r\n\r\nLayer tagging:\r\n\r\nanother idea for the implementation:\r\nIf you add the ability to attach metadata to layers, you might be able to tell drawpile to treat some of the existing layers as animation frames, others - as a background element that is not affected by the x-sheet.\r\n\r\nTaking it way further:\r\n-instead of duplicating a layer to hold a drawing longer, drawpile could have a variable for time length  (for how many frames should I keep this layer drawing) attached to the layer. This would greatly increase how long the animations could be in it.\r\nA layer  could contain the metadata of time range in which it exists - instead of being duplicated by the software a bazillion times.\r\n\r\n-Another metadata attached to the layer could tell the x-sheet to treat it as a background element that is behind the animation.\r\n\r\n-if variables in layers tell the x-sheet when to play layers and for how long, then managing your animation with the x-sheet doesnt have to move the layers around in the layer docker. \r\n\r\n-best of all you can make both the layer and the x-sheet dockers useful for the animation pipeline. A tag attached to layers could tell the Layer docker to not show all of it's frames\r\n \r\n![path10320](https://cloud.githubusercontent.com/assets/6495061/6411961/9e9715b6-be86-11e4-809b-52b25a2cebd7.png)\r\n\r\n=============================\r\n\r\nNotes by callaa:\r\n>The features needed to support this kind of work flow would be:\r\n>\r\n>Animation preview window that cycles through the layers (like Animation->Playback in GIMP)\r\n>\"Duplicate layer\" button (been meaning to implement this anyway.)\r\n>Export to animated GIF\r\n>Export individual layers (this already exists in a way: ORA files are actually zip files containing the >layers in PNG format)\r\n>Solo layer view: like the \"hide\" feature, but hides all other layers except the selected one.\r\n>Onion skin mode: hide all layers above the selection and show the ones below it with adjusted opacity\r\n>The simplified approach has the downside that it would only be usable for fairly short animations. >Currently, the maximum number of layers that can be created is limited to 255 per users (this is a >protocol limitation.) Although, even then I can image it might be very handy for low-FPS animated >storyboards! "},"comment":{"url":"https://api.github.com/repos/callaa/Drawpile/issues/comments/90694329","html_url":"https://github.com/callaa/Drawpile/issues/180#issuecomment-90694329","issue_url":"https://api.github.com/repos/callaa/Drawpile/issues/180","id":90694329,"user":{"login":"blurymind","id":6495061,"avatar_url":"https://avatars.githubusercontent.com/u/6495061?v=3","gravatar_id":"","url":"https://api.github.com/users/blurymind","html_url":"https://github.com/blurymind","followers_url":"https://api.github.com/users/blurymind/followers","following_url":"https://api.github.com/users/blurymind/following{/other_user}","gists_url":"https://api.github.com/users/blurymind/gists{/gist_id}","starred_url":"https://api.github.com/users/blurymind/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/blurymind/subscriptions","organizations_url":"https://api.github.com/users/blurymind/orgs","repos_url":"https://api.github.com/users/blurymind/repos","events_url":"https://api.github.com/users/blurymind/events{/privacy}","received_events_url":"https://api.github.com/users/blurymind/received_events","type":"User","site_admin":false},"created_at":"2015-04-07T18:41:36Z","updated_at":"2015-04-07T18:41:36Z","body":"The second option would be more useful to animators :)"}}