import survey-style CSV point data into Blender and generates a triangulated 3D terrain surface.
The following scripts imports survey-style CSV point data into Blender and generates a triangulated 3D terrain surface.
https://hub.openingdesign.com/OpeningDesign/Utility_Apps/src/commit/9330cc2c7732acca6202d2e5ea9133690bc5147b/Blender/simple scripts/CSV Terrain Import for Blender
- Reads CSV files containing
x, y, z, label - Converts coordinates from feet to the current Blender scene units
- Offsets large world coordinates near the origin for precision
- Corrects axis orientation (Y flip + proper Z alignment)
- Creates labeled empties for each survey point
- Optionally filters out unwanted point types (e.g. buildings or utilities)
- Generates a Delaunay-triangulated 3D mesh surface from the remaining points
The result is a clean, unit-accurate terrain mesh built directly from raw survey data inside Blender.






Comments
I think it would be a very useful tool in an infrastructure tab, as proposed here.
Would be awesome! Would look to others more experienced than I to make the integration.
Nice feature, must-have for anything infrastructure related.
Important to note : Delaunay triangulation may struggle with holes, I think there is a parameter in the scipy function to generate the triangles, with MAX_LENGTH or something similar to avoid having interpolations that give false information between faraway points. Edit Delaunay docs : It seems there is no such parameter, but running a script that will delete greather than L length edges from a mesh after creation would be trivial.
Also as pretty much all 3D definition in infrastructure it's not really 3D but rather "2.5" D as you can't have a mesh that goes over itself so you can't trivially create for example a bridge or a motorway interchange with this method.
Also nice to have would be extending the mesh down vertically by X amount or to a basis of Z = 0 so it's actually manifold and we can do groundworks computations on it.
Also nice to have and take into account since it is an interpolation and the choice of what vertex to join with which vertex is entirely up to the algorithm so if you have topology defining lines like a roadwork limit or a building limit it will not natively take it into account. Could do with forcing edges in the input so that you know that vertices will be joined along those when executing the triangulation.
Cheers.
This is also important to avoid triangulation between all the points at the boundaries of the point collection. Normally, this unnecessary extra mesh needs to be manually "cleaned up" later.
I adapted the script created by FraJoMen in this post to create a solid from the surface. See below for inspiration...
Besides the earthworks discipline, another discipline that can use this feature is geotechnical engineering, for creating the surfaces that make up an IfcGeotechnicalStratum.
My vote for this to be part of the BonsaiBim core.
There are actually two major areas of functionality here:
1. import points from text file (CSV, space delimited, tab delimited)
2. use points and breaklines to generate a 2.5D surface model
The first is often referred to as Coordinate Geometry (abbreviated COGO). There is some api functionality for this already in the ifcopenshell/api/cogo namespace. There are no api stubs for the second but it might make sense IMO to use ifcopenshell.api.terrain. See additional/related discussion on github.