Skip to main content

Iridescence

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)

ppa PyPI - Version Build 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

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))

example_01

See documentation for details.

Some use examples in my academic works

ral2021 iros2022

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)

Source distribution for pyridescence 1.1.1
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)

Table of built distributions (wheels) for pyridescence 1.1.1
File Actions
pyridescence-1.1.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pyridescence-1.1.1-cp314-cp314-win_amd64.whl
pyridescence-1.1.1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for pyridescence-1.1.1-cp314-cp314-manylinux_2_28_x86_64.whl
pyridescence-1.1.1-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.1-cp314-cp314-manylinux_2_28_aarch64.whl
pyridescence-1.1.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pyridescence-1.1.1-cp313-cp313-win_amd64.whl
pyridescence-1.1.1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for pyridescence-1.1.1-cp313-cp313-manylinux_2_28_x86_64.whl
pyridescence-1.1.1-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.1-cp313-cp313-manylinux_2_28_aarch64.whl
pyridescence-1.1.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pyridescence-1.1.1-cp312-cp312-win_amd64.whl
pyridescence-1.1.1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for pyridescence-1.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
pyridescence-1.1.1-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.1-cp312-cp312-manylinux_2_28_aarch64.whl
pyridescence-1.1.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pyridescence-1.1.1-cp311-cp311-win_amd64.whl
pyridescence-1.1.1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for pyridescence-1.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
pyridescence-1.1.1-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.1-cp311-cp311-manylinux_2_28_aarch64.whl
pyridescence-1.1.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pyridescence-1.1.1-cp310-cp310-win_amd64.whl
pyridescence-1.1.1-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details for pyridescence-1.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
pyridescence-1.1.1-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.1-cp310-cp310-manylinux_2_28_aarch64.whl

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page