Thoughts about Blender integration into Industrial Design wit openNURBS support

Hi all,

for those who know me, I work in product and jewelry design and use Blender as part of my toolset and recently pay more attention to it because of the new Cycles render engine.

Very popular in this area is a software called Hypershot / Keyshot which uses a similar approach to rendering like Cycles with interactive refinements.

Cycles is catching up very much and Blender itself already offers more tools than those two commercial packages ranging from better animation to the post production abilities.

However one area where Hypershot and Keyshot are king is their ability to directly open Rhinoceros 3D files which are saved in the free openNURBS file format. Keyshot does then the render meshing internally.

I am curious about what the developers think about to build in an openNURBS reader and the ability to create the polygon mesh then directly in Blender based on tessellation commands.

I very much understand that NURBS modeling tools in Blender will probably remain a dream but the ability to open Rhino or Solidworks right into Blender itself would drastically increase their usability and ability to be applied in such industries which are prone for not having a lot of time for rendering tricks.

Cycles is seriously maturing nicely, and even while painfully slow compared to VRay the scene set up time and the elimination of preview renderings is a drastic sell argument for it because it streamlines and shortens the shot development.

That would be a dream for those who receive design objects to work on, straight from their customers!
It would also mean a huge job underneath though: developing a meshing (or tessellation) engine, which is not that easy, I guess.
I’ve been struggling in the search for a good opensource software that can do meshing but wasn’t lucky*.
Having the chance to import a 3dm would make Blender the killer-app

(* any suggestion?)

Yep that is very true - the process is pretty annoying to be honest.

I use MOI 2 because it has a very good NGON and mesh exporter
as well as
MeshLab to convert sometimes files.

Cycles render quality is pretty spot on. This rendering with DoF took just 2 minutes or so and I can produce many quality shots in a matter of few mouse clicks.

Seriously this is a gold mine for object render nerds.

Big +1 here. Use NURBS a lot for designing and fabricating objects and architectural details. Rhino’s meshing tools tend to be shit and the exported OBJ is usually a nightmare to work with in Blender. If my Rhino -> MasterCAM workflow could also include an easier step to Blender for visualization, that would be a dream.

Rhino has in deed a bad mesh tool - Rhino 5 is getting better but they still are not so great.
Kinda funny that MOI is much better in that regards than the more costly commercial product.

I seriously would be just fine with openNURBS import, no editing, but Blender internal meshing
so you can apply textures to it.

Question is if one wants an interactive tessellation and you can only apply materials directly to 3D objects like Hypershot


if one wants rather a convert NURBS to mesh tool which then allows you to modify it a little and apply materials to face selections.

I vaguely remember reading the MoI is in fact a UI on a NURBS handling library. Specifically I think to have read MoI developer commenting that he could not do a certain thing because the underlying library did not support it. Is this true or I am starting hallucinating?

You might be quite close because the author of MOI is well you could say somewhat the father of Rhino.

open nurbs looks like a permissive licenced opensource project - zipfiles available for download.

but is there a GIT/SVN/CVS repo available? - is the development open. I couldnt find from their site.

the dont appear to have a real license like gpl/lgpl/mit, but they do state this:

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software.

It appears to be open…ish:

Who is funding the openNURBS Initiative and why?
Robert McNeel & Associates. They feel that the 3-D market is stifled because of the inability to reliably transfer 3-D geometry between applications. The problem is too big for us to solve alone. By funding the operating cost of openNURBS, others will get involved in the toolkit design and development. It will be a much cheaper and effective way to solve the problem.

There is libnurbs, which is based on openNURBS and different (code and developers) to NURBS++ which is too based on openNURBS - and libnurbs is BSD/LGPL.

anyone can give some feedback on what’s happening lately with the old proejct on New nurbs tool

is it dead or any idea when it will be added to Blender 2.6 ?


As far as I have heard there are sporadic development once in a while but nothing big or organized.
The libNurbana effort took it some way I believe but I do not know how far or when it will be merged.
But Blender has apparently some Nurbs features.

Apart from openNurbs import (export?) what features do you guys feel are missing to get a workable product design workflow?

For me it is absolutely the ability to trim a surface according to another surface or projected curve.
As far as I could read none of the open source libraries support these features.

I have a book about math behind geometry but the chapter on nurbs actually stops before trimming so im not to much help on the development.

Yes, trimming and other NURBS<->NURBS intersection problem is hard, i stopped at that part as well (In past I was making custom NURBS order < 8 order lib). 4 component projective space is hard to deal with. Last Bsurface violin demo show that it will be very cool and usable feature, maybe with old Softimage like easy conversion between different curves (Besier-spline, Catmull-Clark, even perfect circle (not linearly paremetrized from angle, but still very useable)) and NURBS as common part that can represent all of them.

I think the most important and simplest thing to do is to allow for custom vertex normals. Pretty much all CAD programs rely on them for the exported meshes to shade properly. As far as NURBS tesselation goes I had decent (as in: better than rhino) results with FreeCAD although they recently restructured the program and now I have no idea how to use it anymore. Another way is to use a FEM sort of tesselation, with a more regularly tesselated mesh. That works reasonably well with an Edge Split modifier.

What he said. Custom vertex normals, everywhere. One can still dream…

What I actually would like to know is if Hypershot really loads the NURBS data and then creates its own render mesh or if Hypershot simply loads the render mesh Rhino already created and also saved in the Rhino file.

Ideasman42 I can ask around, I also know the person who develops MOI in person, maybe he can provide me with some information to pass to you.


Without mentioning Blender; I don’t think he would enjoy the idea of a 0$ competition to his program (you know, that boring stuff called paying the bills…).

There was a project to import libNurbana, (which BTW, included support for openNurbs) but it was held up in large part by the blender 2.5 development and impending B-Mesh. As time went on development dropped off because it was pointless to try to develop with so much churn in the dependencies. But there was quite a bit of work that was finished, and it would be a good starting point for anybody wanting to restart that development.

jpb06 Michael the dev of MOI already answered me. I dont think talking about public stuff is giving away any secrets.

There are a few programs that only read the render mesh data out of a 3DM file and don’t try to process the actual NURBS data. Those programs do not work with the MoI generated 3DM files since MoI does not write the render mesh data (since it tends to be quite large and bloats the file size up by many times, and MoI has a very quick display mesher and so can just generate this data on demand), and it’s not even always present in Rhino files either so it’s not really a good strategy to try and access it. That data is really meant to be a cache of some of Rhino’s display information so that it does not have to recalculate it.

I’m not quite sure about the case of Hypershot – I seem to remember at one point that it did process the actual NURBS surface (dealing with surfaces and trims and everything like that), since used a library that dealt with that stuff that included handling STEP and IGES files as well. But Hypershot went through some kind of big changes a while ago and I’m not sure if that’s still the case in the current version or not.

Usually I would recommend exporting from either MoI or Rhino into a render-focused format when you want to transfer data into a rendering program – for Hypershot that would be OBJ format. Hypershot does not like to deal with complex n-gons so set the option for “Output: Quads & Triangles” when exporting from MoI rather than “Output: N-gons” and that should generate a good file for bringing into Hypershot.

It’s not uncommon for rendering programs to do a kind of subpar job at handling CAD data, so usually it is better to do the export from the CAD program itself rather than relying on the rendering program’s handling of the NURBS data.