 All right. Hello, everybody. My name is Sebrin and I'm going to present my PhD research. I'm at the end of my PhD, so this is actually the final stuff I've been working on. It's torso crowds, and you will see why it's called torso crowds in a minute. And what we were looking at is assimilation of dense crowds. So, like, when yesterday everybody was crowding around in the front of the bali and trying to get in and people squeezing through, but most of the people were actually standing still just waiting. That kind of situations. So, as I said, I'm doing my PhD. I have three more months to go. After that, I'm without a job. I'm also a blender developer. I'm using the game engine for the simulations, and then using the viewport rendering, like the OpenGL stuff, to render the final animations. Please interrupt me. I might go a bit fast or you might understand anything. Please just raise your hand and interrupt me. This is what I've been working on for quite a while to get something like this working. So, what you see here is we have characters that move from one place to the other. They can do sidestapping and forward and backward walking. And we have the other characters that just try to make themselves as comfortably as possible. So, this is what it looks like from the side. We have only one scale parameter. So, when the agent goes bigger, the character becomes taller. So, that's why there's this huge difference between the length of the characters. So, often I get the question, why? Why do you do this? What's so interesting about this? And people always say, well, there's various applications. You can use it in games. You can use it for training simulations, for evacuation scenarios, panic scenarios. You want to be able to validate your building that people can go from A to B, that nobody catches fire, stuff like that. And then it is, the more precise there is, the more better. The more precise you can get, the more realistic you can get those motions, the more conclusions you can draw from the behavior of your crowd algorithm. So, this is another part of the why. Many of the current crowd simulation systems actually model characters as a disk. So, it's either a point or a point with the radius. And you just get stuck. Even though there's a lot of space available, these things get stuck. So, that's also part of the why. Another thing that I noticed when I talk about my work with people is that they always start about their psychology. Why do people move from A to B? I don't know. Honestly, in my work, I don't care. It's very interesting. It's very nice to see what happens if there's a beautiful girl in the crowd or somebody is smelly. That's going to make a difference. But this kind of work is already so difficult that we try to keep that out of the equation, which brings us to the how. Two years ago, I gave a workshop here at the conference about a collision detection scheme. And it was made for these dense crowds, because when the crowd is really dense, you bump into each other. The denser the crowd becomes, the more likely you are to have collisions, so you need something fast and efficient to calculate all that. So, that is why we thought of this nice little thingy, which was roughly correct to a centimeter scale or something. So, sometimes it may detect a collision where there's actually a centimeter or five millimeters of space in between you. And that all worked fine, but we were wondering, like, how well do we see collisions, actually? And that was my lightning talk from last year, when we wanted to do a user study to see how well do people respond to collisions. Does it really matter that you're accurate to a centimeter or doesn't it? So, we had videos. This is a tale of one of those videos. This is the worst situation. Like, 90% of the people thought these two were colliding, whereas if you look from the other side, it's clear that they don't. But on the whole, we're quite bad at recognizing collisions, but we are quite good at recognizing non-collisions. If there is a little gap between people, even though it might not be obvious from the silhouette, you're still pretty good at saying, yes, indeed, they don't collide. And that was a problem. So, my research before that, that put this little margin around everybody, was a little bit too eager to say that people were colliding. It was actually quite useless because people will notice. So, we were optimizing in the wrong way. But this research was actually quite useful because we also found that we're more sensitive to collisions in the upper body. What the legs are doing is not that interesting. That feet are touching each other, going right through the other's people's feet. It doesn't really matter. Upper body is much more important. So, that is how we got to the torso crowds. We only modeled the upper body. As I said, most simulations use a pointer or a desk, or if you include height of the character as well, we have a cylinder shape. And our torsos, some people exclude it, but most people, they are not cylindrical. And we wanted to be able to model things like, you have to squeeze through to rotate your torso to get through. If it's a cylinder, it doesn't matter which way you rotate it. So, you can't use that to plan. So, that is why we found these capsule shapes. So, where a disk is basically a point with a radius around it, we extended that point to a little line segment also with a radius around it. So, mathematically it's still quite a simple concept. But now we have things that can move sideways and we can rotate. Another thing we did differently is that we separated our crowds into two types of people. You have the passive agents that just try to stand still. Maybe they're looking at a band and they don't want to move, because the band is playing and they're comfortable where they are. Maybe they're standing in a lift waiting for their floor. And there's the active agents who want to go through that crowd from A to B. That one dude who needs to go to the bathroom while everybody is waiting for something. You want to get a beer, you've arrived with your lift at the right floor, so you want to get out or get in. And then there's obstacles to make things interesting. So you need something like walls. There must be a reason why this crowd is so dense that it's because there's not enough space and therefore you need things like walls. So these passive agents, they want to stand still, they rotate to a focus point. Maybe that gorgeous guitar player or maybe just the door of the elevator or the panel that shows you which floor you're on. And they also, if it gets really crammed, they will just rotate for the space that they have. Then the focus point becomes less interesting. Maybe they find a better spot, they look around, maybe there's much more space over there than they move there, and they temporarily make way for active agents to pass. So they give up their own comfort in order to let somebody pass because they know once they pass there's enough space left so you can go back. The active agents go from A to B and they take the clearance into account. So as soon as it's patience enough, they can walk straight through a gap. But if people are more crowded, then they will start to rotate themselves and try to squeeze through. And they try to find a path through the crowd that more or less balances. Like a nice straight path through the goal, maybe you go around a really dense part of the crowd where people are actually standing close to each other. Now this is all nicely thought out, but what we wanted was something that looks real, that looks alive. Even though it may be just agents sliding across the floor, we still wanted to have it mimic real human behavior. So what you do, you study real humans. And we wanted it to such a degree that we also could plan these torso twists. And most datasets that are available from crowds only track like the head or something. So they can recognize a face or a head or they can track the hair. But then you only have the position, that was not good enough for us. We also wanted to have this orientation. So we actually had to go into our own motion capture lab. And here you see one trial. This dude starts here in the middle. So what you don't see in this video is that before this everybody was just scrambling around and randomizing all the positions for every trial. And then one person has to go out. And that's it. We put one marker on one shoulder, two markers on the other, so we knew left from right and front from back. And this is the same situation, exactly the same recording, but with our agent model. These black walls here, they're not used in this because it's just a recording. But they're in place so that we can simulate it later on. So what we saw from this is that people actually follow more or less these white lines. And these white lines are called a Voronoi diagram. Voronoi is just the name of the dude who invented this. And it's basically a separation of the ground plane into your space and mine space. All the points in this cell are closer to him than to anybody else. And that is how you define the Voronoi diagram. These edges are exactly in the middle between two people. And from our research we found that in such a dense crowd you actually follow these lines. You want to be most comfortable, you want to spend as little energy as you can. You don't want to bump into people so you aim for the middle of a gap. It all makes perfect sense, but it was really nice to also see in our research that it actually works that way. So what we can do now is we have the exact same situation but then simulated by our system. One thing you notice is that at the start all the green guys are moving. Instantly they start looking for a better place and that is that finding a more comfortable spot our agents did that more than the participants because the participants were told you have to stand still and that's what they did. And these green guys just find a better place to stand. But you see that the motion of this guy actually pretty much resembles the motion of the actual participant. And I'm really happy with the whole transitioning between sidestepping and forward walking. This is possible because of our asymmetrical agent. So once we had the system working we wanted to compare it to our competitor. And a really good competitor is reciprocal velocity obstacles. It is a very nice example of a crowd simulation system. It's been used for huge crowds and they're all moving and you get nice behavior, it's all very smooth. So we thought it's a really good example and the source code is free to use for non-commercial purposes. It's also an example of disc representation and it's not so much that we try to prove that our VO is doing the wrong thing it's just that we try to show that for these really dense crowds a disc is not good enough anymore. So you've seen this one, this is our VO. The red would be our cylinder. So in this case we said we don't want any collisions between the characters so we have to put that cylinder around the torso. It must be big enough. But as you can see there is much less space than with our system. Our system just finds the space and maneuvers through and in the end it goes towards the goal over there. And once there it switches to passive mode and rotates to that one focus point where everybody's looking at. So what we wanted to do was to make it easier for our VO to navigate this. As you can see there's a lot more ground space available in our system than with this system. So instead of making the cylinder so big that the entire capsule fits we gave it the same surface area. Excuse me. Yes. Yes. And for someone that comes to you for some people that is extremely big. Yes. They have a lot of respect for people. There are some women that is old. There is someone that is made particularly. So and the people beside the path in relation with the obstacles that are around them. So I was wondering why did you make this object that almost all the same because the obstacles I've seen before the people they look all young, all nice, all beautiful. So why didn't any of the people... I will shortly repeat your question for the people listening to the streams. Basically why is the crowd so uniform? Why are there no really big people, crippled people, granny with a walker? But this research I've been working for I think it started two years back. I started working on the shape of the capsule shape. And it's already so complex to get this to work well in all kinds of situations. Yes. In the end we want to be able to support this and to include things, other asymmetrical things. But right now these are the first steps we can take. And it's really the start of this looking at more dense crowd, more detailed simulation. Another thing that you may see in other videos I will show is that there's also this symmetrical nature of that Voronoi diagram. These lines are always in the middle between two characters or between a character and an obstacle. But that also means that it's in the middle between a wall and the crowd. And that doesn't happen. A crowd doesn't stand far away from a wall. As a matter of fact a crowd will... Usually people are fine leaning against a wall, especially in a lift. That's also something we would love to add. We have ideas on how to add it. You would need to wait for a diagram for that. And there simply is no implementation yet, that's verbose. Simply the software doesn't exist to calculate that. So I hope that answers your question. So here we cheated a bit by making the cylinder smaller. You can see that there will be intersections here and there and there. But the agent does get to the goal. And I was showing this to my supervisors and they were all happy. They were like, yeah, good work. But in your crowd there's still a lot of space available. It's not that dense. Can you make it denser? Yeah, sure. Let's make it denser and put some walls in there. And then even, again, these disks they don't work. I won't finish this video because it takes a long time. In the end it will come to here something. It doesn't quite make it all the way to the goal. And there is much more intersections going on. The issue with RVO is that it uses the velocities. So this one has to slow down to prevent a collision. Sink encounters an error. No shit. It moves slower because it tries to avoid a collision. And the other guys try to move out of the way also to avoid that collision. That's the reason for a penalty. One character does half of the avoidance. The other character does half of the avoidance. But you slow down. Exactly the crowd should close up. This should be filled. And these guys have no concept of comfort. Whereas what I do? Sorry? Oh, yeah. Oh, yeah. That's possible. Well, you can see that even in this very dense situation he still manages to get to the goal. Does my system take subgroups into account? That is an interesting question. Yes and no is the answer. I talked a little bit about that focus point for the passive agents. And right now for all these guys the focus point is somewhere there. But there's no rule in the system that says there should only be one focus point. And I didn't include it in this talk but I do have an example where you have three agents that share one focus point which is calculated dynamically in their middle. So there's three people talking and then there is more people streaming in increasing the density. And what you see as an emergent effect is that this little group stays together. I don't know how yet. It doesn't always happen. The focus point has no direct relation with the positioning of the characters. So that's why I say yes and no. They can share a focus point but it's not directly mapped onto will to stick together. Yes. So I also had to write an animation system because my supervisor said well these moving sausages are really nice but if you want to send it to a nice conference or a journal it has to look good because it's going to be something about animation. It has to look good. So we already purchased like ten models, five male, five female years back and I manually created walk cycles for this. I started out with motion capture to make it really realistic but that was really hard to work with, really hard to tweak. So I manually created ten walk cycles per gender. So that was one idle motion and then like side steps and forward, backward, left, right and diagonal. That's eight. The idle is nine and then straightforward but faster. It would be ten. So if you want simulations forget that, that you take longer steps when you move faster so then you get these really tiny, silly steps. And I used three parameters. So I have the position you're at, the velocity you walk at, the orientation of your torso. So you could head that way, look that way and then you have the speed at which you're going. This is what it looks like in Blender. We have several guys standing in the elevator and there's the nonlinear action editor that healthy doesn't use. I do and we have a system that takes each three parameters and converts that into strip influences so we can blend between these walk cycles and you get walking people. Then we also had to dress them because we only had five male, five female characters if they all have the same color clothing, it's going to be boring. So I set up this little note system with some masking. Like here you have a mask for, I think it's a shirt of this dude. And then in the interface you could select two colors, one for the upper body and one for the lower body and therefore we could randomize the colors of the clothing or say everybody has to be green except for that blue one, stuff like that. So this is what it looks like in the game engine. You can see the agents here planning their path. And these positions are all chosen simply because they're the most comfortable spot to be in at the moment. And you can see that they wrote it to a focus point unless it gets crammed and then they move to orient themselves towards the space but then it becomes a bit more spacious because people are less social and then you can rotate again and you can squeeze out and walk. And here we actually, when the blind becomes this dashed line, they're in free space, they're no longer in a dense crowd. My system doesn't really work that well in such a situation. So then we switch to Arvio, like the disk method. It works very well. So that's what we do then. And this is it in 3D. That's an interesting question. Can I use the prediction of where somebody is going for the animation system? Yeah, you might. Might be interesting. Might actually help in searching through a motion graph or something. Yeah. So if you want to have a live demo, I'm not going to do that here. So meet me after the talk. We can play around. I've got keyboard controls so you can just have your character bump through the crowd and see how the others react and stuff. So this is my presentation. My publications, you can find them there.