As a quick recap, here are the posts we’ve seen in recent weeks on this topic:
- Autodesk FormIt and its JavaScript API
- Introductory look at FormIt and the Maze Generator plugin.
- Using VASA with FormIt via Dynamo – Part 1
- How VASA can be used within Dynamo for FormIt to solve mazes (etc.) in 3D.
- Using VASA with FormIt via Dynamo – Part 2
- Applying the same principle with urban scenes imported by the 3D Context Creator plugin.
In today’s post we look at the fact that VASA can also be used directly from a FormIt JavaScript plugin – via the WebAssembly package we’ve already seen working inside the Forge viewer – to have an even more streamlined experience. The WASM package for VASA hasn’t yet been made available publicly, so I won’t be sharing the plugin code at this stage, but conceptually the work it does is the same as the Dynamo graph we saw in link 2 above.
It was surprisingly straightforward (for me, anyway) to get a FormIt plugin to load a WASM package. I used this package to extend the capabilities of the plugin written by Brett Garrison to solve the mazes his code generates. What’s fantastic about this approach is that the workflow can be used in FormIt for Web – as well as for Windows – while the Dynamo-based approach is very much Windows-only.
You can see the new button in the UI of the modified plugin. Having the two in the same plugin means the solving code can also pick up the variables used to generate the maze.
Let’s start by generating a maze which we can then solve:
Clicking “Solve Maze” fires up VASA, which takes the triangles in the scene and voxelises them. (As we’re working in 3D, rather than 2D, we do need to add a base plate temporarily beneath the maze, but as we know the dimensions of the maze from the original plugin UI this is straightforward.)
The solution takes a matter of a few seconds – it’s surprisingly quick.
This has been solved in 3D – and so could easily extend to a multi-level maze, if such things exist – and here’s a more 3D view of the same solved maze:
For fun I went a created then solved a whole bunch of mazes inside FormIt. This animation shows 10 mazes that were generated randomly in exactly this order:
Clearly solving mazes isn’t a particularly lofty goal, but it does illustrate some of the capabilities of this interesting package.
I do hope to be able to share the WebAssembly package for VASA, in due course, but in the meantime you should definitely play around with the Dynamo package to understand its potential.
We’re continuing to brainstorm use-cases for VASA, and have started to explore various scenarios. For instance, we’ve recently established that VASA does a pretty decent job of importing and then working with point clouds, which raises some really interesting possibilities.
Many thanks to Brett Garrison, Josh Goldstein, Markus Bonn, Seth Allen, Jeff Hauswirth and (of course) Rhys Goldstein, who all contributed in some way to this implementation, whether by writing the original Maze Generator plugin or by giving me helpful pointers on integrating VASA with FormIt.