Outlines for the 3D tileset building edges as like OSM tileset buildings

Hi Team,

I have multi floor buildings data which is in 3D tiles format(screenshot attached), now i want to have building outline edges floorwise as like OSM buildings tileset have. I tried using silhouette but that is not working for every edge of the building.

Is it possible to add outline edges before publishing to ion as pre processing as like OSM buildings tileset. I also gone through the link( glTF/extensions/2.0/Vendor/CESIUM_primitive_outline at master · KhronosGroup/glTF · GitHub) for CESIUM_primitive_outline but i did not understand how to do it.

Or can it be done post processing at the client end as like silhouette?

1 Like

Unfortunately it is currently not possible to add outlines to your own 3D tileset. This feature is requested and discussed here.

The link you included in your post (glTF/extensions/2.0/Vendor/CESIUM_primitive_outline at master · KhronosGroup/glTF · GitHub) is actually for glTF models. You can add outlines to a glTF building model by including CESIUM_primitive_outline as an extension.

Thanks dzung… I can see the outline edges in different color for OSM buildings tileset(Cesium ion), how it is possible in this case. is it happened in the preprocessing stage? if so how can we do that?

1 Like

Hi, I’m also really interested on that topic. How are the outlines on the OSM buildings generated?

In this sandcastle link you can see I’m even able to disable the outlines for them, but haven’t found how to enable that outlines on my own tilesets.

Thx

@peo

Thank you for your questions! I recommend checkout out our source code for more information on how we generate outlines for OSM buildings.

Unfortunately, I can’t think of a simple way to enable outlines on your tilesets. Our API currently does not support this functionality. Any suggestions from the rest of the community?

-Sam

@sam.rothstein thx a lot for your quick answer. I looked into the code and as far as I understand this is the class which handles outline loading for models.

There is a property showOutline [boolean] in the Cesium3dTileset class, which seems to activate that logic and which supposedly only works for gltf models.

Currently I’m testing with tilesets which are created from a kmz file wich contains a .dae model.

My question is, would that work if my tileset would contain a glb/gltf file instead of a dae model?

Regards

@peo

While my intuition leads me to believe that this would not work, our documentation seems to state otherwise. Regardless, there is no downside to trying this out. Can you please give this a try and let me know if it works?

-Sam

@sam.rothstein

I just tried following things:

  • Tileset (kmz) whose internal models are in .glb format
  • Tileset (kmz) whose internal models are in .dae format

For both cases Cesium.Cesium3DTileset#showOutline: true or false does not seem to have any effect.

For my understanding, how do the tileset for the OSM Buildings (Asset ID 96188) technically differ from my own ones?

Thx

@peo

Thank you for giving this a try. As I eluded to above, I am not particularly surprised with the outcome of your test.

While I have access to the OSM Buildings dataset, I have not taken the time to look through the files to determine what is unique about the dataset regarding the showOutline method. I did find this page which provides some high-level information about the dataset:

I suspect that the dataset includes additional 3d data representing the building outlines that can be toggled by the showOutline property. While I worked on this somewhat relevant pull request a few months ago, I may need to check in with some other CesiumJS developers for more context on our OSM buildings dataset.

-Sam

Hi @sam.rothstein,

thanks for the further info, after investigating a bit further I can only some misleading information about the topic. If you look to this announcement you can read the following:

and also:

How can I activate the CESIUM_primitive_outline extension? The documentation on that aspect is not really clear even if here its stated that showOutlines relays on that extension.

Regards

1 Like

@peo

Thank you for providing some more information. I just shared this thread with another Cesium developer who helped write the spec that you shared. He should get back to us shortly :pray:

-Sam

Hi @peo

It’s not possible to enable outlines unless the tileset has the CESIUM_primitive_outline extension already.

OSM buildings are generated with a custom pipeline that is different than the general purpose 3D buildings tiler in ion, so the only way to get outlines is by writing your own tiling pipeline. However we can consider adding this feature to ion in the future.

1 Like

Hi @sean_lilley & @sam.rothstein,

thx for the insights. It’d be awesome if that’d be supported in ion.

We are really interested on using that feature for our project, is there any documentation resources on writing your own tiling pipeline?

I’ve also seen there is an on premise option for the tiling process. Is that something that could be solved that way?

Regards

Hi @peo,
any finding since then?

generate a line primitive with gltf.

1 Like

Just to follow up on this topic, does Ion now support the CESIUM_primitive_outline extension? I see some reference to it in the new release notes. I’d love to be able to have Ion process my tileset and then show the edges of my geometries

ion doesn’t support CESIUM_primitive_outline yet, we just added more for more visualization options in CesiumJS