st-tech / st-tech/ppf-contact-solver

[Bug] Capture Deformation on SOLID object with character rig causes inconsistent pin behavior

Open
#73 21 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug deployed worked
Dominant language
Python
Stars
4.5k
Forks
334
PR merge metrics
No merged PRs in 30d

Description

Summary

Hi,

I'm trying to use a rigged character as a SOLID object. The character is animated through an Armature, and I use Capture Deformation so that the pins follow the motion.

However, I'm seeing inconsistent behavior:

When I create a pin and use Capture Deformation, sometimes the pin does not react to the rig animation at all.
If I select multiple pins and run Capture Deformation, some pins follow the rig correctly, while others remain fixed in their original position.
During simulation, the mesh stretches because only part of the pins are moving.

The object is deforming correctly in Blender, and a deformation cache is created (for example, "Pin cache: 45 frames"), but the captured motion is not applied consistently to all pins.

My setup is:

Character driven by an Armature.
Character assigned as a SOLID object.
Pins created on the mesh.
Capture Deformation used to record the animation.

Is this expected behavior, or am I missing an additional step? Are there any known limitations when using multiple pins with deformation captured from an Armature-driven mesh?

Thank you.

Steps to Reproduce

Create or import a character mesh driven by an Armature
Assign the character as a SOLID object.
Create multiple pins on different areas of the mesh.
Select the pins and click Capture Deformation.
Move the timeline or run the simulation.

Expected Behavior

All pins should consistently follow the deformation produced by the Armature animation. During simulation, the pinned regions should move together with the rig without stretching the mesh.

Actual Behavior

Only some pins react to the captured deformation. Other pins remain fixed in their original position. As a result, the mesh stretches during simulation because some pinned regions move while others stay static.

In some cases, a single pin does not react to the captured deformation at all.

A deformation cache is generated (for example, "Pin cache: 45 frame(s)") and the operation [Embedded] Move (Captured) appears, but the captured motion is applied inconsistently.

Environment

OS: Windows 11
Blender Version: 5.1.2
Solver Version: ppf-contact-solver-2026-06-01-13-25-win64
Animation Source: Armature
Object Type: SOLID

Contribution Agreement
  • I confirm that any code, patches, scripts, attachments, or other copyrightable material I include in this issue may be used, reproduced, modified, and distributed by this project under the Apache License 2.0 or as otherwise described in CONTRIBUTING.md.
  • This is a bug report from the community (please provide a reference below).
Community Reference

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue with an Armature-driven mesh assigned as a SOLID object, multiple pins, and Capture Deformation. Inspect the Capture Deformation operation and the '[Embedded] Move (Captured)' result alongside the pin cache, then verify that every selected pin follows the animation without stretching during simulation.

Written by the indexing model from the issue text.

Assessment

Tech stack
blender, python
Domain
computer-graphics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.