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.2

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.2
File Size Uploaded Provenance Actions
pyridescence-1.1.2.tar.gz 5.7 MB Without provenance Details for pyridescence-1.1.2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for pyridescence 1.1.2
File Actions
pyridescence-1.1.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pyridescence-1.1.2-cp314-cp314-win_amd64.whl
pyridescence-1.1.2-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.2-cp314-cp314-manylinux_2_28_x86_64.whl
pyridescence-1.1.2-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.2-cp314-cp314-manylinux_2_28_aarch64.whl
pyridescence-1.1.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pyridescence-1.1.2-cp313-cp313-win_amd64.whl
pyridescence-1.1.2-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.2-cp313-cp313-manylinux_2_28_x86_64.whl
pyridescence-1.1.2-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.2-cp313-cp313-manylinux_2_28_aarch64.whl
pyridescence-1.1.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pyridescence-1.1.2-cp312-cp312-win_amd64.whl
pyridescence-1.1.2-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.2-cp312-cp312-manylinux_2_28_x86_64.whl
pyridescence-1.1.2-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.2-cp312-cp312-manylinux_2_28_aarch64.whl
pyridescence-1.1.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pyridescence-1.1.2-cp311-cp311-win_amd64.whl
pyridescence-1.1.2-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.2-cp311-cp311-manylinux_2_28_x86_64.whl
pyridescence-1.1.2-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.2-cp311-cp311-manylinux_2_28_aarch64.whl
pyridescence-1.1.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pyridescence-1.1.2-cp310-cp310-win_amd64.whl
pyridescence-1.1.2-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.2-cp310-cp310-manylinux_2_28_x86_64.whl
pyridescence-1.1.2-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details for pyridescence-1.1.2-cp310-cp310-manylinux_2_28_aarch64.whl

Total release size: 62.1 MB

Release files / pyridescence-1.1.2.tar.gz

Download URL pyridescence-1.1.2.tar.gz
Size 5.7 MB
Tags Source
SHA-256 checksum
How to use checksums
7c9867e4d3be2e0ccd80b48aa798f00763e6c279a46b93a264f7555bc54ddb54
BLAKE2b-256 checksum
How to use checksums
6be235765104561953a5b9c6219bf01bcb32299255daade2497f0fbf8d7a2026
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.2-cp314-cp314-win_amd64.whl

Download URL pyridescence-1.1.2-cp314-cp314-win_amd64.whl
Size 2.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
ad7c1842689e1d4d4d8d902d6db047328b518b9af6cb1f59b9e4a555138370ba
BLAKE2b-256 checksum
How to use checksums
c993990fd69629a145e987870d86e6b5c5a284962c8af516e12a4fe1385a4e44
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.2-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.2-cp314-cp314-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
587221f0ff1bfb3192c00b86fc20a523f6d7a0bda514198887271a9eb8a1426d
BLAKE2b-256 checksum
How to use checksums
57fc3afd5d784e418e2a1a4ccd2e6b6f928346d66593ad0efd274d107a956ee1
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.2-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.2-cp314-cp314-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8398fc4f950f3cd97c12777b8d0d02837c74f278d9e12bb9b189a6bb81b5088d
BLAKE2b-256 checksum
How to use checksums
87f07d9f505d72eb65e6e73b22b531fa2cb6e2d61c6520058add1bba91d8745f
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.2-cp313-cp313-win_amd64.whl

Download URL pyridescence-1.1.2-cp313-cp313-win_amd64.whl
Size 2.9 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
d300210308b88c2ae1dc27bcf55250e671b6035e0e62fbf2f5337375ca579a42
BLAKE2b-256 checksum
How to use checksums
7681a077969429d1397d68a87e873fea3184399f76b8412961c9b1a8c3b7e119
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.2-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
993e829fa13ce7d4f5109dafa253d38bf3361c4f79b2230b03998ffecf9384f7
BLAKE2b-256 checksum
How to use checksums
48ddfa4aef2a986ff1c8a20a12df54c28e44b98095fa193bd7916888a0cc98a0
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.2-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.2-cp313-cp313-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c6855bc526e4a33d5aa6b3b9c9cbe7a5779191e68941a791b1e0076ef9c90724
BLAKE2b-256 checksum
How to use checksums
5c27dd1d2ce8e4dc61c23a77a881f9293b9730774332efb3250663cd11c3242b
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.2-cp312-cp312-win_amd64.whl

Download URL pyridescence-1.1.2-cp312-cp312-win_amd64.whl
Size 2.9 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
f0aa874a78c81134bc7a31aafe7a0509e849558eab023a86a717af1dd2911c01
BLAKE2b-256 checksum
How to use checksums
95e11c01f4090cadf7bb0aaa903a4eb76ef475a1c793c26d8dd64dda6dd9d855
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.2-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
49b965ea2f8c162001b2c97ddecd3f94b8c5ff89a472165e10b1d28c62e4031c
BLAKE2b-256 checksum
How to use checksums
a6c090284af6bbcecdb9704b6a582c338b62643f47d6346135008d5481717eb9
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.2-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.2-cp312-cp312-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
42502e3a78e57725e822961be06d64c43653c2597fa746a2933935d328fcc80b
BLAKE2b-256 checksum
How to use checksums
be06bd4b1214cfa50f6ec1f419814312b689ba9ffac87c183e179b4f6d0e44aa
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.2-cp311-cp311-win_amd64.whl

Download URL pyridescence-1.1.2-cp311-cp311-win_amd64.whl
Size 2.9 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
f847249f34df74cb57a0dcaf72daaa35192f1e69fc78597176234e2d9ceaf8f4
BLAKE2b-256 checksum
How to use checksums
b098572821f05d1b7c9dde84b935344e53cb9d2d487de552e402179d938cad48
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.2-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7f8854eba758c07ef9842472b3d4c8593bd55590e9367a25eab358c6e9c5b471
BLAKE2b-256 checksum
How to use checksums
42ea2d8ee70f2e72cdf41d04c799e55ceb628af9553a82a38dbf306d16524187
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.2-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.2-cp311-cp311-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1db5ff2ce93460f280a3151300f2f025ead8d4d9ff6919b9396f9b0e09edd4c4
BLAKE2b-256 checksum
How to use checksums
2d8be307374e2861c7c75c4e80031a1b3cf8c37a4420a1bc0deb56766cb27d12
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.2-cp310-cp310-win_amd64.whl

Download URL pyridescence-1.1.2-cp310-cp310-win_amd64.whl
Size 2.9 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
5e708ec7e1f0c6b3ed57cbf6776e8ff96c28c56efd76a5f52d01b441bba5f134
BLAKE2b-256 checksum
How to use checksums
98c7a6ac40714c0a99c935f380c89c86361a3a253ee2b165077bef4e09de60d5
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.2-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bda7d196b1c9aca3767a79bb3406befcd3f1a781081f66c6e704d7b332366e1d
BLAKE2b-256 checksum
How to use checksums
bebf4ba2ae17da4924faf13aaf861126090fd6c46dfc069a383feb1836c247a3
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.2-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.2-cp310-cp310-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6da3731b05d136b70150abaefe1dbad065da467b3549988a7d2ccf8b45a4185f
BLAKE2b-256 checksum
How to use checksums
5ba72ef7171a2767a63fbee9751174f998020b9d42cf88f684370898a12b27e6
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.2

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