You can get the internal D3DXMatrix of an object if you fancy digging about inside the DBO format header files, but setting it directly isn't very safe.
The best way I found to bring matrices back into DarkSDK was through the function below, it came with the source code to the FPSCreator ODE integration that TGC released a while back.
void DBPAnglesFromMatrix ( D3DXMATRIX* pmatMatrix, D3DXVECTOR3* pVecAngles )
{
float m00 = pmatMatrix->_11;
float m01 = pmatMatrix->_12;
float m02 = pmatMatrix->_13;
float m12 = pmatMatrix->_23;
float m22 = pmatMatrix->_33;
float heading = (float)atan2(m01,m00);
float attitude = (float)atan2(m12,m22);
float bank = (float)asin(-m02);
// check for gimbal lock
if ( fabs ( m02 ) > 1.0f )
{
// looking straight up or down
float pi = D3DX_PI / 2.0f;
pVecAngles->x = 0.0f;
pVecAngles->y = D3DXToDegree ( pi * m02 );
pVecAngles->z = 0.0f;
}
else
{
pVecAngles->x = D3DXToDegree ( attitude );
pVecAngles->y = D3DXToDegree ( bank );
pVecAngles->z = D3DXToDegree ( heading );
}
}
It takes in a D3D format (row major) matrix and writes the resulting xyz degree values into the passed in vector. You can then use the dbSetRotation() command to pump the values into your object.
You might have to switch the column/row ordering of your matrix for it to work with Newton, I can't remember what way its matrices are constructed right now
Kaiyodo.