Question

modelling roofs: tins versus draped features?


Dear all,

 

I have a very dense pointcloud, in which I can easily see the roofstructures. I also have the boundaries of my houses, in 2D polygons. I'm trying to get a "3D" model of my roofs (triangles, surfaces, ... doesn't really matter)

 

what I already tried out:

 

- when I create a Tin (Tingenerator), I get a nice result (I even see the chimneys), but the space in between the houses (streets) are also triangulated.

 

- when I use the surfacedraper, with the buildingboundaries as draped features, I do not get this nice result (I have the feeling FME only drapes the boundaries of the feature, which is great for line features, but not for draping polygons). I tried "vertex" and "model" drape model, but this only influences the exterior vertices, not the inside of my polygon.

 

- I tried the surfacemodeller, with triangles as output (but again, the streets are also triangulated). I clipped this result (with my 2D polygons of the houses) but the clipped triangles are getting a height of zero, instead of keeping the height they had before clipping. I forced these clipped triangulation back to 2D (2D forcer), and then draped all these triangles with the surfacedraper...

 

 

conlusion: I have this feeling that I'm searching too far, for something that's maybe quiet simple to solve, so I'm asking you for help! Any ideas on how I can solve this problem in a clean way, so that I get a "3D" model (triangles, surfaces, ...) of my roofs, based on the heights in the point clouds?

 

 

with kind regards,

 

Ine De Cubber

 


11 replies

Userlevel 4
Badge +13
Hi Ine,

 

How about clipping the point cloud before the TIN creation? you can use the group by option to create tins per roof.

 

Hope this helps.
Userlevel 2
Badge +17
Hi Ine,

 

 

Alternatively, these steps might be also available: 1) Transform polygon - building boundary - to its exterior line feature (GeometryCoercer) 2) Drape the line feature (SurfaceDraper) 3) Transform the dreped line to polygon (AreaBuilder) 4) Clip the triangles by the polygon (Clipper)

 

Takashi
Hi Itay,

 

I already tried your solution, as it sounded ok :)

 

I added a clipper, right after my pointcloud. I used the building polygons as clippers, the pointcloud as clippee... with group by (the id of the building). I'm getting this error:

 

Clipper_Solid(SolidIntersectionFactory): No clipper supplied, all clipees will be treated as OUTSIDE...

 

 

I will try to continue (if I merge the id of the building, during the clipping, with the poincloud, I can group my pointclouds that way, I hope)

 

I'll let you know if it worked!!

 

 

 

 

 

Userlevel 4
Badge +13
Hi Ine,

 

 

By using the merge attributes on yes in the clipper, you dont need to use the group by in the clipper, merging the attributes will produce an attribute you can use in the tin generator to create a tin per roof. (see merge attribute prefix)

 

I take it you have a unique id per roof, if not a counter can do that for you.

 

another tip is to make sure the polygons are being read first and setting the clipper type to clippers first, that will utilize the clipper in a more efficient way.

 

 

Let us know how its coming along.

 

 

Cheers,

 

Itay
Itay,

 

the merging works. the problem now is, that he only creates tin's from the points that lay inside my building (which is good!), but as the points or not on the boundary of my building, he will only model a part of my building (and not connecting to the boundary!).

 

so I'm getting tinned roofs, about 20cm inside the building boundaries... (which is logical ofcourse), depending on the density of my pointcloud

 

I'm now trying to use the splitted pointclouds (which are grouped for each building, and have the building id, thanks to you) within the surface modeller, as triangles (again using the group by, building id), but again, only the pointclouds are created between the tins, not connecting to the boundaries of my buildings...

 

still searching :)

 

Userlevel 4
Badge +13
Hi Ine,

 

 

I would try to buffer the roof polygons so that points outside (whitin the buffer distance) will go along for the tin generator.

 

Hope this helps.
Userlevel 2
Badge +17
Hi Ine,

 

 

If you drape the building-exterior-line based on the original points and then get its vertices, I think you can generate preferable TIN based on those vertices and building-inside-points which you've clipped already.

 

To get the draped building-exterior-line vertices, have a look at GeometryCoercer, SurfaceDraper, Chopper etc.

 

Takashi
Thanks Takashi!

 

combining the method of Itay, with yours, gave me my result!

 

summary what I did:

 

1) add a clipper, with building polygon as clipper, and pc as clippee. merge features (result: all points inside the building)

 

2) use this clipresult, as points for the surface draper, with building polygons as draping features (result: draped exterior lines of buildings)

 

3) convert these exterior lines to lines, chop (one vertex) to points (result: all the points at the boundary of the building, on the correct, draped height)

 

4) create surfacemodel with both the result of 3) and 1) as input points, based on the id of the building.

 

the final result is a detailed surface model of my roofs, with the boundaries of my building as boundary.

 

 

great great, let's continue :)

 

thanks Itay and Takashi for your help!

 

Ine
Badge +1
Hello

 

 

I'm following this excellent thread and now have a group of triangles that represent a surface model. However, I am challenged trying to make them look like real buildings. I have tried clipping my orthophoto to the building footprints for example, and then draping them on the surface model. Should work? But doesn't.

 

 

Also when I look at the buildings in KML, the float above the real buildings.

 

 

Has anyone done any further work on this workflow? Any suggestions for my task?

 

 

Thanks
Badge

@inedecubber

Hi Ine,

I m still an FME beginner and I was wondering if u can advise me of how you built your 3D model using the TIN generator? I tried a lot and no success so far

I m just starting and I also have a heavy point cloud; more than 11,800,000 -point point cloud. And I want to get a "3D" model of my rock face using triangles,

- How did u create a Tin (TinGenerator), to get a nice result ?

Also, I don't know what is the correct software to view my results? what did u use to visualize your 3D model?

Regads

Userlevel 4
Badge +25

@inedecubber

Hi Ine,

I m still an FME beginner and I was wondering if u can advise me of how you built your 3D model using the TIN generator? I tried a lot and no success so far

I m just starting and I also have a heavy point cloud; more than 11,800,000 -point point cloud. And I want to get a "3D" model of my rock face using triangles,

- How did u create a Tin (TinGenerator), to get a nice result ?

Also, I don't know what is the correct software to view my results? what did u use to visualize your 3D model?

Regads

Might be better to ask this as a completely new question, since this question is a few years old now. Plus other users might have suggestions and would see a new question more easily than this.

Reply