public void GenerateXML() { ALVARDllBridge.alvar_init(); Matrix projection = ALVARDllBridge.GetCameraProjection(calibrationFilename, width, height, zNear, zFar); MatrixHelper.SaveMatrixToXML(projectionFilename, projection); }
private void SetupMarkerTracking() { DirectShowCapture captureDevice = new DirectShowCapture(); captureDevice.InitVideoCapture(0, FrameRate._30Hz, Resolution._640x480, ImageFormat.R8G8B8_24, false); // Add this video capture device to the scene so that it can be used for // the marker tracker scene.AddVideoCaptureDevice(captureDevice); // if we're using Wrap920AR, then we need to add another capture device for // processing stereo camera DirectShowCapture captureDevice2 = null; if (iTracker.ProductID == iWearDllBridge.IWRProductID.IWR_PROD_WRAP920) { captureDevice2 = new DirectShowCapture(); captureDevice2.InitVideoCapture(1, FrameRate._30Hz, Resolution._640x480, ImageFormat.R8G8B8_24, false); scene.AddVideoCaptureDevice(captureDevice2); // Calculate the right projection matrix using the camera intrinsic parameters for the // right camera ((StereoCamera)scene.CameraNode.Camera).RightProjection = ALVARDllBridge.GetCameraProjection("Wrap920_Right.xml", captureDevice2.Width, captureDevice2.Height, 0.1f, 1000); } // Create an optical marker tracker that uses ALVAR library ALVARMarkerTracker tracker = new ALVARMarkerTracker(); tracker.MaxMarkerError = 0.02f; tracker.ZNearPlane = 0.1f; tracker.ZFarPlane = 1000; tracker.InitTracker(captureDevice.Width, captureDevice.Height, "Wrap920_Left.xml", markerSize); ((StereoCamera)scene.CameraNode.Camera).LeftProjection = tracker.CameraProjection; scene.MarkerTracker = tracker; if (iTracker.ProductID == iWearDllBridge.IWRProductID.IWR_PROD_WRAP920) { scene.LeftEyeVideoID = 0; scene.RightEyeVideoID = 1; scene.TrackerVideoID = 0; } else { scene.LeftEyeVideoID = 0; scene.RightEyeVideoID = 0; scene.TrackerVideoID = 0; } // Create a marker node to track a ground marker array. groundMarkerNode = new MarkerNode(scene.MarkerTracker, "ALVARGroundArray.xml"); // Add a transform node to tranlate the objects to be centered around the // marker board. TransformNode transNode = new TransformNode(); scene.RootNode.AddChild(groundMarkerNode); scene.ShowCameraImage = true; }