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.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyridescence-1.1.1.tar.gz | 1.2 MB | Without provenance | Details for pyridescence-1.1.1.tar.gz |
Built distributions (wheels)
Total release size: 150.9 MB
Release files / pyridescence-1.1.1.tar.gz
| Download URL | pyridescence-1.1.1.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf9e10951f3b97570f484db86c09deaebdb4091455bce84527eea4b587d955ca
|
|
BLAKE2b-256 checksum How to use checksums |
9d8a35fc34ac9426e0f727d8d4c7fb857eacaec7833aac9868a1e183349d597f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp314-cp314-win_amd64.whl
| Download URL | pyridescence-1.1.1-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 13.7 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
853a189fe401be6641410fb8f53156c70b8b58cb6094477b32623a8c77ea6864
|
|
BLAKE2b-256 checksum How to use checksums |
f45b65841ca4e12e85cc39640136410847b796db83df8007061eff665beffa33
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.1.1-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b120b6d14dedfa6c332683ba4cac6551cae5efe99a7c81b5bcc499d1e7acf5b2
|
|
BLAKE2b-256 checksum How to use checksums |
99dd7be27f2f133c2e97bc83d51c3c67d27055965f06f6ad208bebfdf432eb82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.1.1-cp314-cp314-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
65c19d6ff931fde2fd556b47cde906850f310e08d15094d65922de4cd815e704
|
|
BLAKE2b-256 checksum How to use checksums |
517253d6f9444c60703dde19c2ab4b7a1f117c0ec86798d0811e68af0ef4693c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp313-cp313-win_amd64.whl
| Download URL | pyridescence-1.1.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 13.6 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
12e49d5665e5c6d928f3873fa6b1ec21654e3f1799c9d5e1d7f6187959c96dec
|
|
BLAKE2b-256 checksum How to use checksums |
1de3cdc3c81290bc061e292432da66e9cf6b6e2347f4b802ee3e40433250d278
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.1.1-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
ddd8c8866d0ad8a5c3f58f32ca8816035a5ff9cf972fcfdb29338018edbd5511
|
|
BLAKE2b-256 checksum How to use checksums |
42662449d1dfabd9dd786f945a9c55791a66536bfb54bdc40a5701cd92bdad8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.1.1-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
f3e56b7a2ea184f24ca80932347911af1c4e944967f6167337e9cce393f9c3e8
|
|
BLAKE2b-256 checksum How to use checksums |
c1dff32c07be34f3eea3d31438b332c49c5bcbbf249a600f03e6a0bc501ef731
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp312-cp312-win_amd64.whl
| Download URL | pyridescence-1.1.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 13.6 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
adc75a6e7e946a030cfd03c901cc0546df0160a2729fe312a86034ca96e864fb
|
|
BLAKE2b-256 checksum How to use checksums |
3d46e59805b6c103a402188d1f6de676b85a3945ad48b506c19c6cfeb7a0a9be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.1.1-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1c46cdc379b2da1b75219e1ecae35dca846f858b4cff5e3979627d5b9ae51f9a
|
|
BLAKE2b-256 checksum How to use checksums |
312c3a3894bc48404402f4db8182b42fcfc30b06e9781fa9a3ea61e69dc98e2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.1.1-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
15b0e1c230be453a5f7b5b1cedd2270d766c642e0cce57b9da23a4de74aa7d6b
|
|
BLAKE2b-256 checksum How to use checksums |
e014515759c62c2366ec9187967e79211487434f96053b45a46d4cdd289928c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp311-cp311-win_amd64.whl
| Download URL | pyridescence-1.1.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 13.5 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e5168c974c58a4479f9b590f343d90b8747ce02db2ab2a44d6cc8624bfa57f03
|
|
BLAKE2b-256 checksum How to use checksums |
f4cfe804ae3779385d687690908153261a2ab3b386cfda5e0a0c1463ec718174
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.1.1-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e133a440c579eb01f7a96c12ef7030e23d0164eb6d6c8062e0dc524e6780e65d
|
|
BLAKE2b-256 checksum How to use checksums |
ff02e5039e46238f3d1551783fbc141f50dade17588c36b0ccea6ef07283a03f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.1.1-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
74dbe763950484f1d7562d07994200ad6f48f07d7e4abb5c68333338cc66019e
|
|
BLAKE2b-256 checksum How to use checksums |
e7a59a07097be017850c8da9fcfb20079bbc71e05e86f19a56ae4585259c9a7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp310-cp310-win_amd64.whl
| Download URL | pyridescence-1.1.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 13.5 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5c700aef981ede052c79f16f4e7dfa3fd5cf6c8f1eea2cba5a2aaaaac7aa45c1
|
|
BLAKE2b-256 checksum How to use checksums |
bd42d5ef89341934d410161f4df3a7a4bb025087ce29bfa047e1e37c91c9051a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | pyridescence-1.1.1-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 8.5 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b7336b05fa48037e7540c6cd6b5bc0881c3d44ec2f759128a45155dd485a3d26
|
|
BLAKE2b-256 checksum How to use checksums |
cb78f766b4491210b1c0a9230056c695cacf8af26ec94052266da1dd62b44ce8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pyridescence-1.1.1-cp310-cp310-manylinux_2_28_aarch64.whl
| Download URL | pyridescence-1.1.1-cp310-cp310-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
9641595f3ed437670df10ac9e28c581acdb656bcc51cea6a6dc1286c5b88cc1c
|
|
BLAKE2b-256 checksum How to use checksums |
a64376f639cd251950b8f13e0b1e5329d6338057f0b2a12ca2f4544a8028f63f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for pyridescence 1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.