added mesh surface arrows
This commit is contained in:
+47
-8
@@ -19,6 +19,8 @@ MeshLighting (below) controls the 3D mesh panel sun light:
|
||||
intensity — Filament sun strength (typical 30000–120000)
|
||||
ambient/diffuse — Windows viewer shading weights (0–1)
|
||||
|
||||
MESH_BACKGROUND (below) sets the 3D mesh panel clear color (RGB 0–255).
|
||||
|
||||
MESH_CONTACT_ARROW (below) controls the yellow 3D contact arrow on the mesh panel:
|
||||
reference_normal_force — Fn at which arrow reaches full size (log/power/linear curve)
|
||||
force_strength_mode — "log" | "power" | "linear"
|
||||
@@ -34,7 +36,7 @@ Performance (3D dashboard; edit DashboardLayout defaults):
|
||||
chart_update_stride — update force charts every N frames
|
||||
mesh_async_render — background mesh render (Linux only; Windows uses sync)
|
||||
|
||||
Edit TOP_ROW.slots to reorder or resize panels.
|
||||
Edit TOP_ROW.slots to reorder or resize panels; set ``enabled=False`` to hide a panel (e.g. arrows).
|
||||
Edit PANEL_SETUP to change top vs log proportions.
|
||||
Edit LOG_CONFIG for live status line and log panel appearance.
|
||||
"""
|
||||
@@ -46,6 +48,8 @@ from dataclasses import dataclass
|
||||
from typing import Literal
|
||||
|
||||
from viz.contact_arrow import ContactArrowStyle, DEFAULT_CONTACT_ARROW_STYLE
|
||||
from viz.flow_arrow import FlowArrowStyle
|
||||
from viz.render_2d import ArrowBackground, ArrowCanvasColors
|
||||
|
||||
PanelId = Literal["mesh", "arrows", "charts", "log"]
|
||||
|
||||
@@ -84,7 +88,7 @@ class PanelSetup:
|
||||
TOP_ROW = PanelRow(
|
||||
slots=(
|
||||
PanelSlot("mesh", "3D mesh", width_px=500, height_px=500),
|
||||
PanelSlot("arrows", "UV Unrolled", width_px=500, height_px=500),
|
||||
PanelSlot("arrows", "UV Unrolled", width_px=500, height_px=500, enabled=False),
|
||||
PanelSlot("charts", "Force charts", width_px=500, height_px=500),
|
||||
),
|
||||
)
|
||||
@@ -99,8 +103,8 @@ PANEL_SETUP = PanelSetup(
|
||||
)
|
||||
|
||||
# Open3D offscreen resolution for the mesh panel (independent of on-screen widget size).
|
||||
MESH_RENDER_WIDTH_PX = 256
|
||||
MESH_RENDER_HEIGHT_PX = 256
|
||||
MESH_RENDER_WIDTH_PX = 500
|
||||
MESH_RENDER_HEIGHT_PX = 500
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
@@ -123,13 +127,23 @@ class MeshLighting:
|
||||
|
||||
|
||||
MESH_LIGHTING = MeshLighting(
|
||||
azimuth_deg=-45.0,
|
||||
azimuth_deg=0,
|
||||
elevation_deg=0,
|
||||
intensity=75000.0,
|
||||
ambient=0.5,
|
||||
diffuse=0.5,
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class MeshBackground:
|
||||
"""3D mesh panel clear color — edit MESH_BACKGROUND or DashboardLayout.mesh_background."""
|
||||
|
||||
color: tuple[int, int, int] = (0, 0, 0)
|
||||
|
||||
|
||||
MESH_BACKGROUND = MeshBackground(color=(0, 0, 0))
|
||||
|
||||
# 3D mesh contact arrow — edit here for dashboard tuning (see ContactArrowStyle in viz/contact_arrow.py).
|
||||
MESH_CONTACT_ARROW = ContactArrowStyle(
|
||||
reference_normal_force=10000.0,
|
||||
@@ -143,6 +157,26 @@ MESH_CONTACT_ARROW = ContactArrowStyle(
|
||||
color=(1.0, 0.92, 0.10),
|
||||
)
|
||||
|
||||
# 3D mesh flow line arrows — tail_color/head_color are RGB 0–255 (see FlowArrowStyle).
|
||||
MESH_FLOW_ARROW = FlowArrowStyle(
|
||||
threshold=2.0,
|
||||
grid_spacing=20,
|
||||
arrow_scale=0.5,
|
||||
length_margin=1.0,
|
||||
tail_color=(40, 100, 220),
|
||||
head_color=(40, 100, 220),
|
||||
head_fraction=0.5,
|
||||
opacity=1,
|
||||
line_width=15,
|
||||
head_line_width=30.0,
|
||||
)
|
||||
|
||||
# UV arrow synthetic canvas — BGR tuples (outside valid_mask, inside valid_mask).
|
||||
ARROW_CANVAS_COLORS = ArrowCanvasColors(
|
||||
outside_bgr=(0, 0, 0),
|
||||
uv_bgr=(128, 0, 0),
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class LogConfig:
|
||||
@@ -150,7 +184,7 @@ class LogConfig:
|
||||
|
||||
status_enabled: bool = True
|
||||
max_lines: int = 2000
|
||||
font_family: str = "Consolas"
|
||||
font_family: str = "Cascadia Mono"
|
||||
font_pt: int = 12
|
||||
show_flow: bool = True
|
||||
show_mask: bool = True
|
||||
@@ -191,7 +225,7 @@ class DashboardLayout:
|
||||
panel_setup: PanelSetup = PANEL_SETUP
|
||||
|
||||
window_title: str = "Orisys Finger Dashboard"
|
||||
window_width: int = 1500
|
||||
window_width: int = 1000
|
||||
window_height: int = 600
|
||||
|
||||
root_margin_px: int = 6
|
||||
@@ -203,15 +237,20 @@ class DashboardLayout:
|
||||
chart_title_font_pt: int = 11
|
||||
chart_axis_label_font_pt: int = 9
|
||||
chart_tick_font_pt: int = 9
|
||||
y_axis_min_span: float = 20000.0
|
||||
y_axis_min_span: float = 10000.0
|
||||
y_range_smooth_alpha: float = 0.5
|
||||
curve_color: str = "#00E5FF"
|
||||
|
||||
# UV arrow panel: min flow magnitude to draw an arrow (display only; not dd02-ov.json contact.flow_threshold)
|
||||
arrow_flow_threshold: float = 1.0
|
||||
# "unrolled" = sensor texture; "white" = solid canvas (tune colors via arrow_canvas_colors)
|
||||
arrow_background: ArrowBackground = "white"
|
||||
arrow_canvas_colors: ArrowCanvasColors = ARROW_CANVAS_COLORS
|
||||
|
||||
mesh_lighting: MeshLighting = MESH_LIGHTING
|
||||
mesh_background: MeshBackground = MESH_BACKGROUND
|
||||
mesh_contact_arrow: ContactArrowStyle = MESH_CONTACT_ARROW
|
||||
mesh_flow_arrow: FlowArrowStyle = MESH_FLOW_ARROW
|
||||
|
||||
log_config: LogConfig = LOG_CONFIG
|
||||
|
||||
|
||||
Reference in New Issue
Block a user