Rhino7 - surface reverse engineering from the 3D scan

Hello everybody!

Hope you are all doing well.

I would like to reverse-engineer the surface of the 3D-scanned chair backrest (image below, the 3D scan is on the left).

Can you please suggest to me, which approach would be the most appropriate to tackle this task?
At this point, I tried the following:

  • aligning the mesh (symmetrical, pre-processed in the 3D scanning CAD software), projecting the curves to the mesh (to extract the curvatures), and rebuilding the curves to become lighter → I was not able to create a viable surface (it was horrible)
  • quadremesh the 3D scan → SubD → the results were not great either…

Do you have any suitable suggestions for my workflow?

Thanks a lot!


1 Like

I’d say old school surfacing will work just fine. Project the curves to the scan mesh, optimize them (remove multiple knots & rebuild), create surfaces, push&pull some control points etc… I guess that the tolerance is not that tight ?! If it is, I would do the same anyway !..

All curves that you have rebuild need to have same degree, same number of points and same direction. Try with loft. You will need more than one surface. Split your curves before rebuild, and think about a proper patch layout. Keep number of points as low as possible. Change degree if you need more points in your surfaces. Old style…

The problem with the scan is the edge which isn’t easy to capture and therefore looks a bit jagged.

A clean way to rebuild is with a coarse SubD with Reflect on…

The process is the same as I suggested for your seat cushion.

I did this a while ago:

In order to obtain an editable model I would reduce the quad count as much as possible and then probably delete some of the edges.


Many thanks for your answers @can.aysan, and @jghdesign!

I will try all the suggestions and then decide what will work best.

@martinsiegrist first, I can improve the scan data in the scanning software (edges and stuff like that), or in parallel, I could scan the backrest shell from both sides, to obtain a solid mesh model - edges will be better defined.

Is there any other viable way/strategy to tackle this kind of project, where I have to reverse-engineer the surface from the scanned object?

Thanks again,
Klemen M.

For this project, I believe SubD will do the job. As Martin suggested, reduced count of quads is really important to get a decent surface. As for the edges, you can select the edge vertices and place them using align command with new V7 options like ToCurve,ToLine, ToFitPlane, ToPlane etc. It’s a really helpful tool, surprisingly not too many people are using it. But again, generally I’d use classic surfacing, it is more accurate. Probably takes more time but you can have really good results. And old project of mine for example:

Blue surface is the new gererated surface, white is the scanned data. With enough coffee and patience, you can create really close results, even further enhance the original surface

1 Like


Thank you very much for your suggestions.

In the case of further challenges, I will reach out again.

All the best,

What’s not to like? Those SubD’s look perfectly suitable to me.
Maybe the mesh, to begin with, isn’t very well developed. Without better meshing tools, SubD’s are the best bet.

How else would you like the surfaces to flow?

Due to my own struggles recently with NexEngine’s bs litigation, I’ve resorted to the V8 WIP on a few projects, as a temporary workaround, using SubD’s n’ such.

Without using sophisticated software specifically oriented to reverse engineering, Rhino’s new SubD tools are the best option I’ve seen.

All that’s missing is mesh alignment tools.

1 Like