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

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.0
File Size Uploaded Provenance Actions
pyridescence-1.1.0.tar.gz 1.2 MB Without provenance Details for pyridescence-1.1.0.tar.gz

Built distributions (wheels)

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

Total release size: 149.7 MB

Release files / pyridescence-1.1.0.tar.gz

Download URL pyridescence-1.1.0.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
762f90ec57986e42df7541baddf857613eaa7b051aea8bad13796dc8ef2013cb
BLAKE2b-256 checksum
How to use checksums
c37bf3c41c34db63bc5e8a3e2f38e480e2266829c0b50d2aff8478f688daa562
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.0-cp314-cp314-win_amd64.whl

Download URL pyridescence-1.1.0-cp314-cp314-win_amd64.whl
Size 13.7 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
bab5598db4dcfd06f23efb89156220fed11db5ec0f5463ced034dc06cdc3d7cf
BLAKE2b-256 checksum
How to use checksums
b6ddda2f18ba0e44bd0ec5f425bd04f28f4a8aa5a5d1d2e5dd0e60d45b11a157
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.0-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.0-cp314-cp314-manylinux_2_28_x86_64.whl
Size 8.4 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
be193f8ff9198c3e3350647298313a7c9b6f7063271fdc285c0585cc0262a458
BLAKE2b-256 checksum
How to use checksums
66f5ac1665c71ec364982bd3582269c0ac96efe70faa7007595418c6128286be
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.0-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.0-cp314-cp314-manylinux_2_28_aarch64.whl
Size 7.8 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d4824e6e6c092e2e9f980e108174c965286f7ac53b02df09b345ba4c3f36f80e
BLAKE2b-256 checksum
How to use checksums
db723aed3ea10c3fe8ef58e8d4f5092a656e200be831a94908430f5cb81dff27
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.0-cp313-cp313-win_amd64.whl

Download URL pyridescence-1.1.0-cp313-cp313-win_amd64.whl
Size 13.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
54aaf0ffd227acec536369dae0bd36b19dea4bad91f41bcdf44a5834d35165c4
BLAKE2b-256 checksum
How to use checksums
8c003783cbe3829e3fda421e96d85e20c70cf57287ce7c12a4f5a1b2db3d56d2
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.0-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 8.4 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7331eeddc592d6e14a9d13ef025b8c5f66741bfc3dd36ca3cbcbe95b3b423b16
BLAKE2b-256 checksum
How to use checksums
59fd5029ac9996b0fd77bdd7b13e0f66b4a736fb5850276b1cab7109915c9670
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.0-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.0-cp313-cp313-manylinux_2_28_aarch64.whl
Size 7.8 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9d84bbffde645b2887299f3a75646a11245e253b321a460f5ca14a5449673197
BLAKE2b-256 checksum
How to use checksums
076d6efcd271a86ee99a241699e198090ea3f9d0ee07927fa08632c755600bd3
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.0-cp312-cp312-win_amd64.whl

Download URL pyridescence-1.1.0-cp312-cp312-win_amd64.whl
Size 13.5 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
7d4b55815cefa57e3c8b5b12408404c643ab1c72b750cb67bfa1cd55d9fa8074
BLAKE2b-256 checksum
How to use checksums
920849f011e372903860affaa43ca9861b6451be5e51dcf97ab837809c58a179
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.0-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 8.4 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
22b02739221df49029a030035582dbb0775a98045fe9f4c53f9b9b54d367e803
BLAKE2b-256 checksum
How to use checksums
3d6d32234b309afc0e2e66eb90c51021a01be26d9a2c765a825ab010c91b9470
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.0-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.0-cp312-cp312-manylinux_2_28_aarch64.whl
Size 7.8 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
42be3264054a075e41ff5be448d7746dab69ec4756c5a1621407ca5912f50af7
BLAKE2b-256 checksum
How to use checksums
ca6c01d1d1289271884bf043886c361974a4126d9796afc64a07d0643a9a4ec1
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.0-cp311-cp311-win_amd64.whl

Download URL pyridescence-1.1.0-cp311-cp311-win_amd64.whl
Size 13.5 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b239b2db7255a8c4ea302bc6c83cd4768c9527addaa565d6a5896e27d259edd3
BLAKE2b-256 checksum
How to use checksums
887d3e0c884290a8b9d9c1e42f18797009baf37375135bb83a51f3afe86cec1e
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.0-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 8.4 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
344241be32eeaed24a378342cce1c8be65f165b7027a8447b2e5c15e26a65bf0
BLAKE2b-256 checksum
How to use checksums
fba8d27c1a8dde270399ce9bc1eb4621a75d8524816bb7b65685768656f2a423
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.0-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.0-cp311-cp311-manylinux_2_28_aarch64.whl
Size 7.8 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a647690a49156ca1f4030e0665c19e017f8b10584bfbdccb33dceb70e1ce7c82
BLAKE2b-256 checksum
How to use checksums
c243cbe35127b1cc9e8f697c56129b8242dfc39152c4412d5413c4352be880c8
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.0-cp310-cp310-win_amd64.whl

Download URL pyridescence-1.1.0-cp310-cp310-win_amd64.whl
Size 13.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
42c8f78dd61729d26b4f71ede2cc86f6634091618057bd09b2e5b54f94904900
BLAKE2b-256 checksum
How to use checksums
a7646af783b11604384a93af8532ba05564105ddd07ad20bd7096c7e7e14caad
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.0-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL pyridescence-1.1.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 8.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
df3b7fe5bddff5800b2046d4127ee3afb7608f0eb45b957ad97737b53ba00f83
BLAKE2b-256 checksum
How to use checksums
8b36ad684548f019b5233809fa9ee565f8e8c44089f84c88ce2412b7f19a2624
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.0-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL pyridescence-1.1.0-cp310-cp310-manylinux_2_28_aarch64.whl
Size 7.8 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3466dcc6e6c1aa0dbfba6a9802755bba2b838840ad8442ce15413fdd8c1e21fe
BLAKE2b-256 checksum
How to use checksums
18f600fcd224bee033527cd8c4e3a4ea6c402a59a34fad58300df1e028bad0fe
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.0

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