| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Data visualisation and ray tracing in Python based on NVIDIA OptiX framework.
PlotOptiX is a 3D ray tracing package for Python, aimed at easy and aesthetic visualization of large datasets (and small as well). Data features can be represented in images as a position, size/thickness and color of primitives of several basic shapes, or projected onto surfaces of objects in form of a color textures and displacement maps. Triangular meshes, generated in the code or loaded from a file, are supported as well. All is finished with a photorealistic lighting, depth of field, and many other physically based effects simulated with a high quality.
No need to write shaders, intersection algorithms, handle 3D scene technicalities. Basic usage is even more simple than with matplotlib:
import numpy as np
from plotoptix import TkOptiX
n = 1000000 # 1M points, better not try this with matplotlib
xyz = 3 * (np.random.random((n, 3)) - 0.5) # random 3D positions
r = 0.02 * np.random.random(n) + 0.002 # random radii
plot = TkOptiX()
plot.set_data("my plot", xyz, r=r)
plot.show()... but PlotOptiX is much faster on large data, and, with all the raytraced shades and DoF, more readable and eye catching.
Check examples on GitHub for practical code samples and documentation pages for a complete API reference.
PlotOptiX is a set of CUDA shaders by R&D Team wrapped in C#/C++ libraries with a Python API. It is based on NVIDIA OptiX 9.1 framework and makes use of RTX-capable GPU's.
You can quickly display data in a simple plot:
or prepare complex scenes, combining your generated data with meshes modeled elsewhere:
Note, at this point, PlotOptiX binaries are tested in: Windows 11 (any Python 3), and Linux (Python 3.8-3.14 recommended): Ubuntu 26.04.
PlotOptiX was also successfully tested on the Google Cloud Platform, using Compute Engine instance with 2x V100 GPU's and Ubuntu 18.04 image. Here are the installation steps so you can save some precious seconds (FFmpeg not included).
If you'd like to work on Colab, it is possible as well. Here is a notebook with all the setup and a simple image generated with PlotOptiX. Note: Colab drivers usually are not up to date and the most recent PlotOptiX release may not be compatible with what Colab provides. The sample notebook is configured to install release wich works with the available driver.
Windows should be ready to go in most cases. You need to do some more typing in Linux.
FFmpeg:
FFmpeg shared libraries >= 8.0 are required to enable video encoding features. Visit FFmpeg site and go to the site with pre-built Windows binaries. Download the full-shared package. Unpack it to a new folder. You'll need to add path to dll files (the bin folder, which contains exe's and dll's) to your PATH environment variable.
NVIDIA driver
It is recommended to update to the most recent release. Check instructions for your linux distribution. E.g. in Ubuntu:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt install nvidia-driver-XXX sudo reboot
Mono runtime:
Check if / which Mono release is present in your system:
mono -V
Mono JIT compiler version 5.18.1.3 (tarball Tue Apr 9 16:16:30 UTC 2019)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
... (output cropped for clarity) ...
If mono command is not available, or the reported version is < 6.6, install it with:
sudo apt install mono-devel
For older linux distributions, visit Mono download page and follow instructions related to your distribution. You want to install mono-complete package.
pythonnet:
The pythonnet package is available from PyPI, however, you might need some prerequisities. Instuctions below are based on APT, replace apt with yum depending on your OS:
apt install clang libglib2.0-dev python-dev-is-python3
or, in the older linux:
apt install clang libglib2.0-dev python-dev
You may also need to install development tools, if not already present in your system, e.g. in Ubuntu:
apt install build-essential
or in CentOS:
yum group install "Development Tools"
Then, update required packages and install pythonnet:
pip install -U setuptools wheel pycparser pip install -U pythonnet
After successful installation you should be able to do python's import:
import clr
print(clr.__version__)FFmpeg:
FFmpeg shared libraries >= 8.0 are required to enable video encoding features. PlotOptiX supports H.264 and HEVC hardware acceleration via CUDA and NVENC. To enable support of these codecs in ffmpeg you'll need NVIDIA headers before ffmpeg compilation:
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git cd nv-codec-headers make install
Uninstall older ffmpeg version first. Visit FFmpeg site and download the most recent release sources. Unpack it to a new folder, cd to it. Configure, compile and install as below. Remember to set your path to CUDA libs and headers, and your prefered flags if needed:
./configure \ --prefix=/usr/local \ --enable-shared \ --enable-pic \ --disable-static \ --enable-cuda-nvcc \ --extra-cflags="-I/usr/local/cuda-13.2/include" \ --extra-ldflags="-L/usr/local/cuda-13.2/lib64" \ --enable-nonfree make sudo make install
Add FFmpeg's shared library path to your config:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib sudo ldconfig
Using pip:
pip install -U plotoptix
From GitHub sources:
git clone https://github.com/rnd-team-dev/plotoptix.git cd plotoptix python setup.py install
Then, try running code from the top of this readme, or one of the examples. You may also need to install tkinter and/or PyQt packages, if not shipped with your Python environment.
Looking at examples is the best way to get started and explore PlotOptiX features. Have a look at the readme and sample codes here.
Get in touch, share your use case, we are happy to help and take part in exciting ideas of our users.
| Back | FazBrowse Home | New Git URL |