Skip to main content

Tissu

Language Language License Physics Platform CI Release

Tissu is a C++ cloth simulation SDK designed to integrate seamlessly into Digital Content Creation (DCC) tools such as Blender. It was developed to make high-fidelity cloth simulation as accessible as possible for technical artists and developers.

By combining a high-performance C++ core with a flexible Python API, Tissu lets you script complex simulations with the simplicity of Python and the velocity of C++.

Hero

Table of Contents


Features

Tissu includes the following features:

  • IO

    • Alembic exportation (.abc)
    • Wavefront .obj importation and exportation
    • State serialization (.tissu)
    • Scene loader and exporter (.json)
    • Material presets loader (.json)
  • Physics (XPBD Solver)

    • Distance constraint
    • Bending constraint
    • Volume constraint
    • Pin constraint
    • Stitch Constraint
    • Broad-phase collision detection via Spatial Hash
    • Sphere, capsule and plane colliders
    • Mesh colliders
    • Kinematic Colliders
    • Self-collision detection
    • Gravity force
    • Aerodynamic force
  • Python API

    • Full simulation scripting via tissu Python package
    • Event scheduling

Coming Soon

Features planned for future releases:

  • USD exportation

The ultimate goal of Tissu is to become a Blender add-on.


How To Use

Let's script a cloth falling onto a sphere collider. The following example demonstrates how to set up a simulation, add constraints, schedule events, and export the result.

from tissu import Simulation

# 1. Initialize the simulation environment
sim = Simulation(substeps=10, iterations=3, thickness=0.05)

# 2. Create a cloth grid
curtain = sim.create_grid(
    name="curtain",
    rows=80,
    cols=80,
    spacing=0.05,
    material="silk"
)

# Pin the top corners to initially hold the curtain in place
curtain.pin_top_corners()

# 3. Add a sphere collider
# (name, initial position, radius, friction)
ball = sim.add_sphere('ball', [2.0, 0.0, 0.0], 1.0, 0.5)


# 4. Schedule an event: Unpin the curtain at frame 40 so it falls
@sim.on_frame(40)
def unpin(sim):
    curtain.unpin()


# 5. Run the simulation and export the result directly to Alembic
output = "data/animations/cloth_on_sphere.abc"
sim.bake_alembic(
    filepath=output,
    start_frame=1,
    end_frame=240,
    fps=60
)

Real-time Viewer

Tissu comes with a built-in OpenGL viewer for real-time visualization. If you install Tissu with viewer support, you can preview your simulation before baking.

Instead of calling sim.bake_alembic(), simply launch the interactive viewer.

sim.view()

The viewer includes an integrated ImGui control panel to manage the simulation on the fly. From here, you can:

  • Load Scenes, Materials, and Physics presets
  • Adjust Shader and World parameters
  • Tune Solver parameters in real-time
  • Monitor performance statistics

Viewer

Keybindings

  • G : Take a state snapshot (.tissu files)
  • S : Take a geometry snapshot (.obj files)
  • R : Reset the simulation
  • Space : Play / Pause the simulation
  • Left Click : Grab and interact with particles manually

Requirements

These dependencies must be installed on your system before building the project:

  • Cmake ($\ge$ 3.20)
  • C++ Compiler with C++17 support (GCC, Clang, or MSVC)
  • OpenMP

Python Requirements

To build and use tissu, you need:

  • Python ($\ge$ 3.12)
  • Build Tools: setuptools $\ge$ 61.0, wheel
  • Packages: mypy, numpy, tqdm, pytest

Python dependencies are automatically handled if you install the package via pip install .

Fetched Dependencies (Core)

These dependencies are automatically downloaded and built by CMake via FetchContent:

Standalone Viewer Requirements (Optional)

If the build includes the standalone viewer (TISSU_BUILD_VIEWER=ON), the following additional dependencies apply:

System Requirements:

  • OpenGL (System graphics libraries)
  • Threads (Standard OS threading support)

Fetched Dependencies (Handled by CMake):

  • GLFW (3.3.8)
  • GLAD (v2.0.8, Core 4.6)
  • ImGui (v1.91.5 - Docking branch)

Supported Operating Systems

  • Linux: Supported and tested (On Fedora)
  • macOS: Tested
  • Windows: Supported and tested.

Build and Installation

1. Clone Repository

Cloning the repository is as simple as

git clone https://github.com/evanrock520-ciencias/Tissu.git
cd Tissu

2. Compile the SDK

Build the shared library and the standalone viewer using our build script.

python scripts/build.py

3. Install Tissu

To import the library in your scripts, install the tissu package with pip:

pip install .

Development and Testing

Tissu includes a test suite for both C++ and Python

  • C++ Tests: Powered by Google Test (tests/)
  • Python Tests: Powered by Pytest (tests/python/).
  • Benchmarks: Powered by Google Benchmark (benchmarks/).

To run all tests, you can use the test script:

python scripts/test.py

Technical Documentation

Technical documentation is currently a work in progress. It is expected to include:

Almost all pages may be incomplete or missing content.


License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

On Sphere

Metadata

Release files for pytissu 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytissu 1.1.0
File Size Uploaded
pytissu-1.1.0.tar.gz 84.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pytissu 1.1.0
File
pytissu-1.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pytissu-1.1.0-cp314-cp314-manylinux_2_39_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.39+ x86-64 Details
pytissu-1.1.0-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details
pytissu-1.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pytissu-1.1.0-cp313-cp313-manylinux_2_39_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.39+ x86-64 Details
pytissu-1.1.0-cp313-cp313-macosx_26_0_arm64.whl CPython 3.13 CPython 3.13 macOS 26.0+ ARM64 Details
pytissu-1.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pytissu-1.1.0-cp312-cp312-manylinux_2_39_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.39+ x86-64 Details
pytissu-1.1.0-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details
pytissu-1.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pytissu-1.1.0-cp311-cp311-manylinux_2_39_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.39+ x86-64 Details
pytissu-1.1.0-cp311-cp311-macosx_26_0_arm64.whl CPython 3.11 CPython 3.11 macOS 26.0+ ARM64 Details
pytissu-1.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pytissu-1.1.0-cp310-cp310-manylinux_2_39_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.39+ x86-64 Details
pytissu-1.1.0-cp310-cp310-macosx_26_0_arm64.whl CPython 3.10 CPython 3.10 macOS 26.0+ ARM64 Details

Total release size: 13.8 MB

Release files / pytissu-1.1.0.tar.gz

Download URL pytissu-1.1.0.tar.gz
Size 84.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4f731fad31e9daa24e669afd6f2f2aef07212d894f6fa07bc210e2e741434430
BLAKE2b-256 checksum
How to use checksums
d48812b74258c79cac1572c21c19fd92413fe8e55c01e9f9607390e5b4870e19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp314-cp314-win_amd64.whl

Download URL pytissu-1.1.0-cp314-cp314-win_amd64.whl
Size 795.2 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
72ef2dab019ed8c5b8090bbbbaf63fb8f207b1e5aeb3f5def4e58fb8c92b9da3
BLAKE2b-256 checksum
How to use checksums
23ebfe6e041a3ee28be007e052dc0ee408e1fdce54f95891dfb6c97b6f31ce8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp314-cp314-manylinux_2_39_x86_64.whl

Download URL pytissu-1.1.0-cp314-cp314-manylinux_2_39_x86_64.whl
Size 1.1 MB
Tags CPython 3.14 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
420c47b683bcc9163598da24bb7b809fa9470a6fd15a856a1dee215451989b05
BLAKE2b-256 checksum
How to use checksums
36832586c4abbc826dc13b387db87fc76cfd7af8c457fac9c4e54ace9591024e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp314-cp314-macosx_26_0_arm64.whl

Download URL pytissu-1.1.0-cp314-cp314-macosx_26_0_arm64.whl
Size 868.1 kB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
7780f3d904bc0cbed5915ce0c9f8bbfe2579e1ef559e407ebfa1f4ee54af5e25
BLAKE2b-256 checksum
How to use checksums
ac1737596ddd81f7864619f5f73fefd658e130acc81166ccc189679e5346795d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp313-cp313-win_amd64.whl

Download URL pytissu-1.1.0-cp313-cp313-win_amd64.whl
Size 772.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
319daacd4c7f56b627c5c77454c71568e500a49d6ba5b15d945a82905b5d824c
BLAKE2b-256 checksum
How to use checksums
ce11c4d7b250afa115d1a87ba811dd19d92d49ecf6e9d18b4d2a68bd73ee0fc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp313-cp313-manylinux_2_39_x86_64.whl

Download URL pytissu-1.1.0-cp313-cp313-manylinux_2_39_x86_64.whl
Size 1.1 MB
Tags CPython 3.13 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
4af389919ea64906065eb552777f037806ba40c4087935158fc279bbe5263d93
BLAKE2b-256 checksum
How to use checksums
0bc2c7bbfe0ad7adef9eec458258c83df4c8875ad4f8b05be7350e661393a12e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp313-cp313-macosx_26_0_arm64.whl

Download URL pytissu-1.1.0-cp313-cp313-macosx_26_0_arm64.whl
Size 866.9 kB
Tags CPython 3.13 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
01e19101be5ca7a76db2b7899bd8287df1e9dc305046c14502bfe3b85385069d
BLAKE2b-256 checksum
How to use checksums
4dbb732f5e5eecefe4cd33d5872112807cf3ff5165d0a81304f1e2e3d2a21849
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp312-cp312-win_amd64.whl

Download URL pytissu-1.1.0-cp312-cp312-win_amd64.whl
Size 772.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
243c53e4b3f6dea81e3e86a9817a148e5c56cfa4934282db698e35a2dad25b8e
BLAKE2b-256 checksum
How to use checksums
51ee2a65e334961a40222baad41584f0c6b623f1ac8f84cdf951ab9a603dd905
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp312-cp312-manylinux_2_39_x86_64.whl

Download URL pytissu-1.1.0-cp312-cp312-manylinux_2_39_x86_64.whl
Size 1.1 MB
Tags CPython 3.12 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
6b9e0d68a1bc4c3b900a39066644b2f66751707b8f291fd73287c8e619d09834
BLAKE2b-256 checksum
How to use checksums
4b1d0fe44a1cc79520489f767bc710ff131402504a7052ff445704fd551c421c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp312-cp312-macosx_26_0_arm64.whl

Download URL pytissu-1.1.0-cp312-cp312-macosx_26_0_arm64.whl
Size 866.8 kB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
0889f8900c424d1d64e76f38f9dafcce5f76780ef8250aae71403317eb7d38dd
BLAKE2b-256 checksum
How to use checksums
173f459c15069cd4c730854da15a81df715e92d8527d5c6473cd9c72ae45e7a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp311-cp311-win_amd64.whl

Download URL pytissu-1.1.0-cp311-cp311-win_amd64.whl
Size 769.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8ba5993c2f53fb8a6fe77ef6e9841c5778b409983e3407dd4857e09d4b64a1dc
BLAKE2b-256 checksum
How to use checksums
0794f1bbc93511e64f31c83cdf7f4035f1f47712cd27735de2c0106230b618e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp311-cp311-manylinux_2_39_x86_64.whl

Download URL pytissu-1.1.0-cp311-cp311-manylinux_2_39_x86_64.whl
Size 1.1 MB
Tags CPython 3.11 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
9c967c24bd5edce39905b3ef0b7dcb076f64ca416e28084a58f32b61f0ed0c6e
BLAKE2b-256 checksum
How to use checksums
8ea8de80ded01bb5959338f7cd7df2ffcbe80f916888ac48d9ab3463e913020c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp311-cp311-macosx_26_0_arm64.whl

Download URL pytissu-1.1.0-cp311-cp311-macosx_26_0_arm64.whl
Size 866.0 kB
Tags CPython 3.11 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
1dc2068a18518848f2374535dfed9acdfd9016ecf78d1cd0bb4d48bbcacc917a
BLAKE2b-256 checksum
How to use checksums
5eb8550511693d0fbc054a40c9a7f2b1ae07d30b59f7caaff3ff3d26866aff0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp310-cp310-win_amd64.whl

Download URL pytissu-1.1.0-cp310-cp310-win_amd64.whl
Size 768.5 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d4c2b369a820c4f01f5f45438f48e356f823b5eedef7626a4b4e063bd7ab4181
BLAKE2b-256 checksum
How to use checksums
aee53f68630a0bde5f4ff3cb323af62ffb77df918673825b40f171cc57fba7aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp310-cp310-manylinux_2_39_x86_64.whl

Download URL pytissu-1.1.0-cp310-cp310-manylinux_2_39_x86_64.whl
Size 1.1 MB
Tags CPython 3.10 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
36ffd698c9e29e8c9194271b4c2e0a1248fd7d97a2e28b6d9d568f3c0bd71d18
BLAKE2b-256 checksum
How to use checksums
67c5a325ded17d652891dc5ff1ea6616ce7c89ff54b36801e31eac3d109188fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / pytissu-1.1.0-cp310-cp310-macosx_26_0_arm64.whl

Download URL pytissu-1.1.0-cp310-cp310-macosx_26_0_arm64.whl
Size 864.6 kB
Tags CPython 3.10 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
97b6e02e7363cf4b623fd029d42a5da1d21030f202e8f0358ab1b0d74b99fa2a
BLAKE2b-256 checksum
How to use checksums
9977b8052fdb1119eec7221fb914223afd67eb0fefa22f1fcb5edb6e65937d35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

1.1.0 This release

16 release files

1.0.2

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page