Edit coordinates of surface control points in Grasshopper

I’m trying to take more control over my BlendSrf in Rhino using Grasshopper. I basically want manual control over my “Add Shapes”. See the following .3dm and .gh files:

BlendSrf.3dm (99.0 KB)
BlendSrf.gh (26.4 KB)

I’m currently trying to obtain the point coordinates and then edit them numerically.
I want to do this either by using a slider or by typing in the numbers (notepad-like).

I’ve already managed to obtain the control points of the add shapes, all I need now is to edit the coordinates of these control points. It would be very nice if I could edit each point individually, or a selection of points.

You can use [Point Deform] to modify the control-points of any kind of object. Just provide it with some points that are at control-point locations and a motion vector for each.

cpdeform.gh (19.5 KB)

2 Likes

When I try to open your .gh file my rhino crashes and closes, so unfortunately I can not use it for help…
Could you tell me more on how to implement the motion vector part of this problem?

Hmm ok, I’d like to know why it crashes, but that’s a different topic.

The question is which control points do you want to move and where do you want to move them to? Once you can formulate this in a non-ambiguous way we can start converting it into Grasshopper logic.

Is it the third row of control points from each edge? The second and third rows? Move them in which direction and how far?

I’m very sorry if my description is unclear.

I would like to be able to move the second and third rows, while conserving continuity between the BlendCrv and both surfaces. I will have to be able to select each control point in the third and second row seperately. This is because I need a lot of control over all the curves, and often selecting all points in the second and third row will not give me the desired result.

It almost sounds as though just the regular BlendSrf command in Rhino does exactly what you want. Grasshopper isn’t very good at encoding processes that involve a lot of manual tweaking at the best of times, and I have no idea what the constraints are for control-point motion while retaining specific levels of continuity between surfaces.

The only problem is that you can only edit the shapes of BlendSrf by dragging them around. The closest I can think of is setting a very fine grid and then dragging the handles with grid snap enabled. But I hoped Grasshopper would give me more control.

Oh I see. Unfortunately the way in which grips move when you drag them inside the BlendSrf command is rather complicated and I do not know how to duplicate that behaviour. So even though you could use Grasshopper to numerically adjust the grips, maintaining a desired level of continuity is going to be rather difficult.

The algorithms we have internally that ensure continuity is probably something we need to think about exposing in the SDK, but until that happens you’ll have a hard time trying to mimic this in GH.

I see, that’s unfortunate. It would be great if users could obtain more insight into the system used to move the shapes. It could also be a useful algorithm outside BlendSrf (although I’m not sure if that is possible, since I don’t know how the algorithm works).

@mikko, @dalelear, can either of you shed some light onto the underlying algorithms that allow users to move blend grips while maintaining the desired continuities?

I did find something interesting while looking for a solution to this problem:

After blending a surface it is possible to turn on its control points (obviously). If I set the DragMode to ControlPolygon I am able to adjust the BlendSrf while retaining continuity with both surface edges by dragging the control points tangent to the respective control polygons.

It doesn’t allow me to numerically edit the BlendSrf, but it does allow me to check one BlendSrf and then edit it afterwards without having to 1. create a new BlendSrf from scratch or 2. losing G2 continuity to the surface edges.


Any progress on this?

Will this component work for curves instead of surfaces?

Say, deform a portion (through control points) of a curve in some affecting directions.