Introduction to Blender

Blender is a popular free and open source 3D creation suite that has many uses, ranging from 3D modelling and animation, asset creation for games, motion graphics, video editing, 2D animation, and visual effects, and its uses can be extended through the use of plugins.

This four-part, online workshop series, led by Antonio Roberts, will introduce you to the software and its features, giving you the tools and confidence to make your own 3D animations. You will learn basic concepts of navigating and working in 3D space, eventually progressing to learning workflows for more advanced concepts and techniques including:

Lighting
Rendering
Texturing
UV mapping
Particles
Importing and exporting assets
Sculpting
Rigging
Compositing

If you’ve ever been interested in creating in 3D, this workshop is the perfect introduction!

EQUIPMENT

Blender can be downloaded for free from https://blender.org and works on Mac, Windows and Linux. It works best when using a dedicated GPU. You can read recommended hardware requirements and check whether your computer or laptop will be able to support it HERE

Although a trackpad can be used a three button mouse is more efficient and will be used throughout the workshop.

HOW TO APPLY AND ELIGIBILITY

This workshop is fully funded. To take part you must be an eligible SME – this means you must be registered as self-employed or have your own business based in England.

You must be able to attend all four sessions.

Spaces are very limited and we expect to be oversubscribed.

To apply to take part please email the following information to steamhouse@bcu.ac.uk by Monday 18 January. Please write “Blender Workshop” in the subject header.

1. A short expression of interest explaining why you want to take part in the workshop and how you think it will benefit your business. We are looking for participants who have a clear sense of how they might apply the knowledge they will gain to the development of new projects, products or services.

2. If you are not already a STEAMhouse member, please introduce yourself and let us know what you do. Please also let us know where you are based and confirm whether you are self-employed or have your own business.

ABOUT ANTONIO

Antonio Roberts is an Artist and Curator based in Birmingham, UK. He has been a Blender user for nearly 10 years and in that time has used the software to make work for places such as the Tate galleries, Barbican, Furtherfield gallery, MTV, Commonwealth Games, V&A, and at various exhibitions and events globally. See HERE to learn more about Antonio Roberts and see how he uses Blender in his work

Nodes

Nodes is a new commission created for the Peer to Peer: UK/HK online festival which ran from 11th – 14th November, created as a reflection on the interconnectedness of the global live coding community.

Live coding is a performative practice where artists make music and visual art live using programming. This happens primarily at events such as Algoraves, but there is an equally active online community which organises regular performances, conferences, workshops and more.

Moving beyond e-mail and social media platforms, people within the community have built their own tools which allow for real time communication and collaboration across borders and time zones. In this way the local nodes the global live coding community are able to stay connected.

Many thanks to Dr Charlotte Frost from Furtherfield for the nomination. Nodes was commissioned on the occasion of Peer to Peer: UK/HK online Festival 2020 by Centre for Chinese Contemporary Art, Open Eye Gallery and University of Salford Art Collection.

Gif Pack #1

Between projects I often make little animations. Sometimes they’re made as a result of learning new software and sometimes I make them to test out an idea or technique.

I’ve decided that I’ll start a regular thing on this here blog – hopefully monthly – where I share some of those gifs and other little animations.

The ideas for the above gifs came from self-portrait I made for the first issue of This and That zine.

I really liked the texture I had used on the face and decided to make some random animations (similar to the ones I did for Improviz) and use the same texture. I did some post processing using Natron (e.g. the pixealation and desaturation).

Seamless Looping Neon Trail in Blender

I’d like to return to the fifth video in the Design Yourself series to show how i did a glowing neon trail. The video is heavily themed around robots, and if you look in the background you’ll see that it’s actually a circuit board.

The circuit diagram was a random one I built using the rather excellent Fritzing software. If you’re ever looking for high quality SVG illustrations of electrical components then Fritzing is a great resource. I brought the exported SVG diagram into Blender to illustrate it a bit.

If you look closely you can see that the circuit board has a glowing trail. To achieve this effect I followed this tutorial:

At around 6:00 the author tries to find the point where the neon trail position loops but does it visually. At first I was doing the same but then I remembered that in the past I had faced a similar problem when trying to loop the Wave texture. To get an answer for that question I consulted the Blender Stackexchange site

I adapted this a bit and came up with the following solution: To seamlessly loop the neon trail effect first insert keyframe with the Value of the Add node set to 0. Move to a point along the timeline where you want it to loop and add another keyframe to the Value of the Add node and type (0.3333*pi)/$scale (but replace $scale with whatever the Scale of the Wave texture is). My node setup is the same as in the video but here it is as well:

click to embiggen

Now when you play the animation the neon trail effect will loop seamlessly!

Typewriter Text Effect Revisited

For the fifth video in the Design Yourself series I was faced yet again with the task of doing a typewriter text effect. Yay… For each of the videos the participants wrote a poem to go with it. The poems were a really important part of the video so they needed to have a prominent role in the video beyond standard Youtube subtitles. At the time I was producing the video I didn’t yet know whether or not I wanted to use the typewriter text effect but I certainly wanted to explore it as a possibility. One of the first times I tried to achieve this was back in 2019 when I was making the video to promote the Algorave at the British Library.

Since making that video, to add subtitles to a the second Design Yourself video I was using a Natron plugin that would allow synced playback of an audio file via VLC. By using this approach I could seek through the audio and add keyframes to the Text node when the text changed. This mostly worked but sometimes the audio did go out of sync. At some point afterwards I wondered if I could offload the editing of the subtitles – and maybe even subtitles with a typewriter text effect – onto another more specialised program and then import that into Natron later for compositing. Subtitle editing software already exist and are much better suited to editing subtitles than Natron.

I explained this on the Natron forum to one of the developers and some time later the Text node gained the ability to read an SRT subtitle file! An SRT file subtitle file format that is widely used on video files. If you open one up you can see exactly how it works:

The way the SRT reading function works in the new Text node is it basically gets the time stamps of the text in the SRT file and assigns them to keyframes in the Text node.Yay! 🙂

The next stage in the equation was to find a subtitle editor capable of doing a typewriter text effect. There are several open source solutions out there including Subtitle Composer and Gaupol. One of the available software, Aegisub, has quite the feature set. It has a karaoke mode which, as you would expect, can let you edit the timing of words as they appear on screen.

This sounds like the solution to my problem of getting a typerwriter text effect but there’s one big problem. The karaoke text mode only works if the file is exported as an .ssa file format. The SubStation Alpha file format supports lot of formatting options, including typewriter-like text effects. This is good except for Natron only supports .srt file format, and even if it did support .ssa files, I’d still want control over formatting.

To make this work in an SRT file what I needed was for , at user defined poitns, each word to be appended. For example:

1
00:00:00,000 --> 00:00:01,000
Some

2
00:00:01,000 --> 00:00:02,000
Some BODY

3
00:00:02,000 --> 00:00:03,000
Some BODY once

4
00:00:03,000 --> 00:00:04,000
Some BODY once told me

5
00:00:04,000 --> 00:00:05,000
Some BODY once told me the

6
00:00:05,000 --> 00:00:06,000
Some BODY once told me the world

7
00:00:06,000 --> 00:00:07,000
Some BODY once told me the world is

8
00:00:07,000 --> 00:00:08,000
Some BODY once told me the world is gonna

9
00:00:08,000 --> 00:00:09,000
Some BODY once told me the world is gonna roll

10
00:00:09,000 --> 00:00:10,000
Some BODY once told me the world is gonna roll me

It was clear that at this time the Aegisub SRT export can’t do this so in the meant time I made a feature request and reverted back to using the method I described in July 2019 Development Update which makes use of Animation Nodes.

But even then I had a few issues. To synchronise the text with the speech I was expecting that I could use keyframes to control the End value in Trim Text node. However, as explained by Animation Nodes’ developer, the keyframes of custom nodes aren’t visible on the Dope Sheet and so animate anyway. To get around this I used the suggestion by the developer:

I suggest you create a controller object in the 3d view that you can animate normally. Than you can use eg the x location of that object to control the procedual animation.

This worked in the viewer but not when I rendered it. What I instead got was just one frame rendered multiple times. This problem has been reported in Animation Nodes but the solutions suggested there didn’t work. Neither did doing an OpenGL render.

However, I came across this interesting bug repot . It seems like the crashing I was experiencing back in 2019 is a known bug. The solution suggested there was to use a script to render the project instead of the built in render function.

import bpy

scene = bpy.context.scene
render = scene.render
directory = render.filepath

for i in range(scene.frame_start, scene.frame_end):
scene.frame_set(i)
render.filepath = f"{directory}{i:05d}"
bpy.ops.render.render(write_still = True)

render.filepath = directory

The downside of this script is that it doesn’t show the animation being rendered. It also doesn’t allow you to set the start or end point of the render but that is easily accomplished by changing the range in line 7.

After all of that I was able to render the text with the rest of the video! Finished video is below:

I’m getting one step closer to being able to easily create and edit typewriter text using open source software…

Blender Animations Workshop with Antonio Roberts

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.
Before the workshop please download Blender version 2.8 on your computers (free!)
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.

Topic: Blender 3D Animations with Antonio Roberts
Time: Apr 9, 2020 01:00 PM Eastern Time (US and Canada)
Join Zoom Meeting
//duke.zoom.us/j/501181926
Meeting ID: 501 181 926
One tap mobile
+13126266799,,501181926# US (Chicago)
+16468769923,,501181926# US (New York)
Dial by your location
+1 312 626 6799 US (Chicago)
+1 646 876 9923 US (New York)
+1 669 900 6833 US (San Jose)
+1 253 215 8782 US
+1 301 715 8592 US
+1 346 248 7799 US (Houston)
+1 408 638 0968 US (San Jose)
Meeting ID: 501 181 926
Find your local number: //duke.zoom.us/u/adLN5qtUWE
Join by SIP
501181926@zoomcrc.com
Join by H.323
162.255.37.11 (US West)
162.255.36.11 (US East)
221.122.88.195 (China)
115.114.131.7 (India Mumbai)
115.114.115.7 (India Hyderabad)
213.19.144.110 (EMEA)
103.122.166.55 (Australia)
209.9.211.110 (Hong Kong)
64.211.144.160 (Brazil)
69.174.57.160 (Canada)
207.226.132.110 (Japan)
Meeting ID: 501 181 926

About the instructor:
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.
Examples of Antonio’s work can be seen here:

Improviz gifs

Blender Animations Workshop with Antonio Roberts

1pm-4pm, £15

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 online workshop, led by Antonio Roberts, will introduce you to the software and its features. In this workshop you will learn 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.

If you’ve ever been interested in creating in 3D, this workshop is the perfect introduction!

See here to learn more about the Antonio Roberts and see how he uses Blender in his own work https://hellocatfood.com

Examples of Antonio’s glitchy animations made with Blender can be seen here: https://www.hellocatfood.com/improviz-gifs/

The workshop will take place over Zoom from 13:00 – 16:00 BST with regular breaks. Please ensure you have Zoom and Blender installed on your system.

Blender works on Mac, Windows and Linux and works best when using a dedicated GPU. Please see this page for full recommended hardware requirements https://www.blender.org/download/requirements/

Book a place: https://www.eventbrite.co.uk/e/blender-animations-online-workshop-with-antonio-roberts-tickets-112219148494

Seamlessly loop Wave Modifier in Blender

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.

Overlaying multiple textures in Blender

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.