Apply different materials within a polysurface

Hi everyone,

I have been using Sketchup for a while and I would like to change for Rhino.

For my projects, I used to model the 3D in Sketchup, then apply different colours for each materials and then export it to a rendering software (like Artlantis).

I don’t know if the method is similar for Rhino, but I have some troubles doing it in Rhino. For example, if I want to create a basic geometry, like a wall, I create a closed polysurface. But let’s imagine I want my wall to have several textures : do I have to explode the polysurface to assign a colour (as in Sketchup) for each material or can I apply these different colours within the closed polysurface ?

In sketchup, if I create a wall, I would group it and then within the group I would be able to apply the different colours.

I would be glad to find some help here.

Thank you for your answers and your help.

In Rhino 5 you will need to explode the polysrf to assign separate materials. We have been working to make this easier and in Rhino 6 you’ll have the option of sub-object material assignment so exploding won’t be necessary. With that said, I’m not sure if this sub-object material assignment info will export in the file format you’re using. If you have a v5 license and registerd on the forum with the same email associated with that license, you should be able to access the Rhino 6 WIP to test it out. Ctrl + Shift when dragging a material to a plane on a box would assign that material to just that side.

Here’s a link to the v6 WIP page…

1 Like

Thank you for your answer.

You are basically saying that in Rhino 5 the only option is to extract the surfaces within a polysurface that have a different material ?

yes, that’s correct, extractsrf or explode

You could also use UV maps and decals to add multiple textures to an object.

Thank you both for your replies.

I have another question which is a bit off topic but as I am an architecture student, I would like to know what the best to create “holes” to make windows is ? Is it by using the command “create hole” or by creating volumes that cross my walls and doing a “BooleanDifference” ?

I know they both work but which one is the most convenient / useful / fast ?

The solution that works best for you is the one to use.
Both of those will generally work but both can fail depending on the specifics of your model at the time. There are other ways too.
Keep exploring and learn the details and differences of what each command does. Both commands exist because they work differently.

I’ve tried this in Rhino 6 WIP and it does not seem to work. crtl+shift drag material to face correct? Am I missing something?

No, that’s it. You can hold ctrl+shift and drag and drop to a sub-object surface in a polysrf for instance but you should see the sub-object highlight before releasing the left mouse button. You can also pre-select a sub-object with ctrl+shift and then right click a material swatch to choose Assign to Selected.

If neither work on your model, can you post it? Or a portion that shows the issue.

Got it now. I was trying that in a mesh object. It works on polys. Thanks!

I was reading this thread because I have a similar issue.
When I work in rhino, I assign different materials to different elements before exporting as Iarchitect stated. The rendering software I am working with is Twinmotion.
The problem is that there is no straight import to twinmotion from Rhino and this needs to be done via sketchup (export rhino> sketchup > twinmotion)
When I have a polysurface (be it some basic geometric body such as a parallelepiped symbolizing a wall, etc) the material can be assigned exclusively to the outer surfaces of the polysurface. By zooming in, you dont get to see the “inner” side of such bodies. If you explode it, you get to see, of course. But I dont need 12 different and independent surfaces in twinmotion. So it has to remain a polysurface.

The problem arises when I export the file to sketchup. The export process immediately assignes “default material” to all the inner surfaces of all the bodies found in the model. This is of course a problem because during the import to Twinmotion the software links all the “default materials” making it impossible to change the “default” material found within a concrete wall without automatically updating the default material found within a ceramic basin.

Is there any possibility as how to avoid this?

Thank you,


It sounds like you need to assign a unique material name to the objects that would otherwise get the default material. Then they will not change when the default material is changed in twinmotion or sketchup. I don’t use either of those apps though to be sure. I hope that helps.

Exactly, but rhino doesn’t allow me to assign materials to the interior of polysurfaces

Do you mean the backface of a surface or surfaces within a polysurface? Rhino 6 allows sub-object material assignment by way of ctrl+shift click and then right click a material to assign to selection. This may not transfer to another app though.

I’m referring to surfaces within a polysurface. Oh, didn’t know about that command. I’m using iOS, though - can that command also be used in the macbook? Maybe command+shift?

Yes, Cmd+Shift to sub-object select on Rhino for Mac. You’ll need the Rhino 6 for Mac Beta to do this though. Then you can change the material used for that sub-object within the Properties panel. This might not solve your issue though as this is a Rhino sub-object and the special material info for it probably won’t survive various file format changes.

You may just have to explode > assign different materials and Group but I may be misunderstanding without a file and the different apps you’re going through.

Hi there. materialperface is awesome… But is there an option to export it=all the shaders/materials to obj or fbx? they both only seem to export 1 material per object from rhino, from max it works fine (substance shows mutliple shaders for one object).

Hi Anika,

This isn’t currently possible as far as I can see but I have filed a bug to have the developers look into the possibility of maintaining the sub object materials. RH-56447 for future reference.

1 Like

Is it also possible to have a different color per surface in a polysurface?

(Btw, the control-shift drag is very unintuitive for a new user. I wasn’t able to find it without searching for the answe here on this forum.)

Yes, use ctrl+shift click to sub-object select surfaces within the polysurface. Then right click a material to assign to selection. If you use the Rendered display mode you’ll see the separate materials.