LiVision is a lightweight C++ 3D visualizer for rapid prototyping with ImGui and ImPlot.
✨ Features
- 🧪 Rapid Prototyping: Fast setup for visual experiments and ideas.
- 🔷 Primitive-Rich Drawing: Plane, box, sphere, cylinder, cone, and more.
- 🗂️ Container-Based Group Control: Move/transform multiple objects together.
- 🌐 3D Object Coverage: Meshes, models, and SDF-based objects.
- 📊 ImGui + ImPlot UI: Quick interactive tools and plotting dashboards.
- 📸 Capture: Save PNG screenshots and record MP4/GIF, with or without a window.
🚀 Quick Start
📦 Installation
Install from PPA
sudo add-apt-repository ppa:hamatakuzaq/livision
sudo apt update
sudo apt install -y liblivision-dev
Install from source
sudo apt update
sudo apt install -y \
build-essential \
cmake \
pkg-config \
git \
libsdl2-dev \
libeigen3-dev \
libsdformat14-dev \
libassimp-dev \
libcurl4-openssl-dev
git clone https://github.com/hamataku/LiVision.git --recursive
mkdir -p LiVision/build && cd LiVision/build
cmake ..
make -j"$(nproc)"
sudo make install
🛠️ CMake Example
# Find package
find_package(livision REQUIRED)
# Add include dirs and link libraries
add_executable(your_program
src/your_program.cpp
)
target_link_libraries(your_program
livision::livision
)
💻 Example Program
#include "livision/Viewer.hpp"
#include "livision/marker/Grid.hpp"
#include "livision/object/primitives.hpp"
int main() {
auto viewer = livision::Viewer::Instance({
.width = 1280,
.height = 720,
});
// UI callback
float theta = 0;
viewer->RegisterUICallback([&]() {
ImGui::SliderFloat("theta", &theta, 0, M_PI * 2.0F);
if (ImGui::Button("Close")) {
viewer->Close();
}
});
// Grid
auto grid = livision::Grid::Instance({.scale = {15.0, 15.0, 0.0}});
grid->SetResolution(1.0)->SetColor(livision::color::dark_gray);
viewer->AddObject(grid);
// Sphere
auto sphere =
livision::Sphere::Instance({.pos = {0.0, 0.0, 0.0},
.scale = {2.0, 2.0, 2.0},
.color = livision::color::rainbow_z,
.wire_color = livision::color::black});
viewer->AddObject(sphere);
while (viewer->SpinOnce()) {
sphere->SetRadRotation({0, 0, theta});
}
return 0;
}
🐍 Python
The same API is available from Python (pybind11).
pip install livision
import livision as lv
viewer = lv.Viewer()
viewer.add_object(lv.Grid(scale=[15.0, 15.0, 0.0]))
viewer.add_object(lv.Sphere(scale=2.0, color=lv.color.rainbow_z, wire_color=lv.color.black))
while viewer.spin_once():
pass
See the Python guide for the full mapping from C++.
📄 License
MIT. See LICENSE. Third-party notices are listed in NOTICE.
🙏 Special thanks to koide3/iridescene, which greatly inspired this project.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
livision-0.3.8.tar.gz
(9.9 MB
view details)
File details
Details for the file livision-0.3.8.tar.gz.
File metadata
- Download URL: livision-0.3.8.tar.gz
- Upload date:
- Size: 9.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84c4847d6abc6f018b60d430ce519c40e8a615dd8c3510f93d745639812b41e5
|
|
| MD5 |
77c3d5f09ce4b6495dc385309ca4a2db
|
|
| BLAKE2b-256 |
3c57fac48683794b0e9ce7a41857e5d82d3352a3358f53213061f5d226c9524b
|
Provenance
The following attestation bundles were made for livision-0.3.8.tar.gz:
Publisher:
pypi.yml on hamataku/LiVision
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
livision-0.3.8.tar.gz -
Subject digest:
84c4847d6abc6f018b60d430ce519c40e8a615dd8c3510f93d745639812b41e5 - Sigstore transparency entry: 2737523813
- Sigstore integration time:
-
Permalink:
hamataku/LiVision@e743ac428584ae5fb7ee3e734923afeac0a11881 -
Branch / Tag:
refs/tags/v0.3.8 - Owner: https://github.com/hamataku
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@e743ac428584ae5fb7ee3e734923afeac0a11881 -
Trigger Event:
push
-
Statement type: