Sumotori Dreams
Posted: Fri Apr 20, 2007 2:06 pm
Making the feet really heavy also helps; however it can tend to throw the rest of the character from left to right while walking. I've cheated for now by locking the feet to a controller like a skateboard. I'll go back to walking later when I get it smoothed out. See http://neurolife.commewert wrote:Big feet and a low centre of gravity help![]()
i agree it depends on what kind of behaviours we are talking about. Featherstone is a stiff solver _only_ for joints, but typically you also want stiff motors and stiff contacts against the enviroment so you would need to write other stiff solvers for motors/contacts. Some simple behaviours like a catch fall may still work with less strict requirements. I dont know too much about Ageia, the most tested engine for such applications is ODE, this mainly because of the dantzig solver(stiff for motors, contacts and joints), i also believe that at least initially Endorphine was using either ODE or something similar(Karma solver etc.). Then you could also try to extract the Dantzig solver from ODE and use it within Bullet, given that this has already been done with the ODE's quickstep it seems a feasible option. Clearly you would not want to use the Dantzig solver for the entire scene but in the worst case only the for body motors,joints and contacts against the enviroment and solve the rest in a iterative fashion.Dirk Gregorius wrote:All engines you mention have the constraints you need. I think Erwin is working on a Featherstone solver, but I don't know how far he is with this. If you are looking for motors I know for sure that Ageia and ODE support them. For Bullet I can't say. So from this perspective all engines are more or less equal, though I would favor Bullet since it has the most active community if you might need help. An advantage of ODE is that it has the direct Dantzig solver. As long as you can guarantee that you system is solveable here you would have at least the option between a direct and an iterative LCP solver. Personally I doubt that a pairwise relaxation solver will give good enough quality for physic based animation, but I don't know what you consider "advanced ragdolls". So it might be good enough for your needs.
i was referring to Endorphine and to and old version like i mentioned. I have seen only a video of Euphoria and from that alone is a bit difficult for me to make general statements about a systemt that i cannot inspect/observe.Erwin Coumans wrote:From reliable but anonymous sources Natural Motion and Dance both work with joints and motors using an iterative solver like Bullet's sequential impulse or quickstep. So Featherstone or direct pivoting LCP solvers like Dantzig seem not strictly necessary, although it might help.
Natural Motion powers joint motors, and 'Dance' directly interacts with velocities, not using motors.
This requirement has always bugged me. The motors must be very strong to follow the animation, often much stronger than a real human. So how can we see realistic interaction with the environment with these super-heroes that can flip over a train with a flick of the wrist? Along these lines, I wonder if the motor torques can have reasonable maximums for mo-cap animations. I know that hand animated movement has absurd accelerations (I've seen 20 x gravity).in regard to iterative solvers for motors to me the minimum requirement is the following: a solver should be able to follow an animation as close as possible without any visual artifacts.
in games animations can indeed be much faster than in reality, one idea could be to see them as having the same torque limits but with a warped time. If animations are not realistic they would at least be consistent with the inputs. We would need to pick the torque limits based on some error defined on how close we want to follow the animation. By changing the allowed error we would end up with different limits. If we have a solver that is stiff enough, we have this flexibility. There is also a continuity problem, if we want to go from an animation to a behaviour and we want a smooth transition we must start from playing back the animation as it is. This is not strictly required, it depends on the behaviour and what level of quality we are expecting. We could just use the last pose/velocity and start the behaviour(eg catch fall) or fade out the animation(so we need good motors here) while the behaviour is enabled.Erin Catto wrote:I wonder if the motor torques can have reasonable maximums for mo-cap animations. I know that hand animated movement has absurd accelerations (I've seen 20 x gravity).
i think we mean something different here. By applying the velocities i meant reading the target velocities from the animation at everytime step, instead of using such velocities as a target for the motors just set such velocities directly for the joint state and then call the solver. Basically the body is kinematically driven by setting the state at everyframe and then the solver is called.Erin Catto wrote: I think that applying velocities is adaptive. Imagine a stack of two boxes. Asynchronously I apply an upwards impulse to the lower box. Then I proceed to take a time step. The upper box will react and absorb some of the momentum, and the lower box will slow down. Or are you thinking that the velocities are applied at each iteration
Wouldn't the solver overwrite the angular velocities in this case or can we assume that the velocities will satisfy the constraints - at least more or less?Basically the body is kinematically driven by setting the state at everyframe and then the solver is called.