FBX Camera Animation 3ds Max to Blender

Hi everyone;
This is my first post here, im a 3ds max user and using it more than 15 years,
I met blender during the pandemic period and it made me very excited. Now I want to move my entire workflow here.

Im trying to transfer my existing animations to blender, but the cameras importing with reversed z rotation.
I’m exporting fbx files from 3ds max,
I tried all manual orientation combinations but nothing solved it,
Same fbx files importing to maya or unreal engine correctly,
What can be wrong with it?

Best regrads.

Hi, can you please post an fbx camera export example file here so i can try and find a resolution.

Thank you so much,
i uploaded fbx-max and blend files here

Here how i see between Max and Blender

Thanks, will check and see.

Thanks a lot, im looking forward :star2:

Hi, You can parent the camera to an Empty and rotate the empty, the animation will face the right way and will continue the same way.

This doesnt solves it, cos it rotates the position movements too.

i can copy the keyframes to empty then set the camera child of it and then rotate it backside. This sovles my issue but i couldnt understand why the fbx format doesnt work correctly,

i have lots of shots to import and this solution is not comfortable :slight_smile:

I don’t have 3ds anymore so can not check this. you need to check with 3ds forum, may be there is a way of doing it in the export, to set the orientation?

But same FBX file imports correctly to Maya and Unreal Engine :neutral_face:
also i just noticed that the focal length animations are not importing too…

I presume you already tried this import settings:

I just tried your FBX…When importing in the FBX, in the N-Panel options ( Gear Icon) select Use Pre-Post Rotation, as well as Experimental!-Apply Transforms…and Your X-Y-Z will import correctly for Blender. I don’t know about any of the Camera settings apply in Max … also since the Camera was not exported out of Max with the scene, it’s not placed correctly in the scene file…

Yes i tried with all combinations :frowning:

i tried appling transforms but it is same…

i just imported it to maya it works well, and re-export it from maya to blender, and it comes again same with max…

This seems like a 3dsMax export keyframe script --> JSON --> Blender import script would be the best option in this case - the default import fbx doesn’t work.
JSON would look similar to :

{
"name": "cam", 
"type": "Camera",
keys : [
 {"frame": 44
              "loc": [0,0,0.123445],
              "rotation_euler":[33,33,33], 
              "scale": [4,4,44]},
 {"frame": 128
              "loc": [3,3,3.0],
              "rotation":[66,33,33],
              "scale": [5,4,44]},
]
}
name - name of obj, create if not found in scene
type - type of obj if needed to be created
keys - on frame, list of keys that need to be set to certain values. # the key names (rotation_euler,etc)  must match in blender keyframe_insert, there are also rotation_quaternion.

import script for blender would look like:

import json
#read file into a variable imported
file = open("import.json", "r")
imported = file.read()
file.close()

#load json from file into object
imported_json = json.loads(imported)
#select object in blender. 
selected = select_obj(imported_json.name) # placeholder, needs implementation
# iterate over keys
for frame in imported_json.keys: # iterates over each frame object
     for key,val in frame.items(): # check syntax
          selected.keyframe_insert( key, val, frame.frame)
          # lookup bpy docs for 2.91 on keyframe_insert

The 3ds max import script would look something like:

#find objects (camera, etc) to export - can be by name or iterate over entire project - Camera should be fine
# create a save object {} 
# go through each keyframe 
   # if frame does not have a keyframe , skip/continue 
   # store frame number in object 
  #  store location, rotation, and scale in object.
# save the save object to a json file - open "w" for write , json.dumps(save_object) 

 

That should get you started - Its a rough draft, but the general idea is there / in the comments.
I’ve never used 3dsMax scripting before but it looks like it can use python - http://docs.autodesk.com/3DSMAX/16/ENU/3ds-Max-Python-API-Documentation/index.html , you can use whatever language you want as long as it exports to a JSON similar to the one above.

You may want to start a thread in BA Python Scripts

Thank you so much for your reply @AMDBCG ,
im not good enough on python for now, i was using maxscript for my needs.
But now checked the rotation values, it seems diffrent than 3ds max. (rotation modes are same on both sides)
it matches when i write the same value manually, so problaly the script that you advice will solve the problem.



I am trying to learn the blender as I mentioned in the title and was surprised that it could not solve this simple operation, cos my fbx file goes to all other platforms correctly…