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

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.0.3
File Size Uploaded
pyridescence-1.0.3.tar.gz 1.2 MB Details

Built distributions (wheels)

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

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

Release history Release notifications | RSS feed

This release

1.0.3 This release

16 release files

1.0.2

16 release files

1.0.1

13 release files

0.1.9

13 release files

0.1.8

13 release files

0.1.7

10 release files

0.1.6

2 release files

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