05 May 2007, 02:26 PM
I am a little bit confused with a script I am using to export camera animation from max. Everything works fine except one thing, animation of a free camera at 25 fps is completly off . I was making test with the target and free cameras at 30fps and 25fps and apart of that problem everything is ok. Do you know guys where might be a potetial problem?
I can't understand the difference between target and free camera, to be more specific I am not sure if those two types of cameras uses different methods of calculating position and direction in space?!? Right now I suspect that this might be a problem with the different order max calculates translations and rotations, but that is a weak argument to me, since free camera doesn't work only at 25fps. What do you think about that?
any help much appreciated
Target and Free camera define orientation in space differently, but the final result is always a transformation matrix (in theCamera.transform property) which is not dependent on how the calculation was made. You could for example animate a target camera in Max, create a Free camera and assign the target camera's transform to the Free camera on each frame with animate on - the resulting free camera will match the target camera PERFECTLY.
The Target camera uses a LookAt controller and an Up vector to orient in space, thus creating a target camera pointing straight down or straight up is mathematically impossible (gimbal lock when the up vector of the camera gets aligned to the Z axis of the camera). Other than that, when exporting camera data, you could abstract yourself from the way the orientation was calculated and just export the resulting transform and assign to a free camera on the target platform.
Frames per second should not play much role, unless you are resampling your animation. Also, you said nothing about what you are exporting to and how you are handling animation (sample per frame? exporting existing keys only?). For example, exporting only existing Max keys with automatic tangent to Maya would cause completely different animation because the key interpolation in the two applications is different. This would require a sample per frame to be exported, where the samples are calculated at the frame rate you are exporting and importing at.
Also, are you using euler rotations (bad!) since you mentioned the order? Max uses quaternions internally, converting back and to eulers to allow for easier animation handling. In the opposite case when importing from an Euler-based application to Max, just swapping the max rotation controller for a TCB fixes any problems. If your target application supports quaternions, consider exporting quats from Max.
If you are comparing the SAME camera at 25 fps and 30 fps, the results might be different depending on where the keys land during the re-interpolation of the time - Max uses sub-key sampling in ticks precision, where one second has 4800 ticks, thus 25 fps uses 192 ticks and 30 fps is 160 ticks. Since the time is not using floating point values, it is possible to get a different in the final result if you are comparing the same camera's animation before and after the fps changes. But I could not understand from your post what exactly you were comparing and how the FPS played a role. Some more info would be useful...
05 May 2007, 02:26 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.