Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 01 Jan 2004
Offline Last Active Yesterday, 04:39 PM

Posts I've Made

In Topic: Rotational spring stiffness?

06 June 2016 - 04:51 PM

Take a look at your last spring composed of 3 vertices. There are two end vertices, and one in the middle. If we lay the vertices all out on a line there is no bend. Then create another spring between the first and last vertex (so it passes through the middle one). This new spring is sometimes called the "bend spring", or something like that. Whenever the 3-vertex chain bends this new spring will push the bend to straighten out.


Yes... except that for small bending angles, the displacement of the end particles (up/down in the OP's diagram) will be mostly orthogonal to the direction along which the spring acts (left-right). So I'd expect the proposed new spring would be effective at preventing substantial bends, but not very effective for keeping a plane flat when it is supposed to not bend very much at all.


If you want to represent very stiff planes, then it might be better to consider adding a spring between the centre particle and the mid-point between the end particles. You will then need to consider how to map the force applied to the mid point to the particles themselves (trivial if all the links have the same rest length, and the particles have the same mass) - you need to make it so that momentum is preserved. If you do this then for small angles, the spring force will be approximately proportional to the bending angle, which is probably what is desired. 


Alternatively, it might be even better and just as quick to do the job properly: labelling the particles 1-2-3, take the cross-product between the directions 1-2 and 2-3. This is proportional to the torque vector you want to apply, and the pairs of linear forces will be given by the cross-product between this and each of the deltas 1-2, and 2-3 (divided by the squared delta magnitudes) - since torque = delta x force. You apply a force f1 to particle 1, and apply -f1 to particle 2. Similarly apply f3 to particle 3 and -f3 to particle 2. This preserves momentum. You don't need any trig functions for this, and if you can precalculate the delta lengths, then you might not need any square roots either.

In Topic: Simulating Human with Rigid Body Joints

25 April 2016 - 04:23 AM

You can do a lot of balancing by just considering the ankles or, more generally, rotating the floor contact plane relative to the character. For side-side balance, the equivalent of "ankle balance" in the fwd/back direction is pushing down with one foot - and you can generalise this into having a target plane for the feet that. This works when the feet are at awkward angles too, and can be extended to handle the feet being on uneven terrain.


However, you can do a lot more than just balancing with the ankles/feet. If you imagine standing facing out over a cliff top, feet so near the edge you can't step, and somebody gives you a shove from behind, you use your whole body to balance/try to recover - leaning forwards at the hip and "windmilling" your arms. It's worth thinking about what these actions are actually doing, how they induce forces on your feet which are the only ones that can affect your COM - its position and velocity. Ankles/feet are good for COM position control. Upper body motion is good for COM velocity control.


There are two types of forces on the feet that are relevant - normal and tangential (the latter coming from friction). It's easy to imagine (or even do!) an experiment where there's no tangential/frictional force - e.g. standing on ice. The other extreme, where you have a single contact point (i.e. you can make use of the friction forces, but the centre of pressure is always fixed) is harder to experience - would it be possible to stand on the tip of a spike, where you have no option to balance with just "ankle control"? See the "Balance Controller (new)" video here for the answer! http://royfeatherstone.org/skippy/

In Topic: Simulating Human with Rigid Body Joints

23 April 2016 - 03:14 PM

1. Physics simulation:
Imagine a human standing on only one leg. That's a system of 20 bodies and the foot body and ankle joint has to carry all the weight.
Mass ratio here is 1:50, worst case for game physics libs. Bullet can't even simulate a stack of a few equal mass bodies without jitter (the last time i've checked),
and also it may miss the necessary features for powered joints. So it's not the best choice for a demanding simulation like this and you'll have to add a lot of work,
probably ending up doing your own constraint solver.
I have experience with Bullet, Havok and ODE, but when i tried Newton i was blown away by the difference in stability, accuracy and robustness it offers.
It's by far the best library for this kind of simulation - sadly only few people know about this.

If you want accurate, stable control of a mechanism with lots of joints and large mass ratios, the important thing is to be using an appropriate solver. Bullet does have a Featherstone solver, though I don't know how good it is for actively driving articulations. PhysX has an articulation solver, and I know from first hand experience that it can be used to drive articulations accurately, without excessive numbers of iterations/small timesteps.

* Cheat and use external forces to stabilize the system :)
(I assume Natural Motion does this, but that's just an assumption)

Your assumption is wrong :) Of course, we can use external "cheat" forces to add stability, but that's not the fundamental method (and it all works without this). I can't discuss the methods by which we calculate the joint torques, but the character is controlled by joint torques.

For example, there's some nice demo here:


You want to know masses and moments of inertia for the different body parts, and don't want to go to the messy trouble of chopping up a cadaver yourself? OK - take a look here: http://www.smf.org/docs/articles/hic/USAARL_88-5.pdf

In Topic: Airfoil simulation

24 March 2016 - 09:38 AM


Does this makes sense?


You need to be careful that you handle the varying air flow speed and angle of attack over the wing. For example, if the plane is rolling, then this doesn't change the angle of attack much at the root, but it does (increasingly) towards the tip. This is what makes the plane stop rolling almost as soon as you centralise the ailerons. It sounds like you're in danger of losing this (which would affect every other characteristic too) - or did I misunderstand?!

In Topic: Airfoil simulation

22 March 2016 - 09:33 AM

But as I see it, scaling is non linear in respect to pre 45l and aft 45 degrees AoA coefficients. For example, at positive angles of control surface deflection, Cl generally shifts to the left, while staying the same at 45 degrees AoA. At the same time pre 45 degrees values are scaling up non linearly while post 45 are scaling down in more linear fashion.

Not quite sure what you're getting at... I'd say the graph of CL vs alpha show two things:

1. +ve flap deflection shifts the graph left by pretty much the same amount at all angles of attack

2. +ve flap deflection shifts the graph up, but only in the non-stalled regions. Also, it has a greater effect in the normal flow region than for reverse flow.

If you mentally do the "horizontal" shift first, then you'll see there isn't much/any "vertical" shift left in the stalled regions.

In case with Cm it might look a bit simpler, but actually Cm at 0 AoA is changing rather rapidly.

It's true there's some slope introduced, but mostly it just shifts up/down in the non-stalled region.

Cm curve is a bit weird as it's around the 1/4 chord point - which is obviously the wrong place for reverse flow!

Btw, they are using symmetrical airfoil but still have figures for Cm. Aren't Cm is suppose to be zero for non-chambered airfoils?

It will be zero at alpha=0 and flap=0, and will be close to zero for the non-stalled region.

Regarding calculating angle of attack, do you mean something like this?:

Yes - exactly that. I use that geometry to estimate the change in effective angle of attack (the horizontal shift), plus some heuristic for the vertical shift.