Closed shelterit closed 2 years ago
@ptrgags Would you be able to talk to anything that changed with point cloud rendering during the past few releases?
Hi @shelterit,
The introduction of the new Model
architecture affects all the 3D Tiles 1.0 formats, including point clouds. The new architecture unifies the implementation, so b3dm, i3dm, and pnts all can use the same model code we use for glTF models.
The change was actually implemented much earlier in 1.90 when the new architecture was still called ModelExperimental
, see this older changelog entry
The new implementation does support 3DTILES_draco_point_compression
, for example, Draco is used for the tileset in this Sandcastle so maybe there's some other corner case here.
Are you using any CesiumJS features like point cloud attenuation, styling, or anything else beyond just loading the tileset?
I know you mentioned you're not able to share an example due to firewall restrictions, but if you want to inspect things on your own, these are the places in the code that are specific to point clouds:
Scene/Model/PntsLoader.js
-- this handles transcoding .pnts
to ModelComponents
(which is based on glTF concepts)Scene/Model/PointCloudStylingPipelineStage
-- this code is relevant for styling and point cloud attenuationOh, @shelterit since you can't post an example publicly here, would you be able to send example data (and/or an asset ID if you tiled through Cesium ion) to support@cesium.com? If so, please include this CesiumJS issue number
@aixiaodeyanjin are you able to share your tileset?
Hi there, thanks for the reply. I've turned off pretty much anything I could find (any transforms, tweaks or settings, so it's pretty raw) making me believe that maybe its a format thing? Has anything in the parsing of the files changed?
I popped the object out so you could see it (I've shot some relevant stuff);
I've stripped it bare, still no show. In my app I have a plugin I can attach to the tileset with a bunch of controls, and I've played around with all of them without seeing any changes;
I've got a screenshot for you here. The red polygon is usually clamped to a rich pointcloud, however now you only see, if you squint, a few dots here and there;
What should I investigate next in terms of the files? We use MetaShape to generate most of them, I'll see if I can pull one out for you to try.
@shelterit thanks for the info. My first guess is that something about the quantization code is wrong. That might explain why the points are so far apart. I noticed that the Draco code is slightly different in PntsLoader
compared to the old implementation in PointCloud
(see here vs. here)
I pushed a fix to this branch: https://github.com/CesiumGS/cesium/tree/draco-quantization-type. Could you try it out?
If that doesn't work, a MetaShape example would be really helpful.
Sure, I'll give it a try. I usually use npm packages, but I'll try to set up a Cesium build later today. But that's good that we're seeing something that worth chasing.
I've eliminated the Las file itself, it's definitely in the 3D tiles from MetaShape. Do you support Cesium Zipped tiles uploads in Ion?
You can grab the npm package published by CI if that's easier: http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/draco-quantization-type/cesium-1.97.tgz
Do you support Cesium Zipped tiles uploads in Ion?
Yes
I get a 404 on that one. Anyway, don't worry, I'll give a Cesium build a try. I should have one, but it's nice sometimes not to have complete control over everything and have someone else to blame for a change ... :)
O, I've uploaded the tileset to Cesium Ion. It views in the Ion admin tool (which uses Cesium 1.91);
But if I view it in Sandcastle (which is latest 1.97), then it's blank (with no errors in the console);
You can see the assetId in the screenshot as well;
Cesium.IonResource.fromAssetId(1314334)
Let me know if you need anything else. I couldn't get Cesium to build, but that's a problem with my current environment (remote virtualbox on rubbish hardware over rubbish lines). Might be able to pull it off next week when I get back.
Hopefully that's at least enough to do a quick test. Let me know if there's anything else I could chase/try.
Ah... sorry about the 404, we'll look into that.
Good news is that the branch fixes the bug. I'll open a PR.
Awesome, at least it was reasonably easy to find and fix. If only all bugs could be more like that. :) Thanks for all your help.
Hi,
Bit hard to demonstrate with all my data locked behind firewalls, but has the rendering of pointclouds changed? I've tested all versions from 1.87 till 1.96, all fine, but 1.97 breaks them all. Has there been a change in formats, etc that I missed? I can see the "CesiumJS has switched to a new architecture for loading glTF models and tilesets" message, but in what way has this affected pointclouds? They're all pretty much version 1.0, and I use 3DTILES_draco_point_compression. I see some scattered dots, but nothing you'd understand as a pointcloud. What should I look into, what has changed with pointcloud rendering?
Cheers,
Alex