Patch command needs more controls



Rhino evolution sees patch command as all we have for placing a surface through a distribution of points.

It is a vital tool for surfacing points from out of a photogrammetry program.

Not the fine point cloud an auto process creates but one I have created using manual marking.

The program makers say use Rhino, yet this patch tool whilst good has no means of making subtle changes to just one part of its surface.

As Rhino is all about such shapes, surely we should have a greater degree of controls ?

If the surface fits fairly well but has a bulge on one area for some odd reason, altering values messes up the perfectly good fit elsewhere.

I have a straightforward easy shape to fit and the end has kicked up and there is a bulge spoiling the fit, and no means of fine tuning just that area.



The means of “fine tuning” you speak of is called point editing (of the surface, after Patch is done). When working with data such as yours, this kind of operation is pretty much required.


(Pascal Golay) #3

Hi Steve - if you are patching points and you use History, you can move the input points to adjust the surface.




I guess you refer to something I have just googled and found, which appears to come from the Rhino stable of tutorials.
Its a nice slick well spoken tut.

…I would like to find some lessons with 3dm files that allow me to try my hand on this.

What I would like however is to simply select the points the patch is missing and get the command to revise patch just for these. So easy, simple, tells it where it must fit better, with controls to adjust the degree of fit and the transition from the surrounding good fit.

Now if such existed, and with programming it could, that would be IDEAL. I have a big need for accurate Patching as do folk using photogrammetry.

The problem with patch is trying to see the points and does the patch run through their middle. Some kind of visual feedback as to how good a fit per point there is. At the moment all I can do is zom right in and use my own eye to judge fit, and its not easy.

Not sure what you mean by move input points. Are they the points I have input into the patch command ?..or the control points that appear afterwards if as the video says F10 is hit. (PointsOn command)
My points I am surfacing are in accurate locations, or as accurate as Photomodeler does, you dont mean move these about do you ? I need the skin to go through these, if I move them then I am moving the goalposts to suit the shot the footballer makes. I lose their position which I need for this and further work. I need a skin to go through them as best fit.



As a best fit, yes. Through the actual points, no. With the data you originally posted, there’s no way to get a smooth surface exactly THROUGH all of your points. So there will be deviations. No matter how you look at it you’re inventing a new surface interpolating through bad data and data you don’t have.

You can turn the spans way up and the stiffness way down on Patch to get it to go closer to more of your points, but then the surface quality will likely be awful (because the input data is awful). My guess is that as this is an airplane component, the original object is smooth, so you’re going to want to fit a smooth but editable surface through the data as best you can and then tweak it.

As I suggested originally, the best would be to use the patch surface as a base for a new surface made via Loft or Network using curves derived from the patch and cleaned up and edited. It’s much easier to guide and control the resulting surface by editing the curves.



Hi Mitch,
I agree with the final create new curves and loft etc you suggest. That is my plan.

I also realise that with the points I have no way will best fit occur through all points.

As it is I have now tweaked the surface using control points and got a very good fit, which the patch command could have done with my suggestion of extra controls in a fraction of the time.

To get to that stage of creating decent frame curves I need to get sections through a surface where the actual frames inside occur. Then I will tweak them as if they were contours on a map etc and get equal spacing or whatever needed , but I need to establish if there is a smooth transition or not between frames and I know some parts are not a smooth transition so the surface best fit is required first. I am aware that some of the points will never be accomodated without denting a surface with pinch points.

A pretty fair fit would give me a surface I can then use Project to get my frame stations onto, then refine the curves.

I just need to refine this in some areas it will fit but not at the expense of messing up the surroundings which do fit.

My patch was very good in 80% of places but somewhat out e.g. along the fin edge, I needed the surface there to better fit the points to enable me to create the aerofoil section at the fin edge, an area where curvature is very important and not so open to my own designer eye and smooth curve approach.

I have just been using MoveUVN for a good 2 hrs pulling and pushing on some control points to get rid of a ridiculous bulge that was a few cm away from points on the side then also refine the fin edge, like some tailor repinning and repinning cloth until happy.

We really could do with a makeover and some extra controls …

With my request for an extra control, I wished I could select the points and curves its badly missing, then tell it to better fit that area only, and drag a slider or two and see the surface come in to fit, another slider controlling the ‘best fit’ curvature through these selected points, another slider controlling the transition and smoothness of this into the surrounding existing unedited fit.

Quicker than select a control point, try U V and N values, alter the value strength and so on until I get the fit I want. Dont do away with these, but add in my ‘select points to better fit to’ option.

Which points inside, outside, and on surface…to better see these would be a godsend and speed things up no end !!!

As it is I have to keep rotating and trying to spot which control points control the surface where points sit within the surface. To have it show me in one colour the points outside, another colour points on the skin +/- a tolerance I have entered, and in another colour those inside the skin, that would be great. As it is I have no ready viewer of these three states. I tweak it until a square point half shows above the surface, but Rhino and the way it shows surfaces cant be relied on visually I find. One can refine the display at the expense of slowing up things I recall and I may still have it set to that better setting anyway. I dont recall where the cotrols that give best display are as I type this.

I wondered if I should create spheres to the tolerance I wish, lets say 1mm dia and have one per point, that way I could choose render and see which spheres showed up inside and then further pull the skin in on those areas.

Is there a command to make a sphere per point ? I havent time to go creating spheres for every point. In fact Block would be good for this, should I wish to alter their diameter !

I typed History and then selected Record History at foot of screen, dragged a U slider, but then dragging it a second time I noticed history was greyed out again. It seems to think the one slider move was it !

I would like it to show me the skin later as I drag as opposed to when I stop.



Below is a script from my library which will add spheres to points. The spheres are not blocks however.


SpheresToPoints.rvb (751 Bytes)


Thanks Mitch,

I am just wondering how my spheres in fact help, as they sit half in half out of my surface, but I need to look back and forth either side to see which ones dont show both sides.

Any way I could use them to see which points fall just inside.

I considered booleansplit and use the surface to slice them, i could then select objects just created and apply to a different coloured layer I guess.

Tried that and windows ran out of memory !
Any better ideas ?

I need my idea of colour points as a tool.


Sounds like you’re making a lot of of work for yourself. I would just use the command PointDeviation with your points and your surface, and tweak the settings in the dialog to give a meaningful color range with the distance deviations you need. Then start tweaking your surface, red points indicate those furthest out.

Unfortunately PointDeviation is not History-enabled, so you will need to repeat the command often as you are tweaking. Having your points grouped may be an advantage for selection of the points.



PointDeviation, not aware of that command.

Now if this displays points one side of the surface in one colour and the other as another colour then YOU ARE A STAR :slight_smile:

However CommandHelp for once is not much help. I could do with a video of how this works.

Google it and find nothing.

I run the command and it wont let me select the surface created by patch but it will let me select a point. As I have many I go to layer with them on and choose selectObjects and the command vanishes.

Start again…this time select the points from the layer then run PointDeviation and dialog box appears, selecting the surface sees nothing happen. Not sure in this process just when I get to select my surface to compare the points to.

I have a surface and a grouped set of points, just what are the steps ?

CommandHelp needs a video or at least I do on youtube or somewhere.

Remember the shroud, same thing, sussing how good a fit the surface is and adjusting it whilst points inside show as different colours to those outside.

Can patch and PointDeviation run together, I need to see wher I need to tweak patch with coloured points indicating in/out. The problem with patch is the points are selected and show up both sides of the surface so one cant tell very well how changes are taking effect. Only when the ok buton is hit do we see, and even then its tricky, then opening patch it cant carry on, it has to start over again.



PointDeviation will not run INSIDE of Patch.

To use: Run the command. Select the points (all of them) and Enter. Suggest you group them before running the command so that you only have to select once. Select the Patch surface and Enter. If you can’t select the patch surface, there is something wrong, maybe it’s locked.

The PointDeviation dialog will come up. You will need to play with the numbers in the boxes so that they are meaningful to you so that you get a variation in color according to the tolerances you need to hit. Leave the dialog showing, do not close it, it’s non modal, you can edit the surface while it’s up.

Then turn on control points for the surface, and in the areas where the deviation is more than tolerances (red and orange), start selecting and moving them towards the points in question. Actually I was mistaken, the point deviation display WILL update when you do that, so you will see things change from red to orange to green or blue. According to the color and the values you set in the dialog, you will know how far out of tolerance the surface is from the points.

Here is a very fast video. That’s all I have time for. You will obviously need to take more time to set it up and move the surface control points more carefully.



Truly Excellent…THANK YOU SO VERY MUCH :-), its a shame it doesnt run INSIDE patch, it would save all the fiddling afterwards, however it gives great feedback for which parts need tweaking.

Just await McNeel to have it run within patch now.

I also am finding the patch surface during patch command is very light indeed, and becomes normal when Ok applied.

Didnt do that the other day.

I am in V4 again, as yet to move this important project out to V5, at least V5 interface is sorted, must get round to migrating over permanently…so maybe thats making a difference. Its ultra bright though, so I use ghosted to kill its brightness.


(David Cockey) #13

SoftEditSrf can be used to edit a surface in a limited area.

SoftMove can be used in a similar manner to move control points.