Access Edge Smoothing Settings from Api

Hi, is there a way to access the edge smoothing settings of a Rhino object via the API?
I.e. “is edge smoothing activated and if yes what are the parameters”?
Alternatively, is there a way to get the “smoothed” meshes from such an object instead of the regular renderer meshes?

Edge softening is but a visual trick. The render meshes will have the normals set such that interpolating them properly gives the illusion of smooth edges.

These meshes are used by Rendered display mode as well as Raytraced.

Note with large edge softening radii the illusion will break.

If you want really smooth rounded edges you should fillet them.

Thank you for the info but what I am actually looking for is a way to access the edge softening parameters present in Rhino. The reason for this is that the API provides a Mesh.WithEdgeSoftening method, which I’d like to use to replicate the behavior present in the render port, in a different rendering engine.

I understand that, I am saying that the render meshes are already created with those applied, normals set so that smoothing interpolation should just work (as Cycles does for Raytraced mode).

I’ll have to check though to what extent changing or reading the parameters is possible, maybe @maxsoder can tell as he has been working with UI in .NET for also the displacement plug-in functionality.

In case it wasn’t clear yet: render meshes have already gone through the edge softening function you linked to.

That’s odd maybe I am not getting something. The geometry and the normals received by calling rhinoObject.GetMeshes(MeshType.Render) are identical before and after turning edge smoothing on/off.

That does sound odd. If you’re working with Rhino 6 I suggest you use the changequeue. You’ll get for all objects always the correct meshes. For render engine integration that is the preferred way.

I’ve just tested using the WithEdgeSoftening method with the same values that are present in Rhino and now I am getting the correct normals and geometry. If your colleague @maxsoder could help me to access those values, I’d be very happy.

Edit: also Thanks, using the changeque is definetly on the list but for now I’d like to postpone a complete rework if possible.

remember: the more work you do now to get your work done, the more work it’ll be to move to the changequeue mechanism. If you asked me I’d say you start moving to it now and save your self more than half the work.

btw, it’ll probably Monday that @maxsoder replies - weekend started at the office some 4 hours ago for him :slight_smile:


I have created the .Net UI for Edge Softening for Rhino MAC WIP. The UI uses an interface that is currently private. I do not see any reasons why it could not be public, however the interface itself does not probably work well for this case.

The problem is that the interface is designed for Object Properties UI’s and it needs the user to select objects in the viewport, the UI gets a notification that selection has changed and then asks for the parameter values from the displacement plugin using the interface. The interface in other words can give the parameter value(s) of the currently selected object(s).

@nathanletwory Thanks for your help and of course you’re right, I’ll definitely move over to the changequeue in the long term.

@maxsoder Hi, Thanks for the explanation, I hoped that there is a way to access this info somewhere in the object itself but either way it’s good to know that my current approach is a dead end.