PDF Contact Sheet for Storyboarding and Production handling [Proposal]

I add this post to get feedback about a development that I’m doing as a proof of concept in my PC and if this tool can fit inside Blender or not. The development was done in C/C++ and python.

Currently, the grease pencil team is working to create a good workflow for storyboarding using grease pencil and the video sequencer (Daniel was doing demos of these tools in Annency). During this development we have seen that sometimes is necessary to share the storyboard in a portable format and maybe print the whole Storyboad. This tool is a common feature of many storyboarding programs.

In previous Blender versions we added the option to export grease pencil drawing to Portable Document Format (PDF), and to do that we integrated libharu library in Blender, so we have all required libraries already for any PDF exporting.

With all the above points, I was investigating the possibility of creating Contact Sheets in PDF format for Storyboards, but this can be used for many other things in Blender and not only Storyboards.

The creation of the PDF requires a new operator that handles the internal libharu handling. This a video example of the current operator I have created.

The video has been compacted to be able to upload it with the 10 MB limitation, so it is cut off in some parts of the process, but you can see the basic idea.

Note: All images and videos of this post are base on preliminar designs and could be changed in the future.

Creaye a contact using the operator is valid, but this is not the main use of the operator. The main use is when is handled by an add-on.

The basic usage can be done with these python lines:

 # Example command with extra info
 bpy.ops.wm.contact_sheet_pdf(filepath="C:/Bluecat/contact_sheet.pdf",
                              files=[
                                  {"name": "C:/Users/Antonio/images/0001.png|0001|00:00:00:00|Camera 2"}],
                              logo_image="C:/Users/Antonio/logo_bluecat.png",
                              title="Bluecat Studio",
                              columns=3
                              rows=2)

To manage more complex examples, we can use an script like this.

import bpy

images = {"C:/Users/Antonio/03_Scene/03_Scene.0001.png",
          "C:/Users/Antonio/03_Scene/03_Scene.0031.png",
          "C:/Users/Antonio/03_Scene/03_Scene.0036.png",
          "C:/Users/Antonio/03_Scene/03_Scene.0044.png",
          "C:/Users/Antonio/03_Scene/03_Scene.0054.png",
          "C:/Users/Antonio/03_Scene.0063.png",
          "C:/Users/Antonio/03_Scene.0073.png"
          }

file = []
for i in images:
    frame = {"name": i}
    file.append(frame)
bpy.ops.wm.contact_sheet_pdf(
    filepath="C:/Users/Antonio/mycontact.pdf", files=file)

I have already created an add-on that it can be used to create a contact sheet base on a Storyboard in the video sequencer.

For example, for this VSE scene:

The following PDF documents can be created.

Or in a more compact layout.

For each frame, a maximum of 5 lines of text can be defined using a pipe (|) separator. Also a custom logo can be included to customize the document for a production.

To see how the pipe command works, see example python command above.

If you want to look at the PDFs, here the links:

My plan is to develop add-ons to create not only contact sheets based on storyboarding, but also in videos, keyframes, markers, etc. The possibilities are endless.

17 Likes

In some ways this looks like just another output file format. You could imagine rendering any animation into a contact sheet. And on the other hand you could imagine more flexible ways to determine which frames to render for an animation, based on markers, keyframes, etc.

I don’t know how much sense it makes from a workflow point of view to make it more general purpose like that. If we don’t have a mechanism to easily render animations to multiple file formats with different configurations for which frames to render, it may remain more convenient as a separate mechanism? Just throwing it out as something to consider.

1 Like

Maybe a new Node output in compositor? The bad point here would be that you need render again if you have already the images.

Anyway, in my actual code, I’m not sure if this type of operator would be in the UI, maybe just as internal API.

I really love the work you are doing with this Antonio can you select “print only keyframes”.
I have a disconnect or maybe it is available and not clear to me, is it possible to work on each separate scene of the animatic or storyboard by itself? I mean could I click on a scene or cut on the video sequencer and that takes me to the full blender scene to work and modify it? I have been trying to use “copy scenes” and “new scenes” but it gets confusing and can not add them to the video sequencer, I think things get too heavy for blender maybe?
if the video sequencer could be the hub where everything is connected and you can go to each separate scene from the VSE it would be perfect.

What you are asking is more or less what we have done with the Storyboard add-on. The story is managed by scenes and when you export to PDF, it export the keyframes of the stroryboard. You can select scenes or do for all timeline.

This topic is about PDF export and it’s a proof of concept that can be used in the storyboard add-on as I did. All features are experimental and if this is ever moved to master, then we could further define the different workflows.

Looks interesting. Reminds me Irfanview functionality I missing for linux, especially the ability to proceed nesting folders.

Looking great, thank you for all you work on this!

This would have been exactly what I needed a couple weeks ago.

One thing that’d be really handy is some way of getting a preview of the layout before exporting.

If this should also work for actual storyboards(including for live action), more things are needed: information like scene and shot number, action description, framing(ex. total, close-up etc.)dialogue and continued shots divided into parts ex. 5a, 5b, 5c. And ground plans:
shot-designer-2

The info by frame is free. The API supports 5 lines of customizable text and you can include any information you like. About other things like dialogue, if this feature is accepted we could think in solutions to be implemented in future versions.

I mentioned on twitter that it would be nice to use this for printing a range of frames to a table format (no gaps between images), this would mean removing borders and text spaces between rows. Are these layout features flexible?
My use case was to create a sprite texture sheet, so that a material could show portions of the sheet referencing images based on the grid.

1 Like

IMHO this would be a different tool and PDF would not be the best format. A sprite texture would be in a image format (PNG ?).

Fantastic. So, depending on the implementation we can also rearrange vertical thumbnails, starting from the left. Following to the right, there would be a text column describing the (picture/thumbnial) with “(dialogue)”?

1 Like

I understand you, but Blender development is organized by modules, and we are the Grease Pencil module, so all the tasks are related to that and not to modeling. In addition, we are volunteer developers, so what we do does not interfere with any modeling development or use any paid developer resources.

1 Like

Nobody is trying to prevent you from helping, it is a privilege to get help, I personally encourage any sort of help blender team can get.

Notice, and it was highlighted as well in other posts, EVEN FOR Grease pencil, This is a limited functionality (storyboarding in general), to which i repeat myself and say, if its an add-on, fully in python that we can click on and off, keep developing, i will even test it and provide bug-report, but from other posts i am reading BY YOU, it seems like you want it integrated to blender (Having changes in the internal code to accommodate it) , Even for for grease pencil module, does it belong there?

@Illasera take it down a notch please, pretty sure you can make your argument in less combatative ways

Apologies, frustration out of confusion… mostly due to the line of , is it going to REMAIN a downloadable add-on or PLANNED to be in blender’s core is blurry here.

if it is going to be a part of the g.pencil module and if it actually belongs there?

This is not an add-on. It’s just an improvement of the already implemented PDF export for GPencil. Also, I’m talking about add-ons that can use it. I guess you don’t know Blender internal C/C++ code, so maybe it’s logic you mix the python add-ons and the core improvements.

Anyway, this is a proof of concept for a common request of animation studios using grease pencil as their 2D tool. To be integrated or not in Blender is something to be decided.

Yes i figured that you are not exactly creating something from scratch and the infrastructure already exist (Being aware that you can export g.pencil to PDF file format)

Currently, the grease pencil team is working to create a good workflow for storyboarding using grease pencil and the video sequencer (Daniel was doing demos of these tools in Annency). During this development we have seen that sometimes is necessary to share the storyboard in a portable format and maybe print the whole Storyboad. This tool is a common feature of many storyboarding programs.

So i have to do the thing i ranted on again previously in the comment that got hidden and ask the same question again but rant-free…

For any storyboard aspect, shouldn’t we use… storyboard planning softwares?

I can see the appeal of using what blender already offers but i have to ask once more what i already did, your plan, isn’t aimed for a very specific user-base?

Seems case specific , also mind your own words “Common feature of many storyboarding programs

antonioya, this looks excellent!
Simple and elegant.
Are you imagining a way to attach data like dialogue and action notes to the panels?
This pdf contact sheet export feature would make story pencil (I’m assuming these are designed to work hand in hand) a true competitor in this brutally monopolised field.
Bravo to you and all those working on GP and SP