Iridescence is a light-weight visualization library for rapid prototyping of 3D algorithms. This library is designed for accelerating personal research and development projects (mainly focuing on point-cloud-related algorithms) and is NOT intended to be a general-purpose visualization library with rich rendering capabilities.
Documentation (en), Documentation (日本語), API(C++), API(Python)
on Ubuntu 22.04 / 24.04 and Windows
Features
What this library provides:
- An easy-to-use 3D visualization framework (inpaticular suitable for rendering point clouds)
- Tightly integrated Dear ImGui interfaces for rapid UI design
What this library does NOT provide:
- Realistic rendering and shading
- Rich textured 3D mesh rendering
See documentation for details.
Dependencies
- GLFW (zlib/libpng license)
- gl3w (Public domain)
- Dear ImGui (MIT license)
- ImGuizmo (MIT license)
- implot (MIT license)
- Eigen (MPL2 license)
- rapidhash (MIT license)
- portable-file-dialogs (WTFPL license)
Installation
C++ : Install from PPA (Ubuntu)
# Install from PPA
sudo add-apt-repository -y ppa:koide3/iridescence
sudo apt install libiridescence-dev
Python : Install from PyPI (Ubuntu and Windows)
Note : Source installation is required for Python 3.14.
# Install from PyPI
pip install pyridescence
Install from source
C++ : Install from source (Ubuntu)
# Install dependencies
sudo apt-get install -y libglm-dev libglfw3-dev libpng-dev libjpeg-dev libeigen3-dev
# Build and install Iridescence
git clone https://github.com/koide3/iridescence --recursive
mkdir iridescence/build && cd iridescence/build
cmake ..
make -j
sudo make install
Python : Install from source
git clone https://github.com/koide3/iridescence --recursive
cd iridescence
pip install .
Usage
C++ : Use Iridescence in your cmake project
# Find package
find_package(Iridescence REQUIRED)
# Add include dirs and link libraries
add_executable(your_program
src/your_program.cpp
)
target_link_libraries(your_program
Iridescence::Iridescence
)
C++ : Minimum example
C++:
#include <glk/primitives/primitives.hpp>
#include <guik/viewer/light_viewer.hpp>
int main(int argc, char** argv) {
// Create a viewer instance (global singleton)
auto viewer = guik::LightViewer::instance();
float angle = 0.0f;
// Register a callback for UI rendering
viewer->register_ui_callback("ui", [&]() {
// In the callback, you can call ImGui commands to create your UI.
// Here, we use "DragFloat" and "Button" to create a simple UI.
ImGui::DragFloat("Angle", &angle, 0.01f);
if (ImGui::Button("Close")) {
viewer->close();
}
});
// Spin the viewer until it gets closed
while (viewer->spin_once()) {
// Objects to be rendered are called "drawables" and managed with unique names.
// Here, solid and wire spheres are registered to the viewer respectively with
// the "Rainbow" and "FlatColor" coloring schemes.
// The "Rainbow" coloring scheme encodes the height of each fragment using the
// turbo colormap by default.
Eigen::AngleAxisf transform(angle, Eigen::Vector3f::UnitZ());
viewer->update_drawable("sphere", glk::Primitives::sphere(), guik::Rainbow(transform));
viewer->update_drawable("wire_sphere", glk::Primitives::wire_sphere(), guik::FlatColor({0.1f, 0.7f, 1.0f, 1.0f}, transform));
}
return 0;
}
Python : Minimum example
#!/usr/bin/python3
import numpy
from scipy.spatial.transform import Rotation
from pyridescence import *
# Create a viewer instance (global singleton)
viewer = guik.LightViewer.instance()
angle = 0.0
# Define a callback for UI rendering
def ui_callback():
# In the callback, you can call ImGui commands to create your UI.
# Here, we use "DragFloat" and "Button" to create a simple UI.
global angle
_, angle = imgui.drag_float('angle', angle, 0.01)
if imgui.button('close'):
viewer.close()
# Register a callback for UI rendering
viewer.register_ui_callback('ui', ui_callback)
# Spin the viewer until it gets closed
while viewer.spin_once():
# Objects to be rendered are called "drawables" and managed with unique names.
# Here, solid and wire spheres are registered to the viewer respectively with
# the "Rainbow" and "FlatColor" coloring schemes.
# The "Rainbow" coloring scheme encodes the height of each fragment using the
# turbo colormap by default.
transform = numpy.identity(4)
transform[:3, :3] = Rotation.from_rotvec([0.0, 0.0, angle]).as_matrix()
viewer.update_drawable('sphere', glk.primitives.sphere(), guik.Rainbow(transform))
viewer.update_drawable('wire_sphere', glk.primitives.wire_sphere(), guik.FlatColor(0.1, 0.7, 1.0, 1.0, transform))
See documentation for details.
Some use examples in my academic works
License
This package is released under the MIT license.
Metadata
Release files for pyridescence 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyridescence-1.0.3.tar.gz | 1.2 MB | Details |
Built distributions (wheels)
Total release size: 147.7 MB
Release files / pyridescence-1.0.3.tar.gz
| Download URL | pyridescence-1.0.3.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1288ed6056307e2b39f988bc46dec6976f9def656c3a37e47e30be7aebf51b14
|
|
BLAKE2b-256 checksum How to use checksums |
b6cc1f690a5c499520837134e5b1a16337f47b56c3a8486faa0433d5f550a123
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp314-cp314-win_amd64.whl
| Download URL | pyridescence-1.0.3-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 13.5 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1ab9221e79e8c3396d27982af4d0c6bc863720703b21174c40c7fde326f2067c
|
|
BLAKE2b-256 checksum How to use checksums |
f23184124594b65f35f4472817b848212f134d74b3f37e864ba45928d9425876
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.0.3-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3ac187f6c5da66db12b6d6045513d2c1057d4be472137713c49264abc8bf6f3f
|
|
BLAKE2b-256 checksum How to use checksums |
dc74983c7acffad9476170d29d70a86fec67eea2af49fe7efc7def0a3f808700
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.0.3-cp314-cp314-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
8a47fa701584ed8395de6da9fb0d0bafadb13b7935d86baf0ea0d027e63da4b5
|
|
BLAKE2b-256 checksum How to use checksums |
99619a07bcb6235457c0ec503bde27ada2c718da93d1059034e48de7cc6341c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp313-cp313-win_amd64.whl
| Download URL | pyridescence-1.0.3-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 13.3 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c97b1f9e94b0b683cb76e361d2add697c71cb1cc726501c1829bd4971181a1a0
|
|
BLAKE2b-256 checksum How to use checksums |
d55f6a2bed6049d7eb318c2996511a3f01cfd0a57dcaf6b09873a2d040d2ac60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.0.3-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b21d3e588202837dc56fdb89131efeeb3ec7ed9e9b0263f64b1285d582228183
|
|
BLAKE2b-256 checksum How to use checksums |
db0f13106f9fa12ef7ab575d4fbe2d52ca49553b57dccb7a80cb9ea83dca5b05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.0.3-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
045ce2fd6a3c39c861d9bc5df0e26b6bce26090fc6e1a49e60a0d956ba4ec943
|
|
BLAKE2b-256 checksum How to use checksums |
49ffd90057550c084497e66509f5cc15f6c71c6ce9b19d439c0b1b4ce4504e2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp312-cp312-win_amd64.whl
| Download URL | pyridescence-1.0.3-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 13.3 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a3709fd5e7c602c36475e8d7da399f2439189818f151ff2e187aa0531cea8ce6
|
|
BLAKE2b-256 checksum How to use checksums |
bf24881eefabd2df16b9a758d311c9a47d7ddbaaceced268aab7a08efa47721f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.0.3-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
fef63fa6fdacf77a4e612b4ca98c62271b04324d29287ee0f52648b7d630785b
|
|
BLAKE2b-256 checksum How to use checksums |
2b8d65bad23cb1b9c16d6c78ef46c0bc19fdf835ce60b7eb3d3ae1cd4829acfa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.0.3-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
57da2b93d4d874a3ace9d474eb4a2cda63f687668b0a68a33ab4dab66858d502
|
|
BLAKE2b-256 checksum How to use checksums |
e7723be561d45ebd25bf27707432862881a27b627411367572c938c46a73b9cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp311-cp311-win_amd64.whl
| Download URL | pyridescence-1.0.3-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 13.3 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
897d154fa56a6fb6ee29b968a5ccd56d70efeb4ca600369a88a5393584ef2298
|
|
BLAKE2b-256 checksum How to use checksums |
aa5daaec946b2949b15f133e5a5a0af3804fcecd7f3ade12f206e406fd7fb7ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.0.3-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
16ed6e4604808316efcb0012b2131589378d3cb700c2a511969f6b31093913d4
|
|
BLAKE2b-256 checksum How to use checksums |
0a4be3c40e8dfbd390a26bd4cbb1d92068ad03e9a97afe6bca84ca4fbd27c80b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.0.3-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
15012fb3293175942446e4906a75163b62ece377dbe9b7a4fd72520c30dacff3
|
|
BLAKE2b-256 checksum How to use checksums |
d60f13be5f126f9c6dc686ecfc915d30d8cb31c28d7b02a1978544de53412f48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp310-cp310-win_amd64.whl
| Download URL | pyridescence-1.0.3-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 13.3 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f7e2390f7b5fc7677d7bc71fd9634eacdb97504e98e3988c55a43880c86b3d2d
|
|
BLAKE2b-256 checksum How to use checksums |
d7e647410a0055c5976947f71fdd699de87e00a45d790ed51f7efb500d39d4d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.0.3-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.2 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9589fd4ec70501e5d81c011ba22ae7867e498a335df011f106dfd94d74d4d1e0
|
|
BLAKE2b-256 checksum How to use checksums |
3a288fdd4058015d7e1215129fe514ff0f243440e0e6789dd9f81ef069d93d16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pyridescence-1.0.3-cp310-cp310-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.0.3-cp310-cp310-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
747d62ca66d536c29089d41d728f346ee6471e052680b1e5628ca4cbd2559cb5
|
|
BLAKE2b-256 checksum How to use checksums |
2f68324baf8aa6c8bb5eef8639871bee7802fff867e9459df4609c59294e1870
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|