Contact deformation for Blender

Flesh thatgives.

Where a body presses into itself, or something presses into it, Fleshy dents the flesh and rolls it out around the edge. Skin first, and anything soft after it. Each frame follows from its pose: scrub anywhere, render frames in any order.

Windows/Blender 4.5 to 5.2/No rig setup/No painting

Fig. 01Self-contact
Bulge 1.00 · Bulge Width 15 · Dent 15%
Frame 001
clip slot · media/hero.mp4
0

Bones to set up

Any rig, any character. No segmenting, no per-character authoring.

0

Strokes to paint

Control comes from the vertex groups the character already has.

1:1

Live and Baked

A bake stores what Live shows you while you pose, with Smooth Pops evening out sudden jumps. Untick it for an exact match.

4.5→5.2

Blender

4.5 LTS, 5.0 and 5.2 LTS, tested on each.

ResultsOff and on

One knee. Three ways round.

The same frame, rendered through the add-on as it ships: the knee at 150°, Corner Taper at 0.55, everything else at its defaults. Drag across each to compare.

With Fleshy: from the side, the calf presses into the back of the thigh and the flesh rolls out along the crease
Without: the calf passes into the thigh
OffOn
r-side-off.jpg + r-side-on.jpg
From the sideSelf-contact · knee 150°
With Fleshy: from the front, the flesh pushed out at the side of the knee
Without: the outline of the knee unchanged
OffOn
r-front-off.jpg + r-front-on.jpg
From the frontSelf-contact · knee 150°
With Fleshy: from behind, the calf flattened against the thigh
Without: the calf sunk into the thigh
OffOn
r-back-off.jpg + r-back-on.jpg
From behindSelf-contact · knee 150°

01Self-contact

It finds the contact itself.

A mesh always collides with itself. The back of a bent knee, an arm against the ribs, a thigh folding into the stomach: Fleshy finds where the surface presses, dents it, and bulges it out around the edge.

  • Self-contactalways on
  • Setupone button
  • Resultdepends on the pose only
Fig. 02Self-contact
clip slot · media/01-contact.mp4
The knee, 100° to 150°Baked with Smooth Pops · Corner Taper 0.55

02Corner Taper

Built for real joints.

Where a fold closes, behind a bent knee or inside an elbow, real flesh creases instead of swelling. Corner Taper finds the closed end of every fold by itself and takes back the bulge there, easing it in again further out. Nothing to paint, nothing to place.

The settings in this renderOn the whole mesh

Amount
0.55how much of the bulge it takes back in the fold
Reach
0.70how far out from the fold it starts
Falloff
1.00how gradually it eases back

A region can turn it on or off for its own part. Preview colours where it acts.

Corner Taper on: the crease behind the knee closes flat
Corner Taper off: a dome of flesh swells where the crease ends
Taper offTaper on
r-taper-off.jpg + r-taper-on.jpg
Where the crease endsFleshy on in both

03Colliders

Anything can press.

Add a hand, a chair, a strap or another character as a collider and it presses into the flesh. Here a coil is drawn tight round the thigh: the flesh gives under each turn and swells between them.

  • A collideran object or a whole collection
  • Firmnessper collider, 0 to 100%
  • A set-up characterpresses with its own firmness
  • Exact Collider Edgesno pops where its edge passes
Fig. 03Collider
clip slot · media/03-colliders.mp4
A coil, drawn tight and let goCollider firmness 100% · Dent 50% · Bulge 0.2 · Smooth Pops

04More features

The rest of the kit.

Built for human flesh, and just as happy on anything soft: props, toys, creatures. Pick a part to see it work.

04.1 · Any mesh

Not only skin.

Any all-quad mesh with a Subdivision Surface: a creature, a soft toy, a cushion. Here a soft tube bends on a two-bone rig and folds into itself.

  • The meshall quads, any shape
  • The rigany, or none
  • In this clipBulge 1.80 · Dent 30% · Smooth Pops
t-tube.mp4
A soft tube, foldingSelf-contact

04.2 · Props

A dent, without the bulge.

Skin squeezed at a joint rolls out round the fold; a cushion only gives. Set Bulge to 0 and a press leaves a clean hollow with no rim around it. Here a cushion is set up like any character, with a ball as its collider, rolled across it and back.

  • The colliderany mesh, held rigid
  • Bulge 0a hollow, no rim
  • In this clipBulge 0 · Dent 70% · Smooth Pops
t-cushion.mp4
A ball on a cushionCollider

04.3 · Meshes as one

Several meshes as one.

Set Up Collection: every mesh in a collection presses into the others as one mesh would. A body and a separate head, or two soft balls, with one set of settings and one bake.

  • Set upSet Up Collection
  • Settingsone set for all of them
  • Bakeone, for all of them
t-pair.mp4
Two soft ballsSet up as one collection · defaults · Smooth Pops

04.4 · Regions

Soft here. Firm there.

Give part of a mesh its own Bulge, Width, Dent or Firmness by naming a vertex group it already has, such as a rig's deform group. Here the darker half is a region at Firmness 70%: pressed as deep, it dents less.

  • Wherevertex groups you already have
  • Blendby weight, vertex by vertex
  • A whole mesha harder head than body
clip slot · media/t-regions.mp4
Two rollers, one slabFirmness 0% · Firmness 70% · Smooth Pops

04.5 · Art direction

Five settings. All of the look.

Each in a unit you can reason about: how far the bulge spreads in rows of faces, how deep the dent goes as a share of the flesh's thickness. Move them here, and drag the collider.

  • Bulge · Bulge Widthhow much it rolls out, how far
  • Denthow deep, by thickness
  • Firmness · Smoothinghow much it resists, how soft
Fig. 04Try the settings
IllustrationA slice through the surface, in 2D

04.6 · Live and Baked

Bake once. Scrub anywhere.

Pose and tune in Live: each change shows as soon as you let go, with nothing to bake. Bake for playback and renders: frames add up in a cache beside your .blend and play at about the cost of the character alone. Every frame is checked before it plays, and one you edit after baking shows undeformed until you bake it again.

  • Livesolves when you let go
  • Bakeda cache beside the .blend
  • Checkedan edited frame says why, the rest play
BakedOut of dateNot baked

05The panel

Everything in one tab.

In the 3D viewport's sidebar, under Fleshy. Each section opens and closes on its own, a section with nothing in it shows only its Add button, and every message says what to do next.

  1. FleshyThe version, and buttons to the manual, Discord and X.
  2. SceneEvery set-up character, what each one's cache holds, and Bake All; inside it, Cache: where the frames are saved, Discard and Remove.
  3. The objectBaked or Live, Bake This Frame, Bake, the frames it will bake, and Smooth Pops.
  4. DeformationUse Baked Settings, the five settings, then Regions and Corner Taper inside it.
  5. CollidersWhat presses on this mesh, each with its Firmness, and Exact Collider Edges.
The panel's screenshot goes here
media/panel.png

06The details

Built for real shots.

What a production asks of a deformer once the first render looks right: animation, linked characters, render settings, files that move between machines.

06.1

Close Openings

A neck without its head, a mask's cut, a garment's edge: openings no longer read as contact where nothing touches.

06.2

Frame ranges

Bake 20-50 and 70-100 in one press. Bakes add up: bake one frame again and the rest stay as they were.

06.3

A bake you can stop

Progress at the bottom of the viewport, and Cancel keeps every frame already done. Nothing changes under a running bake.

06.4

Never a wrong frame

The pose, the settings, the mesh and the colliders are checked on every frame. What changed is named; the rest keeps playing.

06.5

Motion blur

Render with motion blur on, straight from the baked frames. Render frames in any order.

06.6

Linked characters

Set up on a library override, with every setting kept across a reopen and a resync of the character's file.

06.7

Travels with the file

The cache sits beside the .blend. Move both to another folder or computer and it is found again. A copied character gets its own.

06.8

Undo works

Set Up, Bake, Remove and every setting take Ctrl+Z and redo like the rest of Blender.

06.9

Fast where it counts

About a second a frame on a full body in Live, and baked playback at about the cost of the character alone.

06.10

Smooth Pops

On by default: a bake spreads a sudden one-frame jump of the flesh over a few frames. Cuts and fast contact are left as they are.

06.11

Clean collider edges

No one-frame pop where a collider's edge passes over the flesh. On by default.

06.12

Bake All

Every set-up character in the scene in one press, each with its own frames and settings.

07Workflow

From pose to render in five steps.

One thing to get right first: bake at the subdivision level you render.

  1. 1

    Match the levels

    On the Subdivision Surface, set the viewport level to the render level.

  2. 2

    Set Up

    Select the body, not its rig, and press Set Up in the sidebar.

  3. 3

    Tune

    Press Bake This Frame, adjust, press again. Or switch to Live.

  4. 4

    Bake

    Press Bake 1-250. Stop any time; the frames done are kept.

  5. 5

    Keep animating

    Hide it in the viewport if you like. Renders are unaffected.

08Tutorial

Learn it in one sitting.

From installing to a finished render, on one character, start to end. The manual covers the rest.

The tutorial is being recorded.It will play here

09Requirements

What it needs.

SystemWindows, 64-bitmacOS and Linux are not supported yet.
Blender4.5 LTS, 5.0, 5.2 LTS
The meshAll quads, with a Subdivision Surface modifierAny rig, or none. No bone setup, nothing painted. A collider can be any mesh.
UsePersonal and commercial workOne purchase covers you on any computer you use, and your organisation's own staff.
LicenceInterface GPL, compiled core under the EULAWhat you make with it is yours.

10Questions

Before you ask.

Is it a simulation?

No. Each frame follows from its pose alone, so you can scrub to any frame, render frames in any order, and get the same result every time. Smooth Pops, on by default, evens out a sudden one-frame jump of the flesh over a few frames when you bake.

Is it built with Geometry Nodes?

No. Fleshy works out the deformation in its own engine, written in C and compiled. The Geometry Nodes modifier it adds to your mesh only applies the result.

Does it stop surfaces passing through each other?

Not always: it shapes how flesh gives where something presses, and does not hold two surfaces apart. A collider pressed in further than Dent lets the flesh give shows through, and on a mesh with few faces an edge can pass between its points. Raise Dent, or give the mesh more faces where it is pressed, at some cost in speed. Where nothing may ever pass through, such as a close-up of a hand sunk into a cushion, a Mesh Deform cage or a simulation keeps the surfaces apart exactly.

Does it need a particular rig?

No. Any rig, or none. There is no bone setup and no per-character authoring.

Does it only work on characters?

No. Any all-quad mesh with a Subdivision Surface: a creature, a soft toy, a cushion, a prop. Several meshes can be set up together as one.

Do I have to paint anything?

No. Contact is found automatically. To give parts of the body different settings, a region names a vertex group the character already has, such as a rig's deform group.

Does it render on another computer or a farm?

Install Fleshy wherever the file renders, and keep the cache file beside the .blend. Without the add-on, the character renders without contact deformation.

How big is a cache?

About 50 MB for a 250-frame shot of a full body at subdivision level 2. Baking more frames adds to the same file.

macOS or Linux?

Not yet. This version is Windows, 64-bit.