Texture VFX Control - Video Editing/Compositing in 3D Viewport

In this add-on, I am making an approach of quickly compositing video assets directly into a 3D scene (instead of relying on the Compositor or VSE). It uses shader nodes and drivers to implement some common video processing functions, including:

  • Texture Playback Control
    • Speedup / Slowdown / Offset / Reverse of Sequence/Movie Textures Controlled by Keyframes
  • VFX Shaders
    • Blur / Chroma Key / Outline Node Groups

It is still an early attempt and I am thinking about adding more VFX presets. Any feedback would be appreciated.

Links:

6 Likes

Awesome job, mate. Thanks for sharing. This definitely would make things way easier.

Also thanks for making it free for others to use. :slightly_smiling_face:

Looks pretty interesting ! especially the time control over sequences !
For the VFX effects, they do look interesting but I’m wondering if it’s worth it given that the viewport compositor is supposed to be able to do that at some point ? (Hopefully in the near future)

It’s likely that shader nodes are going to be a bit limited but anyway it’s always cool to have options !
At least current keyer and blur are great for previz, but might not be enough for final render.

But the time control on the other hand bring a new functionality to blender that is pretty difficult to do otherwise, only VSE allows it but it’s not 3D.
So maybe the most useful would be to generalize the functionality to shader and compositor. And provide basic VFX , keeping in mind that these might get obsolete/limited soon…

But I don’t want to sound mean, it’s cool stuff and even cooler to share it ! So thanks for that and keep up the good work !

Thank you for your comments!

My own use cases of these VFX effects are mostly cartoon-style video assets. Usually I receive videos/sequences drawn by others, and place them in a Blender scene. It is somehow similar to the concept of sprites in game engines. It is common for a game engine to process its sprites using 2D shaders. Therefore, I was inspired to develop a similar approach in Blender. (Some of these shaders are modified from Godot Engine.)

The cartoon-style assets usually have flat colors, so keyers are expected to get good results. But for other use cases, such as realistic photos/movies, I agree with you that these VFX effects are more suitable to make a draft instead of the final render. Thank you for pointing it out, and I will consider making some more demos elaborating the use cases.

About the viewport compositor, I am also looking forward to the real-time preview of more compositor nodes, but I think it is orthogonal to my approaches here. If I understand correctly, even with the viewport compositing, it would still be a complicated node setup if we want to apply some VFX on a single object in the scene. It may involve multiple passes and some extra processing on the alpha channel. That is why I think it makes sense to have an alternative approach in the style of game engines.

2 Likes

Ok ! That makes much more sense now !
Indeed I was a bit confused by the idea and didn’t get what was the use case.
It’s true that doing it in comp could be complex , that probably varies depending on the case.

Stuff like keying are going to work better but you’ll need a complex setup.
In the other hand , it’s possible to extract something from the render with cryptomattes and then you can use some filters that are hard to do with nodes, like blurs, edge detect…

But indeed doing it in the shader can be useful, what is the most tricky thing to do remains the retime, sometimes you want to use stock footage right in 3D and being forced to create several materials/texture for the same stock footage but offset in time is far from ideal. At least if your addon can handle that under the hood that makes that workflow viable I think !

Anyway, interesting project, now I’m hooked and wish to see some real live use cases if possible !

With this early version and these few features this is unbelievably useful already! Thank you so much. Working with images sequences is pretty tedious, and the real time compositor isn’t as readily available or flexible or fast for 2D assets. Also inaccessible for those still using previous versions of blender is

I will try to list ideas or feedback as I come up with them given you are open to suggestions and come back here to post them in case they are of any use for you. Sorry for the long message in advance, I will write down everything I thought it would be possible with a viewport based compositor given the functionality. I imagine some of this stuff might not be viable, but I will put them in here just in case you know of any open libraries that already have some of these things solved and it becomes a possibility.

But at a first glance the first thing that came to my head in regards to the VFXs is to have simple and quick keyframable basic effects that are used every day in 2D to adjust directly in the viewport

For example a gradient with blending modes, with linear or radial distribution, selectable control points that could be keyframed, maybe keyframable hues. Similarly to what it’s done in any compositor like AE or Resolve.

Another important for 2D workflow could be to be able to import several sequences/videos from folders and load them in the order selected with their proper hierarchies without having to fiddle in the viewport to get them all aligned and spaced at 0.0001 from each other, and then move them elsewhere if necessary

Maybe if there could be a way to import them and fit them in front of a camera (centered, stretched, fill vertically, horizontally, etc). You select the camera you want, it snaps in front of it at a selected distance (slider), maybe with an offset setting to keep all the layers fitting the camera viewport but moving farter away from it and scaling up the sequence/video to accomplish this. There could be a setting to allow a grou of layers to follow the camera markers and change parents dynamically, or to just include the cameras you want the sequence to play in from a list and exclude others

That’s getting a lot more complicated but I’m thinking in ways to replace a lot of the basic functionality of compositors as much as possible. It’s very tedious work to get sequences out of drawing software, then to blender, then back, then to a compositor, etc

Another more simple effect could be glow with threshold settings, radius, intensity, etc just like AE. Imagine being able to import a .PNG sequence of a character, then having another PNG sequence of a fireball, then another PNG sequence of the darker details of the fireball and being able to create a glow effect on each one of those fireball layers independently, changing the blending modes even so it looks better

In combination with the ability of keyframing a gradient and changing the brightness and Hue you could adjust in the fly a lot of the things usually done outside of blender

Another thing that would help on a scenario like that is something I saw your Grease Pencil addon. If you are able to reproduce the extrude inner/outer shadow effect with a 2D Shader with blur controls that would be amazing. The normal generation seems kinda useful in some scenarios but I don’t see how converting hundreds of 4K .PNG sequences into Gpen strokes/fills to generate meshes to get normals to get that effect would be viable, but I don’t know much of this so I imagine there’s tricks to get that kind of look from 2D shaders

Something that would give a better result than generating a flat shadow from the border of a PNG/video or an automatic mesh/normal generation could be having a way to select a curve to generate the shadow profile. If you wanted something more flat like the anime movie Promare, you have a flat curve and just position it in X,Y axis of the texture (maybe another control point to keyframe?), and if it’s something a bit more complex, like a car you could move a spline automatically projected on top of the video/sequence plane and the VFX could automatically fill the area under spline or over it (selectable by a toggle)

Most common effects I’ve seen are gaussian blurs, camera lens blur type with gain controls, glow with different blur shapes like equirectangular/radial/. You could get really creative with this, imagine having a inverse square fallout of the blur effect so it looks natural and soft instead of an airbrush, different tints and gradient colors, chromatic aberration, masking, 16 to 32bpc, etc.

I don’t know if you are familiar with an AE paid plugin that was very used a while ago called Starglow, it had all these glints and glow effects that were used for video editing that look amazing on animation hand drawn vfxs but it’s something you usually only see at the end of the pipeline so it’s not so fun to work without it. Maybe there’s some documentation out there on how to achieve these

Of course you need the typical Pixel/VHS/Retro effects. There’s a lot of nodes to apply it to geometry and imported images. But I don’t know how that would behave with these layers and if everything is self containing it would play a lot better

I think one that might be really good but almost always forgotten is film grain. Not just noise with a simple blending mode. For what I’ve seen it asks for a lot of resources in compositors but maybe blender is different. I’ve seen filters in the live compositor to be x100 more performant than with the regular compositor after they started using the GPU so maybe there’s a way to get a simpler and decent half realistic film grain preview in real time

Color wheels, I didn’t put them first but I think it’s what I use the most, along with brightness, exposure, hue, tint, temp, black/shadow balance, white balance. When managing tons of layers is difficult to maintain consistency of colors in a scene, working with these in the viewport will make it a bit more challenging and will require another export eventually to merge everything together properly. But I think that with an easy and quick way to control color balance of the video/textures this is mitigated by a lot

One of the most tedious things in blender is to set up node groups to tint objects, change colors, gradients, maintain emissions with these colors and textures, control the masking and position of such emissions/glows. If this is done directly it will save a lot of people hundreds of hours of just interacting with the node editor for basic things that should be in a slider by default

And the last thing I can think off the top of my head is having a way to generate god rays/shine effects with some sort of masking that takes into consideration maybe a point projected in the plane of the video/sequence and the position of the camera?

It seems hard to do if it has to take into consideration layers in front of it. Instead of being a light based effect, it could do just like these video compositors occluding with masks some glow effect that has a gradient ramp and a noise texture with a velocity setting. Also not having to deal with fog/volumetrics would be faster

Here’s the rest of the things I can think of at the moment:

  • Radial/zoom blur with keyframable radius
  • Directional Blur with same controls
  • Fish eye lens (Eeve not having this by default has been very inconvenient)
  • Some sort of minimum/maximum to control the thickness of imported linework .PNG sequence layer
  • Transparency control with masking with geometric shapes or using the position of a gradient in the plane. Imagine importing a hand drawn smoke sequence and you can pick the blurred radius around a circle or rectangle projected into the video/sequence to create extra transparency effects
  • Always on top/Always on bottom toggles (no idea how this would even be possible but just in case)
  • Use layer on top or bottom as Alpha Matte/binary mask
  • Booleans??
  • Harsh cartoon blur/motion lines/smear with spline control (this one is just crazy, but again, in case it gives you any ideas or if there’s something out there)

That’s about all I can come up with

Thank you for so detailed comments! Currently I am too busy to make updates for this add-on immediately, but I am thinking about the new features to add in the future. Here are some thoughts about the features you mentioned:

1. Transitions
This is indeed a feature I would like to develop. Besides linear or radial wipes, I also plan to implement the gradient wipe that finishes transition using a height map. This is easy to implement using Blender shaders and can achieve various effects.

2. Multi-layers
I saw this approach in this post. It mentions an add-on Background Plane Manager which looks similar to what you describe. It seems not published yet and I do not know the author’s plan though.

3. Blur & Glow
This one might be difficult. As far as I know, Blender shaders are not suitable for effects which need information of multiple nearby pixels. Therefore, maybe the Gaussian blur and glow should still be done in the compositor. Currently, the Grainy Blur in the add-on is the only one that I can achieve in shaders.

4. 2D Shadows
Currently, the add-on’s Outline effect has a “directional” mode, allowing users to assign a light and create simple shadows/lights on the 2D image/movie.


However, due to the same reason as I mentioned in the last point, the quality may not be good enough.


These are some of my current thoughts. I will make more updates if I can get more time to work on this project in the future.

1 Like

Hey thanks a lot! That’s very interesting. I understand the limitations that you mentioned. I think with the transition effects and controls you have planned for the future it would be enough

I’ll keep an eye on ADV studios to see if they ever decide to release the background plane manager. There’s not much information but it seems like you can parent and send entire collections into the planes

In combination with your addon it would be more than enough to do most of the compositing on the fly. But for organization’s sake this could save a lot of work when used together, and minimize the amount of time spent in After Effects or DaVinci

Also thank pointing me to them. I took a look at the artist github https://github.com/Pullusb and the Tesselate Texture Plane addon reminds me a lot of the Weights from Meshes you did for grease pencil. I still use a lot of flat .png layers so this incredibly useful for the way I work for now until I get used to work exclusively with the Grease Pencil

Sorry for the offtopic, but given you are an expert on the GP I need to ask.

Do you think the grease pencil 3.0 with the new features will be ready to replace a mature 2D animation software? Let’s say I want to ditch Photoshop, Clip Studio Paint, TV Paint, ToonBoom, would I be able to only work with the grease pencil exclusively and get the same hand drawn traditional look we can get with them with thousands of layers and so on?

I ask because I’ve seen productions using the grease pencil alone but most of them have a flash or painterly looks, and I’m thinking more on old school anime, but having never tried to work on something complex with the GP I don’t understand its limitations. Is there anything you have seen that you think it sill needs to be resolved by the blender foundation and can’t be fixed with addons yet? Or if it can be fixed with addons, besides the NijiGPen you made, which ones should I get?

I just tested an alpha build with GP 3.0 and the linework is a lot more clean, fast, snappy and smooth than with the previous versions out of the box. With layer groups and a couple addons seems like enough, but I have no idea if I decide to use something like this in the future what kind of roadblock I would find. The only thing that came to mind was not being able to get symmetry planes in real time

Still months away from 4.2 but I’m starting to seriously consider it after doing a little bit of inking with the new pen

Well if current grease pencil isn’t enough for you the 3.0 probably won’t be either.
Further more, Photoshop and Clip Studio are painting / image manipulation software and it’s pretty different from TV paint or Harmony.

If you look for old-school anime style or old Disney since it’s basically the same workflow, you probably want to paint the backgrounds in photoshop or krita, and do the animation (camera , character) in blender with the grease pencil or you can probably use harmony too.

The biggest advantage of blender and grease pencil is that it’s in a 3D software so you can have the best of both worlds in the same place. But if you don’t take advantage of 3D then it might be better to use a software that do mostly 2D animation since it’s very likely to be much more convenient than blender that is still a 3D software so it’s only a fraction of it’s development power that goes into 2D animation, if that makes sense !

I need to clarify that I am not an expert on GP. I am just a hobbyist who has never worked in the animation or film industry. The motivation to develop a GP add-on is that I read some papers about image processing algorithms that were originally designed for raster images, while I found that they might be more useful/efficient in vector art. So I tried to implement them as GP functions. However, I cannot give a professional opinion on whether such features are powerful enough to replace traditional 2D animation software.

Personally, I also find it difficult to use coloring techniques in GP. Gradients, blurs and color blends are much harder to achieve in GP than in traditional painting software. Sophie Jantak (YouTube) is an illustrator who does a very good job in this aspect using only GP. But I think most artists do not completely abandon other software.

To get the symmetry plane quickly, one trick I usually use is to click the “-Y” button in the viewport. Or sometimes I just open two viewports observing from different angles. The default add-on Grease Pencil Tools also have some related functions.
flip

1 Like

Interesting. Yes, after some testing I noticed the problem with the gradients and color blends. Thanks a lot for the tips