diff options
-rw-r--r-- | io_anim_nuke_chan/export_nuke_chan.py | 20 | ||||
-rw-r--r-- | io_anim_nuke_chan/import_nuke_chan.py | 16 |
2 files changed, 27 insertions, 9 deletions
diff --git a/io_anim_nuke_chan/export_nuke_chan.py b/io_anim_nuke_chan/export_nuke_chan.py index 3760e342..4e1cd120 100644 --- a/io_anim_nuke_chan/export_nuke_chan.py +++ b/io_anim_nuke_chan/export_nuke_chan.py @@ -73,13 +73,21 @@ def save_chan(context, filepath, y_up, rot_ord): # if we have a camera, add the focal length if obj.type == 'CAMERA': - # I've found via the experiments that this is a blenders - # default sensor size (in mm) - sensor_x = 32.0 - # the vertical sensor size we get by multiplying the sensor_x by - # resolution ratio - sensor_y = sensor_x * res_ratio + sensor_x = 0 + sensor_y = 0 + if hasattr(obj.data, "sensor_width"): # Preserve compatibility + if obj.data.sensor_fit == 'VERTICAL': + sensor_x = obj.data.sensor_width + sensor_y = obj.data.sensor_height + else: + sensor_x = obj.data.sensor_width + sensor_y = sensor_x * res_ratio + else: + sensor_x = 32 # standard blender's sensor size + sensor_y = sensor_x * res_ratio + cam_lens = obj.data.lens + # calculate the vertical field of view # we know the vertical size of (virtual) sensor, the focal length # of the camera so all we need to do is to feed this data to diff --git a/io_anim_nuke_chan/import_nuke_chan.py b/io_anim_nuke_chan/import_nuke_chan.py index 59eeba05..ec76955d 100644 --- a/io_anim_nuke_chan/import_nuke_chan.py +++ b/io_anim_nuke_chan/import_nuke_chan.py @@ -106,9 +106,19 @@ def read_chan(context, filepath, z_up, rot_ord): # check if the object is camera and fov data is present if obj.type == 'CAMERA' and len(data) > 7: v_fov = float(data[7]) - sensor_v = 32.0 - sensor_h = sensor_v * res_ratio - lenslen = ((sensor_h / 2.0) / tan(radians(v_fov / 2.0))) + sensor_x = 0 + sensor_y = 0 + if hasattr(obj.data, "sensor_width"): # Preserve compatibility + if obj.data.sensor_fit == 'VERTICAL': + sensor_x = obj.data.sensor_width + sensor_y = obj.data.sensor_height + else: + sensor_x = obj.data.sensor_width + sensor_y = sensor_x * res_ratio + else: + sensor_x = 32 # standard blender's sensor size + sensor_y = sensor_x * res_ratio + lenslen = ((sensor_y / 2.0) / tan(radians(v_fov / 2.0))) obj.data.lens = lenslen obj.data.keyframe_insert("lens") filehandle.close() |