try to fix wsl open3d crash
This commit is contained in:
@@ -32,7 +32,7 @@ Performance (3D dashboard; edit DashboardLayout defaults):
|
|||||||
timer_interval_ms — Qt timer period (16 ≈ 60 Hz tick rate)
|
timer_interval_ms — Qt timer period (16 ≈ 60 Hz tick rate)
|
||||||
mesh_render_stride — render 3D mesh every N frames (2 ≈ half mesh cost)
|
mesh_render_stride — render 3D mesh every N frames (2 ≈ half mesh cost)
|
||||||
chart_update_stride — update force charts every N frames
|
chart_update_stride — update force charts every N frames
|
||||||
mesh_async_render — background mesh render (Linux only; Windows uses sync)
|
mesh_async_render — reserved for future use; mesh rendering currently stays on the UI thread
|
||||||
|
|
||||||
Edit TOP_ROW.slots to reorder or resize panels; set ``enabled=False`` to hide a panel (e.g. arrows).
|
Edit TOP_ROW.slots to reorder or resize panels; set ``enabled=False`` to hide a panel (e.g. arrows).
|
||||||
Log sits under charts only (not under mesh). Settings is the rightmost column.
|
Log sits under charts only (not under mesh). Settings is the rightmost column.
|
||||||
@@ -256,7 +256,7 @@ class DashboardLayout:
|
|||||||
mesh_render_height_px: int = MESH_RENDER_HEIGHT_PX
|
mesh_render_height_px: int = MESH_RENDER_HEIGHT_PX
|
||||||
|
|
||||||
timer_interval_ms: int = 16
|
timer_interval_ms: int = 16
|
||||||
mesh_async_render: bool = True
|
mesh_async_render: bool = False
|
||||||
mesh_render_stride: int = 2
|
mesh_render_stride: int = 2
|
||||||
chart_update_stride: int = 2
|
chart_update_stride: int = 2
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from PyQt5.QtCore import QEvent, Qt
|
from PyQt5.QtCore import QEvent, Qt
|
||||||
from PyQt5.QtGui import QMouseEvent
|
from PyQt5.QtGui import QMouseEvent
|
||||||
|
|
||||||
@@ -105,10 +103,6 @@ class MeshViewportWidget(ImagePanel):
|
|||||||
return
|
return
|
||||||
self.label.setText("")
|
self.label.setText("")
|
||||||
self._init_renderer(pipeline)
|
self._init_renderer(pipeline)
|
||||||
if self._layout.mesh_async_render and sys.platform != "win32":
|
|
||||||
self._mesh_worker = MeshRenderWorker(self)
|
|
||||||
self._mesh_worker.rgb_ready.connect(self._on_rgb_ready)
|
|
||||||
self._mesh_worker.set_renderer(self._renderer)
|
|
||||||
|
|
||||||
def _init_renderer(self, pipeline) -> None:
|
def _init_renderer(self, pipeline) -> None:
|
||||||
if not self._enable_3d or pipeline.uv_mesh is None:
|
if not self._enable_3d or pipeline.uv_mesh is None:
|
||||||
@@ -156,22 +150,12 @@ class MeshViewportWidget(ImagePanel):
|
|||||||
self.set_source_pixmap(ndarray_to_pixmap(rgb, bgr=False))
|
self.set_source_pixmap(ndarray_to_pixmap(rgb, bgr=False))
|
||||||
|
|
||||||
def update_frame(self, frame: FingerFrameView, *, async_render: bool | None = None) -> float:
|
def update_frame(self, frame: FingerFrameView, *, async_render: bool | None = None) -> float:
|
||||||
"""Update mesh colors. Returns render wall time (0 when async submit only)."""
|
"""Update mesh colors on the same thread that owns the renderer."""
|
||||||
if not self._enable_3d or self._renderer is None:
|
if not self._enable_3d or self._renderer is None:
|
||||||
return 0.0
|
return 0.0
|
||||||
|
|
||||||
self._last_frame = frame
|
self._last_frame = frame
|
||||||
use_async = self._layout.mesh_async_render if async_render is None else async_render
|
del async_render # Offscreen Open3D renderers are not safe to drive from a QThread.
|
||||||
if use_async and self._mesh_worker is not None:
|
|
||||||
self._mesh_worker.submit(
|
|
||||||
flow=frame.flow,
|
|
||||||
scalar_map=frame.depth_map,
|
|
||||||
centroid=frame.centroid,
|
|
||||||
centroid_found=frame.centroid_found,
|
|
||||||
fnormal=frame.fnormal,
|
|
||||||
valid_mask=frame.valid_mask,
|
|
||||||
)
|
|
||||||
return 0.0
|
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user