3D Tile outline color

I’m using FME to convert shapefiles into 3D Tiles and I’m trying to do all the styling in Cesium. I can color the volumes as desired and now I want to change the color of all the edges but I’m having trouble figuring out how to do so.

Here is what it currently looks like

But I want it to look more like this for the edge

Does the outline of the volume need to be defined in the 3D Tile itself? I tried using Cesium.PostProcessLibrary.createEdgeDetectionStage() as an alternative but couldn’t get that to work either.

Here is my current sandcastle example: link

Thanks for any guidance/assistance!

1 Like

@kteneyck

Thank you for sharing such a cool demo with the community! :grinning: :rocket: Just out of curiosity, what do these shapes represent?

Could you provide some more details on how exactly you are using an FME to convert shapefiles into 3D Tiles? 3D Tiles styling in CesiumJS is somewhat limited, so I would be curious to hear more about your alternative styling options. Depending on your use case, it may make sense to do the styling with a 3rd party application, rather than styling using CesiumJS at runtime. In general, I recommend defining the outline of the volume in each 3D Tile. I think this will scale the best with your application. Let me know if you have any other questions or concerns! Looking forward to learning more about your project.

-Sam

Hi @sam.rothstein,

The shapes represent different types of airspace, no fly zones, wildlife sanctuaries and national parks. My basic process in FME is this:

Input shapefiles (.shp) → extrude the geometry based on a property in the shapefile → calculate the volume to assign the cesium_priority for tiling → set appearance for the volumes → use the 3D Tile Writer to save the result and upload to Ion.

That’s good to know that I should be baking the outline into the 3D Tile itself. I wonder if converting to CityGML would give me more options and maybe Ion would tile it more efficiently? In addition to my outline issue, the tiling seem to load too many volumes when zoomed and maybe CityGML would be better?

@kteneyck

Thank you for sharing some more details on your development process. This information helps me out a lot. I do not know enough about the tiling process to know if using CityGML would yield better performance. Regardless, it could be worth a try and might benefit other areas of your application (as you suggested).

Tiling performance can vary significantly depending on the application. Are you currently experiencing any performance-related issues? Have other community members noticed performance improvements when using CityGML?.

-Sam

I wasn’t able to get CityGML working in FME for some reason so I dove deeper with the 3D Tile writer. The writer isn’t perfect but it gets me 90% there and a lot less time spent trying to convert the data myself. Here is a thread I started on the FME forum for reference.
https://community.safe.com/s/feed/0D54Q00008t82HOSAY

1 Like

@kteneyck

Thank you for sharing some more information and the link to the FME forum thread. Do you have any indication why CityGML was not working?

-Sam

I have no idea. I thought I was following the FME guide to convert shapefiles to CItyGML but the result never had any geometry defined in it.

1 Like

@kteneyck

Interesting. I am curious to see the exact FME guide you followed - can you please share it with me?

-Sam

UPDATE: I’ve had some more time to look into converting my shapefile data to CityGML and then let CesiumIon process it. I now have a somewhat correct tileset except that the extruded 2D data is now “twisted” along the perimeter instead of being a vertical wall. Here is a video of what I’m trying to describe: Twisted 3DTile Wall - YouTube

And here is the asset number if you want to look at it: 1250378

I generated another citygml with more data this time and now it looks fine. Not sure what changed besides adding more geometry. It did take overnight to process the 1 GB tileset