I need to make this model lighter and faster.
How can i do it?
sandman - Copia.gh (54.9 KB)
hmmmm, right, can u tell me how to solve?
I could give it a try (but not now), and only if you type “you” instead of “u”.
I find that GetArea is a function available in RhinoCommon, which means that it is possible to script this. And when scripting one can take the incoming list of Breps and run the calculation in parallel. Sometimes soing so does the job very much faster
http://developer.rhino3d.com/api/RhinoCommon/html/Overload_Rhino_Geometry_Brep_GetArea.htm
Have you tried scripting?
// Rolf
hahahaha, right, could you?
i never tried scripting, but i can learn how.
thanks a lot
Rhino6 runs the Area component in parallel, so R6 makes a significant difference.
Remains SDiff and SInt which doesn’t support parallel (not yet)
Edit: RhinoCommon methods that can be used if scripting and run in parallel:
Profiling results in Rhino6
// Rolf
hmmm, unfortunaly i dont have the v6 yet
Is there an other way to find de center of a geometry for a lower cost thsn the Area component?
I find that GetArea is a function available in RhinoCommon
noticed that also new in R6 rhinocommon. Is it just a faster area calc than area mass properties? Have not tried it yet.
I have not either. And time is 4:00 in the morning here in Sweden so I guess I won’t try it exactly right now…
Good night!
// Rolf
hahahaha, okay.
Good night from Brazil.
Without getting into parallel computation yet, one thing I noticed is that your initial surface has a very high point count (76 x 24), probably you got it from interpolating points. This makes components like Area very slow due to all the NURBS calculations.
Using the _Rebuild
command to reduce it to U=10, V=4 points, the area components run about 15x faster
WOW, niceeee.
ill try it.
Thanks a lot!!!
Another comment - you can use the Bounding Box
to get a much quicker estimate for the center of your geometry, rather than Area or Volume calculation, which are accurate but slow.
Yes, it defnly got quicker, thank you a lot!
OK, good morning. Here’s a version with all the optimizations suggested by @qythium PLUS two new script components called SDiff_Parallel and SInt_Parallel (C# scripts). The results are from Rhino6. Difference in speed:
Edit: Ops, forgot to internalize the simplified mesh. Fixed:
sandman - Copia - RE2.gh (30.8 KB)
SDiff = From 7.6 to 1.5 sec (1.0s for R5, see far below):
SInt = From 4.9 sec to 1.2
And runtimes for all components (R6) look like this:
Runtimes for Rhino 5 with the same Gh definition:
@DavidRutten: For some reason the RhinoCommon SInt script call doesn’t give the same result as the GH SInt component (There’s one or two missing plates when using my SInt component)
Summary: Rhino 5 seems to be significantly faster, except for the Voronoi component.
Have a good one.
// Rolf
It might be an off-by-one error somewhere in your code - I didn’t try looking at it too closely but here’s a quick one-liner using PLINQ that does essentially the same thing, a little faster :
G = B.AsParallel().SelectMany(b => Brep.CreateBooleanIntersection(b, B2, 0.0001) ?? new Brep[0]);
Running on Mac Rhino 5, but also getting different results with the native SInt
component.
I also tried setting the tolerance to RhinoDoc.ActiveDoc.ModelAbsoluteTolerance
but that didn’t affect the result counts.
Yes, removing “- 1” gives 262 :
sandman - Copia - RE4.gh (28.5 KB)
Still one missing up to 263 though…
// Rolf
I don’t have these plugins so can’t see all of your code. From what I can see though, Area is being used more often than necessary. These four are redundant - the Scale components they feed could all use the first Area component below the Geo param:
I’m guessing that the Area components after SDiff (which makes no sense, by the way - area of a solid?) could be using the PopGeo points instead of Area centroids?
The last file (sandman - Copia - RE4.gh) should contain only std components (I also didn’t have any of the extras).
Edit: The area components doesn’t add much to the execution time though:
// Rolf
area of a solid
You can get total surface area that way. But in this case it doesn’t make sense for centroids.