We’ve just uploaded a small but important update to the component set. Basically, the major reworking of the components in the last update messed with the actual integration functions – this has been fixed. More specifically, we’ve settled on a leapfrog integrator for a force based simulation and the RK4 integrator, with a fast option, for regular integration.
In general, we are shifting our focus away from adding new functionality (check out the dynamics source code – you can write your own!) towards optimizing performance. This release is a first step in that direction. Also, some updated example files have been added – more to come.
Check out the new Distance Binning component. At only %30 speed increase, it’s still a WIP.
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.
[vimeo http://www.vimeo.com/28353918 w=720 &h=480]
Although using the vector display with a gradient significantly decreases the performance of GH (video has been sped up 1.5x), it looks great!
I only wish I could customize the sprites, or at least make mesh vertices transparent….
I have to admit – I’m fairly excited about this component. The basic idea is that if you can attach a value to a sample point, then interpolation can give you an expected value at a test point somewhere between the sample points. Our component simply generalizes this to arbitrary dimensions – allowing for morphing, keyframing, basically any kind of interpolation you can think of.
I’ll try to work up some crazier examples but this video should give a good idea of the basics…
Multi Dim. Interpolation will be included in the May 20th release of the SPM Vector Components.
[vimeo http://vimeo.com/23699024 w=400 &h=295]
Here’s a quick preview of the May 20th release of the SPM Vector Components Grasshopper plug-in. These screenshots show the Orbit Detection parameters working with the new Line Continuity and Constrain to Surface modes. These new modes let the integrator pass over singular points and avoid awkward stops and kinks at the expense of directionality. Therefore it works very well with principal curvature fields, but maybe not so much with principal stress fields (where it would interchange the pure compression direction with pure tension….structurally not always a good idea).
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…