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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyridescence-1.0.3.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyridescence-1.0.3-cp314-cp314-win_amd64.whl (13.5 MB view details)

Uploaded CPython 3.14Windows x86-64

pyridescence-1.0.3-cp314-cp314-manylinux_2_28_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

pyridescence-1.0.3-cp314-cp314-manylinux_2_28_aarch64.whl (7.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

pyridescence-1.0.3-cp313-cp313-win_amd64.whl (13.3 MB view details)

Uploaded CPython 3.13Windows x86-64

pyridescence-1.0.3-cp313-cp313-manylinux_2_28_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

pyridescence-1.0.3-cp313-cp313-manylinux_2_28_aarch64.whl (7.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

pyridescence-1.0.3-cp312-cp312-win_amd64.whl (13.3 MB view details)

Uploaded CPython 3.12Windows x86-64

pyridescence-1.0.3-cp312-cp312-manylinux_2_28_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

pyridescence-1.0.3-cp312-cp312-manylinux_2_28_aarch64.whl (7.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

pyridescence-1.0.3-cp311-cp311-win_amd64.whl (13.3 MB view details)

Uploaded CPython 3.11Windows x86-64

pyridescence-1.0.3-cp311-cp311-manylinux_2_28_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

pyridescence-1.0.3-cp311-cp311-manylinux_2_28_aarch64.whl (7.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

pyridescence-1.0.3-cp310-cp310-win_amd64.whl (13.3 MB view details)

Uploaded CPython 3.10Windows x86-64

pyridescence-1.0.3-cp310-cp310-manylinux_2_28_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

pyridescence-1.0.3-cp310-cp310-manylinux_2_28_aarch64.whl (7.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

File details

Details for the file pyridescence-1.0.3.tar.gz.

File metadata

  • Download URL: pyridescence-1.0.3.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyridescence-1.0.3.tar.gz
Algorithm Hash digest
SHA256 1288ed6056307e2b39f988bc46dec6976f9def656c3a37e47e30be7aebf51b14
MD5 f223985778f9d58ab48b315460ae8f90
BLAKE2b-256 b6cc1f690a5c499520837134e5b1a16337f47b56c3a8486faa0433d5f550a123

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1ab9221e79e8c3396d27982af4d0c6bc863720703b21174c40c7fde326f2067c
MD5 4d33c8a30c45d0ff5f617619ea114f55
BLAKE2b-256 f23184124594b65f35f4472817b848212f134d74b3f37e864ba45928d9425876

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ac187f6c5da66db12b6d6045513d2c1057d4be472137713c49264abc8bf6f3f
MD5 b93ba9cd79caa8836bae56a46013aa3d
BLAKE2b-256 dc74983c7acffad9476170d29d70a86fec67eea2af49fe7efc7def0a3f808700

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8a47fa701584ed8395de6da9fb0d0bafadb13b7935d86baf0ea0d027e63da4b5
MD5 a5f364cc07c8e18eb47157aafe096bd6
BLAKE2b-256 99619a07bcb6235457c0ec503bde27ada2c718da93d1059034e48de7cc6341c6

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c97b1f9e94b0b683cb76e361d2add697c71cb1cc726501c1829bd4971181a1a0
MD5 cd6dcf6ee93542cd1d3a39b06c8bd244
BLAKE2b-256 d55f6a2bed6049d7eb318c2996511a3f01cfd0a57dcaf6b09873a2d040d2ac60

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b21d3e588202837dc56fdb89131efeeb3ec7ed9e9b0263f64b1285d582228183
MD5 c3364e244e9a98c2d05f2f6ca40d1bb2
BLAKE2b-256 db0f13106f9fa12ef7ab575d4fbe2d52ca49553b57dccb7a80cb9ea83dca5b05

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 045ce2fd6a3c39c861d9bc5df0e26b6bce26090fc6e1a49e60a0d956ba4ec943
MD5 016f654db7a3ce6d897839d7b9db95ea
BLAKE2b-256 49ffd90057550c084497e66509f5cc15f6c71c6ce9b19d439c0b1b4ce4504e2d

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a3709fd5e7c602c36475e8d7da399f2439189818f151ff2e187aa0531cea8ce6
MD5 fb576f14a960bb645e572d4b3f2ea64d
BLAKE2b-256 bf24881eefabd2df16b9a758d311c9a47d7ddbaaceced268aab7a08efa47721f

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fef63fa6fdacf77a4e612b4ca98c62271b04324d29287ee0f52648b7d630785b
MD5 8444c38d72d383cd0133ead12bff8cb9
BLAKE2b-256 2b8d65bad23cb1b9c16d6c78ef46c0bc19fdf835ce60b7eb3d3ae1cd4829acfa

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 57da2b93d4d874a3ace9d474eb4a2cda63f687668b0a68a33ab4dab66858d502
MD5 2eeeb36ab8c5644d3d68fb4ac0e43ffb
BLAKE2b-256 e7723be561d45ebd25bf27707432862881a27b627411367572c938c46a73b9cb

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 897d154fa56a6fb6ee29b968a5ccd56d70efeb4ca600369a88a5393584ef2298
MD5 5ca0702bdfc3da68a3370ff7104c87a9
BLAKE2b-256 aa5daaec946b2949b15f133e5a5a0af3804fcecd7f3ade12f206e406fd7fb7ea

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16ed6e4604808316efcb0012b2131589378d3cb700c2a511969f6b31093913d4
MD5 088f5b5b3671c1978e0669ac62085145
BLAKE2b-256 0a4be3c40e8dfbd390a26bd4cbb1d92068ad03e9a97afe6bca84ca4fbd27c80b

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 15012fb3293175942446e4906a75163b62ece377dbe9b7a4fd72520c30dacff3
MD5 332605a3ef7fb528aad99e73528ebbef
BLAKE2b-256 d60f13be5f126f9c6dc686ecfc915d30d8cb31c28d7b02a1978544de53412f48

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f7e2390f7b5fc7677d7bc71fd9634eacdb97504e98e3988c55a43880c86b3d2d
MD5 43b116aeaad4a63586ae23fa2971cffe
BLAKE2b-256 d7e647410a0055c5976947f71fdd699de87e00a45d790ed51f7efb500d39d4d0

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9589fd4ec70501e5d81c011ba22ae7867e498a335df011f106dfd94d74d4d1e0
MD5 b6a5a85a38353e7dcd5e1a30aaacb195
BLAKE2b-256 3a288fdd4058015d7e1215129fe514ff0f243440e0e6789dd9f81ef069d93d16

See more details on using hashes here.

File details

Details for the file pyridescence-1.0.3-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyridescence-1.0.3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 747d62ca66d536c29089d41d728f346ee6471e052680b1e5628ca4cbd2559cb5
MD5 ae71eaf3417a6c10adc83ddc9f68b528
BLAKE2b-256 2f68324baf8aa6c8bb5eef8639871bee7802fff867e9459df4609c59294e1870

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.3 This release

16 files

1.0.2

16 files

1.0.1

13 files

1.0.0

13 files

0.1.9

13 files

0.1.8

13 files

0.1.7

10 files

0.1.6

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page