Rhino 6 bug - backface on both sides

I used Sweep1 command to make very simple surface. The result is shown in the following screenshot. As you can see, both sides of the left part of the surface are shown as back (inner) surface, and both sides of the right part of the surface are shown as normal (outer) surface. There is nothing wrong with the input curves, so this is another Rhino 6 bug.

Please attach a (simple) file that exhibits the bug.

Thank you,


Rhino 6 bug - backface on both sides.3dm (151.0 KB)

It looks like your rail was connected to the bottom of one cross-section and to the top of the other cross-section, thus creating surfaces that cross each other (DupEdge on both ends, and ExtractIsoCurve on the top surface (starting at the wider area) show you what I mean). Make sure the curve is on the same side of the cross-sections before sweeping.

Already just exploding the polysurface and selecting one large surface will show you that the sweep was set up incorrectly.

Exploded, top surface - at the wider section - selected

No, this is not the cause of the problem. (The input curves are in the following file.) When I was running the Sweep1 command, I noticed that the cross-section curves ran in the opposite directions (one clockwise, the other counter-clockwise). I could not fix the problem by adjusting cross-section seams, so I exited the command and I used Dir command to check the cross-sections. They were OK, but the surface looked bad. I used Mirror command to make 3 duplicates of this surface and I joined them with CreateSolid followed by BooleanUnion. The final surface looked good.
Rhino 6 bug - backface on both sides 2.3dm (86.5 KB)

You can actually flip direction of one of the vectors, please see the picture (red frame). Additionaly you can select one node and move it along a curve (red arrow).

This option flips the entire cross-section curve, and it produces very strange result - both sides of the surface have the backface texture. I used Dir command to flip the bigger cross-section and the result was the same - both sides of the surface had the backface texture.

You can use the Align cross sections feature to get the result you are looking for. With the curves provided in your second file:

  • Select rail
  • _Sweep1
  • select cross-section 1
  • select cross-section 2
  • Enter
  • I aligned the seam to the rail curve ends
  • Enter
  • Align cross sections
  • Click left corner of the smaller cross-section

AFAICT that should give you the result you want.


Yes, you have found a workaround for the bug.
I had to modify your last step - I had to click the middle of the curve. I get the same, desirable result with similar steps:
Select rail
select cross-section 1
select cross-section 2
Align cross sections
Click left corner of the smaller cross-section

Hello - but, what was the bug?


I guess the direction seam control points going in opposite directions from each other. Perhaps the excercise is trying to understand why the smaller section has the seam point direction go along the curve direction, the larger in the opposite. But the sweep still wants the smaller cross-section seam point get realigned. At least I don’t see why. The only difference I see after exploding the cross-sections that the smaller curved section is degree 2, the larger not - according to _What. But I don’t understand the implications, if any…

There are two surface display bugs. The geometry of the surface is correct.
FIRST BUG: If the cross-sections are aligned correctly, part of the surface is displayed as backface on both sides (as shown above).
SECOND BUG: If the cross-sections are not aligned correctly, both sides of the surface are displayed as backface.

I used Options command to change backface display (as shown in the following screenshot) before running the Sweep1 command. This time both sides of the surface were displayed as the normal (outer) surface - there was no backface.

No, it is the opposite of a display bug.
The display shows that the geometry is not as wanted.

The curved part of a cross section goes to the straight part.
Better to see if you explode the thing.

That is indeed what I said. And I also said how it for these curves can generate correct surfaces (flip direction of seam control point at the smaller cross-section).

I guess what would be interesting to learn is why the alignments for the cross-sections are opposite of each other - one along the cross-section curve direction, one opposite.

You are right.
This is another story.

Good to know the display is ok.
And reveals such errors.

When I exploded the polysurface (Rhino 6 bug - backface on both sides.3dm) both surfaces looked fine.

I was wrong. This bug does not exist.

The noun surface is confusing because it has two meanings: very thin membrane, and exterior boundary of a thing. I believe that NURBS surfaces should be called NURBS membranes, or NURBS skins, or NURBS foils.

Because they effectively cross each other in your original file. So when you see a backface it is actually the other surface you’re seeing. You can see that also when extracting the isocurve from the top surface - as I wrote in my first analysis reply. The top surface connects the curved (top) part of the larger cross-section to the straight (bottom) part of the smaller cross-section. To fix that you need to flip the seam point of the smaller cross-section when setting up the sweep (or use the Align cross sections, which effectively does the same).


This is simple polysurface made of two surfaces. I spent about 10 minutes looking at the polysurface and I could not find a place where these two surfaces intersect. When I exploded the polysurface and slowly moved the surfaces apart, the backface texture implied that these surfaces intersect, but they do not intersect. I still believe that this is display bug.

Just look at this spot:
obviousely they are two intersecting surfaces. Make a curve from intersecting objects, and you’ll see, that the curve will be there.

Another visualisation of the surfaces crossing each other:

On the right the original polysurf, on the left exploded with the bottom surface moved away from the top surface. The lower Front view shows the bottom surface poking through the top surface. This happens where in the original polysurf you start seeing the back face of the lower surface. Created with the original 3dm you posted.


1 Like