The prior image used a Moi object export from the subdivBeta9 costa.
This image is Moi object export of the original costa surface.
Default Moi obj saves were done in both cases.
Thank you also for providing the model! :-) I hope you don't mind that i reworked your triangle mesh a bit to get a smooth surface. Maybe you can render this too, or thicken it and 3d print it.. ;-)
Thanks Stefan,
Your mesh is much better.
I imported to Moi, joined, and ran subdivbeta9.
It took awhile, but ended up at 117,116 kb
Exported obj at 8.37 degrees, quads and triangles, was 182,273 kb, and looked superb in keyshot5.
What i did with your mesh was to make from the long small triangles big ones and then i applied a LS3 Loop subdivision in Meshlab, to obtain a smooth surface. Here's one derived mesh from yours, after modifying it, and with Dual remeshing applied.
just a small update... I wanted to make a NURBS surface and noodled a lot with some solutions, which were not satisfactory, until i downloaded today a Trial of ZBRush... I think i need to buy me a copy of ZBrush in the future due to it's fantastic ZRemesher, for example. Simply amazing, imho. After that i converted with Fusion360 T-Splines.
I attach the files, both quad mesh and NURBS model.
Thank you Stefan for the excellent information.
I think I will try for a Nurbs Costa surface script this winter, LOL.
Gang or Elliptic may have Weierstrass code.
There is also the L. Baker book with some old C code...
I'm not sure how the math works.
There are also higher Genus Costa surfaces, with 2+ holes.
re:
> I wonder if this library could be "Included" or linked to in a MoI script?
Hmmm, well the only method that I can think of for that would be to compile the library into its own standalone executable program. A script in MoI could then run the program and pass command line parameters to it and receive any output that the program wrote to stdout.
That can be done by the moi.filesystem.shellExecute method, which as of the Sep-10 v4 beta has a "wait for finished" option in it:
quote:
moi.filesystem.shellExecute(), added wait for finished parameter.
moi.filesystem.shellExecute( path, params, wait ) now takes an optional 3rd boolean parameter for whether to wait until the called process has exited before returning. When used, the return value from shellExecute() is an object containing an .exitCode property for the integer exit code of the called process and an .output string parameter for any text written by the called process to stdout.
Example:
var res = moi.filesystem.shellExecute( 'cmd /c dir c:\\', '', true );
if ( res.output ) moi.ui.alert( res.output );