Point clouds: measured lighting, highlighted extents box, gizmo shaft grab

- Lighting follows the view: the default source is a key light from the
  upper left and a fill light from the lower right over an ambient term,
  the other source one light from above; POINTCLOUDLIGHTING 1 lights the
  front faces, 2 both.
- A selected or hovered point cloud shows its extents box.
- A move-gizmo arrow can be grabbed along its shaft; the grab offset is
  taken on the press, so click-and-place and typed distances start from
  the insertion point.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ramox81andClaude Opus 5.5 committed 2026-09-30 17:21:33 +03:00
1 parent 4b00504453
commit 15c0da8b79
6 files changed
+87 -39

No files matched your search

+7 -3
View File
@@ -2813,7 +2813,9 @@ impl Pipeline {
);
for &i in idxs {
if let Some(w) = wires.get(i as usize) {
if !w.display_visible {
// An unseen pick hull (a point cloud's extents box) shows while
// highlighted, as the reference does.
if !w.display_visible && (w.pick_tris.is_empty() || w.snap_only) {
continue;
}
selected_wires.push(w);
@@ -2825,7 +2827,9 @@ impl Pipeline {
if let Some(idxs) = self.wire_handle_index.get(&h.value()) {
for &i in idxs {
if let Some(w) = wires.get(i as usize) {
if !w.display_visible {
// An unseen pick hull (a point cloud's extents box) shows while
// highlighted, as the reference does.
if !w.display_visible && (w.pick_tris.is_empty() || w.snap_only) {
continue;
}
hover_wires.push(w);
@@ -3848,7 +3852,7 @@ analytic={:.1} regular={:.1} blocks={:.1}",
self.gpu_point_clouds.upload(device, queue, set);
}
pub fn set_point_cloud_view(&mut self, queue: &wgpu::Queue, light: [f32; 8]) {
pub fn set_point_cloud_view(&mut self, queue: &wgpu::Queue, light: [f32; 12]) {
self.gpu_point_clouds.set_view(queue, light);
}