clutch
muon
composition
Double feature : "Clutch" & "The muon in the hole"

Double feature : "Clutch" & "The muon in the hole"

written by Christophe "Ulu...

30 Nov 2022256 EDITIONS
0.5 TEZ

Pitch

It seems all my fx(hash) projects have to do with pop culture and "Clutch" is no different. This one is about exploitation/grindhouse type movies of the 70's/80's, specifically action / crime movies, their posters and their music.

Bold colors across a variety of genres
Bold colors across a variety of genres

I wouldn't call myself a specialist at all, but I've seen my fair share of niche movies of all kind due to early VCR access and a lot of late-night TV in my teens. I enjoy a good action sequence, cheesy dialogues and the occasional clunkiness.

I wanted to express action, speed and groove, but also the sleaze and the cheese. I wanted people to hear a groovy bass line and the wah-wah pedal in action.

"Clutch" is the generic protagonist of a movie in that space. Not much is known about Clutch, only that he's/she's/they're badass, sexy and dangerous.

The concept didn't solidify until halfway through development though. It started as a continuation on my work on POW! with halftone patterns. I just released The Summoning at the time, with which I struggled quite a bit on questions of scalability and animation, so I wanted to do something way simpler this time, and more abstract because I like to alternate.

The main design goals at the start were :

All those rules have been lightly broken as the project evolved, but they still define the look of the piece, raw and dynamic.

The project is thought as existing at poster size, or at least the size of a decent desktop computer screen. It lives best in "live" mode.

The Muon in the hole follows largely the same creative impulse. It was made as an interlude in "Clutch" for #fxhashturnsone and uses a very similar theming and structure, with a sci-fi twist. It's also generally way less saturated, but noisier to compensate. This removes most of the violence from the theme.

Left : "Clutch" , Right : "The muon the the hole"
Left : "Clutch" , Right : "The muon the the hole"

Direction

Like in my previous projects, I work in 3D even if the final result is intended to look fully 2D. I also work with real-time performances in mind, meaning the project should render fast ( < 0.1s ). This mainly allows me to iterate at breakneck speed and test things easily. I also never know entirely if I'll include animations or not in a project, so that's always an option.

"Clutch" is composed of :

1 : Background, 2: Color rings, 3, 4: Explosion, 5: Dashes, 6: Rocks, 7: Overlay circles, 8: Color circles, 9: Overlay
1 : Background, 2: Color rings, 3, 4: Explosion, 5: Dashes, 6: Rocks, 7: Overlay circles, 8: Color circles, 9: Overlay
1. Background

A flat color. This color is reused in other elements of the composition.

2. Color rings
Left: a single ring , Right: detail
Left: a single ring , Right: detail

Between 20 and 100 rings are generated per seed. These are slightly deformed circles, with inner and outer brush-like distress. Various types of holes are punched in the shape, some with regular patterns, some irregular. Each ring can also contains an inner circle shape.

The rings are scaled and distributed along a more or less noisy path from the back to the front.

3. Fragments
Square pattern distributed across thee front layer
Square pattern distributed across thee front layer

500 small polygons are generated and scattered semi-uniformely across the space. They come with a square based pattern rather than circle, and the intensity of the halftones is from another general pattern. A "shadow" is also generated, painted in a contrasting color. The idea of slightly colored shadows behind dark elements is present throughout both "Clutch" and "The muon in the hole" and is one of the core graphic features of both projects.

4. Explosion
Two layers, two different distress methods
Two layers, two different distress methods

The main focus, although it is sometimes hidden. Another deformed circle, this time with some spikes along the perimeter, inward and outward. It also comes with its shadow. Both layers have their own distress methods, the front part being finer while the shadow holes are rougher.

Some seeds generate a second explosion.

5. Dashes
Dash close-up
Dash close-up

Some rays are generated and sprinkled radially from the explosion, but not really aligned, just generally in the same direction. They're distressed similarly to the color rings.

6. Rocks
Rocks and their colored inner pattern
Rocks and their colored inner pattern

The only 3D shapes of the composition, you get between 20 and 150 of those. They too use the concept of dark front / color shadow, but yet in another way. The intensity of the pattern depends on an arbitrary "lighting", and the color shadow is the same pattern with an offset, inscribed in the same shape.

7.& 8. More circular shapes

More slightly deformed circle come in play to add some accidents. One group contains a few big and very faint circles painted additively on top of the rest, the other are a few randomly placed circles with yet another halftone pattern variant. Those are opaque and contrast with the ones made of holes in the rings.

9. Overlay & frame
Dust and wavy lines
Dust and wavy lines

On top of it all, I overlay some more dusty noise, usually pretty sparsely, but some seeds are more intense. I also draw some wavy lines, meant to evoke poster creases or simply cracks in the poster.

The frame is finally drawn. It's the only element that's not deformed or broken in any way, just a rounded rectangle. I like this little bit of contrast and the rounded corners feel thematic to me.


Mise-en-scène

The general construction algorithm is as follows :

Of course, everything is randomized in some way or another, mostly in terms of varying ranges. The only binary parameter is the aspect ratio of the seed, which influence the rest of the parameters. Aside from that, the palette is a also discrete value, chosen at generation.


Color

Each seed get a random palette from a list of 13. All palettes except one are directly inspired by movie posters.

Each palette contains the definition for a few colors, like the background, the rocks shadows or the color of the frame. They also contain a collection of colors for the rings. At generation, this list of colors or randomly weighted according to the seed, which allows each palette to express itself in various ways. Nearly all palettes include the background color as an option for the rings, to create some fake negative space. They also generally include a darker color to create the ink feel, that is treated separately as to not overpower the colors.

Same palette, different mood
Same palette, different mood

The palettes also define rules for gradients. Gradients are present in most palettes, but are usually a very small change in saturation or luminance. A few palettes use a hue shift, which was a feature that was an error at first and became a happy accident.

Left: very slight gradient, Right: Big hue shift
Left: very slight gradient, Right: Big hue shift

Interlude : The muon in the hole

"The muon in the hole" is largely similar, but simpler. The frame is now a distressed rectangle, the noisy overlay is more intense. The rings are replaced by rings arcs of varying size, and the explosion is replaced by a generated 3d shape, plus 2 "shadows" of this shape.

Being an interlude project, I did some recycling to save time. For the central shape, I reused a space station a I did for "Visa to the Stars" with barely any modifications, just an expanded parameter space, that I drew the same way as the rocks in "Clutch".


Behind the scene

From a technical standpoint, it's all pretty straight forward, and similar to some of my previous projects :

If you don't know what meshes or shaders are, you can think of it as a wall, with a ton of weirdly shapes frames hung on it with paintings in them. The frames are the meshes, the paintings in them are the shaders.

Wireframe
Wireframe

The use of an orthographic camera allows me to treat the whole thing as 2d. Elements are created aligned towards the camera and the lack of perspective in the projection means that changing the depth of an object does not change its position in the render.

All the meshes are pretty simple. Deformed circles, deformed circles with spikes, extruded deformed low-res circles, etc. and rectangles (frame, overlay, dashes).

The shader work consists mostly of punching holes in the shapes. Usually each shader will mix different types of halftone patterns, varying the scale, the size, but also the reference : some patterns use the meshes texture coordinates, some use the meshes vertices world positions, other the vertices coordinates on the screen. Using these various approaches produces the fun effect that happens when you translate the camera, but it's also one of the things I wanted to experimented with at the start of the project.

The shader for the rings is the most complex one. Its algorithm is roughly :

  1. Define the zone to distress with the "stroke" effect from the inner and outer radii and the UVs. Remove the alpha from the value of stretched polar gradient noise in that zone.
  2. Define a fine Worley noise , mask it with a low frequency gradient noise, and threshold the value to remove some small noisy circles from the alpha.
  3. Define a large circle shape in UV space and use it define haltfones patterns that scale with world coordinates. Also removed from the alpha channel.
  4. For the color, apply the gradient rules defined by the palette, linearly along the UVs.

The shader used for the rocks in "Clutch" and for the big structure in "The muon in the hole" uses the dot product of the normal and the "light" (just a vector really) to determine the size of its halftone pattern, whose negative is used to again subtract to the alpha channel.

A very important aspect of the final look is the crucial use of super-sampling anti-aliasing. At typical browser resolution, the resolution is too low to display enough detail of the various patterns, and this approach gives me the best results. This is costly operation and you can see I chose to only do it when the scene is static. It's disabled when the camera is moving or when I have to redraw the UI. For performance reasons (and power saving), the rendering is done on a per-need basis, and is disabled by default, the artwork being static.


Bonus feature : User Interface

I decided to implemented some UI for this project. I'm not really sure why, but it's a space where I like to have a bit of fun.

The seed creates its unique frame for the menu, a randomly deformed rectangle, as well as a few animations frames, also randomized.

The title itself is coded and is actually 3D extrude. The shape is static though.

I added a dynamic tagline under the title, for the theme. The seed determines a base tagline, as well as a random gender, to keep it mysterious. Enthusiastic use of capitalization, ellipsis and exclamation marks. Many are adapted from actual movie taglines.

The whole menu is placed under the same overlay, same as the rest of the piece. It sometimes interacts nicely, but sometimes also hampers the readability. I found it interesting enough that it stayed. Probably not the best idea, it would be way more user-friendly to do these things in a classic HTML/CSS <div> on top on the main canvas. But that would mean probably loading some static assets, which I'm not opposed to, but try not to do.


Sequel bait

A couple random thoughts to close :


Update 08/18/23 : The generators

I just realized that you can edit fx(text), so I'm linking the generators :

project name project name project name

project name project name project name


Production History

project name project name project name

project name project name project name

stay ahead with our newsletter

receive news on exclusive drops, releases, product updates, and more

feedback