Gaia Engine

A C++ Physics Simulation Engine
"There is no copy too small to be ignored, nor design too abstract to be embraced." -- Anka He Chen
Gaia Engine Teaser

Gaia Engine simulating thousands of objects with complex collisions using the VBD solver.

Overview

Gaia is a C++ physics simulation engine designed for high-performance physics-based simulations. It can be compiled as a standalone simulator or integrated into other applications as a third-party CMake module.

Gaia provides powerful triangular/tetrahedral mesh data structures (via MeshFrame2), a convenient parameter I/O module, efficient collision detectors, and an abstract base physics framework that is extensible for various solvers.

Key Features

VBD Solver

Vertex Block Descent solver from SIGGRAPH 2024. A robust and parallel physics solver optimized for GPU architectures, capable of simulating coupled multiphysics systems.

XPBD Solver

Extended Position Based Dynamics solver for real-time simulation of elastic bodies, cloth, and other deformable objects.

Mesh Data Structures

Powered by MeshFrame2, providing blazing fast triangular and tetrahedral mesh processing with header-only design.

Collision Detection

Efficient collision detection system using Intel Embree for robust and fast broadphase and narrowphase collision queries.

Extensible Framework

Abstract base physics framework supporting various solvers. JSON-based configuration for models and physics parameters.

CMake Integration

Can be used standalone or integrated as a CMake module. Built on OneTBB, Eigen3, and Embree.

Related Publications

Vertex Block Descent

ACM Transactions on Graphics 43(4), SIGGRAPH 2024

Anka He Chen, Ziheng Liu, Yin Yang, Cem Yuksel

Offset Geometric Contact

ACM Transactions on Graphics, SIGGRAPH Asia 2025

Anka He Chen, Jerry Hsu, Ziheng Liu, Miles Macklin, Yin Yang, Cem Yuksel

Getting Started

Gaia uses CMake as its build system. To get started:

git clone --recursive https://github.com/AnkaChan/Gaia.git
cd Gaia
mkdir build && cd build
cmake ..
cmake --build . --config Release

Dependencies: OneTBB (2021.12.0+), Eigen3 (3.4.0+), Embree (3.13.1)

For detailed setup instructions, check the GitHub repository.

Also Check Out

TinyVBD

A minimal demo of VBD for mass-spring strand simulation. Only requires Eigen3. 130+ stars.

MeshFrame

A header-only, blazing fast mesh processing library for triangular and tetrahedral meshes.

CuMatrix

CUDA small matrix computation library for GPU-accelerated linear algebra.