DeepFracture: A Generative Approach for Predicting Brittle Fractures with Neural Discrete Representation Learning

This is a collection of pre-trained models for deepfracture: a conditional vq-vae model for predicting fracture pattern from impulse code, trained on the Break4Models dataset created by FractureRB.

πŸ“– For more details, please visit:

Overview

These models are designed to predict fracture patterns based on impact conditions. Each model is trained on a specific target shape and can be used for real-time physics simulation and computer graphics applications.

Model Architecture

The models use an encoder-decoder architecture:

  • Encoder: Processes input impulse conditions and generates latent representations
  • Decoder: Reconstructs GS-SDF(Geometrically-Segmented Signed Distance Fields) from latent representations
  • Training: Supervised learning on physics simulation data

Available Models

pre-trained-v2/
β”œβ”€β”€ base/           # Base object model
β”œβ”€β”€ pot/            # Pot object model
β”œβ”€β”€ squirrel/       # Squirrel object model
β”œβ”€β”€ bunny/          # Bunny object model
β”œβ”€β”€ lion/           # Lion object model
β”œβ”€β”€ objs/           # Different original mesh files
β”œβ”€β”€ csv/            # Initial collision scene
└── README.md       # This file

Each model directory contains:

  • {shape}-encoder.pt - Encoder weights
  • {shape}-decoder.pt - Decoder weights
  • {shape}-1000-encoder.pt - Encoder weights (1000 epoch version)
  • {shape}-1000-decoder.pt - Decoder weights (1000 epoch version)

Other folders:

  • {shape}.obj - Reference original 3D mesh file
  • {shape}-{csv_num}.obj - Reference initial collision scene. Containing pos, direct, impulse strength.

Usage

Loading Models

import torch
from your_model_architecture import Encoder, Decoder

# Load encoder
encoder = Encoder()
encoder.load_state_dict(torch.load('base/base-encoder.pt'))
encoder.eval()

# Load decoder  
decoder = Decoder()
decoder.load_state_dict(torch.load('base/base-decoder.pt'))
decoder.eval()

# Load reference mesh
reference_mesh = 'objs/base.obj'
init_collision = 'csv/base-261.txt'
work_path = 'result/base-exp-1/

Inference

# Prepare input conditions
input_conditions = prepare_impact_conditions(impact_point, velocity, impulse_strength)

# Encode
with torch.no_grad():
    latent = encoder(input_conditions)
    
# Decode
latent = decoder.cook(latent)
gssdf_voxel = deocoder.predict(latent)

# Apply to reference mesh
result_mesh = processCagedSDFSeg(gssdf_voxel, work_path, reference_mesh, isBig = False, maxValue = 1.0)

Model Performance

(metrics and performance)[https://doi.org/10.1111/cgf.70002]

Training Details

  • Dataset: Break4Model dataset
  • Framework: PyTorch
  • Optimizer: Adam
  • Loss Function: L2 Loss
  • Training Time: ~24 hours per model on NVIDIA RTX 3090

Citation

If you use these models in your research, please cite:

@article{huang2025deepfracture,
author = {Huang, Yuhang and Kanai, Takashi},
title = {DeepFracture: A Generative Approach for Predicting Brittle Fractures with Neural Discrete Representation Learning},
journal = {Computer Graphics Forum},
pages = {e70002},
year = {2025},
keywords = {animation, brittle fracture, neural networks, physically based animation},
doi = {https://doi.org/10.1111/cgf.70002},
url = {https://onlinelibrary.wiley.com/doi/abs/10.1111/cgf.70002},
eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1111/cgf.70002}
}

License

MIT

Contact

For questions or issues, please open an issue on the Hugging Face model page.

Downloads last month
9
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Dataset used to train nikoloside/deepfracture