This section is still WIP!
Motion cuing software like FlyPT Mover do calculate the simulators position virtualy. This means, that the software always knows the position where your simulator should be. With this informaton it is possible to feed a virtual tracker. It is important that the settings in the motion cuing software match the real simulator as good as possible.
If the setup is correct, the virtual tracker "attaches" to the simulators center of rotation. It is like attaching a real controller to the exact same spot.
Sorry, but the answer is no. There are to many programs out there. But you can see below to learn how to write your own virtual tracker. Of course you need to know how to program in C++.
You can use https://github.com/Dschadu/motionPose as starting point.
Use the MMF OVRMC_MMFv1
to connect to OVRMC.
Below the definition is a detailed description. All values marked with "Is saved" are saved.
The direction tells whether the value is only written by OVRMC or also read back every frame.
// struct for OVRMC MMF version 1
struct MMFstruct_OVRMC_v1
{
vr::HmdVector3d_t Translation;
vr::HmdVector3d_t Rotation;
vr::HmdQuaternion_t QRotation;
uint32_t Flags_1;
uint32_t Flags_2;
double Reserved_double[10];
int Reserved_int[10];
MMFstruct_OVRMC_v1()
{
Translation = { 0, 0, 0 };
Rotation = { 0, 0, 0 };
QRotation = { 0, 0, 0, 0 };
Flags_1 = 0;
Flags_2 = 0;
}
};
These values are used for the Virtual Driver Offset. They will be written as soon as the user changes one value in the UI:
vr::HmdVector3d_t Translation; // Is saved. Direction: Output. [0] = X, [1] = Y, [2] = Z
vr::HmdVector3d_t Rotation; // Is saved. Direction: Output. [0] = Pitch, [1] = Yaw, [2] = Roll
vr::HmdQuaternion_t QRotation; // Reserved.
Note: The following is not yet included in OVRMC!
With these flags you can control OVRMC via a 3rd party application, or you can read the current state.
Flags 1:
uint32_t Flags_1; // Not saved. Direction: In / Out
Bit 0
Motion Compensation: Read to get the current status. Write to set it. true: Enabled; false: Disabled.
Bit 1
Reset Zero Pose: Write to reset the pose. true: Reset zero pose; false: No effect
Bit 2 .. 31
Reserved.
Flags 2:
uint32_t Flags_2; // Not saved. Direction: In / Out
Bit 0 .. 31
Reserved.
These values are reserved for future use
double Reserved_double[10];
Reserved.
int Reserved_int[10];
Reserved.