ToolChefs was founded in 2014 by Alan Stanzione and myself, Daniele Federico. Together, we have combined more than 25 years of experience in the VFX and Animation industries. We are originally from Italy, but we moved to the UK for work several years ago. We both hold a computer science degree, Alan is more technical and focused on building core technology, while I’m focused on the front-end side of things.
Project-wise, in our previous workplaces we worked on movies such as “Gravity”, ”World War Z”, “Guardians of the Galaxy”, “The Chronicles of Narnia”, “Harry Potter” and many others. We worked for several years for studios like MPC and Framestore, but in 2014 we both decided we needed a more exciting adventure and that is how Toolchefs was born.
Currently, we are focusing our energies on Atoms Crowd, our crowd engine. We have set a big goal for ourselves: to build the first crowd engine integrated with all the best 3D applications out there.
About Atoms Crowd
Atoms Crowd is a crowd engine designed to be flexible and highly customizable. We’ve also spent a long time to provide a high animation quality, the simulation is all skeleton-based and we don’t have particles driving the agents.
In 2015 the VFX market was already saturated with several crowd solutions, but after working so many years in VFX productions we saw there was space for a customizable framework which could be integrated as a plug-in in the major 3D applications. We know that the crowd market for the VFX industry is relatively small and that is why we are hoping to target other industries soon.
The basic idea of our crowd engine was to build a system where the end-user could customize every single entity in the simulation, therefore we left AI out of our system from the start. This is because, in our experience, AI should be avoided as much as possible in a VFX crowd show. A director might ask to change the smallest detail in the crowd simulation and you cannot have the software taking decisions for you. You need to able to tweak every single crowd agent. Having said this, we know AI is needed for other purposes and will start focusing on those kinds of behaviors soon.
How It Works
In Atoms Crowd you work with a group of agents, each group has a stack of behavior modules which define how many agents that group will contain and their behavior. Agent groups are very easy to handle and even non-skilled artists in 3D packages like Maya can create crowds quite easily. Each module can generate agents, change the agent dg graph (the brain) or their metadata. The agent dg graph takes care of building the pose of the agent at each iteration.
As we focused mainly on building a playground for users, the current biggest limitation of the software if the lack of ready-to-go presets and modules such as a Navigation mesh and AI modules.
Animation-wise, you can have any kind of character with custom skeletons and geometries. We don’t pose any limitation upon the user on this side. Users knowing C++ can extend the software quite easily though.
Crowd Simulation Challenges
The biggest challenges with crowd simulation from a software development point of view are two in my opinion: handling a large amount of data and the crowd animation quality. Current solutions for crowd are fast but lacking on the animation side or vice-versa.
From a VFX artist point of view, you always expect to achieve results quickly and with little effort. This is something we are working hard to make happen.
In gaming, things are a bit different, as users are more prone to write C++ code and customize the tools they use.
Crowd Simulation in the Game Engines
Handling large amount of characters in conventional game engines is not easy. For Unreal we spent a few months to write our own skeleton instancer, adding automatic LODs and frustum culling to the draw of our agents. We had also filled all the other gaps before we could start porting the other components. All of this technology will be available to users in the AtomsUnreal integration.
At the moment, the simulation is multithreaded and run entirely on the CPU, while we are taking advantage of the GPU capabilities to draw the agents as fast as possible.
During the last tests we ran, we could play 1600 agents (with no variations) at 27-28 fps on a 16 core workstation (2 x Intel Xeon 2.1 GHz) and mounting a GeForce GTX 1060. Each agent had around 20k polys and 70 joints. By decreasing the number of joints you could speed up the performance dramatically.
What Models Can Be Used
There is no limitation in terms of the models you want to crowd. Your skeletons can have any number of joints, your geometries can be as complex as you want, your characters can have any number of legs, etc.
But of course, the more polys/joints your character has the more they will hit the performances of the crowd simulation.
We have several licenses:
- Free: anyone who wants to try Atoms can register on our website and request a free license. Also, there are few exceptions that can allow you to use Atoms on your project: you have to earn less than 30k USD a year or you’re going to work on a non-profit project.
- Indie: for individuals and companies earning less than 100k USD a year. This license cost 500 GBP but gives you access to an Atoms Crowd (Maya, Houdini, Gaffer, Katana) and an Atoms Realtime (Unreal) licenses. You can use Maya and Houdini for exporting your assets to Unreal. Users can only purchase one indie license.
Both Indie and Free licenses are node-locked, meaning they will work only on one machine. The other prices are listed on our website and they are valid for studios earning more than 100k USD a year.
We’re starting Atoms Unreal beta, so please get in touch if you would like to beta test it!
Daniele Federico, ToolChefs Co-Founder
Interview conducted by Kirill Tokarev