In September last year we outlined the rough expected roadmap for Bifröst. In early April users will get their first hands on the procedural effects platform. Today Autodesk announced the details of Maya 2015 which is shipping with Bifröst.
This week we sat down with Kamal Mistry, Marcus Nordenstam and Duncan Brinsmead to discuss Bifröst's first release inside Maya 2015. Mistry was a Technical Director on Pixar's The Incredibles, and worked at the animation studio for six years. He is now Senior Product Manager at Autodesk for Maya. Nordenstam was the co-founder of Naiad and is now at Autodesk following the Naiad acquisition. Brinsmead is a Principal Scientist with Autodesk. He is the creator of Maya Paint Effects, Maya Hair, Maya Toon, respected the world over, and is currently part of the Bifröst development team.
Just from the team working on Bifröst, coupled with its legacy from Naiad, it is clear that Autodesk is extremely committed to the new framework. It is also clear that this first release is just that, a start and there is much more coming. While Autodesk cannot commit to any timeline, it is understood by fxguide that all things being equal we can expect to see a lot more at SIGGRAPH and possibly significant additions half way through the year, not even requiring users to wait until Maya 2016.
This is not due to a need to bug fix the Maya 2015 release, rather there are a lot of key technologies already in Maya 2015, but the user is yet to get full access to them. "It took a little longer than we'd have liked to release Bifröst in its current shape," explains Mistry.
The possible timetable reflects limits in the team's ability to allow full working access and not R&D that is unproven or yet to be done. With any software, the former being manageable rollout and the latter closer to vaporware. "We wish we were a little quicker off the mark but definitely the plan (from our September fxguide interview) hasn't changed", Mistry reinforces.
The plan has been to have Bifröst as a standalone ap that also works much like Houdini Engine as a self-contained plugin.
Architecture remains standalone, but the first release only sees this engine exist inside Maya 2015. "Maya knows about Bifröst but Bifröst does not know or care about Maya," explains Nordenstam. This engine approach is key to the design that will allow, in the future, material to be exported to and from Maya to a possibly command line driven hard core engine. It is also vital if the 3ds Max team want to harness Bifröst. If the code is written as an engine it is then up to the Max team to decide to support it and include it, and it is not a repeated development effort.
This approach is not unique to Bifröst, this is something we could expect to see a lot more of from Autodesk in terms of new software design.
In the future it is still planned that users will get the standalone user experience, it seems like the team just ran out of time to have that for this first release. At the moment the focus is on creating great actual fluid sim results that are fast and don't slow down the user interface. But Nordenstam explained even as we spoke that "right now we are working on features that will allow you to take your graph out of Maya and compute outside, even essentially computing the shaders at render time. But that's not available yet in 2015."
Why would one want to have something standalone? It is simple computer science overhead logic to point out that a standalone engine should run faster than the same code running inside an ap,with all the competing UI, memory and CPU sharing that must go on when Bifröst is encased in say Maya.
It is worth then comparing Bifröst with Naiad. Naiad was standalone and users cannot yet access Bifröst as a standalone. Given the very similar nature of the DNA of both fluid simulators, how do they compare? It might be expected that at release 1.0 of Bifröst as being only inside Maya that Naiad would then be much faster, but it is not. Even with the overhead the much better multi-threading and code-node interpreting/compiling that Bifröst uses means that right out of the gate it is faster.
"The multi-threading is superior to the multi-threading in Naiad and that is one of the chief reasons why Bifröst beats Naiad."
What is not yet possible, but one assumes is still on the roadmap, is to run Bifröst over multiple machines at once, as we highlighted was the plan in our September article. At the time of release of Maya 2015 it is just able to be run on the one machine, rather then run the one simulation over multiple machines. No doubt many artists will use a second machine for sim work, but in the future it should be possible to break up the one sim over many machines, something that will be vital if a cloud solution is to be successful (see below).
"The multi-threading is superior to the multi-threading you saw in Naiad and that is one of the chief reasons why Bifröst beats Naiad," states Nordenstam, "despite the fact it is running in a larger DCT like Maya when Naiad had the advantage of running in standalone and was not weighted down by any other system, but even though Bifröst is running inside a bigger system, it still beats Naiad."
If it runs faster, how do the results compare? Bifröst is producing amazing results today. There are three key aspects to a fluid sim solution, such as found in Bifröst:
- particle density
- the velocity fields
- final render quality based on the meshing algorithms
The particle stats are impressive - 30-50 million particle sims - but it is what Autodesk are achieving with their velocity fields that seems to be adding just as much if not more.
In this exclusive example below, the fluid simulation is just three things:
- a wave making object (unseen animated piece of geo)
- the 'container' and beach geo
- Bifröst calculating the fluid sim with gravity. There are no special tricks or additional controls.
This is in effect what a beginner to fluid sims could expect it is very easy to achieve - it is not the final render but this is typical of what a new user could easily get without being any sort of expert.
Note: the way Bifröst's velocity fields are causing such a realistic detail undertow pull back in the waves before they crash onto the sand and rocks. The render and performance times in the video are real world stats from this internal test. The realism in this shot is coming strongly from the velocity
The quality of the mesh is achieved as it is using the original Naiad Mesh algorithms, says Mistry. "We are pretty pleased with the render quality and because it is using the Naiad mesher - or a slightly modified version of it - as the simulations are slightly higher res, we are seeing some interesting and nice results."
Nordenstam believes that the dynamics are better in Bifröst than Naiad, "it is more stable than Naiad, so less noise, .. big splashes will break up more believably than Naiad and sometimes Bifröst can convey scale better.. plus as it runs faster you can go to higher resolutions in terms of voxel counts,... people are doing 30 - 50 mllion particle counts in Bifröst in Maya... but the real kicker with FLIP solvers - the real quality comes from the resolution of the underlying velocity fields... and thats where the real effort has been in Bifröst. So given the same number of particles comparing Bifröst to Naiad, Bifröst will have a higher resolution underlying velocity field and solve quicker, and that should provide more realism".
Working with Maya
The focus with Bifröst in Maya 2015 involved working out how to bring Naiad-inspired workflows into Maya and make "Maya an attractive development environment for that," according to Nordenstam.
Some of the first things were just getting live geometry to drive the fluid simulation, but doing that and having a slow or painful user experience was never the team's goal, so they looked at ways they could not simply over-run Maya and steal as many CPU cycles as they could. Instead they wanted to allow users to still work and sim at the same time. This lead to the innovative system of effectively background computing. As a user you are presented with both the working UI of Maya and a green timeline indicator of how the sim is going behind the scenes.
This allows one to work and not just stop and wait for each sim to be completed before your machine is 'freed up' again by Bifröst, and it makes an enormous difference. The session remains interactive, while the compute happens in the background - no matter how massive the sim actually is. The particle cache can then be scrubbed whenever you want. Naiad had the same sort of approach and it has now been implemented in Maya.
There is perhaps no one better to access the integration with Maya than Duncan Brinsmead. He has a very clear view on Bifröst. "It is a very ambitious project," he says. "We are attempting to do it the right way and we are trying to really make a next generation product. For example, the fluids are being done with adaptive grids, so we are solving on adaptive voxels. We could have simply taken what was in Naiad and just imported that but we thought we wanted to go a step beyond that."
Brinsmead is actually working in the team writing code. While it is a big team he has been focused on applying accelerators in what he calls a small but hopefully growing capacity. In this example below, Brinsmead was inspired to do an internal test, inspired by the great work done at Animal Logic in Sydney. This test piece was never intended for the film The LEGO Movie or in fact to be shown publicly, but it is a great example of Bifröst working inside Maya and feeding from one part to another.
Brinsmead was at pains to point out this exclusive fxguide video is in no way an official 'anything', but it shows what is possible from the initial release if you have some imagination, and some good Maya experience. Unlike the beach example (above), this Lego test piece requires a few Duncan Corner style tricks and a good understanding of dynamics.
"I was just trying to test different aspects of Bifröst," comments Brinsmead, "so with the ability to mesh directly into Maya in a live fashion you can do things with that live mesh. The fluid sim is Bifröst and everything else is more traditional Maya tools."
Brinsmead tried a number of approaches but the technique he settled on meshed the liquid in Bifröst, emitting off the liquid surface into a Maya fluid node that is low resolution. This Maya node is set up at the resolution of the LEGO base bricks. This is of course a lot lower resolution than the original simulation. The actual technique uses an object fill emission (now standard in Maya Fluids). Of course to get the 'Lego look', one does not want to render fluids, so Brinsmead ran a "little script that walked over the fluid grid and any voxel with density in it," he says. "I emit a particle into an nParticle system, and then use the instancer to position the Lego bricks. So it is kind of going through Bifröst, so the output of the Bifröst mesher goes into a Maya fluid emitter and then a expression does an emission into a static particle system where the particles just last for one frame and then die." Brinsmead also discovered that you can have the particles last a few frames which can provide temporal coherence "so the bricks don't flicker too much."
To get the color of the fluids he used height fields. "I didn't have access to the vortex or velocity fields from the Bifröst simulation, but there was no way with the Maya Fluid emission to transfer that easily to the fluid," says Brinsmead. "So all I could do is use the height to switch between the instance I was using."
In particular to get the sort of form look, the top layer of the Lego pieces was actually clear or transparent blocks - a trick he saw that Animal Logic had used in a test they had done. He was very inspired by the liquid sim work they had completely independently done many months ago with their own pipeline (nothing related to Bifröst).
One of the biggest challenges is that with Bifröst running in Maya, given Maya's dependency graph, it is not perfectly suited to an FX pipeline. So the team has had to connect this to the Bifröst graph while still inside Maya, given that the Bifröst graph works completely different and is much more a flow graph.
"..the best liquid solver I have ever worked with"
Brinsmead had done many other fluid sims in Maya before the addition of Bifröst. In his opinion, the Naiad based fluid solver the team put into Bifröst is "the best liquid solver I have ever worked with." He believes there is work still to be done, and more controls to be revealed to the user, but he is clearly impressed with the underlying velocity fields and general mathematical fluid solver. "Autodesk is committed quite a bit to this," says Brinsmead. "It is one of the bigger teams I have worked on, and definitely one of the most challenging projects. It is a big initiative and it will take a long time to flesh it out, and do everything we want to do but we really wanted to get something out there. I am actually quite happy and that it is this usable on the first release."
Editors Note: We could not help but ask if Duncan will post more to Duncan's Corner, his popular blog. Brinsmead told us: "I have been rather busy but yes I should post more!"
What's not in Maya 2015?
A fair amount actually - in this release of Bifröst there is no viscus fluids or surface tension, no smoke or plume style gas sims, no foam and spray (other than what one can do via a workaround), as noted no multi-machine rendering and there is no access to the underlying procedural graph.
While a user cannot access the procedural graph it is actually what the team are using under the hood - 'in the shadows' - editing and seeing the graph just does not have a GUI yet. What a user could fully expect is that Autodesk will make this one of the first things to appear in later releases, and Mistry confirms that engineers are working in this area now. As a user I want this since without it I cannot make or edit my own nodes, something Naiad users in particular will want to do.
Most interestingly, there is no full implementation of the adaptive data structure we outlined in the September fxguide article. And while Autodesk never committed to it, we were also hoping for support for OpenVDB.
Like the procedural graph, the adaptive data structures are internally in Maya and being used. For example, outlines Nordenstam, "anything that is voxelized is actually voxellized adaptively right now. So if you make a volumetric collision volume in Bifröst 2015, that is actually adaptive, further use of that in for example adaptive fluid simulation is in the pipeline right now, when it is ready."
Both OpenVDB for voxels and PRT for particles (the Krakatoa format) would have to be high on the list for Autodesk to want to export to. Moving forward, both would seem key to Bifröst working well in a pipeline. Bifröst has its one format which encompasses their adaptive voxel data structures etc and is released with Maya 2015. This format is .bif and can contain both particle data and voxel data, as well as cache data. There will be an API for the .bif if companies want to render .bif natively in their pipelines. This will allow the native Bifröst particle caches to be accessed.
To date Bifröst, has been rendered with Mental Ray for many of the tests and the team has updated the Mental Ray shaders to allow it to render directly particles and these will ship with Maya 2015. A mesh can be directly rendered with the levels sets in Mental Ray in 2015, so MR meshes at render time. If you want to use V-Ray, RenderMan or Arnold etc, there is no direct rendering yet, "but we are definitely working with them" says Mistry. "One can always mesh and then render."
The mesh can be exported as Alembic or as a Maya geometry cache format. To help newer users to the Bifröst/Naiad approach, Autodesk is providing in Maya 2015 a sample water shader that allows users to "just slap on and it will look great, refract and do all the right things," notes Mistry.
Comparing head to head Bifröst and Naiad quality, Bifröst is today simulating the same particle counts as Naiad and getting the same results, even with the Maya overhead. "So 20 million particles in Naiad, 20 million particles in Bifröst - Bifröst is faster and looks as good as Naiad," says Mistry. "So what that says is in the same amount of compute time we could increase the resolution and get an even nicer looking result, and then to render you have to shade and render. What we feel we are releasing is better than Naiad as 1) it is faster and 2) we have updated the solver and the meshing and in the process fixed some of the things that were bugging us in Naiad."
In a sense, Bifröst in 2015 is aiming to make fluids fun and easy, and faster and even more scalable than before, but it is not aimed at doing hard core complex high end killer shots like we see from companies such as Scanline or ILM.
Unfortunately at the current release the solver just does fluids like water "but no viscous / visco-elastic like say honey," points out Mistry. (Note: Viscoelasticity materials exhibit both viscous and elastic characteristics when undergoing deformation. Viscous materials, like honey, resist shear flow and strain linearly with time when a stress is applied. Elastic materials strain instantaneously when stretched and just as quickly return to their original state once the stress is removed. Viscoelastic materials exhibit time dependent strain).
These things were in Naiad, as were foam and spray. "Today you either see particles and lots of them or you see a mesh, but if you want to see a hybrid of those? A trail at the crown of a wave for example with foam? There are strategies to do that, but it is not like it was in Naiad, but all those things are cooking and coming," says Mistry.
In the cloud
One of the areas that is both topical and that was touched on previously was having some sort of cloud based solution or version of Bifröst. Mistry says this is very much still the plan. "We definitely have high hopes for taking Bifröst on the cloud. I think as we work on tougher problems like scalability and computing a massive sim on the cloud. As we ramp up the solver and a lot of the underlying maths to leverage that kind of compute power - that is where it really makes sense. But in the meantime you could run a Bifröst sim on another computer, so there are varying levels of how we get to the cloud but we definitely are researching it. It is more than something that is 'on the drawing board.'"
More than water coming
There are tools in this release and more tools coming for procedural animation, and making your own deformers. Bifröst will be much more than a water simulator as it builds out from this base as seen in Maya 2015. Right now, Bifröst is a very powerful tool and by as soon as Siggraph in August one can expect even more. Bifröst is one of the most exciting additions to the FX pipeline of Maya in years and marks the start of a series of dramatic expansions in this area.
We've been a free service since 1999 and now rely on the generous contributions of readers like you. If you'd like to help support our work, please join the hundreds of others and become an fxinsider member.