The KHR_gaussian_splatting extension spec states that when an ellipse kernel shape (the default) is used:
The opacity of a Gaussian splat is defined by the KHR_gaussian_splatting:OPACITY attribute for this kernel. It stores a normalized value between 0.0 (transparent) and 1.0 (opaque). [...] Out-of-range values are invalid.
In the current implementation, opacity values stored in memory are treated as if they are linear and normalized when reading and writing glTF assets, while they are treated as in logit space when read from a PLY file, leading to a situation where transforming a PLY into a glTF results in invalid opacity values in the glTF.
This is readily verified by inspecting an asset produced by this pipeline: if an in-memory asset stores the value 20 for the opacity of a splat (signifying near-opacity), the glTF writer will output a splat with an opacity of 20, rather than the preferred $\frac{1}{1 + e^{-20}} \approx 1$.
The KHR_gaussian_splatting extension spec states that when an ellipse kernel shape (the default) is used:
In the current implementation, opacity values stored in memory are treated as if they are linear and normalized when reading and writing glTF assets, while they are treated as in logit space when read from a PLY file, leading to a situation where transforming a PLY into a glTF results in invalid opacity values in the glTF.
This is readily verified by inspecting an asset produced by this pipeline: if an in-memory asset stores the value 20 for the opacity of a splat (signifying near-opacity), the glTF writer will output a splat with an opacity of 20, rather than the preferred$\frac{1}{1 + e^{-20}} \approx 1$ .