NURBs & Polygons- What's the difference?

NURBs (non-uniform rational bezier splines) are an efficient computational way of representing standard objects (spheres, cones, boxes etc) and complex surfaces like airplane or car bodies. They work by interpolating a curve through a list of control points. Because complex shapes can be described with a mathematical formula and a short list of coordinates they are a more efficient way of describing geometry than with large numbers of tiny triangles (meshes). Rhino is primarily a NURBs modelling tool. See Rhino’s documentation for an in depth explanation.

Meshes describe geometry using lists of points (or vertices) and faces (or polygons) connecting points to represent surfaces. If your geometry is non-planar or contains a lot of fine detail, a very large number of vertices and faces will be needed to describe all of this geometry without it appearing as a faceted approximation. Meshes are used to draw (or render) geometry to your display by simulating how light reflects from these polygonal surfaces. Fologram uses meshes to display geometry on the HoloLens.

Hi Nick!
I have a question regarding Curve Nurbs in Rhino/Grasshopper and their visualized mesh version in Fologram.
Drawing a curve (for example circle) in grasshopper, results in a very edgy curve in Fologram. So I draw a curve in grasshopper, but I get a hexagon in Fologram. And if I make anything on top of that curve, such as sweep, loft, etc, the result geometry follows the edgy curve…
I tried to rebuild the curve in grasshopper but it is not effective. How can I address this problem?

Hi @shahrzad577, Fologram renders curves at a lower resolution to increase the performance in AR and enhance user experience, so if there were thousands of curves being streamed you can still get a smooth connection, which is why you see the curve edges.

The issue you seem to be having sounds much more jagged than I would expect however, so do you mind sharing a screenshot of what you’re seeing in your device and the grasshopper/rhino files for me to take a look?

Hi @Sean! Thanks for your reply and explanation.
I just remembered that an example of “Editing Curve Control Points” was provided by Fologram community example files. So I checked out the file and compared it to mine. I understood that what happens to me is due to the model scale. Hence, If I draw my curve big enough in Rhino, I will see a smooth curve in Fologram rendering. does my inference make sense?
Thanks again!

Hi @shahrzad577, that’s exactly right.

Curves are rendered in Fologram by first breaking the curve into straight line segments and then rendering each line segment as a quad (with width equal to whatever is specified in the Sync Object parameter) that is always oriented towards the mobile or HoloLens device.

Because of this rendering method, we have to balance between the number of curves that can be rendered on the device, and the performance overhead of the rendering itself. We’ve guessed that a line segment length of around 5mm is sufficient resolution for most use cases.

If you need a different resolution, you can divide your curve into line segments of whatever length you like and then synchronize these. Note that this will result in reduced performance because you will need to sync each individual line segment as its own object rather than just being able to stream the entire curve. See below:

1 Like

Hello all,

Also checking on a graphics question. I am also getting highly faceted curves out of a definition that describes a big spherical sculpture. I’ll show the Rhino model and the Fologram render to give you an idea. This is a large object (twice my height at least) so doesn’t seem to be faceted because of the scale. What am I missing?

Vs. a screenshot from Rhino:

I have used a different version of this model in the past and don’t remember this issue. As well, there are small fillets on each of the triangular gussets, and they seem to render in much finer detail than the large curves of the overall form. Strange.

Hi @erb02,

There is a known issue where Fologram doesn’t correctly update the meshing parameters after you change units in Rhino that might be causing this problem. Can you closing Rhino + Fologram, opening your model and reconnecting again?

If this doesn’t solve the problem can you send me the Rhino file so I can see if I can reproduce?

In the meantime, you can manually mesh your model (use the MeshBrep component in Grasshopper before syncing).

Ahh, MeshBrep is working much better. It didn’t seem to help to close and reopen Rhino. We’re updating this model a bit, but if the issue persists after updates, then I’ll send it over and see if you get the same error.