Over the last few weeks colleagues in Autodesk Research have been building the foundations for a space analysis package that can be used for generative design workflows in Dynamo. We’d love to hear from you if you’re interested in taking it for a spin.
But first, a little background…
We’ve known we’ve needed to get better performance when analysing 2D and 3D spaces since embarking on the original layout of the new MaRS office in Toronto as part of Project Discover: the approach we had worked well – as I think is clear from the results of the project – but it wasn’t in a state that could usefully be shared externally.
For Project Discover we used 2D space analysis to calculate various metrics that scored the individual layouts:
- Views to outside
The first two are largely about calculating paths between various locations, while the last three are implemented by ray-casting. These approaches are definitely connected, though: you need to specify boundaries (and barriers) that the various algorithms will “see”. It’s our belief that there’s value in having a unified approach… we’ll see if that turns out to be true. :-)
If you’re interested in learning more about Project Discover’s goals (along with the additional “workstyle preference” metric, which correlates daylight and distraction values to individuals’ surveyed preferences), then you should definitely check out this SimAUD paper.
Anyway, we know this is going to be a common requirement for generative design workflows in the AEC space – for architectural layouts but also for a multitude of other use-cases – so we thought we’d build something that meets our needs and could be used externally, too.
We’ve started by focusing on “shortest path” calculations, which use a grid-based network to calculate the quickest routes between points in a 2D space.
Because generative workflows often call for calculating the shortest path between one point (a desk, say) and multiple destinations (various other desks and amenities), the library has been designed to do that in one go. This should help a lot when running heavy analyses with Refinery, for instance.
We decided to write the library in C++ and build it into a zero-touch node for use with Dynamo. We did this partly to help with performance, but also because we need the same capability to be usable with the SyDEVS simulation framework (but that’s a topic for another day).
Here’s a quick video of an early version of the Dynamo integration, to give you a sense of how it works.
Our intention is to make this available via the Dynamo Package Manager: once that happens I’ll definitely post again with information on how to find it.
We’d love to hear from you, in the meantime… is this valuable? What should we focus on, beyond 2D path-finding and isovists? Should we just hit pause and contribute to an existing effort? (We think what we’re doing will be especially useful for generative design workflows with major performance requirements, but it’s very possible there’s already something out there that meets these needs today. Either way, let us know!)
I’ll hopefully get the chance to discuss this more with people at the upcoming UK Dynamo User Group Hackathon, being held on April 5th & 6th in London. (I’ll just be there on the 5th… my schedule around that time is pretty hectic, so I unfortunately won’t be staying for the whole event.)