* Point clouds: colour and filter by any property of a PLY file, on range tracks (#5151)
A PLY file's other vertex properties are kept as named numbers on the
points (whole-numbered for integer types; a comment `property: 0 name,
1 name` names a label's values). A cloud is coloured by any of them, a
ramp or a palette for whole numbers, and filtered by up to eight, each a
range or a set of named values. The GPU colours and filters the points
itself, so editing a range uploads nothing.
In the Edit Point Cloud card each range is a track, as in an audio
editor: a histogram of the property over what the other filters keep,
stacked by colour, under an overview strip. Ranges are drawn, moved,
snapped to colour changes, typed (Start, End, Length, relative values)
and played (Space or Play). The automatic colour range is exactly the
values the property takes over what the filters keep.
pointcloud.insert and pointcloud.edit take color_by: <property>,
color_range and filters; pointcloud.list reports them with the
properties. docs/point-clouds.md describes it all.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Point clouds: note the saved properties, colouring and filters as a pending format change (#8816)
A design now saves a cloud's per-point columns and their value names, colouring by a property and
filters; an older release must refuse it instead of dropping them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* Point clouds: insert PLY, XYZ and PTS scans as a modelling reference (#5151)
A point cloud is kept in the design as a reference, drawn as depth-tested
dots and never a body.
- io: a PLY reader (ASCII, binary little/big endian; x, y, z of any numeric
type, optional colours, other elements skipped; counts checked against the
file) and XYZ/PTS text, thinned evenly past max_points. PLY meshes with
faces can also come in through file.insert_mesh.
- doc: Document.point_clouds (shared f32 points relative to an f64 origin,
colours, units, rigid placement, size and colour), stored as a binary
container part; format change in pending/point-clouds.rs.
- engine: pointcloud.insert / edit / delete / list; doc.open opens a cloud as
a new design; selection.delete takes point_clouds; view bounds include them.
- gpu: an instanced point-sprite pipeline (16 bytes a point).
- ui: Browser Point Clouds folder with eyes, menu and an Edit Point Cloud
card; drop, Open, Insert and file dialogs take .ply/.xyz/.pts; a CPU
viewport fallback; messages in en, en-GB, ja, zh, de and ko.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Point clouds: colour by the file, one colour or height, from the UI (#5151)
The Edit Point Cloud card gets Color By (File Colors, Single Color,
Height). Height is a blue-to-red ramp over design Z, between the cloud's
own two heights or, by default, a range worked out from the points (all
but the lowest and highest 2 %, from an even sample). pointcloud.insert
and pointcloud.edit take color_by and height_range; pointcloud.list
reports them. The colour of each point is worked out in one place
(PointCloud::shade) for the GPU and CPU viewports.
Also: the card's dropdowns compare the picked index (a dropdown's
response doesn't report the pick, so File Units did not change either).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Point clouds: integrate format registration and viewport caches (#5151)
* Point clouds: satisfy current UI audits and document comparisons (#5151)
Route model RGB data through the theme conversion boundary, provide a compact ribbon label, and include point clouds in the new document comparison. Gate the Unix-only CLI-link helper and test so Windows all-target checks remain buildable after the rebase.
* Point clouds: isolate translations for current main (#5151)
Move the existing 74 messages unchanged into one pending locale file and attribute it through a pending row, following the current repository workflow. Repository checks, 50 tooling tests, final workspace Clippy, wasm and generated-catalog equality checks passed after the rebase.
* Point clouds: fit the rebased code to main's GpuTarget and Frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Compare point clouds when reusing placement-independent results
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Point clouds: complete command help and required translations (#5151)
* Point clouds: size the save cap from the raised limit after the rebase
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: bherbruck <brennen.herbruck@gmail.com>