This release features a major reworking of the component set. Yes, we managed to break all functionality during the refactoring; No, we couldn’t figure out how to fix it for a quite while…..In the end, it all came together, though. The biggest change is that we combined the Static and Dynamic Integrators into one. This means you can toggle between the two modes on the fly. Beware, though, if you leave the timer enabled and switch to the static integration, you’ll rebuild the solution at every time step (i.e. crash)!
We have also decided to release our code for the dynamics. This means that if you adhere to structure, you can build your own dynamics.
- Acceleration component has been removed. By default, the simulation assumes all vectors are forces. This can be toggled in the settings if you simply want to integrate.
- The settings component has been broken out into three components and a few menu options.
- Inter-particle forces have been added. This is meant more as a prototype for future developments (flocking has been done many times before…more on this later). These dynamics are SLOW!
- Dynamic Emitters! These are really fun…
Surface Attraction: Turns any list of surfaces into gravity attractors or repellers.
Surface Flow: When particles are close, they flow along any list of surfaces.
Separation: Assign a distance to be maintained between particles within a given radius.
Cohesion: Particles will tend towards the average of their neighbours.
Alignment: Particles will tend towards travelling in the same direction as their neighbours.
Dynamic Keyframe: Give collections of dynamics time intervals to be activated.
So, I realize that this is the third release of the SPM plugin in 7 days, but since we won’t be able to work on the project for a week or two, we thought it best just to get it out there…
In this release:
- Added a boundary Brep option in the settings component. Very useful for clipping the integral lines
- Added two orbit detection parameters: distance and angle. If not zero, then these determine how closely the position and direction of a given step in the integration must match the initial point before the orbit snaps to being closed. Very useful for maintaining stable simulations.
- Added a utility that acts on the output of either the dynamic or static integrator. If orbit detection is turned on, then you’ll want to sort the lists of integrated points in to lists of closed and open curves….this utility does exactly that. You may need to remove null trees from the list.
And that’s it for now…I’ll work on getting some examples of these new functions in the near future. Download it here…
- Added a “Settings” Component which allows you to tweak the integration component. Most of what we implemented are checks that stop the integral line (winding number still to come…), and the default values work in most cases
- Added an “Interpolation” factor in the “Settings” Component which computes an expected vector between the sample points. This allows you to get integral curves on even a very coarse sampling space – however, you lose accuracy. Use with caution!
- Dynamic Simulation Compute can now simulate multiple flows at once
- Under the hood, the whole project has been restructured (and rewritten!) to accomodate further development…
Download it here…, or join the discussion.
Here’s our take at a GH component that finds the integral lines of 2d or 3d vector fields.
The way it works is very simple: you give it a list of sample points and associated vectors (1 vector for each sample point) and a start point, and it flows that start point along the vector field up to a specified iteration limit and step size. The advantage to having a generalized component like this is that along with things like principal curvature lines, it can also compute paths guided by isovists and visibility algorithms.
Download it here. Written by Chris Walsh and Daniel Hambleton.