Skip to main content
Solved

PointCloudSurfaceBuilder Fails to Generate Usable Surface

  • December 1, 2025
  • 1 reply
  • 94 views

zlfdodo
Participant
Forum|alt.badge.img+2

I'm attempting to use PointCloudSurfaceBuilder in FME 2024 to build surfaces from a classified LAS point cloud (3D, ~3.6 million points, CSRS.UTM-11N), as part of a workflow to generate pit-free canopy height model (CHM) slices.

My goal is to use the Search Radius parameter to control triangle edge length and prevent long connections across canopy gaps. However, I’m consistently running into the following issues:

 

  • Surface output is sparse or almost empty, even when using the full unfiltered point cloud (no slicing or thinning).

  • Changing Search Radius from 0.45 to 1.5 to 10 meters does not resolve the issue — only a few tiny triangles are ever generated.

  • Processing time exceeds 30 minutes per tile.

  • SurfaceModeller OR RasterDEMGenerator works quickly and gives a full raster, but lacks control over triangle size (i.e., cannot limit interpolation distance).

  • Repeated warnings appear in the log:

My questions are:

  • Why does the surface fail to build even with a large Search Radius and full input?

  • Is there a more reliable alternative for controlling triangulation size while producing raster output?

 

Any insight or guidance would be appreciated!

Thanks!

Best answer by jamatsafe

Hi ​@zlfdodo ,

Thank you for your question. This would be tricky to diagnose without examining the data directly. If you’re able to share a small sample of the LAS file along with a workspace template or screenshot of your workspace, we can take a closer look. You can attach it here or upload via our secure FTP.

I tested a sample LidarBC dataset (unclassified) in the latest FME 2025.2 and didn't see the same behavior, so it's possible what you're experiencing may be either related to the data or your FME version. PointCloudSurfaceBuilder's Simple Triangulation mode can struggle with highly discontinuous surfaces such as canopy data where large gaps, irregular spacing, and sharp changes may cause many triangles to be rejected. Alternatively, you could experiment with the Poisson mode to see whether it handles your dataset better.

To answer your question directly, at the moment PointCloudSurfaceBuilder is the only transformer that explicitly list parameters for controlling triangulation edge length. However, after discussing this internally with our point cloud specialists, for aerial LiDAR workflows, SurfaceModeller or TINGenerator is generally the recommended approach, as these are more robust to variable density and discontinuities. The Converting Point Clouds to Surface Models article linked below walks through the standard approach in more detail.
PointCloudSurfaceBuilder is an option that’s better suited in a narrower set of use cases (handheld scanners, small point clouds, point clouds with existing normals).
​​​
(Tip: If you generate a surface with TINGenerator, you can use the new VertexNormalGenerator (Average mode) afterwards to calculate vertex normals for a smoother natural visual appearance, without changing the underlying geometry.)

As a general tip when working with point clouds, I recommend tiling out a small test area and experimenting with different transformers and parameters before running the full dataset. Disabling caching and organizing your workflow into collapsible bookmarks (only output is cached) can prevent unnecessary caches from being generated while you test which may speed up translation.

If you’re exploring LiDAR workflows, perhaps the following links can offer you more useful insight and examples that may help when choosing preprocessing steps or surface generation methods:

I hope these point you in the right direction. Please feel free to share if you found a solution!

1 reply

jamatsafe
Safer
Forum|alt.badge.img+13
  • Safer
  • Best Answer
  • December 8, 2025

Hi ​@zlfdodo ,

Thank you for your question. This would be tricky to diagnose without examining the data directly. If you’re able to share a small sample of the LAS file along with a workspace template or screenshot of your workspace, we can take a closer look. You can attach it here or upload via our secure FTP.

I tested a sample LidarBC dataset (unclassified) in the latest FME 2025.2 and didn't see the same behavior, so it's possible what you're experiencing may be either related to the data or your FME version. PointCloudSurfaceBuilder's Simple Triangulation mode can struggle with highly discontinuous surfaces such as canopy data where large gaps, irregular spacing, and sharp changes may cause many triangles to be rejected. Alternatively, you could experiment with the Poisson mode to see whether it handles your dataset better.

To answer your question directly, at the moment PointCloudSurfaceBuilder is the only transformer that explicitly list parameters for controlling triangulation edge length. However, after discussing this internally with our point cloud specialists, for aerial LiDAR workflows, SurfaceModeller or TINGenerator is generally the recommended approach, as these are more robust to variable density and discontinuities. The Converting Point Clouds to Surface Models article linked below walks through the standard approach in more detail.
PointCloudSurfaceBuilder is an option that’s better suited in a narrower set of use cases (handheld scanners, small point clouds, point clouds with existing normals).
​​​
(Tip: If you generate a surface with TINGenerator, you can use the new VertexNormalGenerator (Average mode) afterwards to calculate vertex normals for a smoother natural visual appearance, without changing the underlying geometry.)

As a general tip when working with point clouds, I recommend tiling out a small test area and experimenting with different transformers and parameters before running the full dataset. Disabling caching and organizing your workflow into collapsible bookmarks (only output is cached) can prevent unnecessary caches from being generated while you test which may speed up translation.

If you’re exploring LiDAR workflows, perhaps the following links can offer you more useful insight and examples that may help when choosing preprocessing steps or surface generation methods:

I hope these point you in the right direction. Please feel free to share if you found a solution!