mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
ReUseX a tool for processing scan data and reuse mapping.
DesignC++ · PythonGitHub @pfmephistoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
ReUseX is a comprehensive tool for processing 3D point cloud scans of building interiors, designed to support building reuse and renovation projects. The project processes LiDAR scans to create semantic 3D models with advanced segmentation capabilities for architectural elements.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
⚠️ Warning: This project is in active development and will regularly be introducing breaking changes ReUseX is a comprehensive tool for processing 3D point cloud scans of building interiors, designed to support building reuse and renovation projects. The project processes LiDAR scans to create semantic 3D models with advanced segmentation capabilities for architectural elements.Read the full README ↗
⚠️ Warning: This project is in active development and will regularly be introducing breaking changes
ReUseX is a comprehensive tool for processing 3D point cloud scans of building interiors, designed to support building reuse and renovation projects. The project processes LiDAR scans to create semantic 3D models with advanced segmentation capabilities for architectural elements.
The project consists of:
libs/reusex/): one CMake target per module
(reusex_core, reusex_segmentation, reusex_reconstruction, reusex_slam,
reusex_io, reusex_vision, …) with a link-enforced layer graphapps/rux/): command-line interface with subcommands for the
whole pipeline, plus a native Qt client (apps/rux/qt)The HTTP service worker (ruxd) and the web GUI frontend live in their own
repos — ruxd and rux-frontend — and build against this repo's installed
CMake package (find_package(ReUseX CONFIG REQUIRED); see "Using ReUseX as a
library" below).
For details see ARCHITECTURE.md, the engineering standards in docs/STANDARDS.md, and the pipeline-stage data contracts in docs/CONTRACTS.md.
This project uses Nix flakes for reproducible dependency management. Install Nix with flakes enabled for the easiest setup.
Launch a development environment with all dependencies:
nix develop
git clone https://github.com/pfmephisto/ReUseX
cd ReUseX
nix build
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Build Options:
-DWITH_CUDA=ON/OFF - CUDA / NVIDIA GPU support; also gates the TensorRT backend and the cuOpt solver (default: ON)-DBUILD_TESTS=ON/OFF - Enable/disable unit tests (default: ON)-DBUILD_DOCUMENTATION=ON/OFF - Enable/disable documentation generation (default: ON)-DBUILD_PYTHON_BINDINGS=ON/OFF - Build the pybind11 Python bindings (default: ON)-DGUI_ENABLED=ON/OFF - Enable/disable CGAL Qt6 GUI features (default: OFF)-DUSE_CCACHE=ON/OFF - Use ccache when available (default: ON)-DENABLE_COVERAGE=ON/OFF - Code coverage instrumentation (default: OFF)-DML_BACKENDS=AUTO|NONE|<list> - Which ML backends to enable, e.g. -DML_BACKENDS="TensorRT;LibTorch" (default: AUTO)-DREUSEX_PACKAGE_TEST=ON/OFF - Register the installed-package consumer ctest (default: ON; see Using ReUseX as a library)Note on Visualization: rux links PCL visualization unconditionally — it
is not an optional build. The reusex_visualize library module is a separate
concern: it is built whenever libs/reusex/src/visualize/ has sources. Use
-DGUI_ENABLED=OFF (the default) to skip CGAL's Qt6 GUI components.
Generate comprehensive API documentation with Doxygen:
# Configure the build with documentation enabled (default)
cmake -B build -DBUILD_DOCUMENTATION=ON
# Generate the documentation (target is named `docs`)
cmake --build build --target docs
# View the documentation
xdg-open docs/api/html/index.html # Linux
open docs/api/html/index.html # macOS
Requirements: Doxygen and optionally Graphviz (for diagrams)
The documentation will be generated in docs/api/, covering:
See docs/guides/TESTING.md and tests/README.md for detailed testing documentation.
Quick start:
# Build and run C++ tests
cmake -B build -DBUILD_TESTS=ON
cmake --build build
cd build && ctest --output-on-failure
The suite (Catch2 v3) is organized as tests/unit/<module>/,
tests/integration/, tests/benchmarks/, with shared helpers in
tests/support/ and data in tests/fixtures/.
The rux executable provides several subcommands for a complete point cloud processing pipeline:
All commands operate on a single .rux project database, selected with the
global -p/--project flag (default ./project.rux).
# Show version, license and help
rux --version
rux --license
rux --help
# Verbosity control (use -v, -vv, or -vvv for increasing detail)
rux -vv <subcommand>
# Import scan data from various sources
rux import rtabmap <path> # RTABMap SLAM database
rux import mushroom <path> # MuSHRoom RGB-D benchmark capture
rux import arkitscenes <path> # ARKitScenes iPad-LiDAR RGB-D capture
rux import e57|ply <path> # Point cloud files
rux import 360 <path> # 360° panoramic images
rux import photos <path> # Manual survey photos
rux import csv|materialepas <path> # Element / material passport data
# Refine the stored per-frame sensor poses
rux optimize # Plane-landmark pose graph
rux optimize --loop-closure # ...plus wide-baseline loop edges
rux register # Joint pairwise registration
rux align 360 # Content-based 360 panorama alignment
# Create derived data products (all creation operations)
rux create clouds # Back-project depth frames into a cloud
rux create dense # Dense cloud via OpenMVS MVS
rux create annotate -n <model> # ML inference on sensor frames
rux create annotate-360 -n <model> # SAM3 on 360 panoramas (perspective-tiled)
rux create project # Project 2D labels onto the 3D cloud
rux create planes # Detect and segment planar surfaces
rux create rooms # Segment into rooms (Leiden clustering)
rux create instances # Split labels into spatial instances
rux create mesh # Watertight mesh from planes
rux create texture # Apply textures to mesh
rux create windows # Window building components
rux create material|materials # Material passports
# Edit stored clouds
rux edit downsample # Voxel-grid downsample
# Inspect and validate
rux info # Project database summary
rux log # Pipeline execution history
rux validate [--stage <name>] [--json] # Referential integrity / stage inputs
rux analyze quality|accuracy # Reconstruction quality metrics (JSON)
# Path-based database access
rux get <path> | rux set <path> <value> | rux del <path>
# Export results in various formats
rux export ply|e57|rhino|colmap|speckle|csv|materialepas|semantic-images
# Visualize point clouds and results
rux view
# Render to a PNG with no display (SSH, CI, agents)
rux render -o plan.png --view plan --layers cloud
# Assemble multiple scans into unified model
rux assemble <paths...> -o <out.rux>
Run rux <command> --help for the full flag list; the pipeline-stage
prerequisites are documented in docs/CONTRACTS.md.
ruxd (the HTTP service worker serving the web GUI) and the web frontend
live in their own repos — ruxd and rux-frontend — not in this one.
Deploying them (Docker images, Supabase auth, Caddy, the compose stack) is
covered by the reusex-fleet repo, not here.
Note: the Python bindings in
bindings/python/are built by default (BUILD_PYTHON_BINDINGS=ON) and currently expose read-only.ruxinspection (reusex.ProjectDBand the summary value types).
ReUseX installs as a CMake package. This is the supported way to use the
library from another project, such as ruxd:
find_package(ReUseX CONFIG REQUIRED)
target_link_libraries(my_app PRIVATE ReUseX::pipeline) # or ReUseX::core, ...
#include <reusex/core/ProjectDB.hpp>
#include <reusex/pipeline/stages.hpp>
Install it. Without nix, build and install into a prefix, then point
CMAKE_PREFIX_PATH at that prefix:
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build --prefix ~/opt/reusex # everything
cmake --install build --prefix ~/opt/reusex --component ReUseX_Development # library only
cmake -B my-build -S my-project -DCMAKE_PREFIX_PATH=~/opt/reusex
With nix, nix build .#default installs the library next to the binaries:
headers, the static libraries, and lib/cmake/ReUseX/ReUseXConfig.cmake.
Targets. There is one static library per module, named after the module:
ReUseX::utils, ReUseX::geometry_common, ReUseX::core, ReUseX::io,
ReUseX::vision, ReUseX::segmentation, ReUseX::reconstruction,
ReUseX::slam, ReUseX::gsplat_common and ReUseX::pipeline.
ReUseX::visualize and ReUseX::gsplat exist only when that build had them.
ReUseX::reusex is an umbrella target that links all of them. Link the
narrowest target that covers what you use. The layering rules in
docs/STANDARDS.md §1 apply.
Build facts. The config sets these variables, so a consumer can check what the installed build contains:
ReUseX_WITH_CUDAReUseX_ML_BACKENDS (for example TensorRT;LibTorch;ONNX)ReUseX_HAVE_TensorRT, ReUseX_HAVE_LibTorch, ReUseX_HAVE_ONNX, ReUseX_HAVE_OpenVINOReUseX_MIP_SOLVER (HIGHS or CUOPT)ReUseX_HAVE_GSPLAT, ReUseX_HAVE_VISUALIZECreate models through reusex::vision::create_model_from_path(). The
backend-specific headers (vision/tensor_rt/, vision/onnx/,
vision/libtorch/) need that backend's own SDK headers and are not meant
for consumers.
Dependencies. The modules are static libraries, so a consumer needs
every dependency the build used, including the private ones: PCL, OpenCV,
CGAL, Eigen, TBB, Boost, fmt, range-v3, nlohmann_json, igraph, embree, HiGHS
(or cuOpt), RTABMap, E57Format, OpenNURBS, SQLite3, CURL, OpenSSL, exiv2,
OpenMVS, GTSAM, VTK, and the ML backends that were compiled in.
ReUseXConfig.cmake finds all of them with find_dependency. They must be
findable, through CMAKE_PREFIX_PATH or the nix dev shell. The list
mirrors libs/reusex/cmake/Dependencies.cmake.
Test. tests/package/consumer is a small external project that opens a
ProjectDB and runs a pipeline stage. The ctest reusex_package_consumer
(label package) runs cmake --install into a temp prefix, then
configures, builds and runs that project against the install. The nix
checks.tests build does the same against the installed $out, in
installCheckPhase. The test takes a few minutes, mostly the dependency
lookups. Run it on its own with ctest -L package, skip it with
ctest -LE package, or leave it out with -DREUSEX_PACKAGE_TEST=OFF.
The project relies on an extensive set of libraries. The authoritative lists are
the find_package calls in libs/reusex/cmake/Dependencies.cmake and the
buildInputs in default.nix.
Core Libraries:
Deep Learning:
Optimization:
I/O Formats:
.rux project databaseDevelopment Tools:
Model weights are never committed. See models/README.md for the expected layout and where each file comes from.
Pass a path with rux create annotate -n/--net <path> — either a single model
file or a directory of sub-models. The model family and inference backend are
detected from the path (libs/reusex/include/vision/BackendFactory.hpp):
sam3 or
sam2, or a directory containing a vision-encoder.* fileyolo11l.pt or yolo11l-seg.pt.engine → TensorRT, .onnx → ONNX Runtime,
.pt → LibTorchSAM 3.1 TensorRT engines are exported by the standalone reusex_sam3 pipeline
in python/; the full write-up is in
docs/sam3.1-tensorrt.md.
This project is licensed under the GNU General Public License v3.0 or later - see the LICENSE.md file for details.
Work is tracked with beads (bd). The
issues live in a local Dolt database under .beads/ (git-ignored) and sync
through refs/dolt/data on this remote, so a plain git clone does not bring
them along. The nix dev shell provides bd; without nix, install it from
upstream (any of these):
brew install beads # macOS / Linux
npm install -g @beads/bd # Node.js
curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash
# or a release binary: https://github.com/gastownhall/beads/releases
# or Go, with cgo for the embedded database:
# CGO_ENABLED=1 GOFLAGS=-tags=gms_pure_go go install github.com/steveyegge/beads/cmd/bd@latest
Then, once per clone:
bd bootstrap # pull the issues from refs/dolt/data
git config beads.role maintainer # or: contributor
bd ready # what's unblocked
bd dolt push / bd dolt pull sync from then on. Outside the nix shell, also
run bd hooks install once; it adds bd's sections to your existing git hooks
without replacing them (CLAUDE.md, "Beads: git hooks").
Contributions are welcome! This project follows the REUSE specification for license compliance.
Povl Filip Sonne-Frederiksen
Link Arkitektur
Email: [email protected]
This project builds upon numerous open-source libraries and tools from the computer vision, geometry processing, and deep learning communities.