facebookresearch/actionmesh

🎬ActionMesh: A fast video to animated mesh model with unprecedented quality. Generate animated mesh seamlessly importable into any 3D software in less than a minute.

421

stars

19

commits

Python

primary language

May 28, 2026

updated

4d-generation
4d-reconstruction
animation
mesh-generation
video-to-4d

README

🎬 ActionMesh: Animated 3D Mesh Generation with Temporal 3D Diffusion

CVPR 2026

Paper PDF arXiv Project Page Open In Colab

Meta Reality Labs; SpAItial; University College London

Remy Sabathier, David Novotny, Niloy J. Mitra, Tom Monnier

ActionMesh teaser

πŸ“– Overview

ActionMesh is a fast model for generating animated 3D meshes from videos. It supports two modes:

  • Video β†’ 4D (main): generate an animated mesh from a video
  • {Video + 3D} β†’ 4D: animate an existing mesh w.r.t. the video, preserving its topology and texture

πŸ†• Updates

  • 2026-02-20: πŸ“Š We release πŸ€— facebook/ActionBench, a benchmark dataset of 128 paired videos ↔ animated point-clouds for evaluating animated 3D mesh generation. See actionbench/README.md for evaluation instructions.

  • 2026-02-11: {3D+video}β†’4D - Optionally pass a 3D mesh as input (texture preserved)

  • 2026-01-31: Low RAM mode (--low_ram) β€” Runs on Google Colab T4 GPUs! Try it on Colab

  • 2025-01-21: Demo is live! Try it here: πŸ€— facebook/ActionMesh

  • 2025-01-21: Code released!

βš™οΈ Installation

Requirements

  • GPU: NVIDIA GPU with 32GB VRAM, or 12GB with --low_ram mode (e.g., Google Colab T4)
  • PyTorch: Requires PyTorch and torchvision (developed with torch 2.4.0 / CUDA 12.1 and torchvision 0.19.0)

1. Clone and Install Dependencies

git clone git@github.com:facebookresearch/actionmesh.git
cd actionmesh
git submodule update --init --recursive
pip install -r requirements.txt
pip install -e .

2. Optional Dependencies

DependencyPurposeInstallation
PyTorch3DVideo rendering of animated meshes; required for {video+3D}β†’4D inference and ActionBench evaluation (see ActionBench README)Installation guide
Blender 3.5.1Export animated mesh as a single .glb fileDownload

πŸš€ Quick Start

I - Video β†’ 4D

Generate an animated mesh from an input video:

Note: To export a single animated mesh file (importable in Blender), specify the path to your Blender executable via --blender_path.

python inference/video_to_animated_mesh.py \
    --input assets/examples/davis_camel \
    --blender_path "path/to/blender/executable"  # optional: export animated mesh for Blender

II - {Video + 3D} β†’ 4D

Pass an existing mesh (.GLB) to animate it w.r.t. the video, preserving its topology and texture:

python inference/video_and_3d_to_animated_mesh.py \
    --input assets/examples/panda \
    --mesh_input assets/examples/panda/panda.glb \
    --blender_path "path/to/blender/executable"

Fast & Low RAM Modes

Add --fast for faster inference (as used in the HuggingFace demo), and --low_ram for GPUs with limited VRAM (e.g., Google Colab T4). Both flags can be combined.

Performance comparison on H100 GPU:

ModeTimeQuality
Default~75sHigher quality
Fast (--fast)~45sSlightly reduced quality

Model Downloads

On the first launch, ActionMesh weights and external models are automatically downloaded from HuggingFace:

ModelSourceLocal Path
ActionMeshfacebook/ActionMeshpretrained_weights/ActionMesh
TripoSG (image-to-3D)VAST-AI/TripoSGpretrained_weights/TripoSG
DinoV2facebook/dinov2-largepretrained_weights/dinov2
RMBGbriaai/RMBG-1.4pretrained_weights/RMBG

🎨 Examples

We provide example sequences in assets/examples/ with expected outputs for testing and debugging your installation:

ExampleTypeExpected Output
davis_camel
kangaroo
spring

🎬 Input

The --input argument accepts:

  • A .mp4 video file
  • A folder containing PNG images

The number of input frames should be between 16 and 31 (default is 16). Any additional frames will be ignored.

Masks

Input frames can be provided with or without alpha masks. If no mask is provided, RMBG background removal model is automatically applied to each frame before processing.

Tip: For custom videos, we strongly recommend using the SAM2 demo to isolate the animated subject on a white background, as RMBG may have limited performance on complex scenes. See our SAM2 extraction guide for detailed instructions.

πŸ“¦ Export

The model exports a folder containing:

OutputDescriptionRequirements
Per-frame meshesOne .glb mesh file per timestep (mesh_000.glb, mesh_001.glb, ...)None (default)
Animated meshSingle animated_mesh.glb with embedded animation, importable in BlenderBlender 3.5.1
VideoRendered .mp4 video of the animated meshPyTorch3D
πŸŽ₯ Video output preview
Video output example
🎞️ Animated mesh file imported in Blender
Blender export example
In the {Video + 3D} β†’ 4D setting, if the input mesh has a texture, it is preserved in `animated_mesh.glb`.
Texture preserved in Blender export (panda)

πŸ›οΈ License

See the LICENSE file for details about the license under which this code is made available.

πŸ™ Acknowledgements

ActionMesh builds upon the following open-source projects. We thank the authors for making their work available:

ProjectDescription
TripoSGImage-to-3D mesh generation
DINOv2Self-supervised vision features
DiffusersDiffusion model framework
TransformersTransformer model library
RMBG-1.4Background removal model

πŸ“š Citation

@inproceedings{ActionMesh2026,
author = {Remy Sabathier, David Novotny, Niloy Mitra, Tom Monnier},
title = {ActionMesh: Animated 3D Mesh Generation with Temporal 3D Diffusion},
year = {2026},
}

Contributors

RemySabathier

19 commits

facebookresearch/actionmesh

🎬ActionMesh: A fast video to animated mesh model with unprecedented quality. Generate animated mesh seamlessly importable into any 3D software in less than a minute.

421

stars

19

commits

Python

primary language

May 28, 2026

updated

4d-generation
4d-reconstruction
animation
mesh-generation
video-to-4d

README

🎬 ActionMesh: Animated 3D Mesh Generation with Temporal 3D Diffusion

CVPR 2026

Paper PDF arXiv Project Page Open In Colab

Meta Reality Labs; SpAItial; University College London

Remy Sabathier, David Novotny, Niloy J. Mitra, Tom Monnier

ActionMesh teaser

πŸ“– Overview

ActionMesh is a fast model for generating animated 3D meshes from videos. It supports two modes:

  • Video β†’ 4D (main): generate an animated mesh from a video
  • {Video + 3D} β†’ 4D: animate an existing mesh w.r.t. the video, preserving its topology and texture

πŸ†• Updates

  • 2026-02-20: πŸ“Š We release πŸ€— facebook/ActionBench, a benchmark dataset of 128 paired videos ↔ animated point-clouds for evaluating animated 3D mesh generation. See actionbench/README.md for evaluation instructions.

  • 2026-02-11: {3D+video}β†’4D - Optionally pass a 3D mesh as input (texture preserved)

  • 2026-01-31: Low RAM mode (--low_ram) β€” Runs on Google Colab T4 GPUs! Try it on Colab

  • 2025-01-21: Demo is live! Try it here: πŸ€— facebook/ActionMesh

  • 2025-01-21: Code released!

βš™οΈ Installation

Requirements

  • GPU: NVIDIA GPU with 32GB VRAM, or 12GB with --low_ram mode (e.g., Google Colab T4)
  • PyTorch: Requires PyTorch and torchvision (developed with torch 2.4.0 / CUDA 12.1 and torchvision 0.19.0)

1. Clone and Install Dependencies

git clone git@github.com:facebookresearch/actionmesh.git
cd actionmesh
git submodule update --init --recursive
pip install -r requirements.txt
pip install -e .

2. Optional Dependencies

DependencyPurposeInstallation
PyTorch3DVideo rendering of animated meshes; required for {video+3D}β†’4D inference and ActionBench evaluation (see ActionBench README)Installation guide
Blender 3.5.1Export animated mesh as a single .glb fileDownload

πŸš€ Quick Start

I - Video β†’ 4D

Generate an animated mesh from an input video:

Note: To export a single animated mesh file (importable in Blender), specify the path to your Blender executable via --blender_path.

python inference/video_to_animated_mesh.py \
    --input assets/examples/davis_camel \
    --blender_path "path/to/blender/executable"  # optional: export animated mesh for Blender

II - {Video + 3D} β†’ 4D

Pass an existing mesh (.GLB) to animate it w.r.t. the video, preserving its topology and texture:

python inference/video_and_3d_to_animated_mesh.py \
    --input assets/examples/panda \
    --mesh_input assets/examples/panda/panda.glb \
    --blender_path "path/to/blender/executable"

Fast & Low RAM Modes

Add --fast for faster inference (as used in the HuggingFace demo), and --low_ram for GPUs with limited VRAM (e.g., Google Colab T4). Both flags can be combined.

Performance comparison on H100 GPU:

ModeTimeQuality
Default~75sHigher quality
Fast (--fast)~45sSlightly reduced quality

Model Downloads

On the first launch, ActionMesh weights and external models are automatically downloaded from HuggingFace:

ModelSourceLocal Path
ActionMeshfacebook/ActionMeshpretrained_weights/ActionMesh
TripoSG (image-to-3D)VAST-AI/TripoSGpretrained_weights/TripoSG
DinoV2facebook/dinov2-largepretrained_weights/dinov2
RMBGbriaai/RMBG-1.4pretrained_weights/RMBG

🎨 Examples

We provide example sequences in assets/examples/ with expected outputs for testing and debugging your installation:

ExampleTypeExpected Output
davis_camel
kangaroo
spring

🎬 Input

The --input argument accepts:

  • A .mp4 video file
  • A folder containing PNG images

The number of input frames should be between 16 and 31 (default is 16). Any additional frames will be ignored.

Masks

Input frames can be provided with or without alpha masks. If no mask is provided, RMBG background removal model is automatically applied to each frame before processing.

Tip: For custom videos, we strongly recommend using the SAM2 demo to isolate the animated subject on a white background, as RMBG may have limited performance on complex scenes. See our SAM2 extraction guide for detailed instructions.

πŸ“¦ Export

The model exports a folder containing:

OutputDescriptionRequirements
Per-frame meshesOne .glb mesh file per timestep (mesh_000.glb, mesh_001.glb, ...)None (default)
Animated meshSingle animated_mesh.glb with embedded animation, importable in BlenderBlender 3.5.1
VideoRendered .mp4 video of the animated meshPyTorch3D
πŸŽ₯ Video output preview
Video output example
🎞️ Animated mesh file imported in Blender
Blender export example
In the {Video + 3D} β†’ 4D setting, if the input mesh has a texture, it is preserved in `animated_mesh.glb`.
Texture preserved in Blender export (panda)

πŸ›οΈ License

See the LICENSE file for details about the license under which this code is made available.

πŸ™ Acknowledgements

ActionMesh builds upon the following open-source projects. We thank the authors for making their work available:

ProjectDescription
TripoSGImage-to-3D mesh generation
DINOv2Self-supervised vision features
DiffusersDiffusion model framework
TransformersTransformer model library
RMBG-1.4Background removal model

πŸ“š Citation

@inproceedings{ActionMesh2026,
author = {Remy Sabathier, David Novotny, Niloy Mitra, Tom Monnier},
title = {ActionMesh: Animated 3D Mesh Generation with Temporal 3D Diffusion},
year = {2026},
}

Contributors

RemySabathier

19 commits

Languages

Python

95.9%

Jupyter Notebook

4.1%