GSoC/2020/StatusReports/SaurabhKumar: Difference between revisions
m →Week 8 |
|||
Line 93: | Line 93: | ||
=====Week 8===== | =====Week 8===== | ||
I implemented the functionality for the duration field (Commit: [https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=6ab6f13ade82c66a24c4e43d5563eecdcaff55b6 45]) and addition of storyboard items from storyboard (Commit: [https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=24336c5fa965731befec1136bb096c27811179fa 47]). | |||
I implemented the update of all affected items when a keyframe is changed. For this I implemented two classes <code>KisStoryboardThumbnailRenderScheduler</code> and <code>KisAsyncStoryboardThumbnailRenderer</code>. Whenever the <code>KisImage</code> is idle the current frame and all the affected frames are added to queues in <code>KisStoryboardThumbnailRenderScheduler</code>. This class then regenerates and emits <code>KisPaintDevices</code> for those frames one by one using <code>KisAsyncStoryboardThumbnailRenderer</code> which inherits <code>KisAsyncAnimationRendererBase</code>.(Commits: | |||
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=e131a0ac1ea2b74871e677605216254059d2107a 48] | |||
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=dcc10102b8e0561f28b28113b0e5355bc814be37 49] | |||
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=1505f3e69227e2366f98f7ef505ef5e4ce014043 50]). I also posted on Krita Artists asking for feedback. | |||
Other than that hellozee fixed building on Windows and I fixed some bugs. | |||
(Commits : | (Commits : | ||
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=70c078d87ecabf262bf46699262efe6e44854cee 46] | [https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=70c078d87ecabf262bf46699262efe6e44854cee 46] | ||
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=e56e6cc474410ce550c23cdf2edc8c7aa9a5bd81 51] | [https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=e56e6cc474410ce550c23cdf2edc8c7aa9a5bd81 51] | ||
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=9d1202ecee35cd02ca69315718ee67149a84e3a3 52] | [https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=9d1202ecee35cd02ca69315718ee67149a84e3a3 52] | ||
[https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=0a92393348efd8432a5918e8f83d8f17e1a38129 53]) | [https://invent.kde.org/graphics/krita/-/merge_requests/392/diffs?commit_id=0a92393348efd8432a5918e8f83d8f17e1a38129 53]) | ||
[https://confifu.wordpress.com/2020/07/29/week-8-gsoc-project-report/ Blog post] | |||
=====Week 9 and 10===== | =====Week 9 and 10===== |
Revision as of 15:09, 25 August 2020
Storyboard Docker For Krita
Project Overview
A storyboard is a graphic organizer that consists of illustrations and comments displayed in sequence for the purpose of pre-visualizing and planning of motion picture and animation. The project was to implement a docker in Krita that would use the existing animation API in Krita to facilitate storyboarding. Qt's MVC classes are used for storing and displaying the storyboard.
Project Goals
The requirements of the project can be broken down into the following goals:
- Implementing the basic MVC classes for the docker.
- Integrating relevant parts of Krita, namely the timeline docker and canvas, with the storyboard docker.
- Implementing functionalities to export storyboard as PDF and SVG.
- User documentation.
The mockups prepared for the project:
Relevant Code and Technical Pre-requisites
MVC classes
Talk about MVC classes, comment and storyboard.
Krita's Anamtion API
Talk about Keyframe and keyframe channels. Talk about AnimationInterface Talk about the syncing and addition of keyframes.
Work Report
Implementing the MVC classes for the docker
Week -1
I started a few weeks early, to cover up for any unprecedented events due to ongoing COVID-19 crisis. This week I added the storyboard docker to Krita's plugin system and implemented the tool-buttons at the top of the docker and the menu related to those buttons. I implemented the CommentModel class to manage the comment tool-button's menu. The members of this menu would be part of the storyboard items that would be part of the storyboard model. I also started implemented the StoryboardModel class. (Commits :1)
Week 0
I implemented the delegate class for the CommentModel. I also added a visibility property to members of the CommentModel. This property is shown as an eye icon which can be toggled by clicking. I also implemented the StoryboardItem class that makes up the data of the StoryboardModel and implemented functions in StoryboardModel to manage that data. (Commits : 2, 6)
Also I implemented unit-tests for the CommentModel, StoryboardModel and the interactions between those classes.(Commits: 3, 4, 5)
Week 1
Week 2
Week 3
(Commits : 18 19 20 21 22 23 24 25 26 27 28)
Week 4 and 5
(Commits : 29 30 31 32 33 34 35 36)
Week 6
Week 7
Week 8
I implemented the functionality for the duration field (Commit: 45) and addition of storyboard items from storyboard (Commit: 47).
I implemented the update of all affected items when a keyframe is changed. For this I implemented two classes KisStoryboardThumbnailRenderScheduler
and KisAsyncStoryboardThumbnailRenderer
. Whenever the KisImage
is idle the current frame and all the affected frames are added to queues in KisStoryboardThumbnailRenderScheduler
. This class then regenerates and emits KisPaintDevices
for those frames one by one using KisAsyncStoryboardThumbnailRenderer
which inherits KisAsyncAnimationRendererBase
.(Commits:
48
49
50). I also posted on Krita Artists asking for feedback.
Other than that hellozee fixed building on Windows and I fixed some bugs. (Commits : 46 51 52 53)
Week 9 and 10
I implemented the saving and loading of storyboards. For this I stored a QVector
of Comment
and a StoryboardItemList
in KisDocument
. This version of data is kept in sync with the version that is inside CommentModel
and StoryboardModel
.(Commits:
57
58
59
62)
I also added unit-tests for saving and loading of storyboards. These tests were added in kis_kra_saver_test.cpp
. (Commit: 56)
I worked on the Export dialog
GUI and implemented some of its functions.(Commits:
63
64)
Other than that I added a patch from Eoin O'Neil, fixed some bugs and merged my branch with master. (Commits : 54 55 60 61 65 66)
Week 11 and 12
(Commits : 67 68 69 70 71 72 73 74 75 76 77 78 79 80)
Introduction
The storyboard docker aims to facilitate storyboarding in Krita. It allows multiple images and associated text to be organized in the form of a storyboard. The arrangement can be tweaked using the mode and view options. Also different field's visibility can be toggled. The storyboard can be rendered as pdf or svg.
Deliverables
- Link to Phabricator task: T12819
- Krita Artists thread: Storyboard feature plans and mockups
- Merge Request : !392
- Blogs : here