Reverse engineering based on the 3D scan

Hello everybody!

Hope you are all doing well.

Our company recently implemented a 3D scan-to-3D model workflow for product & process development, reverse engineering, and development of various upholstery products.
Currently, I am dealing with a reverse engineering project of the seat and back based on the 3D scanned data. We already used the process for other related projects and it worked pretty well but at this point,
I’m not sure if this is the best strategy. All in all, this is my workflow:

1.) scan the object (PU foam seat and back)

2.) edit and align the 3D scan in the 3D CAD software (Creaform)

3.) import the edited mesh to Rhino7

4.) project vertical lines to the mesh (to obtain the information regarding the seat shape/curvature)

5.) extract the curvature of the mesh bottom: intersect planar mesh with the 3D scanned mesh (curve → curve from objects → intersection of meshes)

6.) rebuild the curves (to approx. 40 points, not lower, as I would lose too many shape details)

7.) connect vertical curves to the bottom curve

8.) how to properly obtain the shape of the flanking parts?? I tried projecting the horizontal lines to the mesh, later rebuilding, splitting curves at the NURBS model edge, and later creating the surface from flanking curves (curves in black)…

9.) trim via vertical line (0,0), delete one side, mirror and join (symmetrical shape)

10.) create the NURBS surface from curve network (surface from a network of curves)

11.) comparison NURBS to 3D scan

12.) I’ve also tried with quadremesh function and later converting the mesh to NURBS, but I’m not sure if this is the optimal workflow…

This is my current workflow for reverse engineering of similar objects. I am a bit skeptical if this is the most appropriate approach, as I find it hard to properly model all the shape features (in this case flanking parts).

Is this workflow correct?
Can you please suggest me any other ideas, better workflows, directions, shortcuts etc.?

Looking forward to hearing from you.


I don’t think QuadRemesh is the right command for this application. It does not generate perfect topology just like that. So, depending on the requirements and your experience with SubDivison modelling and topology, you could aswell create a coarse base mesh, subdivide it in Grasshopper and pull the vertices to the scan / mesh. In case you are interested in a different approach, post a Rhino file containing the mesh of your scan or post a zipped OBJ or PLY file.

Dear Martin,

Thanks for a quick reply!

I am certainly open to all kinds of suggestions, as we have a lot of similar projects and I would like to know many different strategies to deal with similar stuff.

Here I am attaching the .obj file. (10.4 MB)

What do you think regarding the workflow based on the projecting curves to the mesh?

Thanks again.


I don’t like it.

I prefer a mesh based workflow which results in an editable SubD. I’ll post an example later


Thanks for your feedback.

I would really appreciate your help.

Thanks again.


Actually to my surprise QuadRemesh with a target edge length of 20 mm and symmetry along the Y-axis resulted in a nice SubD. Maybe the fact your mesh is an open mesh helped…

You might want to delete a few loops and then edit if required.

seat_subd.3dm (209.4 KB)



Thanks a lot.

Yes this object has to be an open mesh due to our workflow requirements.

Which specs did you use for the process?

In parallel, I would like to ask you for the opinion/directions regarding other approaches for reverse engineering of different objects from 3D scan?

I was also looking at “Mesh2Surface” plugin for reverse engineering in Rhino. Do you have any experience with it?


Those are the specs I used for QuadRemesh except I didn’t right away turn it into a SubD.But that doesn’t really have an effect on the output. I first thought I might have to do some other tweaking with Grasshopper / Kangaroo but the mesh looks nice.

I own an Artec Leo and so far not alot of objects I scanned would even be rebuildable with lofted curves. Also lofting often is problematic, alignment of the section curves isn’t as easy as it seems. I tend to rebuild objects with coarse SubD and refine wherever it is needed. Either I’m using QuadRemesh or I rebuild a coarse mesh from scratch. Then either manipulate a few vertices manually or if more complex I’m using Kangaroo to smoothen or relax a mesh.

1 Like

Think about how you would model the object without the scan data. How would the surface be divided, etc. This is where having the ability to create new models can be important in creating a surface using scan data.

Contour` is an alternative to projecting lines.

I keep the original contours in addition to Rebuild or RebuildCrvNonuniform

PointDeviation is my usual method for evaluating how close the surface is to the original mesh. I typically use the orginal curves from Contour if the mesh is dense.

1 Like

dont forget you can project subd surfaces to a mesh or polysurface too…

this allows you to paperdoll flat parts for optimum topology and then project to the base mesh to capture shape.

if you do this in "patches and keep you face counts organized, you can then bridge to connect the patches.

see video - Rhino 7- Quick Tip, Project SubD - YouTube

For my money, I’d lay some guide curves and use quadremesh.

you can always subdivide and project points from the quadremesh to the original mesh to get a closer fit as needed.


A fundamental question is how close does the Rhino model need to match the original object?

1 Like

Hi David,

Thanks a lot!
If I would start to model this object from scratch, I would use SubD and try to define all the curvatures with it.
Here I have to be more precise, as the final model has to be almost identical to the initial mesh - especially curvatures and shapes. In the case of this project, accuracy is not so extra crucial, as we are talking about developing an upholstery cover for serial production. In upholstery, business accuracy is not defined within micrometers or similar (in comparison to mechanical engineering). Acceptable deviation would be around 1 - max 3 mm.

But in some other cases, also more accurate work is necessary. Now I am searching for new strategies how to obtain the best results.

Thanks for your suggestions, I will try them.


Hi Kyle,

Thanks for your suggestions. Appreciate!

Somehow I missed this YT tutorial.
If I understand correctly, I should start on the one half of the object (as it is symmetrical), then divide the part into a few patches, create SubDs via the paper doll technique, project them to the scan, and bridge the patches, mirror the half and join?

Would you lay guide curves in both directions?

Thanks again.


that is the general idea, and if you are organized about your edge counts, the bridging should go pretty smoothly.

guide curves are useful when they are useful… sometimes I use them on quadremesh, sometimes not, depends on the results I get.

1 Like