A place to discuss everything related to Newton Dynamics.
Moderators: Sascha Willems, walaber
by kallaspriit » Tue Jul 14, 2009 6:21 am
My problem with linear and angular damping is that they are very dependent on simulation framerate as they are currently applied at same magnitude every frame so when you try to simulate at 300 FPS instead of 60, your objects will fly several times less and are much harder to rotate.
So my question is whether it is ok to set the damping every frame based on the timestep, for example in the force-torque callback. I am using OgreNewt and tried the following:
- Code: Select all
void _CDECL Body::newtonForceTorqueCallback( const NewtonBody* body, float timeStep, int threadIndex )
{
OgreNewt::Body* me = (OgreNewt::Body*)NewtonBodyGetUserData( body );
// 1 / 60 = 0.0166667
me->setLinearDamping(0.1f * (timeStep / 0.016667f));
me->setAngularDamping(Ogre::Vector3::UNIT_SCALE * 0.1f * (timeStep / 0.016667f));
if (me->m_forcecallback)
me->m_forcecallback( me, timeStep, threadIndex );
}
This means that I am appliyng 0.1 damping at 60FPS and whenever the framerate is anything else, the damping coefficents are scaled as needed. I intend to take the 60FPS damping settings from my material system. It seems to work fine, my objects fly the same distance at 60 and 600 FPS but is there anything wrong with this approach, possibly performance penalty of setting it every frame?
Would you consider changing the damping system to something like:
void NewtonBodySetLinearDamping( const NewtonBody* bodyPtr, dFloat linearDamp, dFloat normalFPS = 60.0f)
So every time damping is applied, it is scaled by
(timestep / (1/normalFPS)). This would make sure that damping is not framerate dependent and that seems to be the expected behaviour to me

-
kallaspriit
-
- Posts: 216
- Joined: Sun Aug 14, 2005 6:31 pm
by JernejL » Tue Jul 14, 2009 7:53 am
you could set the dampening to 0, and calculate it manually.
-

JernejL
-
- Posts: 1587
- Joined: Mon Dec 06, 2004 2:00 pm
- Location: Slovenia
-
by Julio Jerez » Tue Jul 14, 2009 8:20 am
kallaspriit wrote:This means that I am appliyng 0.1 damping at 60FPS and whenever the framerate is anything else, the damping coefficents are scaled as needed. I intend to take the 60FPS damping settings from my material system. It seems to work fine, my objects fly the same distance at 60 and 600 FPS but is there anything wrong with this approach, possibly performance penalty of setting it every frame?
No nothing wrong with your method, I like it, Like delfi say you can take control of it yourself.
you are doin a tiem scale damping method,
It was my imporesion that Ogre people where running teh engien at a fix time step?
If thsi is so, then why is the Frame rate an issue them?
I must say that is is a about time people undernad that damping will away works that way.
the reason for this is that Damping is a non linear force.
It will try to see if I can do something aboout in the engine but like I it will never be unaffectd but simulation speed.
This is true for all numerial integration methods, even Gravity will act different when the simulation rate changes.
-
Julio Jerez
- Moderator

-
- Posts: 12426
- Joined: Sun Sep 14, 2003 2:18 pm
- Location: Los Angeles
-
by kallaspriit » Tue Jul 14, 2009 8:45 am
Thank you for the explanation

I have another question about damping. In the real world, damping is mainly created by air drag and I wonder whether this could be modelled with NGD. I read up about the topic
in wikipedia and found this could be done with quite a simple formula for which all the parameters but reference area are pretty much available in the engine already:

Would it be possible to project the collision mesh to a plane in the direction of body velocity and get the area of that shape? And how expensive would this be to do every frame or perhaps every n'th frame?
Not so good with the maths, perhaps someone has ideas

-
kallaspriit
-
- Posts: 216
- Joined: Sun Aug 14, 2005 6:31 pm
by Julio Jerez » Tue Jul 14, 2009 10:00 am
The damping in Newton has nothing to do with air drag, or any other kind of drag that might exist in the real world.
I added the Drag as default because in the early days of Newton, the engine was no very fast.
Many user were using the engine to do stupid demos where they shut balls and boxes with other balls, doing that add lots of bodies that never stopped moving.
so to made bodies to go to rest after some time by adding the default drag value to be 0.1
Newer versions I keep the values because of historical reasons.
-
Julio Jerez
- Moderator

-
- Posts: 12426
- Joined: Sun Sep 14, 2003 2:18 pm
- Location: Los Angeles
-
by kallaspriit » Tue Jul 14, 2009 10:28 am
I understand that and I would like to stop using default damping system (damping = 0) and instead apply my own damping forces that are caused by air drag. The problem is calculating the area of an object on the plane of its heading direction, my math is not good enough. Can this be done real-time and how can this area be calculated?
-
kallaspriit
-
- Posts: 216
- Joined: Sun Aug 14, 2005 6:31 pm
by JernejL » Tue Jul 14, 2009 10:50 am
You could determine actual surface of the vehicle using either rough raycasting or calculating sillhuette of the object.
Since sillhuettes can now be calculated very fast in real time for use with stencil shadows there are plenty of algorythms to handle that, you can also cheat as optimization step, and calculate sillhuette only ever 2nd frame.
-

JernejL
-
- Posts: 1587
- Joined: Mon Dec 06, 2004 2:00 pm
- Location: Slovenia
-
by Julio Jerez » Tue Jul 14, 2009 10:58 am
kallaspriit wrote:The problem is calculating the area of an object on the plane of its heading direction, my math is not good enough. Can this be done real-time and how can this area be calculated?
actuatly you could, I am no in the position to do it now because I am working on the toturials, But that funtionality is aready in Netwon 2.0
The is a helper object call Newton Mesh, you can can the body with a slicing plane an dget teh face of the cross section.
What you do is you make a NetwonMesh oput of teh collision shapes, and you use it to calculate teh cross section in the direction of the velocity bu slcing teh shape with a plane.
Basically the Drag value is calculated by using the area of the cross section of the shape mutiplied by a drag coeficient.
It is not so dificult to do that.
If you give me some time I can post the code for doing it in real time. But it can no be until I am finish with the tutorials.
-
Julio Jerez
- Moderator

-
- Posts: 12426
- Joined: Sun Sep 14, 2003 2:18 pm
- Location: Los Angeles
-
by kallaspriit » Tue Jul 14, 2009 12:29 pm
That would be great, I'll be looking forward for this

-
kallaspriit
-
- Posts: 216
- Joined: Sun Aug 14, 2005 6:31 pm
by JernejL » Tue Jul 14, 2009 12:53 pm
kallaspiirit, you could also precalclate sillhuette in all perpendicular directions to model axis, and use that as base to detect how big area of a object is in any direction.
-

JernejL
-
- Posts: 1587
- Joined: Mon Dec 06, 2004 2:00 pm
- Location: Slovenia
-
by Julio Jerez » Wed Jul 15, 2009 12:22 pm
KallaSring I was thonking about this last night and what Delfi say is right it is very eqssy to ge the area of teh shape perpendicula to teh travel velocity.
Basically it is the sum of all positive projection of the area of each face of the collision shape along teh diretion on teh velocity
here is a class to do it
- Code: Select all
struct CalculateArea
{
dFloat area;
dVector windDir;
static void CalculateArea (void* userData, int vertexCount, const dFloat* faceVertec, int id)
{
int i;
int value;
dVector area (0.0f, 0.0f, 0.0f);
dVector p0 (faceVertec[0 * 3 + 0], faceVertec[0 * 3 + 1], faceVertec[0 * 3 + 2]);
dVector p1 (faceVertec[1 * 3 + 1], faceVertec[1 * 3 + 1], faceVertec[1 * 3 + 2]);
dVector dp (p1 - p0);
for (i = 2; i < vertexCount; i ++) {
dVector p1 (faceVertec[i * 3 + 0], faceVertec[i * 3 + 1], faceVertec[i * 3 + 2]);
dVector dp1 (p1 - p0);
area += dp1 * dp0
dp0 = dp1;
}
CalculateArea* areaInfo = (CalculateArea*) userData;
value = area % windDir;
if (value > 0.0f) {
areaInfo->area += value;
}
}
CalculateArea (NewtonBody* body)
{
dFloat mag2;
dMatrix matrix;
NewtonBodyGetMatrix(body, &matrix[0][0]);
NewtonBodyGetVelocity(body, &windDir[0])
mag2 = windDir % windDir;
if (mag2 > 0.1f) {
windDir *= 1.0f / dSqrt (mag2);
NewtonCollisionForEachPolygonDo (NewtonBodyGetCollision(body), &matrix[0][0], CalculateArea, this);
}
}
};
I did not test it but if you undertand the idea you can just make it compile and run.
-
Julio Jerez
- Moderator

-
- Posts: 12426
- Joined: Sun Sep 14, 2003 2:18 pm
- Location: Los Angeles
-
by kallaspriit » Wed Jul 15, 2009 5:23 pm
Thank you, I will try this soon and let you know how it works out

-
kallaspriit
-
- Posts: 216
- Joined: Sun Aug 14, 2005 6:31 pm
by kallaspriit » Fri Jul 17, 2009 6:01 am
Tried this and can't seem to get it to work right. I do get values but these range from under one to hundreds and it seems to depend on the heading of the body. Perhaps I converted something wrong into OgreNewt world, but I have double-checked everything and cant find such conversion errors.
Here's debug output doing a circle with my car and the frame area being calculated:
- Code: Select all
AREA: 2.11245e-37
AREA: 2.11245e-37
AREA: 2.11245e-37
AREA: 0.0911347
AREA: 0.0210342
AREA: 0.0210342
AREA: 0.195029
AREA: 0.217914
AREA: 0.217914
AREA: 0.197962
AREA: 0.175023
AREA: 0.175023
AREA: 0.152213
AREA: 0.152213
AREA: 0.129312
AREA: 0.106293
AREA: 0.106293
AREA: 0.0831742
AREA: 0.0831742
AREA: 0.0600224
AREA: 0.0600224
AREA: 0.0369266
AREA: 0.0185276
AREA: 0.0185276
AREA: 0.0165599
AREA: 0.0165599
AREA: 0.025931
AREA: 0.035114
AREA: 0.035114
AREA: 0.0442046
AREA: 0.0442046
AREA: 0.0532456
AREA: 0.0532456
AREA: 0.0585415
AREA: 0.215232
AREA: 0.215232
AREA: 0.201879
AREA: 0.201879
AREA: 0.184823
AREA: 0.170599
AREA: 0.170599
AREA: 0.0675618
AREA: 0.0675618
AREA: 0.0526527
AREA: 0.0393915
AREA: 0.0393915
AREA: 0.0438432
AREA: 0.0438432
AREA: 0.0455445
AREA: 0.0455445
AREA: 0.0492344
AREA: 0.0530007
AREA: 0.0530007
AREA: 0.0571082
AREA: 0.061359
AREA: 0.061359
AREA: 0.0656488
AREA: 0.0698068
AREA: 0.0698068
AREA: 0.0946672
AREA: 0.0540838
AREA: 0.0540838
AREA: 0.0561989
AREA: 0.0576009
AREA: 0.0576009
AREA: 0.0576457
AREA: 0.0576457
AREA: 0.0593497
AREA: 0.0598327
AREA: 0.0583557
AREA: 0.0583557
AREA: 0.0549437
AREA: 0.0549437
AREA: 0.0547653
AREA: 0.0489876
AREA: 0.0489876
AREA: 0.0433977
AREA: 0.0430733
AREA: 0.0430733
AREA: 0.0429689
AREA: 0.0507982
AREA: 0.0507982
AREA: 0.072832
AREA: 0.195625
AREA: 0.203276
AREA: 0.203276
AREA: 0.288566
AREA: 0.349005
AREA: 0.349005
AREA: 0.380043
AREA: 0.38172
AREA: 0.38172
AREA: 0.425389
AREA: 0.425389
AREA: 0.424075
AREA: 0.415536
AREA: 0.415536
AREA: 0.404667
AREA: 0.392521
AREA: 0.381622
AREA: 0.381622
AREA: 0.370509
AREA: 0.370509
AREA: 0.411706
AREA: 0.423846
AREA: 0.423846
AREA: 0.419494
AREA: 0.410885
AREA: 0.410885
AREA: 0.404377
AREA: 0.404377
AREA: 0.398048
AREA: 0.392537
AREA: 0.392537
AREA: 0.356207
AREA: 0.354757
AREA: 0.354757
AREA: 0.352282
AREA: 0.354186
AREA: 0.354186
AREA: 0.268301
AREA: 0.239054
AREA: 0.253517
AREA: 0.253517
AREA: 0.424053
AREA: 0.412751
AREA: 0.412751
AREA: 0.472497
AREA: 0.52526
AREA: 0.52526
AREA: 0.5701
AREA: 0.599337
AREA: 0.599337
AREA: 0.629766
AREA: 0.655642
AREA: 0.655642
AREA: 0.688989
AREA: 0.688989
AREA: 0.689353
AREA: 0.67835
AREA: 0.67835
AREA: 0.641792
AREA: 0.63328
AREA: 0.63328
AREA: 0.691257
AREA: 0.691257
AREA: 0.686218
AREA: 0.686218
AREA: 0.670486
AREA: 0.655995
AREA: 0.655995
AREA: 0.635419
AREA: 0.635419
AREA: 0.684473
AREA: 0.687273
AREA: 0.687273
AREA: 0.678913
AREA: 0.678913
AREA: 0.661535
AREA: 0.646071
AREA: 0.646071
AREA: 0.636546
AREA: 0.626189
AREA: 0.626189
AREA: 0.619422
AREA: 0.619422
AREA: 0.600594
AREA: 0.600594
AREA: 0.594911
AREA: 0.589374
AREA: 0.589374
AREA: 0.582461
AREA: 0.579816
AREA: 0.579816
AREA: 0.578373
AREA: 0.576241
AREA: 0.576241
AREA: 0.568238
AREA: 0.568238
AREA: 0.559498
AREA: 0.559498
AREA: 0.741759
AREA: 0.88661
AREA: 0.88661
AREA: 0.889548
AREA: 0.877517
AREA: 0.877517
AREA: 0.961303
AREA: 0.948028
AREA: 0.948028
AREA: 0.867415
AREA: 0.867415
AREA: 0.785284
AREA: 0.778478
AREA: 0.778478
AREA: 0.716175
AREA: 0.69277
AREA: 0.69277
AREA: 0.655412
AREA: 0.649766
AREA: 0.649766
AREA: 0.637759
AREA: 0.637759
AREA: 0.630033
AREA: 0.625256
AREA: 0.625256
AREA: 0.623032
AREA: 0.613526
AREA: 0.613526
AREA: 0.627735
AREA: 0.627735
AREA: 0.64865
AREA: 0.615511
AREA: 0.643024
AREA: 0.643024
AREA: 0.64787
AREA: 0.652422
AREA: 0.656759
AREA: 0.656759
AREA: 0.660515
AREA: 0.663956
AREA: 0.663956
AREA: 0.666878
AREA: 0.669413
AREA: 0.669413
AREA: 0.671372
AREA: 0.672184
AREA: 0.672184
AREA: 0.673494
AREA: 0.673494
AREA: 0.674265
AREA: 0.674437
AREA: 0.674437
AREA: 0.673979
AREA: 0.673018
AREA: 0.673018
AREA: 0.671923
AREA: 0.670677
AREA: 0.670677
AREA: 0.669647
AREA: 0.669647
AREA: 0.668646
AREA: 0.668079
AREA: 0.668079
AREA: 0.667773
AREA: 0.667747
AREA: 0.667747
AREA: 0.667816
AREA: 0.666254
AREA: 0.666254
AREA: 0.666323
AREA: 0.66608
AREA: 0.66608
AREA: 0.665359
AREA: 0.664206
AREA: 0.664206
AREA: 0.662812
AREA: 0.661328
AREA: 0.661328
AREA: 0.659933
AREA: 0.658754
AREA: 0.658754
AREA: 0.657909
AREA: 0.657909
AREA: 0.657457
AREA: 0.657445
AREA: 0.657445
AREA: 0.657863
AREA: 0.657863
AREA: 0.658311
AREA: 0.658757
AREA: 0.658757
AREA: 0.658831
AREA: 0.658721
AREA: 0.658721
AREA: 0.65826
AREA: 0.65826
AREA: 0.657447
AREA: 0.656561
AREA: 0.656561
AREA: 0.655635
AREA: 0.654965
AREA: 0.654965
AREA: 0.654655
AREA: 0.630968
AREA: 0.630968
AREA: 0.644993
AREA: 0.644993
AREA: 0.661086
AREA: 0.661086
AREA: 0.622061
AREA: 0.642819
AREA: 0.642819
AREA: 0.646448
AREA: 0.646448
AREA: 0.647498
AREA: 0.648976
AREA: 0.648976
AREA: 0.650886
AREA: 0.65302
AREA: 0.65302
AREA: 0.655266
AREA: 0.657502
AREA: 0.657502
AREA: 0.659522
AREA: 0.661421
AREA: 0.661421
AREA: 0.663389
AREA: 0.665344
AREA: 0.667216
AREA: 0.667216
AREA: 0.669087
AREA: 0.669087
AREA: 0.671132
AREA: 0.671132
AREA: 0.67206
AREA: 0.672543
AREA: 0.672543
AREA: 0.672382
AREA: 0.672382
AREA: 0.671731
AREA: 0.670738
AREA: 0.670738
AREA: 0.644191
AREA: 0.664857
AREA: 0.664857
AREA: 0.686872
AREA: 0.686872
AREA: 0.657089
AREA: 0.661498
AREA: 0.661498
AREA: 0.662255
AREA: 0.662201
AREA: 0.662201
AREA: 0.6626
AREA: 0.66408
AREA: 0.66408
AREA: 0.666076
AREA: 0.666076
AREA: 0.66838
AREA: 0.66838
AREA: 0.670657
AREA: 0.672815
AREA: 0.672815
AREA: 0.649262
AREA: 0.672058
AREA: 0.672058
AREA: 0.696239
AREA: 0.669837
AREA: 0.669837
AREA: 0.676231
AREA: 0.67712
AREA: 0.67712
AREA: 0.652329
AREA: 0.671521
AREA: 0.671521
AREA: 0.694606
AREA: 0.694606
AREA: 0.668505
AREA: 0.672401
AREA: 0.672401
AREA: 0.676155
AREA: 0.676155
AREA: 0.677948
AREA: 0.654071
AREA: 0.654071
AREA: 0.674413
AREA: 0.7003
AREA: 0.7003
AREA: 0.682832
AREA: 0.695219
AREA: 0.695219
AREA: 0.736925
AREA: 0.736925
AREA: 0.749144
AREA: 0.813923
AREA: 0.813923
AREA: 0.830103
AREA: 0.867627
AREA: 0.867627
AREA: 0.945301
AREA: 1.00594
AREA: 1.00594
AREA: 1.01312
AREA: 1.08048
AREA: 1.08048
AREA: 1.11711
AREA: 1.15068
AREA: 1.15068
AREA: 1.17735
AREA: 1.19829
AREA: 1.19829
AREA: 1.21501
AREA: 1.22767
AREA: 1.23726
AREA: 1.23726
AREA: 1.24461
AREA: 1.24461
AREA: 1.24996
AREA: 1.24996
AREA: 1.25379
AREA: 1.25589
AREA: 1.25589
AREA: 1.23258
AREA: 1.23258
AREA: 1.24652
AREA: 1.26251
AREA: 1.26251
AREA: 1.23201
AREA: 1.22597
AREA: 1.22597
AREA: 1.23938
AREA: 1.23938
AREA: 1.25332
AREA: 1.22203
AREA: 1.22203
AREA: 1.23515
AREA: 1.23958
AREA: 1.23958
AREA: 1.24107
AREA: 1.24244
AREA: 1.24244
AREA: 1.24394
AREA: 1.24506
AREA: 1.24506
AREA: 1.24572
AREA: 1.24563
AREA: 1.24563
AREA: 1.2448
AREA: 1.2448
AREA: 1.24335
AREA: 1.24163
AREA: 1.24163
AREA: 1.24004
AREA: 1.23847
AREA: 1.23847
AREA: 1.23713
AREA: 1.21153
AREA: 1.21153
AREA: 1.22573
AREA: 1.22573
AREA: 1.24158
AREA: 1.21581
AREA: 1.21581
AREA: 1.23505
AREA: 1.22641
AREA: 1.22641
AREA: 1.19761
AREA: 1.2096
AREA: 1.2096
AREA: 1.22407
AREA: 1.22407
AREA: 1.20903
AREA: 1.22717
AREA: 1.22717
AREA: 1.22287
AREA: 1.22287
AREA: 1.24758
AREA: 1.24758
AREA: 1.24707
AREA: 1.24965
AREA: 1.24965
AREA: 1.29092
AREA: 1.33457
AREA: 1.33457
AREA: 1.34808
AREA: 1.34808
AREA: 1.41759
AREA: 1.45375
AREA: 1.45375
AREA: 1.53194
AREA: 1.56839
AREA: 1.56839
AREA: 1.64862
AREA: 1.64862
AREA: 1.68738
AREA: 1.68738
AREA: 1.72766
AREA: 1.81324
AREA: 1.81324
AREA: 1.89812
AREA: 1.89812
AREA: 1.9712
AREA: 1.99588
AREA: 1.99588
AREA: 2.0722
AREA: 2.10735
AREA: 2.10735
AREA: 2.16914
AREA: 2.16914
AREA: 2.21131
AREA: 2.29649
AREA: 2.29649
AREA: 2.3592
AREA: 2.41131
AREA: 2.41131
AREA: 2.46356
AREA: 2.46356
AREA: 2.4902
AREA: 2.54596
AREA: 2.54596
AREA: 2.59685
AREA: 2.65493
AREA: 2.65493
AREA: 2.68975
AREA: 2.73652
AREA: 2.73652
AREA: 2.76677
AREA: 2.80704
AREA: 2.80704
AREA: 2.84339
AREA: 2.88401
AREA: 2.88401
AREA: 2.92399
AREA: 2.95085
AREA: 2.95085
AREA: 2.98869
AREA: 2.98869
AREA: 3.02013
AREA: 3.04435
AREA: 3.04435
AREA: 3.07322
AREA: 3.07322
AREA: 3.09311
AREA: 3.10237
AREA: 3.10237
AREA: 3.12192
AREA: 3.12192
AREA: 3.13416
AREA: 3.14799
AREA: 3.14799
AREA: 3.16382
AREA: 3.16452
AREA: 3.16452
AREA: 3.17346
AREA: 3.17346
AREA: 3.1746
AREA: 3.16671
AREA: 3.16671
AREA: 3.16935
AREA: 3.16208
AREA: 3.16208
AREA: 3.15817
AREA: 3.12962
AREA: 3.12962
AREA: 3.07987
AREA: 3.07987
AREA: 3.04211
AREA: 3.04211
AREA: 2.97885
AREA: 2.95581
AREA: 2.95581
AREA: 2.90337
AREA: 2.90337
AREA: 2.82146
AREA: 2.82146
AREA: 2.79074
AREA: 2.94811
AREA: 2.94811
AREA: 3.11847
AREA: 3.11847
AREA: 3.45908
AREA: 3.7312
AREA: 3.7312
AREA: 3.99233
AREA: 4.29094
AREA: 4.29094
AREA: 4.57404
AREA: 4.57404
AREA: 4.81855
AREA: 5.12444
AREA: 5.12444
AREA: 5.35899
AREA: 5.55666
AREA: 5.55666
AREA: 5.77709
AREA: 5.77709
AREA: 5.9556
AREA: 6.22292
AREA: 6.22292
AREA: 6.43561
AREA: 6.43561
AREA: 6.58072
AREA: 6.58072
AREA: 6.81759
AREA: 7.02762
AREA: 7.02762
AREA: 7.18919
AREA: 7.5393
AREA: 7.5393
AREA: 8.28609
AREA: 9.19111
AREA: 9.19111
AREA: 10.2854
AREA: 11.4409
AREA: 11.4409
AREA: 13.2467
AREA: 13.2467
AREA: 15.1689
AREA: 15.1689
AREA: 17.3389
AREA: 19.2185
AREA: 19.2185
AREA: 21.0616
AREA: 21.0616
AREA: 22.9148
AREA: 24.65
AREA: 24.65
AREA: 26.6233
AREA: 28.8537
AREA: 28.8537
AREA: 30.6782
AREA: 32.6087
AREA: 32.6087
AREA: 34.4354
AREA: 36.1643
AREA: 36.1643
AREA: 37.9003
AREA: 37.9003
AREA: 39.8592
AREA: 39.8592
AREA: 41.8767
AREA: 43.9407
AREA: 43.9407
AREA: 46.4073
AREA: 48.7781
AREA: 48.7781
AREA: 51.3612
AREA: 51.3612
AREA: 53.5506
AREA: 55.2265
AREA: 55.2265
AREA: 57.8229
AREA: 60.387
AREA: 60.387
AREA: 62.278
AREA: 63.9569
AREA: 63.9569
AREA: 65.9239
AREA: 67.6171
AREA: 67.6171
AREA: 69.9225
AREA: 71.776
AREA: 71.776
AREA: 73.9419
AREA: 75.9956
AREA: 75.9956
AREA: 75.9956
AREA: 77.9679
AREA: 79.813
AREA: 79.813
AREA: 82.0173
AREA: 83.7375
AREA: 83.7375
AREA: 85.243
AREA: 85.243
AREA: 86.6308
AREA: 88.8245
AREA: 88.8245
AREA: 90.4545
AREA: 92.1892
AREA: 92.1892
AREA: 93.9049
AREA: 93.9049
AREA: 95.4633
AREA: 97.3168
AREA: 97.3168
AREA: 98.9404
AREA: 98.9404
AREA: 100.468
AREA: 102.184
AREA: 102.184
AREA: 103.787
AREA: 103.787
AREA: 105.576
AREA: 106.814
AREA: 106.814
AREA: 107.978
AREA: 109.18
AREA: 109.18
AREA: 110.652
AREA: 111.96
AREA: 111.96
AREA: 113.19
AREA: 114.419
AREA: 114.419
AREA: 115.619
AREA: 116.787
AREA: 116.787
AREA: 117.914
AREA: 117.914
AREA: 118.923
AREA: 119.88
AREA: 119.88
AREA: 120.789
AREA: 120.789
AREA: 121.636
AREA: 122.49
AREA: 122.49
AREA: 123.304
AREA: 123.876
AREA: 123.876
AREA: 124.437
AREA: 124.991
AREA: 124.991
AREA: 125.53
AREA: 125.53
AREA: 126.152
AREA: 126.677
AREA: 126.677
AREA: 127.179
AREA: 127.179
AREA: 127.642
AREA: 128.068
AREA: 128.068
AREA: 128.498
AREA: 128.914
AREA: 128.914
AREA: 129.287
AREA: 129.287
AREA: 129.609
AREA: 129.85
AREA: 129.85
AREA: 130.102
AREA: 130.266
AREA: 130.266
AREA: 130.381
AREA: 130.534
AREA: 130.534
AREA: 130.584
AREA: 130.584
AREA: 130.646
AREA: 130.66
AREA: 130.66
AREA: 130.61
AREA: 130.61
AREA: 130.465
AREA: 130.555
AREA: 130.555
AREA: 130.365
AREA: 130.365
AREA: 130.214
AREA: 130.118
AREA: 130.118
AREA: 129.867
AREA: 129.638
AREA: 129.638
AREA: 129.458
AREA: 129.101
AREA: 129.101
AREA: 128.808
AREA: 128.808
AREA: 128.535
AREA: 128.075
AREA: 128.075
AREA: 127.641
AREA: 127.144
AREA: 127.144
AREA: 126.636
AREA: 126.103
AREA: 126.103
AREA: 125.551
AREA: 125.551
AREA: 124.947
AREA: 124.539
AREA: 124.539
AREA: 124.136
AREA: 124.136
AREA: 123.72
AREA: 123.322
AREA: 123.322
AREA: 123.023
AREA: 122.374
AREA: 122.374
AREA: 121.901
AREA: 121.259
AREA: 121.259
AREA: 120.516
AREA: 120.516
AREA: 119.861
AREA: 119.239
AREA: 119.239
AREA: 118.621
AREA: 118.621
AREA: 118.011
AREA: 118.011
AREA: 117.379
AREA: 116.731
AREA: 116.731
AREA: 116.072
AREA: 115.399
AREA: 115.399
AREA: 114.705
AREA: 114.705
AREA: 114.107
AREA: 113.542
AREA: 113.542
AREA: 112.985
AREA: 112.985
AREA: 112.418
AREA: 112.418
AREA: 111.841
AREA: 111.309
AREA: 111.309
AREA: 110.804
AREA: 110.804
AREA: 110.307
AREA: 109.796
AREA: 109.796
AREA: 109.256
AREA: 108.246
AREA: 107.739
AREA: 107.224
AREA: 107.224
AREA: 106.702
AREA: 106.173
AREA: 106.173
AREA: 105.639
AREA: 105.639
AREA: 105.111
AREA: 105.111
AREA: 104.614
AREA: 104.13
AREA: 104.13
AREA: 103.656
AREA: 103.656
AREA: 103.192
AREA: 102.736
AREA: 102.736
AREA: 102.288
AREA: 102.288
AREA: 101.847
AREA: 101.847
AREA: 101.414
AREA: 101.271
AREA: 101.271
AREA: 100.778
AREA: 100.778
AREA: 100.848
AREA: 100.354
AREA: 100.354
AREA: 100.017
AREA: 100.017
AREA: 100.083
AREA: 99.6171
AREA: 99.6171
AREA: 99.582
AREA: 99.1466
AREA: 99.1466
AREA: 98.8785
AREA: 98.8785
AREA: 98.5755
AREA: 98.2849
AREA: 98.2849
AREA: 97.98
AREA: 97.679
AREA: 97.679
AREA: 97.375
AREA: 97.0769
AREA: 97.0769
AREA: 96.7837
AREA: 96.7837
AREA: 96.4997
AREA: 96.225
AREA: 96.225
AREA: 95.9606
AREA: 95.9606
AREA: 95.9642
AREA: 95.697
AREA: 95.697
AREA: 95.5354
AREA: 95.5354
AREA: 95.7296
AREA: 95.2883
AREA: 95.2883
AREA: 95.1415
AREA: 94.9769
AREA: 94.9769
AREA: 94.8351
AREA: 94.8351
AREA: 94.693
AREA: 94.693
AREA: 94.567
AREA: 94.45
AREA: 94.45
AREA: 94.348
AREA: 94.348
AREA: 94.2593
AREA: 94.1863
AREA: 94.1863
AREA: 94.1276
AREA: 94.1276
AREA: 94.084
AREA: 94.0546
AREA: 94.0546
AREA: 94.2583
AREA: 94.2583
AREA: 94.2658
AREA: 94.3773
AREA: 94.3773
AREA: 94.8313
AREA: 94.8313
AREA: 94.6954
AREA: 94.8117
AREA: 94.8117
AREA: 94.9174
AREA: 94.9174
AREA: 95.0438
AREA: 95.1716
AREA: 95.1716
AREA: 95.3108
AREA: 95.3108
AREA: 95.4548
AREA: 95.6085
AREA: 95.6085
AREA: 95.7685
AREA: 95.7685
AREA: 95.9374
AREA: 96.1153
AREA: 96.1153
AREA: 96.3043
AREA: 96.3043
AREA: 96.7015
AREA: 96.7015
AREA: 96.9311
AREA: 97.2421
AREA: 97.2421
AREA: 97.8134
AREA: 97.9798
AREA: 97.9798
AREA: 98.3032
AREA: 98.3032
AREA: 98.6142
AREA: 98.9389
AREA: 98.9389
AREA: 99.2595
AREA: 99.2595
AREA: 99.5856
AREA: 99.9126
AREA: 99.9126
AREA: 100.247
AREA: 100.247
AREA: 100.588
AREA: 100.936
AREA: 100.936
AREA: 101.466
AREA: 101.466
AREA: 101.853
AREA: 101.853
AREA: 102.325
AREA: 103.047
AREA: 103.047
AREA: 103.332
AREA: 103.332
AREA: 103.774
AREA: 104.202
AREA: 104.202
AREA: 104.636
AREA: 104.636
AREA: 105.062
AREA: 105.49
AREA: 105.49
AREA: 105.914
AREA: 106.34
AREA: 106.34
AREA: 106.764
AREA: 106.764
AREA: 107.19
AREA: 107.19
AREA: 107.772
AREA: 108.22
AREA: 108.22
AREA: 108.727
AREA: 108.727
AREA: 109.49
AREA: 109.49
AREA: 109.827
AREA: 110.289
AREA: 110.289
AREA: 110.742
AREA: 111.196
AREA: 111.196
AREA: 111.635
AREA: 111.635
AREA: 112.07
AREA: 112.07
AREA: 112.495
AREA: 112.914
AREA: 112.914
AREA: 113.48
AREA: 113.48
AREA: 113.902
AREA: 113.902
AREA: 114.393
AREA: 115.17
AREA: 115.17
AREA: 115.485
AREA: 115.485
AREA: 115.881
AREA: 115.881
AREA: 116.205
AREA: 116.205
AREA: 116.565
AREA: 116.9
AREA: 116.9
AREA: 117.404
AREA: 117.751
AREA: 117.751
AREA: 118.192
AREA: 118.192
AREA: 118.895
AREA: 118.895
AREA: 119.195
AREA: 119.522
AREA: 119.522
AREA: 120.073
AREA: 120.073
AREA: 120.472
AREA: 121.095
AREA: 121.095
AREA: 121.35
AREA: 121.35
AREA: 121.701
AREA: 122.009
AREA: 122.009
AREA: 122.401
AREA: 122.401
AREA: 122.677
AREA: 123.029
AREA: 123.029
AREA: 123.542
AREA: 123.542
AREA: 123.735
AREA: 123.735
AREA: 123.959
AREA: 124.358
AREA: 124.358
AREA: 124.499
AREA: 124.499
AREA: 124.717
AREA: 125.102
AREA: 125.102
AREA: 125.166
AREA: 125.166
AREA: 125.318
AREA: 125.318
AREA: 125.452
AREA: 125.761
AREA: 125.761
AREA: 125.582
AREA: 125.582
AREA: 125.507
AREA: 125.46
AREA: 125.46
AREA: 125.57
AREA: 125.57
AREA: 125.162
AREA: 125.162
AREA: 124.912
AREA: 124.594
AREA: 124.594
AREA: 124.594
AREA: 124.186
AREA: 123.749
AREA: 123.749
AREA: 123.342
AREA: 123.342
AREA: 122.793
AREA: 122.29
AREA: 122.29
AREA: 121.976
AREA: 121.976
AREA: 121.265
AREA: 121.265
AREA: 120.77
AREA: 120.039
AREA: 120.039
AREA: 119.197
AREA: 119.197
AREA: 118.39
AREA: 118.39
AREA: 117.738
AREA: 116.59
AREA: 116.59
AREA: 115.56
AREA: 115.56
AREA: 114.479
AREA: 114.479
AREA: 113.534
AREA: 113.534
AREA: 112.106
AREA: 110.748
AREA: 110.748
AREA: 109.403
AREA: 109.403
AREA: 108.269
AREA: 108.269
AREA: 106.412
AREA: 106.412
AREA: 104.876
AREA: 103.14
AREA: 103.14
AREA: 101.425
AREA: 101.425
AREA: 99.9371
AREA: 99.9371
AREA: 97.9663
AREA: 97.9663
AREA: 96.2511
AREA: 94.2146
AREA: 94.2146
AREA: 92.0618
AREA: 92.0618
AREA: 89.911
AREA: 89.911
AREA: 87.9956
AREA: 87.9956
AREA: 85.4453
AREA: 85.4453
AREA: 82.9912
AREA: 80.534
AREA: 80.534
AREA: 78.3767
AREA: 78.3767
AREA: 75.3603
AREA: 75.3603
AREA: 72.6833
AREA: 72.6833
AREA: 69.8614
AREA: 69.8614
AREA: 67.0622
AREA: 67.0622
AREA: 64.6204
AREA: 64.6204
AREA: 61.5756
AREA: 61.5756
AREA: 58.8284
AREA: 55.9687
AREA: 55.9687
AREA: 53.2339
AREA: 53.2339
AREA: 50.5278
AREA: 50.5278
AREA: 48.1511
AREA: 48.1511
AREA: 45.0426
AREA: 45.0426
AREA: 42.13
AREA: 39.5717
AREA: 39.5717
AREA: 36.5365
AREA: 36.5365
AREA: 33.5741
AREA: 33.5741
AREA: 31.0295
AREA: 27.8956
AREA: 27.8956
AREA: 27.8956
AREA: 24.9444
AREA: 21.9943
AREA: 21.9943
AREA: 19.438
AREA: 19.438
AREA: 16.6087
AREA: 16.6087
AREA: 14.527
AREA: 12.4962
AREA: 12.4962
AREA: 10.8377
AREA: 10.8377
AREA: 9.90262
AREA: 9.08192
AREA: 9.08192
AREA: 8.22022
AREA: 7.69829
AREA: 7.69829
AREA: 7.08267
AREA: 7.08267
AREA: 6.47859
AREA: 6.47859
AREA: 5.90623
AREA: 5.90623
AREA: 5.42328
AREA: 5.42328
AREA: 4.8144
AREA: 4.33803
AREA: 4.33803
AREA: 3.74034
AREA: 3.74034
AREA: 3.15838
AREA: 3.15838
AREA: 3.13649
AREA: 3.13649
AREA: 3.27461
AREA: 3.36814
AREA: 3.36814
AREA: 3.50491
AREA: 3.50491
AREA: 3.60449
AREA: 3.60449
AREA: 3.7008
AREA: 3.80052
AREA: 3.80052
AREA: 3.92773
AREA: 3.92773
AREA: 4.0114
AREA: 4.0114
AREA: 4.11262
AREA: 4.18042
AREA: 4.18042
AREA: 4.24566
AREA: 4.24566
AREA: 4.31237
AREA: 4.31237
AREA: 4.4053
AREA: 4.45244
AREA: 4.45244
AREA: 4.5179
AREA: 4.5179
AREA: 4.55577
AREA: 4.61467
AREA: 4.61467
AREA: 4.60288
AREA: 4.60288
AREA: 4.62744
AREA: 4.64029
AREA: 4.64029
AREA: 4.65143
AREA: 4.65143
AREA: 4.68356
AREA: 4.6771
AREA: 4.6771
AREA: 4.6811
AREA: 4.6811
AREA: 4.66713
AREA: 4.66713
AREA: 4.6659
AREA: 4.6659
AREA: 4.61397
AREA: 4.61397
AREA: 4.58027
AREA: 4.58027
AREA: 4.54352
AREA: 4.52484
AREA: 4.52484
AREA: 4.47438
AREA: 4.43815
AREA: 4.43815
AREA: 4.35725
AREA: 4.28532
AREA: 4.28532
AREA: 4.28532
AREA: 4.21993
AREA: 4.16782
AREA: 4.16782
AREA: 4.08104
AREA: 4.08104
AREA: 4.00677
AREA: 3.91394
AREA: 3.91394
AREA: 3.82812
AREA: 3.82812
AREA: 3.68995
AREA: 3.68995
AREA: 3.56293
AREA: 3.56293
AREA: 3.44059
AREA: 3.44059
AREA: 3.34415
AREA: 3.34415
AREA: 3.21715
AREA: 3.08762
AREA: 3.08762
AREA: 2.95926
AREA: 2.82452
AREA: 2.82452
AREA: 2.70202
AREA: 2.70202
AREA: 2.55314
AREA: 2.39526
AREA: 2.39526
AREA: 2.2434
AREA: 2.2434
AREA: 2.08501
AREA: 2.08501
AREA: 1.93359
AREA: 1.93359
AREA: 1.80115
AREA: 1.80115
AREA: 1.67003
AREA: 1.5422
AREA: 1.5422
AREA: 1.40137
AREA: 1.40137
AREA: 1.26286
AREA: 1.12594
AREA: 1.12594
AREA: 0.978692
AREA: 0.833399
AREA: 0.833399
AREA: 0.77069
AREA: 0.77069
AREA: 0.704085
AREA: 0.704085
AREA: 0.64399
AREA: 0.64399
AREA: 0.580173
AREA: 0.720693
AREA: 0.720693
AREA: 0.839543
AREA: 0.839543
AREA: 0.980654
AREA: 1.10173
AREA: 1.10173
AREA: 1.30825
AREA: 1.30825
AREA: 1.54798
AREA: 1.54798
AREA: 1.79265
AREA: 2.01562
AREA: 2.01562
AREA: 2.24544
AREA: 2.24544
AREA: 2.37697
AREA: 2.5354
AREA: 2.5354
AREA: 2.64555
AREA: 2.64555
AREA: 2.78511
AREA: 2.87647
AREA: 2.87647
AREA: 3.00708
AREA: 3.07881
AREA: 3.07881
AREA: 3.18913
AREA: 3.33307
AREA: 3.33307
AREA: 3.5109
AREA: 3.5109
AREA: 3.58905
AREA: 3.69771
AREA: 3.73149
AREA: 3.73149
AREA: 3.81481
AREA: 3.81481
AREA: 3.8295
AREA: 3.8295
AREA: 3.91404
AREA: 3.92872
AREA: 3.92872
AREA: 4.01126
AREA: 4.0561
AREA: 4.0561
AREA: 4.39899
AREA: 4.39899
AREA: 4.57778
AREA: 4.57778
AREA: 5.11293
AREA: 5.34812
AREA: 5.34812
AREA: 5.85807
AREA: 5.8115
AREA: 5.8115
AREA: 6.47241
AREA: 6.47241
AREA: 7.09279
AREA: 7.64316
AREA: 7.64316
AREA: 8.02736
AREA: 8.02736
AREA: 8.28481
AREA: 7.91995
AREA: 7.91995
AREA: 8.54979
AREA: 8.54979
AREA: 8.87489
AREA: 8.86475
AREA: 8.86475
AREA: 9.28726
AREA: 9.18412
AREA: 9.18412
AREA: 9.49694
AREA: 9.49694
AREA: 9.34223
AREA: 9.56848
AREA: 9.56848
AREA: 10.0714
AREA: 10.0714
AREA: 10.9258
! Body 'Ball_0' l
AREA: 10.7776
AREA: 10.7776
AREA: 11.3537
AREA: 11.1799
AREA: 11.3288
AREA: 11.3288
AREA: 11.0954
AREA: 10.7287
AREA: 10.7287
AREA: 10.0188
AREA: 10.0188
AREA: 10.185
AREA: 9.68774
AREA: 9.69189
AREA: 9.69189
AREA: 8.84918
AREA: 8.99271
AREA: 8.99271
AREA: 8.40923
AREA: 8.40923
AREA: 8.4468
AREA: 8.4468
AREA: 7.56661
AREA: 7.75404
AREA: 7.75404
AREA: 6.98716
AREA: 6.98716
AREA: 6.98935
AREA: 5.9361
AREA: 5.9361
AREA: 5.96992
AREA: 5.04033
AREA: 5.04033
AREA: 4.8471
AREA: 3.66138
AREA: 3.66138
AREA: 3.50574
AREA: 3.50574
AREA: 2.33141
AREA: 1.99944
AREA: 1.99944
AREA: 1.07315
AREA: 0.946074
AREA: 0.350568
AREA: 0.350568
AREA: 0.273199
AREA: 0.0455135
AREA: 0.0455135
AREA: 0.0515759
AREA: 0.0515759
AREA: 0.0437208
AREA: 0.0496671
AREA: 0.0496671
AREA: 0.0405396
AREA: 0.0405396
AREA: 0.0551322
AREA: 0.0434205
AREA: 0.0434205
AREA: 0.0502397
AREA: 0.040211
AREA: 0.040211
AREA: 0.047699
AREA: 0.047699
AREA: 0.035197
AREA: 0.0422589
AREA: 0.0422589
AREA: 0.0321678
AREA: 0.0393137
AREA: 0.0393137
AREA: 0.029473
AREA: 0.029473
AREA: 0.0328831
AREA: 0.0267131
AREA: 0.0267131
AREA: 0.0275262
AREA: 0.023803
AREA: 0.022607
AREA: 0.022607
AREA: 0.0205625
AREA: 0.0191315
AREA: 0.0191315
AREA: 0.0170849
AREA: 0.0153579
AREA: 0.0153579
AREA: 0.013335
AREA: 0.0120254
AREA: 0.0120254
AREA: 0.0109171
AREA: 0.00986852
AREA: 0.00986852
AREA: 0.00877321
AREA: 0.00754966
AREA: 0.00754966
AREA: 0.00651992
AREA: 0.00651992
AREA: 0.00519344
AREA: 0.00422495
AREA: 2.11245e-37
AREA: 2.11245e-37
Here is my code:
- Code: Select all
#ifndef MESHAREACALCULATOR_H_INCLUDED
#define MESHAREACALCULATOR_H_INCLUDED
#include "OgreNewt.h"
#include <Ogre.h>
namespace VD
{
class MeshAreaCalculator
{
public:
Ogre::Vector3 windDir;
float area;
static void calculateArea(void* userData, int vertexCount, const float* faceVertices, int id);
float calculateArea(OgreNewt::Body* body);
};
} // namespace VD
#endif // MESHAREACALCULATOR_H_INCLUDED
- Code: Select all
#include "MeshAreaCalculator.h"
namespace VD
{
void MeshAreaCalculator::calculateArea(void* userData, int vertexCount, const float* faceVertices, int id)
{
Ogre::Vector3 area(0.0f, 0.0f, 0.0f);
Ogre::Vector3 p0(faceVertices[0 * 3 + 0], faceVertices[0 * 3 + 1], faceVertices[0 * 3 + 2]);
Ogre::Vector3 p1(faceVertices[1 * 3 + 1], faceVertices[1 * 3 + 1], faceVertices[1 * 3 + 2]);
Ogre::Vector3 dp0(p1 - p0);
for(int i = 2; i < vertexCount; i++)
{
Ogre::Vector3 p1(faceVertices[i * 3 + 0], faceVertices[i * 3 + 1], faceVertices[i * 3 + 2]);
Ogre::Vector3 dp1(p1 - p0);
area += dp1 * dp0;
dp0 = dp1;
}
MeshAreaCalculator* areaInfo = (MeshAreaCalculator*)userData;
Ogre::Real value = area.dotProduct(areaInfo->windDir);
if(value > 0.0f)
{
areaInfo->area += value;
}
}
float MeshAreaCalculator::calculateArea(OgreNewt::Body* body)
{
windDir = body->getVelocity();
float matrix[16];
NewtonBodyGetMatrix(body->getNewtonBody(), &matrix[0]);
float squaredMagnitude = windDir.squaredLength();
if(squaredMagnitude > 0.1f)
{
windDir.normalise();
NewtonCollisionForEachPolygonDo(NewtonBodyGetCollision(body->getNewtonBody()), &matrix[0], calculateArea, this);
}
return area;
}
} // namespace VD
Perhaps you can spot something wrong with this

-
kallaspriit
-
- Posts: 216
- Joined: Sun Aug 14, 2005 6:31 pm
by JernejL » Fri Jul 17, 2009 6:34 am
what shape is the model you are testing this on?
-

JernejL
-
- Posts: 1587
- Joined: Mon Dec 06, 2004 2:00 pm
- Location: Slovenia
-
by kallaspriit » Fri Jul 17, 2009 6:43 am
Convex collision, does it matter?
-
kallaspriit
-
- Posts: 216
- Joined: Sun Aug 14, 2005 6:31 pm
Return to General Discussion
Who is online
Users browsing this forum: No registered users and 1 guest