Point cloud intensity values are not normalized

I am trying to apply styling to a point cloud based model based on the ‘Intensity’ value. According to your documentation the “Intensity values are normalized between 0-255”. However, that doesn’t seem to be happing in my test cases. I cannot inspect the point intensity values at runtime via JS as they are only available in GPU memory. I’m also not able to ‘read’ the .pnts file(s) to see what they actually contain. I have inspected the intensity values in the source las file and can confirm that they are in the range of 0-65535. The easiest way I can infer that the values have not been normalized into the range 0-255 is to apply a style with the following condition;

show: “${Intensity} > 50000”

This causes most of the points to be hidden, and only a few remain showing.

An example asset where you should be able to replicate this problem is asset id 684537.

Further to the above, I would actually prefer that the intensity values are not normalized. This will cause issues when displaying multiple adjacent point cloud tilesets at the same time in the viewer. Given the values would be normalized within the context of a single tileset, an intensity value of say 200, would not indicate the same intensity across multiple tilesets.

Hi, thanks for your question. This seems to be a matter of the documentation being phrased somewhat ambiguously. The line “Intensity values are normalized between 0-255” (here) is intended to describe a requirement rather than a description of how the tiler will alter the data. The Intensity value is captured and not normalized during tiling, so if the value range is 0-65535 in the source data, that will be that range in the output tileset as well. A range of 0-255 may be assumed in some cases, such as if you are using point cloud styling in Cesium Stories.

The value range for colors is 0-255, so if the value range for Intensity is 0-65535, you can map it to color by dividing by 257 (65535 / 257 = 255). See this Sandcastle. Please let me know if that helps and if you have any follow-up questions.

Thanks Matt for clarifying this.