libcdgbs is a cross-platform C++ library implementing Curved Domain Generalized B-Spline (CD-GBS) patches. It is built using CMake and supports external libraries including:
- Usable via libgeom-based API & file import.
- Export into OpenMesh format.
- C++17 or newer
- CMake 3.15+
- GCC / Clang / MSVC
- Git (for cloning submodules)
git clone --recurse-submodules https://github.com/YOUR_USERNAME/libcdgbs.git
cd libcdgbs
If you forgot --recurse-submodules
, run:
git submodule update --init --recursive
mkdir build
cd build
cmake ..
cmake --build .
mkdir build
cd build
cmake .. -G "MinGW Makefiles"
cmake --build .
./libcdgbs_test
libcdgbs/
├── include/ # Public headers
├── src/ # Source files
├── tests/ # Test executables
├── external/ # Submodules: Triangle, Eigen, OpenMesh, libgeom
├── examples/ # Test example files
├── docs/ # Documentation
├── CMakeLists.txt # Main build config
└── README.md
- Patch types:
- Generalized Bézier (GB)
- Generalized B-spline (GBS)
- Displacement GBS
- Corner GBS
- Hybrid GBS
- Multi-loop
- Bézier
- Clamped B-spline
- Periodic B-spline
- Support filetypes:
- MGBS
- NGBS
- CGB
- GBS
- MLP
- GBP
- Interior control point
- Ribbon control points
- MAT-based interior control
- Control vectors
- Domain types:
- Curved
- Polygonal
- Regular
- mu types
- Corner
- Degree elevated
- Middle-1
MIT License. See LICENSE for full details.
@article{vaitkus2021multisided,
author = {M{\'a}rton Vaitkus and Tam{\'a}s V{\'a}rady and P{\'e}ter Salvi and {\'A}goston Sipos},
title = {Multi-sided B-spline surfaces over curved, multi-connected domains},
journal = {Computer Aided Geometric Design},
volume = {89},
pages = {102019},
year = {2021},
publisher = {Elsevier},
doi = {10.1016/j.cagd.2021.102019},
url = {https://doi.org/10.1016/j.cagd.2021.102019}
}
@misc{libcdgbs,
title = {libcdgbs: Cross-platform C++ library for Curved Domain Generalized B-Spline (CD-GBS) patches},
howpublished = {\\url{https://github.com/VaitkusM/libcdgbs}},
author={M{\'a}rton Vaitkus},
year = {2025}
}