Reputation: 2037
I am writing an application with oculus and I have a problem with the camera setup. Everything is working fine just sometimes, the camera is start shaking and the model which we are looking at seems jittering. Anyone has the same problem till now?
The code to update the camera matrix is as follows:
// Concatentaion of both the given navigator and the position tracking
OSG::Matrix4f m;
// If a navigator is given, we attach to it
if (navigator) {
m = navigator->getMatrix();
}
// apply position/rotation as obtained from tracking
OSG::Matrix4f trans;
trans.setTranslate(ovr2osg(headPose.Position));
trans.setRotate(ovr2osg(headPose.Orientation));
m.mult(trans);
// compute modelview matrix for player
OSG::Matrix4f modelview;
player->setMatrix(m);
playerNode->getToWorld(modelview);
modelview.invert();
for (int i = 0; i < ovrEye_Count; ++i) {
// The player node acts as the beacon for our stereo setup.
// Basd on the modelview matrix of the player, we
// now compute the viewing matrix for each eye, which
// basically corresponds a small shift to account for eye separation.
OSG::Matrix4f view(modelview);
// The overall shift is determined by the IPD (Interpupillary
// distance): To account for the IPD we just translate the viewing
// matrix by the viewing adjust vector as reported by the oculus SDK.
// NOTE: The Left-handed (!) multiplication is crucial
const OSG::Matrix4f &adjust = ovr2osg( OVR::Matrix4f::Translation(eyeRenderDesc[i].ViewAdjust) );
view.multLeft(adjust);
// We use the projection matrices as supplied by the oculus SDK.
const OSG::Matrix4f &proj = ovr2osg(projection[i]);
// Finally, set the computed viewing/projection matrices
camera[i]->setModelviewMatrix(view);
camera[i]->setProjectionMatrix(proj);
}
OSG::Thread::getCurrentChangeList()->commitChanges();
Upvotes: 1
Views: 578
Reputation: 2037
The WDM (Windows Desktop Manager) was causing the problem. So, I disabled the Aero by choosing the Windows Basic Theme but it does not fix my problem. So, I have to call the DwmEnableComposition(DWM_EC_DISABLECOMPOSITION)
to disable the DWM composition and then no judder happends.
Upvotes: 1