Adding material properties to a single surface

I got a metal cube, its painted black.

Fine, I assign material : Paint Black Glossy

But one of the surface of the cube is ground, so its a shiny polished metal surface.

How can I solve this problem with Rhino ? I think its very common real-life example.

I tried to slice a very thin 0.01mm layer on that side of the cube (then I capped the 2 polysurfaces with planar),
and I assigned metal to the micro-slice body part, and the big body remained black paint.

It was theoretically good, but when I rendered it, I got a very ugly result, with random flashing triangles everywhere on the surface.

What is the correct solution/setting ?

I don’t need texture or bump map, its simply a different material property (color, refraction, reflection, whatever is different on a surface).

With your method, you have surfaces that are basically in the same place but have different materials. This will cause the flashing triangles.
You can just extract that one surface and assign a different material to that one. That is, don’t make the big body a solid by capping the hole.

Thank you for your answer Wim :smile:

Yes, probably. Can’t I remove those artifacts with changing some settings in Rhino and/or Keyshot ?

This method almost good. Its perfect, in term of rendering, I get what I wanted.

But if I extract a surface, I will have an opened polysurface and a free surface, and the analyzis

Menu -> Analyze -> Edge Tools - > Show Edges

, shows 8 naked edges obviously, 4 on the opened cube , and 4 on the extracted square surface.

And this is not good, because a solid can not have naked edges in Rhino. Working with non-solid will cause other problems very soon.

If I rejoin the square surface and the opened cube again, I got a closed polysurface, without naked edges, thats a solid again, just like the beginning, but then the material will be common again.

I think, that a closed polysurface can not have 2 layers, and can not have 2 materials neither.
So I have to make 2 solid objects, that’s my guess, I’m not sure. This is why I started slicing.

I can’t think of why you need solids for your rendering - but then it is your project and not mine. I export lots of data for manufacture, which have to be solid, but am happy to keep a copy for rendering. I do what I need to do to the copy to get the render I want and I have a solid ready for export.

If you must use solids for your render, can’t you chamfer the edges of your solids to get around the coincident surfaces problem? I haven’t tried this myself but it might work.

Solids needed not for rendering but editing the object. And it must be manufactured as well by RhinoCAM.
Rendering is just one aspect of many others. (although its also very important)

I was talking about a cube in the above example, to make the problem simple to understand.

In the reality my object is much more sophisticated, not a cube at all. If it weren’t solid, I would not be able to edit it, with Rhino.

And the problem is actually so simple (or at least it seems simple) and frequent, real-life objects are not so homogeneous, I thought this problem had very simple solution, just I was too silly to find it so far.

If I fork my job to 2 or more branch, and I keep models for every kind of purpose “editing”, “manufacturing”, “rendering” , that makes a very hard to control project, with many backporting, synchronizations.

There are huge possibilities of lot of mistakes, unsynchronized objects. Actually you have 2…3 different projects to keep your eye on it. It would make Rhino a bad CAD proggy, because this would be Rhino’s task not mine.

Pretty much everything in Rhino can be done on open polysurfaces.

Having said that, I understand that for directly driving machining, you’ll need closed polysurfaces. I also understand the problems that might arise from having to keep track of two different versions of basically the same model.

But that is the way it is at the moment. The next version of Rhino will allow you to assign render materials to subobject and at that point this problem will go away.

No, not true at all. RhinoCAM has no more limitations on surfaces than Rhino itself does. I machine from open surfaces and meshes all the time with it.


In that case the term “solid” is pointless and meaningless, and all “solid” operations should be named “polysurface” operations. Checking edges for “naked” edges or “non-manifold” edges also meaningless, because it doesn’t matter if an edge is naked or not. This page:
, written by some silly McNeel guys, simply makes no sense, why are they talking about solid, if it has no meaning?
Do they just make things complicated ?

Hmmm, I’m not exactly sure if you’re right about this, but if you are right , then this is a very incoherent part of Rhino, should be clarified, simplified and cleaned up.

The other thing:
That’s the most basic structure of all CAD - one model for different outputs, like printing, manufacturing, rendering … so on, anything. Only 1 model to edit, and all output will be/should be updated, after editing. It must be done in this way, models could be very-very-very complicated. 100 percent sure , that you will make mistakes if you wanna keep forked models synchronized, manually.

Keeping track of two or more models is silly thing.
I think Rhino is a bloody good program, a masterpiece mix of a CAD and a 3D proggy.
Much better then other famous things like AutoCAD. Believe me, I tried many. Only one proggy I found similarly bloody good, that was SolidWorks. I’m saying that huge job and effort and money was put in this program. And you wanna ruin it with a basic structural error, forking models for different outputs? You are not serious.

How do you know this ? Are you a McNeel guy ? A Rhino programmer ?
In that case I’m sorry if I was rude, I apologize.

Because he’s one of the power users authorized to test the next version. --Mitch

Its ok then. I apologized, didn’t I.
But I was right, wasn’t I.

Wrong. Solids in Rhino are CLOSED surfaces/polysurfaces. The concept of “solid” in Rhino is however not the same as Solidworks.

In that case I’m one of the “silly guys” (not McNeel though).

It might be the same model, but organized differently. For example you don’t need all of a hugely complex assembly model for rendering - in fact it might be a handicap - you only only the visible parts, and even then all you might need are the display meshes made from them. Same type of thing might go for 3D printing and machining. So you might have a master file that has everything and use just parts of it for what you need either via layers or importing/exporting linked files.

Well, checking in here for the first time and immediately saying everything is “silly” is not going to win you any popularity contests with long-time users… Just sayin’…


Somehow you don’t want to understand what I’m saying.
My English is so crap ? Sorry for that.

Sorry, what’s wrong ? Did I say something else ?
I never talked about any concepts in SolidWorks.

The meaning that paragraph what I said: IF closed polysurfaces and opened polysurfaces are working in the same way, and you can edit them in the same way, and in general you can’t make any differences between them in terms of editing, THEN the category closed polysurface (SOLID) is meaningless in Rhino. Its pointless to create that category, and name it SOLID, and make a whole menu named SOLID. Because all those commands are working on NON-SOLID as well. It would be a SILLY incoherent term indeed.
There is an IF, I started with.

Please read much more precisely what I said. Or don’t answer at all.
It seems you wanna make things uncomfortable for me. And I don’t wanna win popularity contest neither here nor anywhere else. I always said what I thought straightly, without asskissing. But I never wanted to offend anyone, that’s for sure.

“Silly” was put between quotation marks. It was not an offense. Just if you wanna get offended. Why would you?

I know that exactly that different output processes need different data from the model. Rendering doesn’t need invisible parts, CAM doesn’t need material refraction data. This fact doesn’t mean that making more copy (model) of the same product is not a huge disadvantage. Handling more models parallel, keep them synchronized manually, that is a very error prone process. It might be possible in amateur level, but not in professional manufacturing or engineering. Is Rhino a strictly amateur proggy for enthusiastic hobby people for US$ 1000 or more ? I don’t think so.

I used the term forking and branch, whoever worked with any kind of Version Control System, will understand what I’m talking about.

This thread has forked in two directions.

  • Render materials to sub-surfaces: as I said, that will be possible in the next version. Rhino has developed from a modelling-only (Window-only | NURBS-only) tool to what it is today - and is still evolving into the realm of pretty much everything 3D. The wish list is enormous and often development of tools is not directly aligned with personal priorities. :wink:

  • Solids: Your IF statement is correct. Your THEN conclusion is your personal opinion - which you are allowed to have. The commands under the solids menu are just placed and grouped there to provide easy access to commands. They provide short-cuts for people that are looking for a specific command and need some kind of logic in the long list of commands that are available. Take the Solid > Extrude Planar Curve > Straight as an example. This actually calls the same ExtrudeCrv command as the Surface > Extrude Curve > Straight command but in the former case, the Solid option is set to Yes whereas it is set to No in the latter. It’s just a way of organizing the commands in the hope that users more easily find what they are looking for.

Nice, happy to hear. Although I have no idea when will be released ? This year ? Next year ? Which quarter ? Do you have any info about that ?

Ok I get it. So solid commands are not restricted anymore as they was at the beginning.
In this case, defining and explaining solid as a “closed polysurface” is meaningless and misleading. I interpret this: solid is something what has greasy fat body, not something flat surface or curve in the air. Its enough description. It doesn’t matter if its closed or not. Is this true ?
And why would I analyze edges ? What is “show edges” command ? Who cares “naked edges”, why do I need to eliminate them ? Do I ?

It seems the categories and abstractions must be clarified and cleaned up in the next release, because its cloudy and confusing at the moment. Or maybe just out of date, because the functions had been changed.

Thank you very much Wim.

By the way I have found the solution of my problem.
I’m telling this to others, someone else, who has the same problem, what I had.

Earlier I made micro slices with planar surfaces, and capped the bodies. I got bad triangle artifacts on the surface .

Currently I extract the surface, I make a copy of it, then I rejoin the original surface back, to restore the closed poly.

Then I extrude the replica surface with 0.01 height .
Then I make solid boolean difference between the original body and the 0.01mm thick extrusion, and its working.
I can give different material to the extrusion, whatever I want. I don’t get any artifacts.
Don’t ask me why, I have no idea, why a 0.01 extrusion is better than a 0.01 slice.

And of course its a cheating because its not a surface actually, but a very flat 0.01mm thick object.

No release date has been set. McNeel does not put out a new version every year, new releases happen when they are deemed “ready”.

No, in fact it’s quite clear (to most people). A closed polysurface is one that doesn’t have any holes or naked edges, and whose faces enclose a volume. More technically it is where every single edge in the model is completely joined to exactly one other edge. Rhino surface objects are Brep (Boundary representation) objects, a volume is simply defined by the “shell” of surfaces around it. There is nothing inside.

Why this might be important was covered in the wiki page you cited above on “closed solids” - for example for most 3D printing, applications, closed structures are important; having a closed structure might also be necessary to calculate a volume for example. In other areas, the fact that a structure is closed or not may be completely irrelevant.

What is true is that “closed solids” is an oxymoron, but people have been using it that way for a long time.

Nope. Solid=Closed Brep in Rhino. Period. Rhino also has single-surface “solids” such as a sphere and an ellipsoid. Hence the term “solid” is not restricted to polysurfaces.

Naked edges are simply edges not joined to other edges. These might or might not be important, depending if you need closed structures or not. Showing them of course makes them easier to find.

You can just use ExtractSrf with Copy=Yes. Your original will remain closed.

You don’t get any artifacts because the outer surface of your extrusion is no longer concurrent with the surface of your body, it is .01 further out. The triangle artifacts are coming from two different display meshes occupying the same exact space. Display and rendering are not done directly on Nurbs/Brep surfaces. Instead, it is done on an invisible mesh object that is created with the surface, and it is the mesh that contains the color and texture information. When two of those mesh objects are concurrent, you get the moiré patterns you noticed. The only current solution is to move the objects apart slightly.

In the current version of Rhino, any object can have only one display mesh that spans all it’s faces, and that mesh can only have one color/textrue. In the next version this limitation has been removed to allow the user to have a color/texture on a “per face” basis.


For most people, it is also quite clear what I’m saying.

You answered again without trying understand what is the theme. I know what is the definition of solid . Are you surprised now ? I try to explain to you again.

Imagine Rhino with a menu “Red editing”. And below that menu you could see menu points like Box, Sphere, Cylinder, Extrude, Planar, Make Hole …so on. And you could edit red objects with that.

Then after few years, suddenly a user would shout out. “WOW I can edit my blue objects as well with the red menu !!!” - "How is this possible? This is not a good name ! Red doesn’t mean red in Rhino. It should be named differently. It seems the categories and abstractions must be clarified and cleaned up in the next release, because its cloudy and confusing at the moment. " - the customer said .

Then now, please try to substitute the word RED with word SOLID. Do you understand my problem now, or you need more details ?

Or you still think that RED is quite good and …

…name for a menu what edits every other colors as well ?
You know, precise definitions, clear, accurate terms are very important, when you wanna build a good concept up. And good concepts are also very important to make sophisticated operations simple. Rhino is full of very good concepts and ideas. But its time to refurbish some outdated terms.

Again…I know what is naked edges. But the question is : why would I care if I can edit closed polysurfaces (without naked edges) and non-closed polysurfaces (with some naked edges), in the same way with the menu SOLID. What is the purpose of term “naked edges”, if it makes no difference in terms of editing. Its pointless. And its pointless to search for naked edges also,
This is what I meant - with the:

Do you get it now ?
I could be wrong about that, but the meaning of the question was that, and not looking for the definition of naked edges.
Read it twice before answering. Although I can see the good-will to help.

I’m not a perfect user. Still learning Rhino. I like this program very much.

Yes you are probably perfectly right in this paragraph. This must be the reason, indeed.
If I slice and then cap, most probably the objects will have a common layer, and this is not the case at boolean difference. Although its undefined the thickness of the planar layer when I capping holes, but it will be common in case of split objects. Thanks for the explanation, now I understand this artifact thing at last.


So if I understand you correctly all this is about finding things in the “Solid” menu that can work on things other than “solids”? I think this is a tempest in a teacup - my personal opinion of course - so having done my best to calm the buffeting winds and not succeeded, I think I will now take shelter from the “storm”.


Why would that be tempest. You think its not important to define accurately, what kind of object could be a target of an operation ? Is this an unimportant detail ? When I push Boolean Union command and it answers after few seconds : “boolean union failed” - it doesn’t matter why, what is the reason, have I applied it on a valid target, or the problem is something else ?

Its ok I accept your personal opinion, and I have mine.