q3dviewer is a library designed for quickly deploying a 3D viewer. It is based on Qt and provides efficient OpenGL items for displaying 3D objects (e.g., point clouds, cameras, and 3D Gaussians). You can use it to visualize your 3D data or set up an efficient viewer application. It is inspired by PyQtGraph but focuses more on efficient 3D rendering.
To show how to use q3dviewer as a library, we also provide some very useful tools.
Installation
For library usage:
pip install q3dviewer
For additional GUI tools (q3d.film_maker, etc.):
pip install "q3dviewer[tools]"
Note for Linux Users
If you encounter an error related to loading the shared library libxcb-cursor.so.0 on Ubuntu 20.04 or 22.04, please install libxcb-cursor0:
sudo apt-get install libxcb-cursor0
Tools
Once installed, you can directly use the following tools:
1. Cloud Viewer
A tool for visualizing point cloud files (LAS, PCD, PLY, E57). Launch it by executing the following command in your terminal:
q3d.cloud_viewer
Alternatively, if the path is not set (though it's not recommended):
python3 -m q3dviewer.tools.cloud_viewer
Basic Operations
📁 Load Files - Drag and drop files into the viewer
- Point clouds: .pcd, .ply, .las, .e57
- Mesh files: .stl
📏 Measure Distance - Interactive point measurement
Ctrl + Left Click: Add measurement pointCtrl + Right Click: Remove last point- Total distance displayed automatically
🎥 Camera Controls - Navigate the 3D scene
Double Click: Set camera center to pointRight Drag: Rotate viewLeft Drag: Pan viewMouse Wheel: Zoom in/out
⚙️ Settings - Press M to open settings window
- Manual adjustment of visualization properties
Ctrl + S: Save all settingsCtrl + L: Load all settings
🔄 Depth Sorting - Press R to force one depth sort
🎯 Center Point - Shown while the camera view is changing
For example, you can download and view point clouds of Tokyo in LAS format from the following link:
Mesh Support - Starting from version 1.2.4, mesh files (.stl) are now supported.
2. Cloud Editor
A simple tool for editing point clouds. It supports PCD, PLY, LAS, and E57 files, point deletion, measurement, undo, and saving.
q3d.cloud_editor
3. ROS Viewer
A high-performance SLAM viewer compatible with ROS, serving as an alternative to RVIZ.
roscore &
q3d.ros_viewer
4. Film Maker
Would you like to create a video from point cloud data? With Film Maker, you can easily create videos with simple operations. Just edit keyframes using the user-friendly GUI, and the software will automatically interpolate the keyframes to generate the video.
q3d.film_maker
Basic Operations
- File loading, camera controls, and settings: Same as Cloud Viewer
Space: Add a keyframeDelete: Remove the selected keyframePlay: Play or stop the camera motionRecord: Record the camera motion during playbackSave Camera Motion/Load Camera Motion: Save or restore keyframes
Film Maker GUI:
The demo video demonstrating how to use Film Maker utilizes the cloud data of Kyobashi Station Area located in Osaka, Japan.
5. Gaussian Viewer
A simple viewer for 3D Gaussians. See EasyGaussianSplatting for more information.
q3d.gaussian_viewer # Drag and drop your Gaussian file onto the window
Using as a Library
Using the examples above, you can easily customize and develop your own 3D viewer with q3dviewer. Below is a coding example.
Custom 3D Viewer
#!/usr/bin/env python3
import q3dviewer as q3d # Import q3dviewer
def main():
# Create a Qt application
app = q3d.QApplication([])
# Create various 3D items
axis_item = q3d.AxisItem(size=0.5, width=5)
grid_item = q3d.GridItem(size=10, spacing=1)
# Create a viewer
viewer = q3d.Viewer(name='example')
# Add items to the viewer
viewer.add_items({
'grid': grid_item,
'axis': axis_item,
})
# Show the viewer & run the Qt application
viewer.show()
app.exec()
if __name__ == '__main__':
main()
q3dviewer provides the following 3D items:
- AxisItem: Displays coordinate axes or the origin position.
- CenterItem: Displays a shaded center marker while the camera is moving.
- CloudItem: Displays point clouds.
- CloudIOItem: Displays point clouds with input/output capabilities.
- CloudSortItem: Displays point clouds with depth sorting support.
- FrameItem: Displays camera or coordinate frames.
- GaussianItem: Displays 3D Gaussians.
- GridItem: Displays grids.
- ImageItem: Displays 2D images.
- LineItem: Displays lines or trajectories.
- MeshItem: Displays dynamic quadrilateral meshes.
- SatelliteMapItem: Displays satellite map tiles.
- StaticMeshItem: Displays static triangular meshes.
- Text2DItem: Displays 2D text.
- Text3DItem: Displays 3D text and markers.
Developing Custom Items
In addition to the standard 3D items provided, you can visualize custom 3D items with simple coding. Below is a sample:
from OpenGL.GL import *
import numpy as np
import q3dviewer as q3d
from q3dviewer.Qt.QtWidgets import QLabel, QSpinBox
class YourItem(q3d.BaseItem):
def __init__(self):
super(YourItem, self).__init__()
# Necessary initialization
def add_setting(self, layout):
# Initialize the settings screen
label = QLabel("Add your setting:")
layout.addWidget(label)
box = QSpinBox()
layout.addWidget(box)
def set_data(self, data):
# Obtain the data you want to visualize
# Update the item state, then notify the viewer to repaint.
self.data = data
self.notify_changed()
pass
def set_color(self, color):
# Any visual setting change must also notify the viewer.
self.color = color
self.notify_changed()
def initialize_gl(self):
# OpenGL initialization settings (if needed)
pass
def paint(self):
# Visualize 3D objects using OpenGL
pass
Enjoy using q3dviewer!
Metadata
Release files for q3dviewer 1.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| q3dviewer-1.3.4.tar.gz | 107.0 kB | Without provenance | Details |
Release files / q3dviewer-1.3.4.tar.gz
| Download URL | q3dviewer-1.3.4.tar.gz |
|---|---|
| Size | 107.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f68883fd02be9508a43d4605fc721adc96b39973b987ecf29a508e30487863b
|
|
BLAKE2b-256 checksum How to use checksums |
13ccada019f889aaf4b1d1bbde805d6f3bd24cb559513f8a4f5e281aa53ea57a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.8.10
|
Security for q3dviewer 1.3.4
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.