Modeling a custom computer mouse



Hi guys!
I have a couple months of experience in rhino and recently I wanted to ad some extra challenge. I decided to make a custom computer mouse. First I made a model out of clay, scanned it with 123d catch and imported the mesh to Rhino. The geometry is quite complex and I am looking for some advice on how to tackle the problem. So far I have sliced the mesh with Contour command and extracted the critical points and splines using Project command and then rebuilding the splines to simplify the model. Here’s what I have:

Actually I did some more NURBS surfaces than what you can see on the pictures but ended up deleting them as I could not join them or make some smooth transitions between them. Now I find myself just staring into the screen for past few days without any progress.

Every tip is welcome!

(Brian James) #2

Your workflow is commonly referred to as reverse engineering. When I’ve done mesh to NURBS modeling, my favorite method was to create Cplanes to 3 points using vertex Osnaps and then draw interpolated curves also with vertex snapping while the project option is on (to the right of the Osnap list). This way the interpolated curves stay straight with the Cplane while also being representative of the mesh topology. Then it’s just a matter of figuring out the puzzle of four sided boundaries for each surface so that you can use MatchSrf or other commands that can account for continuity across surface borders like NetworkSrf or Sweep2.

(Marc Gibeault) #3

I think the recommendation that will help you the most is to not try to have one surface define too much geometry. You have to visualize how neighbour surfaces and blends and fillets will “eat” your base surfaces that define the overall shape.


I didn’t know about that. I have simply drawn a straight line where I found convenient and than used Project command to project it on the mesh (and than rebuilt the line). To do that I had to adjust cplane for every curve, which was really tedious. While at it, wouldn’t it be nice to have a Project command option to project curves normal to the view? That way you wouldn’t have to set cplane again and again for each curve. I saw that t-splines have something similar with their Retopo command.

It’s the puzzle that puzzles me :smiley:

(Brian James) #5

You could make the Cplane based on the active view instead of by three points. Run the Cplane command and you’ll see the option called View. You might want to save each one regardless though so you can come back to it later.

Yes, these kind of workflows are tedious for sure, but they are possible. There are some plugins that specialize in surfacing mesh models which you can research too if you don’t have the time to manually do it.


Thanks everyone for help and tips!
I’ll take a look at some of those plugins.

Would you mind taking a quick look at the mesh that I’m working with? I am actually considering re-scanning the model with greater precision. I’ve watched a couple of tutorials about reverse engineering and it seem that people are working with much more precise meshes than mine.

Mesh.3dm (1.1 MB)

(David Cockey) #7

What software was used to generate the mesh? The mesh is finer in areas of high curvature and much coarser in flatter ares. I’m guessing the mesh was simplified/decimated. You might be able to reprocess the raw scan results with different mesh simplification/decimation settings rather than needing to rescan.


I tried both with Autodesks 123D catch and ReMake to generate mesh out of the photos. Posted mesh is from ReMake. I believe these apps are good for capturing the overall shape of an object, cause they failed to catch many details from my clay model. Or maybe that was my camera…
Anyway, the process of taking photos for these apps is real tricky as you have to avoid capturing similar colors and textures in the background of a model, yet still you have to make a couple of pin points in your surroundings for algorithm to “grab onto” while processing.

I did not simplify the mesh. I only deleted a bottom of the mesh as it blended with the base. And Cull degenerate faces.

(David Cockey) #9

Clay is tricky for photogrammetry. If you are moving the camera and not the object when taking photos then a busy background such as wood or stone with a strong grain is good.

ReMake is deciding how to distribute mesh vertices among the surface points it calculated. I had a look at a ReMake manual and it does not appear to provide much ability to control the mesh.


With better pictures you get better results. Obviously…
A friend of mine took photos of the model with his slr and ReMake had no problem composing a precise mesh, whereas when I took the photos with my phone camera ReMake was so confused it had to ask me to manually pick reference points.
We applied strategy to turn the object on the table instead of circling around it.
Mesh is again much finer on high curvature areas and coarser on flat ones. I guess this is some kind of mesh optimization algorithm by ReMake…

Back to the modeling part. I have some general idea how to resurface the mesh.
Project lines on mesh or draw polylines on mesh
Rebuild them to minimal control points with max.0.5mm tolerance
Sweep2 or Surf from network curves
Analyze surface deviation
Blend or Match surfaces to get fine continuity

Any ideas how to blend two surfaces without same edge lenght? I tried EdgeSplit but without success…

(Marc Gibeault) #11

You could post the two surfaces so somebody could try to show you the best way.
But, when you’re in the BlendSrf command, you can move the endpoints of the blend along the edges.


Just tried that and I get wierd kink between surfaces. Not the result I want. I believe my surfaces are set wrong…

file 001.3dm (622.3 KB)

(Pascal Golay) #13

Hi Andres - ShrinkTrimmedSrf, then UntrimBorder the two strips, then MatchSrf for Tangency (for now) with ‘Match by closest points’ and ‘Preserve isocurve direction’ set - does that do anything better?


(Marc Gibeault) #14

Here’s what I understand your problem was… I used a few of the command’s options to show how I use it.


I was trying to blend the strips with the back end and that’s where @pascal’s tip was of great help.
@Marc - that blend look awesome! Will try that…

Many thanks!


Any suggestions on closing the right side? I’m considering sweep1 with circle along the open curve and then patching and blending whats left between.
I would also like to know your opinion on my surfacing strategy. Would you do something differently?

file.3dm (1.8 MB)

(Pascal Golay) #17

Hi Andres - the surface on the left in your image is the weak one to my eye - I would build this from two simple surfaces and a transition surface between them, as you have elsewhere on the model.- Patch is not going to make a clean surface here.


(Marc Gibeault) #18

There’s a lot of things that can happen in this empty area. Some more definition is needed. Don’t be afraid to create some curves in space to help visualize what you need and want. Even if they won’t be used to create the surfaces they’ll help you find a strategy.
The surface at the right with a rounded end look like a result of trims from blends more than a foundation on which to build. Get you nice and simple square surfaces with the shape you want - without worrying about the edges and then create the transitions.
An old favourite video here:


The method that Brian is explaining in the video is somewhat confusing. I mean, it makes sense but I find it a little bit of an overkill for now. I tried just to make the same thing working alongside and ran onto an all sorts of problems with match_srf. Especially when running mtch_srf couple of times on the same surfaces. Correct me if I’m wrong, but it does not appear as a right approach for reverse engineering?

I ran onto a couple t-splines tutorials for reverse engineerig and their retopoSnap seemed like a good thing for this so I gave it a try.

This is still work in progress as the areas that are transparent/ghosted still need to be edited for the surface to match perfectly.
Can anyone explain to me why does the highlighted curve change position so much between smooth and box mode?


Ok, the answer on the question from my previous post was in the t-splines manual so I apologize for that.
After some time I did manage to wrap up the model in t-splines inside acceptable tolerances and then converted to NURBS for further detailing.

First thing I wanted to do was shell the surface. Or rather offsetting it on the inside and then do Boolean difference. I have a problem with the edge on the pic above. After offsetting inside the surface gets self intersected. I tried splitting the surface by isocurves to remove unwanted geometry but the split failed.

What would be the best workaround for this?
model1.3dm (4.8 MB)