File organization for animated short film?

Interested in your feedback, warnings or better ideas about how I’m laying out my .blend files for a short film. The film needs 4 sets, 5 characters, various props and a small boat. The film will probably have around 100 shots.

My goal is to rough out the sets and characters while making my animatics. Then gradually refine the details while fine tuning each shot. For example; one set might need some rocks on the ground, but I’ll start with stand-in cubes while I focus on character animation. Once I’m satisfied with the timing of a character jumping over the “rocks”, I’ll replace the stand-in cubes with basic rock models. Same for trees, furniture, etc. Start off with primitive stand-ins, but refine over time.

Planning to use a separate blend file for each set. For example; the opening scene in the dungeon cave would include the cave tunnel, rocks, spider webs, and torches along the wall.

Each shot would have its own blend file. Using 2.81, this file would include links to the set, characters and props needed for the scene. Animation posing, camera and lights would be local to each shot file.

A blend file for each character with rigging.

A blend file for all props. Granted, a character’s backpack is likely to be modeled as part of the character itself, but the treasure chest found by the heroes may be its own prop since it’s dragged from scene to scene.

With this approach, I think I can refine the stand-in cubes into nice rocks in one place: the blend file for that particular set, then re-render any shots with the rocks in view.

I’ve tested this approach with 1 set, 1 character and a few shots and it seems supported in 2.81, but I’m not sure if I’ll run into problems when importing across many files. Am I creating a future nightmare by using a seperate blend file for each shot? Other pitfalls?

If this is the wrong forum, please recommend alternative for workflow questions. Thx!

That’s sound pretty solid and in the lines of how things should be done !

Just in case, but I’m sure you’ve figured out : This stage is called Layout , you must stick to very basic animation to get the timing and framing right. Don’t push animation until you get the final set (especially for interactions between characters and sets) .

You can do that, generally on collaborative projects 1 file per props is more easy to manage, but if you’re alone that’s not that much of a difference. All in the same .blend allow you to share materials and prevent props having wrong scale at least .

You can link collections of lights just like set or props, this way you can tweak globally the lighting without having to copy-paste over all the shots. Latter you can make them local to fine tune them on a per shot basis.
You can also use “Light in assets” when that makes sense as stated here : https://www.expandedcinematography.com/industrialised-cinematography.html#how

One thing that you may consider is , is it really worth to have one .blend per shot ?
In fact it’s how it’s generally done, but you’ll have to make a lot of back and forth and re-rendering between your 100 files.
You can group shots bettween 1 to ~10 shots and use stuff like “bind camera to markers” when that makes sense. At least as long as your are on the Layout phase. Latter you can split them into individual shots for final animation and lighting. That will give you names like SHOT_045A_V010.blend, SHOT_045B_V010.blend…

I don’t see what the issues could be ?
One thing that’s good to know is some nasty defaults in blender.
Let’s say you’ve animated or added a linked props in a shot_01. Now you need to propagate that to shot 02. One good solution is to append the linked object and his proxy from 01 to 02.
But keep sure that at appending time Localize All is uncheck, or it will make all the appended stuff local and you won’t be able to change the props and have the result propagated to all shots that’s using it.
image
If it’s uncheck it will do basically what you need, you will be able to animate the props in shot_02, and if
for instance you tweak the props’s material eveything should propagate nicely to both shots.

A last bit of advice, starting by blocking models , make shots and refine assets is a clever way to go.
The only thing I would try to iron out from the start is the character rig. You can always add bones during production and let the changes propagates in the shots, but there are some settings that can be lost in the process. Bones settings like Rotation order, or some constraints can be hard to get back in the shots you’ve already made.

So all in all you’re good to go, feel free to poke me if you have other questions and I’ll make my best to answer them.

Thank you for all of the great feedback and information. I do have a follow-up question about propagation further below.

Having only used single .blend files in the past, moving into a project with many interlocking blend files is new. As a part time python developer, the approach seems intuitive, but I just don’t know how well the concepts of libraries, configuration files, etc. translate into a Blender animation project. Hearing from others is so helpful!

I had not considered the idea that of starting out with linked collections then making them local towards the end of the project for final tuning. This sounds like the best of both worlds. I guess the trick is learning to wait as late as possible before making an asset local. I could imaging being in the final tweaking stages only to discover “one last global change” I’d like to make.

That article provides an excellent insight into the workflow methods and mindsets used on a large scale project. Just seeing how other teams arrange their assets and workflows is super helpful regardless of what specific tools they’re using.

Ah ha! I wasn’t familiar with “bind camera to markers” but a quick Google suggests this would be very helpful. There are some scenes where I could animate a sequence, setup 3-4 cameras to catch the different shots/angles needed, and do it all in one .blend file. This seems like a more natural approach.

And again, splitting out the shots towards the end for final lighting also sounds like a good idea.

Ooooh! I didn’t think about that. So, an asset like the treasure chest could be modeled in the props file, then locally modified in shot 03 to have the lid opened, then shot 04 could link to the opened treasure chest from shot 03?

It sounds like this would allow a refinement in the original prop file to propagate through all shots with the treasure chest. For example, the original prop file is updated to add metal rivets to the chest. Those rivets would then be present in all shots with the chest. THEN, if shot 03 is tweaked so the chest lid opens wider than originally animated, the wider opened lid is propagated to shot 04 automatically.

Am I understanding this propagation correctly?

Exactly the kind of experienced tips I was hoping to learn. I’m sure I’ll find plenty of pitfalls, but maybe this one can be avoided. Thanks!

Most of the time if things are done correctly you don’t need to localize things that much, but it’s best to do it as latter as you can. It will be simpler once you’ll be in the creative process to see what broad changes you need to make.

If you do some python you can do some basic scripting to re-render automatically stuff that as changed , the faster you can see change in context with all the shots next to each other, the best it will be.

You can do that, but that’s a bit dangerous… If you rename shot files (like if you split your sequences into shots) you’ll loose the links.
Basically , all props needs some simple rigs to be animated or posed. The workflow is like this :

  • In the shot 03 you link the collection “Treasure” that contain all the object and the rig, from the props file.
  • You make a Proxy of the rig, (in blender terms that means that you make the rig semi-local but everything else stay linked) .
  • You can then open the chest, put it in the right place or animate it.
  • Now instead of re-doing all this for the shot 04, you just need to append the chest and his rig from shot 03 , with Localize All deselected.
  • In the shot 04 you can change the animation , or do whatever you need , just like in the shot 03. It will link stuff from the original props file instead of the shot 03, but it will append the animation and all the changes you’ve made in the shot 03.

You should look for instancing collection and proxy in video like this : https://www.youtube.com/watch?v=nHscyEeyHa4

You can go crazy and link the animation from shot 03 into shot 04 so you just need to change things in shot 03 , but in practice that’s better to avoid that. At some point you’ll loose track of were you need to change things. It’s better to look at the edit and change things on needed shot directly.

I guess it’s one of the downside of working in iteration with basic things first then refine, you spend many times opening files , do some tweaking , re-render , look at the final result and repeat…
In the end you may have some little python scripts to automate that process, but you’ll see as you go, it’s not good to over-plan stuff.

Hey guys, I’ve been doing some research on Scene Organization for Short Film i am planning to work on, but there are some small parts of my pipeline that I can’t seem to figure out. So let’s say I have 50 shots in total and I make my storyboard and animatic to get the timing and I know that I might have to make maybe 38 scenes in total (because some 2 or 3 shots maybe an OTS to reverse OTS shots so those could be in the same scene).

Now I would like to start segmenting those shots, so I can work on each shot (whether I use One Blend file with multiples scenes or whether I separate them into multiple blend files per scene), how do I go about matching frame ranges and timing I did in the animatics to each scene. Do i have to adjust them manually by myself every time per scene (so let’s say one scene would be a duration of 30 frames) or is there a way where i can just let blender to partition them for me?, How do you go about previewing them back in relation to the whole film, do you just playblast it everytime and send it to your NLE or Video. Sequencer everytime you think you are done? I did not know how to go about this. I need some help, thanks.

Hello !

Well, yeah you probably have to set each shot to it’s proper duration.
In general when working on a studio these task are automated, like setting render path , generating preview… Basically each basic repetitive tasks that steal creative time from artists are likely to be automated with custom python scripts by the pipeline team.

On thing that you can do for that is to render in image sequences and always use the same path. It’s a double edged sword but it look like this :
You have shot_001_version_001.blend then it’s rendered to shot_001/shot_001_####.exr .
The version 2 of the shot will overwrite the previous render.
That way you only need to load the sequence in a NLE once, and the edit will update accordingly. However it’s not perfect either as it gets harder to compare multiple versions of the same shot.

Again, that’s a part where knowing a bit of python can be very useful, but writing these scripts also takes time so you might end up fixing your python scripts instead of focusing on your short.

It can be worth asking people doing their own shorts all by themselves as I might be a bit biased by my own experience. I’ve made a few custom tools for myself therefore I didn’t look for some alternative on blendermarket or else.

Good luck and feel free to ask if you have further questions !

If you handle it that way, you could, in theory, handle all the rendering via makefiles, as a batch job. That’s what I did in the cases where I had control over that part of the pipeline.

Sounds interesting ! How that would work basically and would that allows you to render only the modified shots ? So you don’t render everything each time .

Just looked it up and saw I actually used this approach in one production only (and it seems only in parts of it - we were making 4 separate shorts, for the first two I implemented it, while for the remaining 2 schedule overtook us, and we attempted to make each shot’s first render the final one :wink: ).

Per clip, we had a master directory containing per shot sub directories, plus a master makefile that looked like this, for instance:

BLENDER=/opt/blender-2.83/blender


CLIP=Plastic

SHOTS=\
 SH001 \
 SH002 \
 SHOO3 \
 SHOO4 \
 SHOO4b \
 SHOO4c \
 SHOO5 \
 SHOO6 \
 SHOO7 \
 SHOO8 \
 SHOO9 \
 SHO10 \
 SHO11 \

SHOTS=\
 SH001 \
 SH002 \
 SH004 \
 SH005 \
 SH006 \
 SH007 \
 SH008

shots:
	for dir in $(SHOTS); do \
		(cd $$dir && make BLENDER=$(BLENDER) CLIP="$(CLIP)" SHOT="$$dir"  render); \
	done

clip: shots $(CLIP).blend
	$(BLENDER) -b $(CLIP).blend -a

Per shot directory, we had a Makefile like this:


OUTDIR=//render/

render: $(CLIP)_$(SHOT).blend $(CLIP)_$(SHOT)_render.blend
	$(BLENDER) -b $(CLIP)_$(SHOT)_render.blend --render-output $(OUTDIR) -a

I’d have to try again, to check whether that really worked 100% properly.

Ok cool ! It’s like an elaborated batch file !
Even if it’s not possible to detect changes it’s possible to edit the initial file and the $(SHOTS) array to render new shots in a row.

It’s nice as rendering them manually could be a real pain.

I recall having made a simple batch file (.bat, .sh) where I would comment / un-comment the shots I need to render. This can work well too for a one artist army :slight_smile:

I think it will kind of partially detect changes.
Any time files are added to the “render” directory, or deleted from it, its time stamp will change, so if one of the blends listed as a dependency changes, the comparison will work properly.
If, however, a re-render overwrites only existing image files in the “render” directory, I guess the directory time stamp won’t update, so the shot will be re-rendered next time too.
Fix would probably be simple: in case of scheduled re-render, clear the render directory first - that would enforce a timestamp update.
Still, that’s only me theorizing. :slight_smile:

I guess learning scripts is my best bet if I don’t want to overwrite versions, either that or copy Versions into a Backup folder before overwriting

Scripting can be very useful when dealing with a complex project so it’s always worth looking into it even if that takes time too.

Another solution is to write a script that load the last version of each shots in blender. So you can check continuity and once in a while you update the main edit.

Manually updating the edit could work depending on the pace you’re working. It’s unlikely that you have to update 10 shots each working day, so maybe the fastest thing is to take 15mn each day to update the edit…