Business context
The client is a city planning software company in Singapore that sells a SaaS product to urban planning teams. Planners need building models and the city map in one place. City data and building data come at different levels of detail and in different formats, and the product had to handle both to stay competitive.
The challenge
The client needed support to develop export, import and visualization of 3D digital twins of buildings on a GIS map. City models in CityGML and detailed building models in IFC differ in scale and detail. Large IFC files strain a web viewer, and every exported model had to work in the tools planners already use.
Our solution
We built new import, export and level-of-detail features into the client's existing product, on three.js. Open formats such as CityGML and IFC come in, and models go out as KMZ, DAE and OBJ.
- Import of CityGML files
- Export of 3D to KMZ, DAE and OBJ
- Algorithm for level-of-detail reduction
- Loading of large IFC files (around 50 MB)
- Maintenance of existing KMZ, DAE, KML and IFC import
- Sun and shadow analysis on 3D city models, by date and time, plus fixes to map tiling
- Upgrade of three.js to the latest version
Business impact
The enhancements shipped in the client's SaaS product and launched to market.
- Planners view building and city models together on the map, which supports design and approval reviews
- Customers bring models from common BIM and city formats instead of rebuilding them
- Exports let planning teams share models with other tools and stakeholders
- Planners can check the sunlight and shadow effect of proposed buildings before approval
- The client extended its product without building a separate 3D team
Engagement
We worked inside the client's existing backend and frontend code, adding features and maintaining its import formats alongside the new work.




