Blender Animations Workshop with Antonio Roberts

Blender is a popular free and open source 3D modelling program used by professionals and amateurs for 2D/3D animation, making assets for games, video editing, motion graphics, compositing and more.

This workshop, led by Antonio Roberts, will act as an introduction to the software and its features. In this workshop you will be introduced to basic concepts of animation and navigating 3D space, eventually progressing to more advanced concepts and techniques. By the end you will have the skills to create abstract and glitchy looping animations.

Examples of Antonio’s work can be seen here:

Improviz gifs

Antonio Roberts is an artist and curator based in Birmingham, UK. His practices explore what ownership and authorship mean in an age impacted by digital technology.

Development Update – February 2020

Seamless Animation

For the Improviz gifs one of the requirements that Rumblesan set is that the gifs loop seamlessly. That is, one would not be able to tell where the gifs beings and ends. In Blender making an animation seamless is pretty easy. There’s lots of examples out there but for completion here’s my simple take on it.

With the default cube selected press I and then press on Location. This inserts a keyframe for the location (this menu can also be accessed in Object > Animation > Insert Keyframe). On the Timeline at the bottom move the animation 20 frames. Then, move the cube to somewhere else.

Now press I to insert a keyframe for the location. Ta da! You now have an animation! To make it loop we need to repeat the first keyframe. On the Timeline go forward another 20 frames (so you’re now on frame 40). In the Timeline select the first keyframe. Press Shift + D to duplicate it and then move it to frame 40.

Set the end of your animation to be frame 40. Now when you press play (space bar) the animation loops seamlessly!

As an aside if you’re interested in animation check out Eadweard Muybridge. And if you’re into Pure Data check out this tutorial I made in 2017.

Seamlessly loop Wave Modifier

So, that’s one easy way to make a seamless looping animation. However, Rumblesan was more interested in are gifs that warp and morph. This is one example he sent me.

via GIPHY

In Blender one really useful modifier for making these animations is the Wave modifier. In fact, looking through all of the gifs in 2020 by that artist (Vince McKelvie) it looks like he makes extensive use of this modifier. I love how simple it is to get distorted objects without much effort.

The one thing I’ve always found difficult is making the looping of the waves seamless. I haven’t seen many tutorials on achieving this, and those that I have found rely a bit on guesswork, which isn’t ideal. So, I set out to understand this modifier. After a lot of trial and error and “maths” I finally consulted the documentation and started to figure it out! The documentation on this modifier is quite good but here’s my alternative explanation which may help those who think in a similar way to me.

To get your wave lasting a specific duration, first you need to know how long you want your animation to last. For this example I set mine to 50 frames.

You then need to decide on the Width of the waves. The smaller the number the more ripples you’ll have on your object. This value is relative to the object. So, if you set it to 0.10 you’ll have 10 ripples through your object. If you set it to 1 you’ll have one ripple. I’ve set mine to 0.25.

For the Speed you need to do a bit of maths. Copy the value of Width (0.25) and in the Speed argument enter: (0.25*2)/50. Replace 0.25 with whatever value you set for Width and 50 with however long your wave animation lasts before it loops. Another way to represent this would be:

Speed = ($width*2)/$animationlength

The animation loops however the waves don’t affect the whole object. This is because we need to add a negative offset so that the wave starts before the animation is visible. This is where we need more maths! Enter this into the Offset value:

((1/0.25)*50)*-1

The first part, 1/025, is to work out how many times we’d need to repeat the Width before the whole object has ripples throughout it. We multiply by 50 as that is the animation duration. Then, we multiply by -1 to get the inverse, which because the offset. Another way to represent this would be:

Offset = ((1/$width)*$animationlength)*-1

And now the whole object has waves through it and loops seamlessly!

Ta da!

Since I originally made the gifs I have found that there are alternative methods for achieving a wavy object which rely on the displacement node and Displacement modifier or the Lattice or Cast modifier. These solutions have much more documentation but I’m glad I spent the time figuring out the Wave modifier.

Development Update – January 2020

In 2019 I made an internet artwork for Fermynwood’s programme Toggler.

For this work I decided to use a similar aesthetic and process to Visually Similar. I talked a little bit about the process behind Visually Similar in a June’s Development Update. The node tree to overlay each of the transparent textures looked a bit like this.

Click to embiggen

When trying to do the same with the Toggler artwork I came across something weird that meant some textures just weren’t showing. So I decided to ask on Stack Exchange and Reddit why this might be the case.

Click to embiggen

It looks like I wasn’t using the alpha channels properly and didn’t need to use the Add math node, or just needed to use it properly. If were to apply the same process retrospectively to Visually Similar the artwork would look like this.

Curiously several of the textures didn’t show up. I suspect that doing it this “proper” way revealed that I had the order of the nodes incorrect. If I show the work again I’m might edit it so it looks “right”, but in this case the mistakes yielded a more preferable result.

Development Update – June 2019

Making digital art is quite a lengthy process and even moreso if you’re using non standard processes or making your own software. For awhile I’ve wanted to write about my processes and how I’ve overcome the bugs and problems. In what will hopefully be a regular series of blog posts I’m going to give a bit of insight into this process. Let’s go!

Convert Object texture coordinates to UV in Blender

For Visually Similar I wanted to texture each 3D model using lots of images found on the internet. Rather than create one single material containing a texture with all of the found images I instead decided I would add a material for each image texture and, using their alpha channels, composite them over each other.

If you’ve ever had to position something accurately on a UV map you’ll know how much of a pain it can be. So fortunately, in the Texture Coordinate node you can use the Object outlet to another object (usually an empty) as the source of its coordinates. This uses the reference object’s local Z direction as its up direction.

So far,so good, except it did not yet work in Blender’s new EEVEE rendering engine. Yes, yes, I know EEVEE is still under development and shouldn’t be used in production etc. Still, after doing a bit of research it looks like this is going to be implemented.

So, I had a rather smrat idea as a workaround. Could I take the UV coordinates generated by the Object oulet whilst using Cycles and paste those into the UV texture options using a Mapping node? Short answer: no. To do this I would need some sort of viewer or analyser node that would show me the data being output from a node. So, I suggested this idea on the Right-Click Select ideas website. A healthy discussion followed and hopefully something will come of it.

In the end I had to resort to baking the texture and then applying that to the 3D model. In doing this I learnt that baking a UV texture on a complex model will take a lifetime, and so I had to do it on a decimated model and then put that on the original, complex model. This, of course, created some unwanted artefacts. *sadface*

Since I originally encountered this problem it has actually been addressed in a Blender update! However, it only works at render time but it’s progress! 🙂

The search for a GrabCut GUI

Another big part in creating the Visually Similar artwork was the image textures themselves. The idea for the piece is that the textures would be related in some way to the 3D model. I decided from the beginning that I wanted to have some control over this and so I gathered the images through keyword searches and reverse image searches.

But then I needed to cut out certain parts of them. I wanted it to look like a rough collage, as if the images were pages in a magazine that had been ripped out, leaving behind tears and occasionally ripping through the important bits.

For awhile on of my Twitter friends, _xs, has had a bot on their feed that generates random collages. I haven’t studied the source code extensively but I’m guessing it does a keyword search and makes a collage out of the returned images.

What I was really interested in was how the images were cut out. It’s as if a sort of automatic feature extraction was used but wasn’t very accurate and so it left behind jagged edges that were almost reminiscent of the kind of ripped magazine aesthetic that I mentioned earlier.

Through a conversation with them I learned that they used a combination of automated object detection (to select the region of interest) and GrabCut to perform this automatic foreground extraction. Grabcut has been part of OpenCV for quite some time. Give it a region of interest (ROI) and it will attempt to extract the foreground.

_xs used this via the command line and automated the whole process. I needed a bit more control over defining the region of interest and so I needed a GUI where I could use a bounding box to select this. This is where the long hunt began.

OpenCV has its own GrabCut GUI example but it has an annoying flaw.

To select the ROI it displays the source image at full size. Meaning that if your source image is 4000 pixels wide it won’t fit on your screen (unless you have a fancy pants 4K screen). Not ideal when trying to select an ROI. What I needed was a way to scale the window to fit on my screen but still process a full resolution image.

If you search Github you’ll see a number of people have created GUIs for GrabCut, possibly for study assignments. However, each has their own problems. Some won’t compile, some resize the input and some have been abandoned. According to this 2006 article there was even once a GUI for GrabCut in GIMP. However, despite my best efforts I can’t seem to find it.

One night at OpenCode I learnt that OpenCV has a method for selecting an ROI! It even auto resizes the window but not the input image. Yay! So, I hacked it together with GrabCut and released my own very hacky Grabcut GUI. It appends to the file name the coordinates and dimensions of the ROI should you want to run this again but via the command line.

All this done with a mere seven days until the artwork had to be finished!

Typewriter text

For the Algorave at British Library in April I was asked to make a promotional video for it, which proved a difficult but for a very specific reason. I wanted to emphasise the liveness of live coding and show code being typed. For this I used the code supplied with Alex McLean aka Yaxu’s excellent Peak Cuts EP.

The effect of having the text appear word-by-word or letter-by-letter is often called the typewriter text effect. I’ve previously written about how to do this in Pure Data/GEM. I needed to have a bit more control than what I got in PD, and I needed to export as transparent pngs so this solution wouldn’t work.

Kdenlive once had such an effect built into its title editor. Other solutions that used Kdenlive use a mask to reveal the text, which produced more of a fading in effect that wasn’t ideal. It was also a lot of manual work! I had several hundred lines of text so doing this was going to add a lot of time.

Natron was the next contender. Since 2017 it has had a plugin for doing typewriter text but it’s a bit broken. In theory in gives me the most flexibility in how I create it but in practice I still can’t get it to render!

I also considered using ImageMagick and was even provided with a solution (that was written for Windows). As much as I like automation and command line software, for this very visual task I needed to see what I was working on.

Finally, I turned to Blender, which gave me a few options, including rendering the text as 3D objects within the Blender project itself. After failing to get this Blender addon to work I tried using Animation Nodes. Following a tutorial I was able to set up quite a typewriter effect quite quickly. However, this is where I encountered a bug. After around 10 frames of the text were rendered the rest of the frames would take forever to render. Even in EEVEE each frame was taking about 10 minutes to render. I have no idea why this was. Perhaps it’s because 2.8 is in beta. Maybe because Animations Nodes for 2.8 is also in beta. Beta beta beta. Either way it wasn’t working.

So I thought maybe I could “bake” the animation which would remove the Animation Nodes dependency and maybe speed up the render. Sadly this was also not to be. Text objects can’t be baked 🙁

In the end I had to do an OpenGL render of the animation to pngs with a transparent background. How this differs from a normal render is that it renders the viewport as is. So if you have your gizmos on there it’ll render them out as well. Not ideal but it worked.

I would like to think it all stopped there but it did not.

Blender can have a video or series of images be a texture. However, at the time this was not possible in 2.8 using EEVEE. To my joy, however, this was implemented only a couple of days after i needed it!

So that is some insight into how I make some of my art. There’s a lot of problem solving, lots of showstopping bugs and lots of workarounds. Somewhere in that process art is made! I’m hoping to do these every month but we’ll see how that goes.

Blender School #3

Blender is a popular free and open source 3D modelling program used by professionals and amateurs for 2D/3D animation, making assets for games, video editing, motion graphics, compositing and more.

Blender school will be a three-part workshop series, led by Antonio Roberts, that will act as an introduction to the software and its features. In these workshops you will be introduced to basic concepts of animation and navigating 3D space, eventually progressing to more advanced concepts and techniques such as particle generators, sculpting and compositing.

In this workshop we will cover:

  • Compositing
  • Interpolation
  • Video Editing

Participants will need the following for the workshop:

  • Blender, which can be downloaded here: https://www.blender.org/
  • A laptop. Blender is capable of running on almost all computers. However, as a 3D modelling program it requires more resources than most programs and, preferably, a dedicated graphics card. More details of laptop specification can be found here https://www.blender.org/download/requirements/
  • A three button mouse. Many of the commands in blender require the use of left, right and middle mouse buttons.

Tickets are £20 per workshop. Tickets for this workshop can be purchased here: https://www.eventbrite.co.uk/e/blender-school-3-tickets-45730155125

Blender School #2

Blender is a popular free and open source 3D modelling program used by professionals and amateurs for 2D/3D animation, making assets for games, video editing, motion graphics, compositing and more.

Blender school will be a three-part workshop series, led by Antonio Roberts, that will act as an introduction to the software and its features. In these workshops you will be introduced to basic concepts of animation and navigating 3D space, eventually progressing to more advanced concepts and techniques such as particle generators, sculpting and compositing.

In this workshop we will cover:

  • Sculpting
  • Modifiers
  • Particles – emitters and hair

Participants will need the following for the workshop:

  • Blender, which can be downloaded here: https://www.blender.org/
  • A laptop. Blender is capable of running on almost all computers. However, as a 3D modelling program it requires more resources than most programs and, preferably, a dedicated graphics card. More details of laptop specification can be found here https://www.blender.org/download/requirements/
  • A three button mouse. Many of the commands in blender require the use of left, right and middle mouse buttons.

Tickets are £20 per workshop. Tickets for this workshop can be purchased here: https://www.eventbrite.co.uk/e/blender-school-2-tickets-45730042789

Blender School #1

Blender is a popular free and open source 3D modelling program used by professionals and amateurs for 2D/3D animation, making assets for games, video editing, motion graphics, compositing and more.

Blender school will be a three-part workshop series, led by Antonio Roberts, that will act as an introduction to the software and its features. In these workshops you will be introduced to basic concepts of animation and navigating 3D space, eventually progressing to more advanced concepts and techniques such as particle generators, sculpting and compositing.

In this workshop we will cover:

  • Navigating Blender’s interface
  • Manipulating and editing objects
  • Using keyframes for animation

Participants will need the following for the workshop:

  • Blender, which can be downloaded here: https://www.blender.org/
  • A laptop. Blender is capable of running on almost all computers. However, as a 3D modelling program it requires more resources than most programs and, preferably, a dedicated graphics card. More details of laptop specification can be found here https://www.blender.org/download/requirements/
  • A three button mouse. Many of the commands in blender require the use of left, right and middle mouse buttons.

Tickets are £20 per workshop. Tickets for this workshop can be purchased here: https://www.eventbrite.co.uk/e/blender-school-1-tickets-45729838177

Blender School, 12th – 29th May 2018

On 12th, 26th and 29th May I’m going to be running a three-part workshops series focusing on how to use Blender.

Blender is a popular free and open source 3D modeling program used by professionals and amateurs for 2D/3D animation, making assets for games, video editing, motion graphics, compositing and more.

Blender school will be a three-part workshop series that will act as an introduction to the software and its features. In these workshops you will be introduced to basic concepts of animation and navigating 3D space, eventually progressing to more advanced concepts and techniques such as particle generators, sculpting and compositing.

In the workshops we will cover:

  • Compositing
  • Interpolation
  • Video Editing
  • Sculpting
  • Modifiers
  • Particles – emitters and hair
  • Navigating Blender’s interface
  • Manipulating and editing objects
  • Using keyframes for animation

Participants will need the following for the workshops:

  • Blender, which can be downloaded here: https://www.blender.org/
  • A laptop. Blender is capable of running on almost all computers. However, as a 3D modeling program it requires more resources than most programs and, preferably, a dedicated graphics card. More details of laptop specification can be found here https://www.blender.org/download/requirements/
  • A three button mouse. Many of the commands in blender require the use of left, right and middle mouse buttons.

Tickets are £20 per workshop. Tickets for the workshops can be purchased here:
12th May, 13:00 – 17:00 – https://www.eventbrite.co.uk/e/blender-school-1-tickets-45729838177
26th May, 13:00 – 17:00 – https://www.eventbrite.co.uk/e/blender-school-2-tickets-45730042789
29th May, 18:00 – 21:00 – https://www.eventbrite.co.uk/e/blender-school-3-tickets-45730155125

An Introduction to 3D Scanning and Printing, 14 – 16th May

Black Hole Club (the thing that I run) has teamed up with Workshop Birmingham and Backface to present a 3D Scanning and Printing workshop.

3dprintingscanning

Part 1: Saturday 14 May, 10am–5pm.
Venue: Eastside Projects

Led by Tim Milward of backface, a 3D scanning and printing company based in Digbeth, this practical workshop will introduce you to Photogrammetry a 3D scanning process that combines multiple photographic images to create high resolution textured digital ‘objects’ which can be 3D printed or used in digital contexts.

In this practical workshop Tim will demonstrate his professional scanning rig and equipment and will also introduce us to free software that artists and designers can use to make 3D scans. Workshop participants will scan a small object and then, under Tim’s guidance, will use free software to clean up and optimise the resulting 3D mesh and prepare it for 3D printing.

Part 2, Monday 16 May, 6–9pm
Venue: Vivid Projects, Minerva Works, Fazeley St.

Led by artist Antonio Roberts this workshop will introduce participants to Blender a free and open source 3D creation suite which supports the entirety of the 3D pipeline from modeling, rigging and animation to simulation, rendering, compositing and motion tracking.

Using the 3D meshes produced during Part 1 as a starting point, Antonio will introduce the basics of modifying meshes and optimizing them for 3D printing.

Full details are available on the Workshop Birmingham website. The total cost for the two day workshop is £25 and tickets can be bought here.

Making Light Under The Door

On 23rd March the video I made for Light Under The Door by My Panda Shall Fly was released to the public. If you haven’t seen it already, check it out!

This represents a bit of a departure from my usual visuals that feature an onslaught of colour and movement. The track itself is very mellow and dream-like. Having very glitchy visuals just wouldn’t have worked well for this. My approach to making a video for this song was to have a central abstract object that grew and morphed as the song progressed. The background and surrounding objects would move in an erratic but controlled nature, and occasionally the underlying wireframe structure of the environment would be revealed.

mpsf_sketch_1

mpsf_sketch_2

Of course, things always develop as they’re being made.

‎Will it Blend?

The majority of my video work up until now has been made using Pure Data. Whilst a great live performance tool, it is really hard to control minute details. I knew that learning more about video editing and 3D modelling would be beneficial to my overall artistic practice and so I invested time in learning how to use Blender.

blender_mpsf

Blender, for those that don’t know it, is the premier open source tool for working in 3D. It is used by an increasing amount of independent games and graphic design studios (often in conjunction with After Effects and Unity 3D) and has many features that make it really easy to use. Oh, and it’s free! I had dabbled in using Blender for many years, often to make small assets for use in Pure Data or other design work. Making this video required me to learn everything from camera tracking and basic Python scripting to F-Curve modifiers – particularly baking sound to F-Curves and the Blender VSE.

In keeping with my tradition of incorporating randomness, a lot of the movement of the objects is based on external variables. For example, the movement path of the abstract form was determined by a random shape made in Inkscape. The movement of the floating red spheres is being offset (via the Cast modifier) by one of the camera objects which is in itself following a path imported from a random shape made in Inkscape. Phew!

Path of the abstract shape

Path of the abstract shape

Put a glitch on it!

I didn’t intend to use any kind of “traditional” glitch art in this video. When it was suggested that I glitch the video I was initially quite hesitant as it would have felt, and possibly looked, liked an afterthought. I was up for a challenge and so I sought a way to introduce a tiny bit of glitch art without ruining the the overall clean aesthetic of the video.

With the introduction and maturing of the Freestyle renderer, Blender now has the option to export a scene to SVG files.

Original render

Original render

Freestyle SVG render

Freestyle SVG render

This outline would be a great file to start glitching as it would produce results that weren’t too noisy. After rendering the whole video to SVG files I then converted these to transparent PNGs which I then ran through ucnvs pngglitch script.

PNG glitch

PNG glitch

I overlaid this with parts of the video. I made sure to use it sparingly, in a way to mimic the fact that glitches are unexpected bursts of chaos. I think it worked rather nicely!

Feedback

One final addition was the addition of feedback loops. Where would I be without some sort of feedback effect!

mpsf_light_1

mpsf_light_2

The script that made this was conceived after having had only four hours of sleep. The “wrap around” effect is made by making a copy of an image, inverting the colours, scaling it, and placing it behind the original. Script is below. Tested using Imagemagick on Ubuntu 14.10.

Whilst the results are pretty cool the script is terribly slow. I had to use it on all images that had transparent areas. It took two days to render. If anyone has suggestions for making it faster, or any other programming languages that can do the same thing then I would be interested in knowing!

Update

Patrick Borgeat remade the script using Processing and GLSL. It’s a million times faster than my script so git clone it!

You can expect these techniques to be use a lot more in future works. I even aim to make this somehow interactive by using the Blender Game Engine. Watch this space!