I’ve always aimed to make Kangaroo a specifically architectural physics engine. While it shares many characteristics with similar engines used for other purposes, such as games and animation, it has some features that are uniquely suited to designing buildings.
Form-finding and physics-based-modelling often result in curved shapes, with an elegant and natural appearance which is something I greatly enjoy about these methods.
However, the fact remains that most existing architectural geometry consists of straight lines and right-angles.
So the latest addition I have made to Kangaroo is for interaction between boxes, which remain aligned with the global XYZ directions. As shown in the video above, this can be combined with other forces such as gravity and attraction, causing the boxes to cluster together, and they will always remain orthogonal.
Because of the constraint to the component directions, this actually removes the need for calculating any square roots for distances, which is usually a significant part of the physics computation, so it is simple and fast.
I’ve also added an option to allow the boxes to alter their proportions in order to maintain a fixed volume. So as they get pushed on by neighbouring boxes or other forces they may get squashed or elongated, but they keep their contained volume the same (Movement could also be constrained in the vertical direction, so areas are fixed).
Some people have already used Kangaroo for arranging rooms (for example see Marc Syp’s project Realtime Physics for Space Planning), using systems of weighted springs and colliding spheres to balance complex networks of adjacency requirements between different functional areas of buildings. I’m hoping this new functionality could be useful in taking these ideas further…