This issue was solved by downloading and using 3dgs_snake's PhysX3 DLL's (thread "AckphysX3 development thread:).

More specifically I found that my problem was related to the PhysX code that came with 3DGS. I downloaded the PhysX_Plugin source code from the 3DGS download page: PhysX Plugin Source (40 KB - VC++ 2010 - October 2011).

In the file main.cpp it contains the the following function I use to set the interia:

=========source code beg
DLLFUNC var pXent_setmassoffset(ENTITY * entity, VECTOR* vOffsetPos, VECTOR* vInertia)
{
NxActor* actor = PhX.GetActorFromEnt(entity);
if(!actor)return _VAR(0);
actor->updateMassFromShapes(1.0f,actor->getMass());
if (vOffsetPos)
actor->setCMassOffsetLocalPosition(NxVec3(_FLOAT(vOffsetPos->x),_FLOAT(vOffsetPos->z),_FLOAT(vOffsetPos->y))*PhX.NXSize);

if (vInertia) {
NxReal ValNew = _FLOAT(vec_length(vInertia));
if (ValNew) {
NxVec3 NxInertia = actor->getMassSpaceInertiaTensor();
NxReal ValOld = NxInertia.magnitude();
NxInertia.x = _FLOAT(vInertia->x) * ValOld/ValNew;
NxInertia.y = _FLOAT(vInertia->z) * ValOld/ValNew;
NxInertia.z = _FLOAT(vInertia->y) * ValOld/ValNew;
actor->setMassSpaceInertiaTensor(NxInertia);
}
}
return _VAR(1);
}
=========source code end

It appears that the NxInertia values are scale by ValOld/ValNew. This is why the values are changing when I use this function.

3dgs_snake's PhysX3 DLL's do not alter the values you input.

Also 3dgs_snake was a great help and is the guy to ask if you have any PhysX issues in 3DGS.

Last edited by Taskmaster065; 12/23/14 02:15.