Skip to content

jonaspleyer/vtk-rs

Repository files navigation

Crates.io Version Crates.io License Docs

vtk-rs

Rust bindings for the Visualization Toolkit (VTK).

Testing

stable beta nightly Build
ubuntu-24.04 stable-ubuntu-24_04 beta-ubuntu-24_04 nightly-ubuntu-24_04 cargo build
ubuntu-22.04 stable-ubuntu-22_04 beta-ubuntu-22_04 nightly-ubuntu-22_04 cargo build
macos-13 stable-macos-13 beta-macos-13 nightly-macos-13 cargo build
macos-14 stable-macos-14 beta-macos-14 nightly-macos-14 cargo build

Dependencies

This package relies on a system install of vtk. In some scenarios, it might be necessary to install additional dependencies. Otherwise, compilation of the cmake part might fail linker errors.

Distro Packages
Archlinux pacman -S clang cmake vtk openmpi fast_float nlohmann-json gl2ps utf8cpp
Ubuntu 22 & 24 apt install libvtk9.1 libvtk9-dev
Macos 13 & 14 brew install vtk

Building

vtk-rs will try to determine the path for vtk automatically. It is possible to control the compilation process via environment flags.

Flag Effect
VTK_DIR cargo:rustc-link-search=$VTK_DIR
VTK_VERSION Add suffix to vtk libraries (i.e. libvtkCommonCore-9.4).

Internals

This crate builds on cmake and cxx in order to generate the necessary code and bindings. The bindings for vtk modules are written manually in C++. From there, we generate appropriate bindings with cxx::bridge using the CLI tool cxxbridge. However, we do not use cxx to compile the code but rather let cmake handle this task. To implement the desired class methods, we use Rust macros.

Roadmap

  1. Stabilize Build system
  2. Automate system library detection and generate linker flags
  3. Gradually implement functionality for examples. Start with 3D geometry.

About

Rust bindings for the Visualization Toolkit (VTK).

Resources

License

Stars

Watchers

Forks