Repository navigation
Conversation
The decoder default-constructs every output point and only fills in the coordinates and (optionally) the rgb/rgba field, so fields such as intensity or normals are lost after a round trip. Say so in the class docs and in the compression tutorial, and note which point types are precompiled. Fixes PointCloudLibrary#6272.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #6272.
As mentioned in the issue,
OctreePointCloudCompressiononly encodes the coordinates and, optionally, the color, and that should be documented more clearly. IndeserializeTreeCallbackevery decoded point starts as a default-constructedPointT; the point coder fills in x/y/z and the color coder writes the rgb/rgba field, nothing else. So e.g. aPointXYZIcomes back with intensity 0.Changes (documentation only):
octree_pointcloud_compression.h: add a note to the class docs saying which fields are encoded, that other fields (intensity, normals, ...) end up with their default values after decoding, and that the class is only precompiled forPointXYZ,PointXYZRGBandPointXYZRGBA, so other point types needimpl/octree_pointcloud_compression.hpp(that is the linker error from [io]OctreePointCloudCompressiononly supports types pre-baked inio/src/compression.cpp#4516). This also replaces an empty\note.compression.rst: add a short note near the top of the tutorial with the same information.Checked: built a small program against current master that round-trips 100
PointXYZIpoints (intensity 1000–1099) throughencodePointCloud/decodePointCloud; all decoded intensities are 0.I used an AI assistant (Grok Bot) to help look through the encoder/decoder and draft the wording; I checked the code paths and the result myself.