 Hi, welcome to my presentation. We're going to last year we released CrowdSim 3D. Together with Monique and I, we built it, and I do have to do a disclaimer up front. There's a lot of developers' art inside this presentation, so I'm sorry for that. Last year we released the CrowdSim simulation add-on for Blender. Our mission is to get a high-quality CrowdSim inside the Blender domain, and that is really a fun project, and last year we did a lot of improvement on the system, and most of that was based on performance. We currently can do 10,000 of agents in Blender. All those agents, they have their own armatures, so this is quite a complex scene to look at. 40,000 objects on the screen here. The next project where we've done this year, and that's what this talk is about, is about traffic. We haven't finalized the traffic project yet, we're still working on it. We hope to release it in two weeks, but today we want to show you from, okay, how does it work and what can you do with it? What's the power behind the system? It all starts with the traffic system, and what's a traffic system? With a lot of physics simulations, you have a domain object, and a traffic system is similar to what a domain object is for a traffic simulation. It contains the roads, it contains the junction, the traffic rules, and yeah. We designed a way how to create a non-destructive workflow to get everything working. We start with some Berger curves, and we can just select them and just say from add traffic system, and based on that, it will create a map containing the curves as a road map. Where the endpoints of the curves align, connectors will be created, and those connectors will then can become crossings or junctions or just connectors between road segments. A traffic system can then be configured more. We have in the world, we have two major traffic systems. One of that is called the left-handed traffic system, and the other one is called the right-handed traffic system, due to, in case, per road, the category of the traffic that can drive on that road can be configured. So you can create lanes or roads for pedestrians, for public transport, for cars, and based on the type of traffic, different rules will apply, like cars will always give priority to the public transport. You can also add more lanes to a road or create a single one-way road. Besides roads, also, besides roads and lanes, crossings and junctions can be configured. Like rules for traffic lights, is it allowed to do a U-turn or which lanes, which decisions can an agent take when it's driving in on a lane? By default, the system creates some rules, and you have the option, of course, to change those. Like here, you can only turn right on the most right lane you're driving on. But we also have traffic lights, and the traffic lights, by default, no traffic lights are added to the system. You can select a connector and turn on the traffic lights. We have two ways how to set up the traffic lights. One of them is the automatic system, where you just say, okay, this amount of green lights do I have, this amount of red lights do I have, and this is the time to clear the junction. And based on that, it will generate a system for you. But like here, you can really go into a more complex system where you can manually make a key frame the lights you have. And based on these objects, you can quite get into some complex situations. Like these kind of systems can be created as a roundabout with cycle roads, with the traffic roads, or the other one is a traffic crossing inside Amsterdam near the central station. Now we have the traffic system. We need to add some cars on it. We call that to populate the scene. And how we do it is from we have a node-based system where you can set several, you can load your models in, like here there are 10 different cars. And for every car, you can randomize some materials, or material settings, textures, but also some behavior settings, like how much distance do I normally keep to the car in front of me? What's my desired velocity? A sports car drives faster than a small car, hopefully. And when we populate the scene, every agent in the scene will get a random value that's been configured here. But that's quite a destructive workflow because the next time you do it, it gets different settings. And perhaps the director just wants that this specific agent will always be the red car. And we have an option to then select the agent and just say, okay, this agent needs to be this type of car, and we can lock it so the next time it won't be changed. Okay, so we now have a scene. We have the traffic inside it, but now we need to animate it, have something to bring the simulation to life. And thanks for the formula, there's an industry standard for that. And that's the intelligent driver model. And it's being used by governments, road planners, Q, and analyzers. It's the only algorithm available. That's quite interesting because it is also a bit limited. And the limitation is that the input of that algorithm is what's the distance to my car in front, and what's my relative speed difference with my car in front. And the output is only you need to break or you can increase your velocity. Yeah, that's fine if you are having a linear system or one-dimensional system, but we're working in 3D. So how do we solve that? Like in this situation, the white car, which car is in front of the white car? Is that the blue one or is that the red one? You don't know because it can be the red one or it can be the blue one. It all depends on the traffic rules that apply at that moment. Eventually, we feed that data into the simulation and a traffic simulation, and the movement will appear. But note that the animation of the car is not really detailed. The wheels are not moving, the wheels are not turning. We can do better than that. Every car, the base model of that car has a rig, and that can be modified for every car you have. If you have an 18-wheeler, it has a totally different rig than a simple car like this. And the rig, it's a constraint-based rig, uses it for turning the wheels and making and driving animation. We add several animations to it, or one for standing still. We can add an animation for driving straight at 10 miles per hour or turning left at 15 miles per hour. In the panel we deliver, you mention that speed. And using that data, the traffic simulation will then generate the animation of the wheels that's needed. So it will select several animation actions that are near the current velocity of the car and then starts merging it. And the same thing can also be done by more complex armatures like pedestrians. We have a lot of actions and based on the actual speed and the actual velocity of the agent, the animation is merged together. The merging will then be placed inside the NLA, and still in the NLA you can still tweak the things what you want. You can add modifiers to it or add a corrective layer on top of it. But then the thing happens, you have thousands of cars in your city driving, and something happens and you want to see why. So we added a debugging option into the crowd simulation. This is also available for the normal crowd simulation and for the traffic module, where for the active car agent that you have selected, you will see from what decision did it take. But sometimes a decision in this is just too high level. So we also added a debug node. And in the debug node you see the detailed data from, okay, this is the data it used to... This is the data that has been used to make that agent made the decision. Like here, it's decelerating because there's a car in front. That's the traffic system action. So this is an overview of what the system can do. Get your copy. Your copy you can get here very soon. We hope within two weeks we're doing some final testing on all the platforms to make sure that it works correctly. And we also have a version available with only the traffic simulation. But you don't need the crowd and full crowd simulation. You can also get a traffic only simulation. We have demo versions available. And we have a newsletter where we will announce when it is released. But we will also post it on Landonation. And after that, we have some ideas we want to work on. And for the traffic system, it's more to have more artistic controls about the decisions that the agent makes. We also want to add an option where you can select the traffic system and then generate a base mesh so you can model further from it. Currently all the connectors have a circular form and we want to support multiple forms because sometimes that form does not match the place you are modeling. And of course we need to create a lot of tutorials. I would like to thank everyone for the past last year for their support. We also got a lot of feedback and advice from companies who really want to use crowd simulations in their productions. What were they looking for? And I would like to thank you all and the community for their support. Thank you.