q3dviewer 1.1.6__py3-none-any.whl → 1.1.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- q3dviewer/custom_items/cloud_item.py +6 -2
- q3dviewer/shaders/cloud_vert.glsl +9 -0
- q3dviewer/tools/lidar_cam_calib.py +2 -3
- q3dviewer/viewer.py +4 -1
- {q3dviewer-1.1.6.dist-info → q3dviewer-1.1.7.dist-info}/METADATA +3 -3
- {q3dviewer-1.1.6.dist-info → q3dviewer-1.1.7.dist-info}/RECORD +10 -10
- {q3dviewer-1.1.6.dist-info → q3dviewer-1.1.7.dist-info}/LICENSE +0 -0
- {q3dviewer-1.1.6.dist-info → q3dviewer-1.1.7.dist-info}/WHEEL +0 -0
- {q3dviewer-1.1.6.dist-info → q3dviewer-1.1.7.dist-info}/entry_points.txt +0 -0
- {q3dviewer-1.1.6.dist-info → q3dviewer-1.1.7.dist-info}/top_level.txt +0 -0
|
@@ -40,7 +40,7 @@ class CloudItem(BaseItem):
|
|
|
40
40
|
except ValueError:
|
|
41
41
|
print(f"Invalid color: {color}, please use matplotlib color format")
|
|
42
42
|
exit(1)
|
|
43
|
-
self.mode_table = {'FLAT': 0, 'I': 1, 'RGB': 2}
|
|
43
|
+
self.mode_table = {'FLAT': 0, 'I': 1, 'RGB': 2, 'GRAY': 3}
|
|
44
44
|
self.point_type_table = {'PIXEL': 0, 'SQUARE': 1, 'SPHERE': 2}
|
|
45
45
|
self.color_mode = self.mode_table[color_mode]
|
|
46
46
|
self.CAPACITY = 10000000 # 10MB * 3 (x,y,z, color) * 4
|
|
@@ -89,6 +89,7 @@ class CloudItem(BaseItem):
|
|
|
89
89
|
self.combo_color.addItem("flat color")
|
|
90
90
|
self.combo_color.addItem("intensity")
|
|
91
91
|
self.combo_color.addItem("RGB")
|
|
92
|
+
self.combo_color.addItem("gray")
|
|
92
93
|
self.combo_color.setCurrentIndex(self.color_mode)
|
|
93
94
|
self.combo_color.currentIndexChanged.connect(self._on_color_mode)
|
|
94
95
|
layout.addWidget(self.combo_color)
|
|
@@ -127,10 +128,13 @@ class CloudItem(BaseItem):
|
|
|
127
128
|
self.edit_rgb.show()
|
|
128
129
|
elif (index == self.mode_table['I']): # flat color
|
|
129
130
|
self.slider_v.show()
|
|
131
|
+
elif (index == self.mode_table['GRAY']): # flat color
|
|
132
|
+
self.slider_v.show()
|
|
133
|
+
|
|
130
134
|
self.need_update_setting = True
|
|
131
135
|
|
|
132
136
|
def set_color_mode(self, color_mode):
|
|
133
|
-
if color_mode in {'FLAT', 'RGB', 'I'}:
|
|
137
|
+
if color_mode in {'FLAT', 'RGB', 'I', 'GRAY'}:
|
|
134
138
|
try:
|
|
135
139
|
self.combo_color.setCurrentIndex(self.mode_table[color_mode])
|
|
136
140
|
except:
|
|
@@ -62,6 +62,15 @@ void main()
|
|
|
62
62
|
c.y = float((value & uint(0x0000FF00)) >> 8)/255.;
|
|
63
63
|
c.x = float((value & uint(0x00FF0000)) >> 16)/255.;
|
|
64
64
|
}
|
|
65
|
+
else if(color_mode == 3)
|
|
66
|
+
{
|
|
67
|
+
uint intensity = value >> 24;
|
|
68
|
+
float range = vmax - vmin;
|
|
69
|
+
float value = 1.0 - (float(intensity) - vmin) / range;
|
|
70
|
+
c.z = value;
|
|
71
|
+
c.y = value;
|
|
72
|
+
c.x = value;
|
|
73
|
+
}
|
|
65
74
|
else
|
|
66
75
|
{
|
|
67
76
|
c.z = float( uint(flat_rgb) & uint(0x000000FF))/255.;
|
|
@@ -17,8 +17,7 @@ import cv2
|
|
|
17
17
|
import argparse
|
|
18
18
|
from q3dviewer.utils.convert_ros_msg import convert_pointcloud2_msg, convert_image_msg
|
|
19
19
|
from q3dviewer.utils.maths import euler_to_matrix, matrix_to_quaternion, matrix_to_euler
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
from q3dviewer.utils.helpers import rainbow
|
|
22
21
|
clouds = []
|
|
23
22
|
remap_info = None
|
|
24
23
|
K = None
|
|
@@ -254,7 +253,7 @@ def image_cb(data):
|
|
|
254
253
|
intensity = cloud_local['irgb'][u_mask][valid_points] >> 24
|
|
255
254
|
vmin = viewer['scan'].vmin
|
|
256
255
|
vmax = viewer['scan'].vmax
|
|
257
|
-
intensity_color =
|
|
256
|
+
intensity_color = rainbow(intensity, scalar_min=vmin, scalar_max=vmax).astype(np.uint8)
|
|
258
257
|
draw_image = image_un.copy()
|
|
259
258
|
draw_image = draw_larger_points(draw_image, u, intensity_color, radius)
|
|
260
259
|
rgb = image_un[u[:, 1], u[:, 0]]
|
q3dviewer/viewer.py
CHANGED
|
@@ -17,7 +17,7 @@ def handler(signal, frame):
|
|
|
17
17
|
class Viewer(QMainWindow):
|
|
18
18
|
def __init__(self, name='Viewer', win_size=[1920, 1080],
|
|
19
19
|
gl_widget_class=GLWidget, update_interval=20):
|
|
20
|
-
|
|
20
|
+
self.set_quit_handler(handler)
|
|
21
21
|
super(Viewer, self).__init__()
|
|
22
22
|
self.setGeometry(0, 0, win_size[0], win_size[1])
|
|
23
23
|
self.gl_widget_class = gl_widget_class
|
|
@@ -27,6 +27,9 @@ class Viewer(QMainWindow):
|
|
|
27
27
|
self.setWindowTitle(name)
|
|
28
28
|
self.installEventFilter(self)
|
|
29
29
|
|
|
30
|
+
def set_quit_handler(self, handler):
|
|
31
|
+
signal.signal(signal.SIGINT, handler)
|
|
32
|
+
|
|
30
33
|
def init_ui(self):
|
|
31
34
|
center_widget = QWidget()
|
|
32
35
|
self.setCentralWidget(center_widget)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: q3dviewer
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.7
|
|
4
4
|
Summary: A library designed for quickly deploying a 3D viewer.
|
|
5
5
|
Home-page: https://github.com/scomup/q3dviewer
|
|
6
6
|
Author: Liu Yang
|
|
@@ -26,7 +26,7 @@ Requires-Dist: matplotlib
|
|
|
26
26
|
[](https://opensource.org/licenses/MIT)
|
|
27
27
|
[](https://badge.fury.io/py/q3dviewer)
|
|
28
28
|
|
|
29
|
-
`q3dviewer` is a library designed for quickly deploying a 3D viewer. It is based on Qt
|
|
29
|
+
`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.
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
To show how to use `q3dviewer` as a library, we also provide some [very useful tools](#tools).
|
|
@@ -205,7 +205,7 @@ In addition to the standard 3D items provided, you can visualize custom 3D items
|
|
|
205
205
|
from OpenGL.GL import *
|
|
206
206
|
import numpy as np
|
|
207
207
|
import q3dviewer as q3d
|
|
208
|
-
from
|
|
208
|
+
from q3dviewer.Qt.QtWidgets import QLabel, QSpinBox
|
|
209
209
|
|
|
210
210
|
class YourItem(q3d.BaseItem):
|
|
211
211
|
def __init__(self):
|
|
@@ -6,13 +6,13 @@ q3dviewer/cloud_viewer.py,sha256=IxxrB6Sl6aPCr9P9QzKHGkMcDP_DjsBWbkmIbsAoIM4,235
|
|
|
6
6
|
q3dviewer/gau_io.py,sha256=S6NmqL5vSMgHVxKR-eu4CWCqgZeWBJKYRoOMAwr8Xbo,5890
|
|
7
7
|
q3dviewer/glwidget.py,sha256=pkMQxPXNxVWp_sZUFX2r4IHuw_So9ok5e-ZdvBhArFQ,4631
|
|
8
8
|
q3dviewer/utils.py,sha256=evF0d-v17hbTmquC24fmMIp9CsXpUnSQZr4MVy2sfao,2426
|
|
9
|
-
q3dviewer/viewer.py,sha256=
|
|
9
|
+
q3dviewer/viewer.py,sha256=Vq3ucDlBcBBoiVVGmqG1sRjhLePl50heblx6wJpsc1A,2603
|
|
10
10
|
q3dviewer/Qt/__init__.py,sha256=CcwS6oSXBXTMr58JNbRNYcPMVubDD2jiPtJ55DoLm8o,2199
|
|
11
11
|
q3dviewer/custom_items/__init__.py,sha256=19z_BFXJEm8j31WqREICN31fiFcaIeUqvfo39d02vbk,509
|
|
12
12
|
q3dviewer/custom_items/axis_item.py,sha256=-WM2urosqV847zpTpOtxdLjb7y9NJqFCH13qqodcCTg,2572
|
|
13
13
|
q3dviewer/custom_items/camera_frame_item.py,sha256=VBsr3Avly_YWXViIh4DJkGc_HJt227GeOYLpGtbYTOw,5605
|
|
14
14
|
q3dviewer/custom_items/cloud_io_item.py,sha256=E3Qyc4nuVP-MQAff4zII9JB-xQjVRsviATpqvpLQveM,3507
|
|
15
|
-
q3dviewer/custom_items/cloud_item.py,sha256=
|
|
15
|
+
q3dviewer/custom_items/cloud_item.py,sha256=ITOzVq4MAKFIQOGkIgY0Xc2a-yumwHWg3wIvZgjuyGc,13125
|
|
16
16
|
q3dviewer/custom_items/frame_item.py,sha256=bUzww3tSDah0JZeqtU6_cYHhhTVWzXhJVMcAa5pCXHI,7458
|
|
17
17
|
q3dviewer/custom_items/gaussian_item.py,sha256=JMubpahkTPh0E8ShL3FLTahv0e35ODzjgK5K1i0YXSU,9884
|
|
18
18
|
q3dviewer/custom_items/grid_item.py,sha256=LDB_MYACoxld-xvz01_MfAf12vLcRkH7R_WtGHHdSgk,4945
|
|
@@ -21,7 +21,7 @@ q3dviewer/custom_items/line_item.py,sha256=rel-lx8AgjDY7qyIecHxHQZzaswRn2ZTiOIjB
|
|
|
21
21
|
q3dviewer/custom_items/text_item.py,sha256=VdmoCgXAfqN58fMKydqrdnJHCT53VelRiv_88X9aCfQ,2185
|
|
22
22
|
q3dviewer/custom_items/trajectory_item.py,sha256=uoKQSrTs_m_m1M8iNAm3peiXnZ9uVPsYQLYas3Gksjg,2754
|
|
23
23
|
q3dviewer/shaders/cloud_frag.glsl,sha256=tbCsDUp9YlPe0hRWlFS724SH6TtMeLO-GVYROzEElZg,609
|
|
24
|
-
q3dviewer/shaders/cloud_vert.glsl,sha256=
|
|
24
|
+
q3dviewer/shaders/cloud_vert.glsl,sha256=7VrNDbEVqzatpQOuIfFOLYgtbFVWG0Rxl2Od7DZ-l8U,2357
|
|
25
25
|
q3dviewer/shaders/gau_frag.glsl,sha256=5_UY84tWDts59bxP8x4I-wgnzY8aGeGuo28wX--LW7E,975
|
|
26
26
|
q3dviewer/shaders/gau_prep.glsl,sha256=eCT9nm65uz32w8NaDjeGKhyAZh42Aea-QTwr3yQVr9U,7218
|
|
27
27
|
q3dviewer/shaders/gau_vert.glsl,sha256=NNbVhv_JyqZDK9iXAyBAcIHAtim7G9yWbC9IaUfTL1w,1666
|
|
@@ -32,7 +32,7 @@ q3dviewer/tools/example_viewer.py,sha256=sedL18GU3bTTjVJBREPVJ5hTLfSDFq_j91E4qXn
|
|
|
32
32
|
q3dviewer/tools/film_maker.py,sha256=CXsI2SocgnQProIWKJ6lvRXtFv4DoO-rm6YNfweAJmw,16678
|
|
33
33
|
q3dviewer/tools/gaussian_viewer.py,sha256=vIwWmiFhjNmknrEkBLzt2yiegeH7LP3OeNjnGM6GzaI,1633
|
|
34
34
|
q3dviewer/tools/lidar_calib.py,sha256=hHnsSaQh_Pkdh8tPntt0MgEW26nQyAdC_HQHq4I3sw8,10562
|
|
35
|
-
q3dviewer/tools/lidar_cam_calib.py,sha256=
|
|
35
|
+
q3dviewer/tools/lidar_cam_calib.py,sha256=AyF3RipBo1R5LYJqm5RR8LUbEovRWJiBUEmUtnrx6e8,11318
|
|
36
36
|
q3dviewer/tools/ros_viewer.py,sha256=ARB3I5wohY3maP8dCu0O0hxObd6JFKuK2y7AApVgMWA,2551
|
|
37
37
|
q3dviewer/utils/__init__.py,sha256=dwTNAAebTiKY4ygv2G1O-w6-TbJnmnNVO2UfJXvJhaQ,107
|
|
38
38
|
q3dviewer/utils/cloud_io.py,sha256=xarfYakY0zgKwvZkgKSPO6b4DEo42hsq3mcvCbK64yg,12134
|
|
@@ -41,9 +41,9 @@ q3dviewer/utils/gl_helper.py,sha256=dRY_kUqyPMr7NTcupUr6_VTvgnj53iE2C0Lk0-oFYsI,
|
|
|
41
41
|
q3dviewer/utils/helpers.py,sha256=SqR4YTQZi13FKbkVUYgodXce1JJ_YmrHEIRkUmnIUas,3085
|
|
42
42
|
q3dviewer/utils/maths.py,sha256=zHaPtvVZIuo8xepIXCMeSL9tpx8FahUrq0l4K1oXrBk,8834
|
|
43
43
|
q3dviewer/utils/range_slider.py,sha256=9djTxuzmzH54DgSwAljRpLGjsrIJ0hTxhaxFjPxsk8g,4007
|
|
44
|
-
q3dviewer-1.1.
|
|
45
|
-
q3dviewer-1.1.
|
|
46
|
-
q3dviewer-1.1.
|
|
47
|
-
q3dviewer-1.1.
|
|
48
|
-
q3dviewer-1.1.
|
|
49
|
-
q3dviewer-1.1.
|
|
44
|
+
q3dviewer-1.1.7.dist-info/LICENSE,sha256=81cMOyNfw8KLb1JnPYngGHJ5W83gSbZEBU9MEP3tl-E,1124
|
|
45
|
+
q3dviewer-1.1.7.dist-info/METADATA,sha256=ckr5ZX5GWsS3T7JmlUjlPzgwxRizYkjdV_vCAsBZYHo,7969
|
|
46
|
+
q3dviewer-1.1.7.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
47
|
+
q3dviewer-1.1.7.dist-info/entry_points.txt,sha256=aeUdGH7UIgMZEMFUc-0xPZWspY95GoPdZcZuLceq85g,361
|
|
48
|
+
q3dviewer-1.1.7.dist-info/top_level.txt,sha256=HFFDCbGu28txcGe2HPc46A7EPaguBa_b5oH7bufmxHM,10
|
|
49
|
+
q3dviewer-1.1.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|