Cannot join surfaces

Why can these two surfaces not join? Using MatchSrf and Position (or Tangent) still does not put their adjacent control points together. Even if I have manually adjusted one surface’s control points to match the other surface, the two surfaces still do not join. Even if I move one surface away from the other, then try to MatchSrf by extending an edge (using Position matching), the two surfaces still do not align to join.
They are both the same degree and span. They are untrimmed on all edges. They are ungrouped.
Any answers?
Thanks,
Matt
RhForum_UnableToJoinSurfs_231016.3dm (20.5 KB)

Hello- please run the SystemInfo command in Rhino and post the results.

-Pascal

Rhino 7 SR4 2021-3-19 (Rhino 7, 7.4.21078.01001, Git hash:master @ a432d22ab7f0f7b53d157d578278070c8bf6eff4)
License type: Commercial, build 2021-03-19
License details: Cloud Zoo

Windows 10.0.19045 SR0.0 or greater (Physical RAM: 48Gb)

Computer platform: DESKTOP

Standard graphics configuration.
Primary display and OpenGL: NVIDIA GeForce RTX 2080 (NVidia) Memory: 8GB, Driver date: 11-22-2020 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 457.51
> Accelerated graphics device with 4 adapter port(s)
- Windows Main Display attached to adapter port #0

Secondary graphics devices.
Intel(R) UHD Graphics 630 (Intel) Memory: 1GB, Driver date: 6-1-2021 (M-D-Y).
> Integrated graphics device with 3 adapter port(s)
- There are no monitors attached to this device!

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
Redraw scene when viewports are exposed: On

Anti-alias mode: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 11-22-2020
Driver Version: 27.21.14.5751
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 8 GB

Rhino plugins that do not ship with Rhino
E:\Software\Rhino\Food4Rhino\Crayon\crayon111\Crayon.rhp “Crayon” 1.1.0.0
C:\Program Files\Chaos Group\V-Ray\V-Ray for Rhinoceros\V7\VRayForRhino.rhp “V-Ray for Rhino”
C:\Users\mflynn\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\IntelDenoiser\0.6.0\IntelDenoiser.Windows.rhp “IntelDenoiser.Windows” 0.1.0.0
C:\Users\mflynn\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\NVIDIADenoiser\0.4.0\NVIDIADenoiser.Windows.rhp “NVIDIADenoiser.Windows” 0.4.0.0
C:\Users\mflynn\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\SubstanceImporter\1.0.0\Substance.Win.rhp “SubstanceImporter” 1.0.0.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 7\Plug-ins\Commands.rhp “Commands” 7.4.21078.1001
C:\Program Files\Rhino 7\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 7\Plug-ins\AnimationTools.rhp “AnimationTools”
C:\Program Files\Rhino 7\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 7.4.21078.1001
C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 7.4.21078.1001
C:\Program Files\Rhino 7\Plug-ins\rdk_ui.rhp “Renderer Development Kit UI”
C:\Program Files\Rhino 7\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 7\Plug-ins\RhinoCycles.rhp “RhinoCycles” 7.4.21078.1001
C:\Program Files\Rhino 7\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 7.4.21078.1001
C:\Program Files\Rhino 7\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 7\Plug-ins\Displacement.rhp “Displacement”
C:\Users\mflynn\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\PanelingTools\2020.12.9.865\PanelingTools.rhp “PanelingTools”

Hello- the first thing to do is update Rhino - we are 30 service relases ahead of your build.

https://www.rhino3d.com/download/rhino-for-windows/7/latest/

-Pascal

1 Like

Well, that did it. The surfaces, unmodified (with control points still not touching perfectly but MatchSrf’g with Position) now joined, and without modifying the file unit tolerance. McNeel must have fixed a bug sometime, although I didn’t know this was a bug.
Thanks Pascal.
Matt

@pascal Wait; hold it. I realized that the reason the surfaces joined in the uploaded file was because when I exported those two surfaces only, I exported them as Geometry Only, and the exported file’s unit tolerance changed from 0.0001" to 0.001 (unitless). Back in my original file, where the unit tolerance was tighter, the surfaces remain unjoinable, and MatchSrf still does not match these two surfaces’ control points correctly.
So again, why not?
Updated file attached.
Thanks,
Matt
RhForum_UnableToJoinSurfs_231016b.3dm (56.7 KB)

Hi Matt - I see that they do not join as is, (CrvDeviation shows Maximum deviation = 0.000441671)

but MatchSrf

(Maximum deviation = 0.000126507)

allows them to join here.

-Padcal

The reason they don’t match is that the control points have different weights.
If you set the weights of each pair of CVs so they are the same then the edges match
ableToJoinSurfs.3dm (86.0 KB)

1 Like

Thanks @jim, for pointing out the weighting. Not sure how that happened, as I don’t think I’ve ever manually adjusted control point weights in Rhino. These two surfaces had been a single surface that I split by isocurve, then shrunk, then further MatchSrf’d, but I do that process often on other surfaces and those other surfs still join up. That’s something to keep learning.

Thanks @pascal, I’ll try to remember CrvDeviation next time surfs have a hiccup.

Matt

That could happen if the original was a degree 2X2 rational surface that you changed the degree to 6x6. But that is just a guess.

That (2x2 situation) could have happened here, but I think the original surface was likely 4x2.

Normally I start off with 3x2, 4x2, 5x2 surfaces, then change higher if needed.

Before you answered, I tried rebuilding the two surfaces using the boundary curves of the original non-joinable surfaces (via DupEdge). The matching curve was not weighted all at 1.0. This matching curve between the two non-joining surfaces was the original ExtractIsocurve from the original surface.

So then I rebuilt brand-new surfaces by tracing points only (first rebuilding the curves by tracing control points from the original surfaces, then manually moving points of new surfaces to match the old ones). At that point, the two new manually-remade surfaces joined, as they all had 1.0 weightings.

Do the weightings of the control points go off of 1.0 when you change any 2x2 surface to another degree, or is it something about a 6x6 specifically? Having an inclination as to what caused this will help me avoid it in the future.

Thanks,
Matt

Yes The rebuild command will produce a result with all weights set to 1.0

The change degree command will create a surface that has weighting if the original surface had weighting (a rational surface). If the original rational surface had weighting in only one direction I would have expected the rows of cvs to all be the same in one direction.

Yes, if the original 2x2 surface was rational (had weighting) and you use the ChangeDegree command to raise the degree. If you use Rebuild command then No.