Site Tools


More Info on Solids in Rhino

There always seems to be a lot of discussion about Solids vs Surfaces and there is a great deal of misunderstanding from the user's perspective. As John Brock said, “You need to be careful that you don't get fooled by the fact that you can take solids apart in Rhino.”

My take on this follows. (Hope it doesn't go on for too long.)

Rhino surface object types

Rhino creates hybrid models that can include surfaces, polysurfaces, and solids.

  • Surfaces are individual, zero thickness sheet bodies that are 2D or 3D.
  • Polysurfaces are many surfaces joined together to create zero thickness sheet bodies that are either 2D or 3D.
  • Solids are single surfaces or polysurfaces that form a closed body (3D only).

Because surfaces have a surface normal (direction determining a front and back face), Rhino understands a volume when a Solid is formed because all the faces are automatically adjusted (if required) to face outwards.

[Rhino understands that a volume is a solid when all the edges of all the surfaces involved join up without any gaps or holes. That means there are no edges in the object that are not joined to another edge (and only one other edge). The absence of unjoined (or “naked” in Rhino terms) edges tells Rhino that the object is a closed volume (read “Solid”) and Rhino flips all the surface normals to the outside. If you have even one naked edge or hole, Rhino considers the volume Open and not Solid. –Mitch]

Difference between Rhino and a classic Solid modeler

Unlike a solids modeler such as SOLIDWORKS that works primarily with solids entities, Rhino uses a more flexible hybrid approach. But, if you export a solid from either package (say a cube) to STL, VRML etc., the result is the same. A boundary representation of the shell and no material inside the zero thickness skin. The solid, for want of a better word, is defined by the boundary and the surface direction. That is to say that everything inside must be by definition - solid.

The way this works can be illustrated by using the Surface from Planar Curves command.

  • Draw a square. This represents the zero thickness skin of a slice through a Rhino Cube.
  • Using the Surface from Planar Curves command, insert a surface using the square as the boundary. This is the slice through the cube that is understood by the software as being a solid.
  • Delete the surface and draw another square inside the first one. This represents a hollow cube (one with a wall section).
  • Using the Surface from Planar Curves command, insert a surface using both squares as the boundaries. This is the slice through the cube with a wall section that is understood by the software as being a solid.
  • The important thing to notice is that the software understands the multiple boundaries and can resolve what is the “meat” in the solid. Or, in this example a slice through it.

Truth in modeling

Many people are disturbed by the fact that if they trim a solid (like the wall of a building) they reveal the inside of the boundary representation (BRep) of the solid. This is more to do with the technique used to cut the wall than an issue of “was it actually solid”. If you cut a solid using a Boolean operation, using either a surface or a solid as the cutting tool, you will never see inside the BRep. So everything is kept secret.

At a user level, this is what the solids modelers like SOLIDWORKS and Solid Edge are doing all the time. They must resolve geometry as a solid. Yes, they are including some basic surface tools but nothing compared to Rhino.

The power and flexibility afforded to the user by Rhino's hybrid approach is unquestionable in nearly every respect.

Conclusion

There are some packages that need to understand in a true sense, the material that is the solid. These include flow analysis packages and applications such as Sensables - Clay Tools for Rhino. These packages (please excuse the poor non-technical description) often use voxels. The best description I can give for this is to think of them as a mass of tiny cubic bricks stacked together to define the volume. Or a bit like a bean bag chair (remember the 70's). It's a skin full of tiny beads that define the volume, but without the skin. This definition of a solid is useful when you need to have the material flow or when you need to sculpt it interactively.

OK. I've had my say.

Please - if I have made any errors here, feel free to correct me.

[Mark H. 05-12-05]

rhino/soliddiscussion.txt · Last modified: 2020/08/14 (external edit)