University of Southern CaliforniaUSC
USC ICT TwitterUSC ICT FacebookUSC ICT YouTube

Crowd simulation and smartbody | General SmartBody Discussion | Forum


Please consider registering

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —

— Match —

— Forum Options —

Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
Crowd simulation and smartbody
December 30, 2015
5:25 am
Forum Posts: 4
Member Since:
December 30, 2015
sp_UserOfflineSmall Offline

Hello everyone,

I am working on my final project for an interactive crowd simulation using smartbody and RVO. So the movement of the agents is done with RVO library (collision avoidance, paths etc) and i want to play the animation while the character is still. To make things clear i just want to set the body posture of walking but the root (base) of the character ,controlled by smartbody, remains in the same place (something like moonwalking). Then the RVO will move the position of the agent to its destination.

After some searching i managed to stop the root from moving by not mapping it at all , something like this:
<p>zebra2Map->setMapping("JtRoot", "");</p>

instead of
<p>zebra2Map->setMapping("JtRoot", "base");</p>

It worked but i had some problems with gestures and some other animations. So i guess this is not right.
I've also tried "to pin the agent to the ground" in a certain position so that only RVO will move it:


I failed again...So am I missing something here? Any ideas?


December 30, 2015
8:05 am
Forum Posts: 983
Member Since:
December 1, 2011
sp_UserOfflineSmall Offline

So essentially, you want to control the root position of the character to be controlled by the steering algorithm, but you still want the character's legs to move as if they were walking?

My old colleague Lucas Kovar called this 'meat hook' animation (picture a hook stuck into a slab of meet in a rendering plant where the hook is attached to the ceiling and sent around on rails).

This simplest way to do this is to let SmartBody run the simulation normally, then set the position of the character after every frame according to the results of RVO.

character.setPosition(SrVec(x, y, z))


BTW, a PhD student of mine last summer (Sahil Narang) integrated RVO with SmartBody and that code is located in the rvo branch in the source code repository: