I've got a moving platform that can raise, roll, pitch, turn and move forward. To this platform I want to link the MainView. Besides being linked to the platform the MainView also has to be linked to a joystick/keyboard controls and in the future a HMD 6-dov tracker.
I solved this problem by creating a function that is called every frame and that combines a fixed point on the platform (VizGroup) with a user (VizGroup) object. The user object is moved by the joystick/keyboard while the platform is moved by VizActions.
Code:
def setView(event):
matLoc = plane.getMatrix(viz.ABS_GLOBAL)
matUser = user.getMatrix()
matFinal = vizmat.Transform()
matFinal.preMult(matLoc)
matFinal.preMult(matUser)
viz.MainView.setMatrix(matFinal)
viz.callback(viz.UPDATE_EVENT, setView)
This all seems to work fine until you do a roll with the platform while it is moving forward. After +/- 30 seconds the image starts to shake, this continues while in a roll but disappears when the roll is set back to 0 again.
I've included a example script with a distilled version of my code. As soon as you initiate a roll (using the slider) the image will get shake very slightly but as soon as you move a small amount forward (w key) the shaking gets extreme. The shaking is always the most noticeable if you move close to objects on the platform.
My question is: How to link a controllable MainView to a instable platform that does not create a shaking image.