[Bf-extensions-cvs] [01af4af] master: FBX: Mostly add Camera template data, plus a few other minor fixes.

Bastien Montagne noreply at git.blender.org
Sat Mar 29 18:11:53 CET 2014


Commit: 01af4afaf20a32322c47f054326783bcdb2f8587
Author: Bastien Montagne
Date:   Sat Mar 29 16:23:15 2014 +0100
https://developer.blender.org/rBA01af4afaf20a32322c47f054326783bcdb2f8587

FBX: Mostly add Camera template data, plus a few other minor fixes.

===================================================================

M	io_scene_fbx/export_fbx_bin.py

===================================================================

diff --git a/io_scene_fbx/export_fbx_bin.py b/io_scene_fbx/export_fbx_bin.py
index c122d0c..8516c5b 100644
--- a/io_scene_fbx/export_fbx_bin.py
+++ b/io_scene_fbx/export_fbx_bin.py
@@ -360,29 +360,38 @@ def elem_data_vec_float64(elem, name, value):
 #     Also, those "custom" types like 'FieldOfView' or 'Lcl Translation' are pure nonsense,
 #     these are just Vector3D ultimately... *sigh* (again).
 FBX_PROPERTIES_DEFINITIONS = {
+    # Generic types.
     "p_bool": (b"bool", b"", "add_int32"),  # Yes, int32 for a bool (and they do have a core bool type)!!!
     "p_integer": (b"int", b"Integer", "add_int32"),
     "p_ulonglong": (b"ULongLong", b"", "add_int64"),
     "p_double": (b"double", b"Number", "add_float64"),  # Non-animatable?
     "p_number": (b"Number", b"", "add_float64"),  # Animatable-only?
     "p_enum": (b"enum", b"", "add_int32"),
-    "p_visibility": (b"Visibility", b"", "add_float64"),
-    "p_fov": (b"FieldOfView", b"", "add_float64"),
-    "p_fov_x": (b"FieldOfViewX", b"", "add_float64"),
-    "p_fov_y": (b"FieldOfViewY", b"", "add_float64"),
     "p_vector_3d": (b"Vector3D", b"Vector", "add_float64", "add_float64", "add_float64"),  # Non-animatable?
     "p_vector": (b"Vector", b"", "add_float64", "add_float64", "add_float64"),  # Animatable-only?
-    "p_lcl_translation": (b"Lcl Translation", b"", "add_float64", "add_float64", "add_float64"),
-    "p_lcl_rotation": (b"Lcl Rotation", b"", "add_float64", "add_float64", "add_float64"),
-    "p_lcl_scaling": (b"Lcl Scaling", b"", "add_float64", "add_float64", "add_float64"),
     "p_color_rgb": (b"ColorRGB", b"Color", "add_float64", "add_float64", "add_float64"),  # Non-animatable?
     "p_color": (b"Color", b"", "add_float64", "add_float64", "add_float64"),  # Animatable-only?
     "p_string": (b"KString", b"", "add_string_unicode"),
     "p_string_url": (b"KString", b"Url", "add_string_unicode"),
     "p_timestamp": (b"KTime", b"Time", "add_int64"),
     "p_datetime": (b"DateTime", b"", "add_string_unicode"),
-    "p_object": (b"object", b""),  # XXX Check this! No value for this prop???
+    # Special types.
+    "p_object": (b"object", b""),  # XXX Check this! No value for this prop??? Would really like to know how it works!
     "p_compound": (b"Compound", b""),
+    # Specific types (sic).
+    ## Objects (Models).
+    "p_lcl_translation": (b"Lcl Translation", b"", "add_float64", "add_float64", "add_float64"),
+    "p_lcl_rotation": (b"Lcl Rotation", b"", "add_float64", "add_float64", "add_float64"),
+    "p_lcl_scaling": (b"Lcl Scaling", b"", "add_float64", "add_float64", "add_float64"),
+    "p_visibility": (b"Visibility", b"", "add_float64"),
+    "p_visibility_inheritance": (b"Visibility Inheritance", b"", "add_int32"),
+    ## Cameras!!!
+    "p_roll": (b"Roll", b"", "add_float64"),
+    "p_opticalcenterx": (b"OpticalCenterX", b"", "add_float64"),
+    "p_opticalcentery": (b"OpticalCenterY", b"", "add_float64"),
+    "p_fov": (b"FieldOfView", b"", "add_float64"),
+    "p_fov_x": (b"FieldOfViewX", b"", "add_float64"),
+    "p_fov_y": (b"FieldOfViewY", b"", "add_float64"),
 }
 
 
@@ -489,8 +498,8 @@ def fbx_template_def_globalsettings(scene, settings, override_defaults=None, nbr
 def fbx_template_def_model(scene, settings, override_defaults=None, nbr_users=0):
     gscale = settings.global_scale
     props = OrderedDict((
-        # Name,                     Value, Type,     Animatable
-        (b"QuaternionInterpolate", (False, "p_bool", False)),
+        # Name,                   Value, Type, Animatable
+        (b"QuaternionInterpolate", (0, "p_enum", False)),  # 0 = no quat interpolation.
         (b"RotationOffset", ((0.0, 0.0, 0.0), "p_vector_3d", False)),
         (b"RotationPivot", ((0.0, 0.0, 0.0), "p_vector_3d", False)),
         (b"ScalingOffset", ((0.0, 0.0, 0.0), "p_vector_3d", False)),
@@ -560,6 +569,7 @@ def fbx_template_def_model(scene, settings, override_defaults=None, nbr_users=0)
         (b"Lcl Rotation", ((0.0, 0.0, 0.0), "p_lcl_rotation", True)),
         (b"Lcl Scaling", (Vector((1.0, 1.0, 1.0)) * gscale, "p_lcl_scaling", True)),
         (b"Visibility", (1.0, "p_visibility", True)),
+        (b"Visibility Inheritance", (1, "p_visibility_inheritance", False)),
     ))
     if override_defaults is not None:
         props.update(override_defaults)
@@ -571,12 +581,12 @@ def fbx_template_def_light(scene, settings, override_defaults=None, nbr_users=0)
     props = OrderedDict((
         (b"LightType", (0, "p_enum", False)),  # Point light.
         (b"CastLight", (True, "p_bool", False)),
-        (b"Color", ((1.0, 1.0, 1.0), "p_color_rgb", True)),
+        (b"Color", ((1.0, 1.0, 1.0), "p_color", True)),
         (b"Intensity", (100.0, "p_number", True)),  # Times 100 compared to Blender values...
         (b"DecayType", (2, "p_enum", False)),  # Quadratic.
         (b"DecayStart", (30.0 * gscale, "p_double", False)),
         (b"CastShadows", (True, "p_bool", False)),
-        (b"ShadowColor", ((0.0, 0.0, 0.0), "p_color_rgb", True)),
+        (b"ShadowColor", ((0.0, 0.0, 0.0), "p_color", True)),
         (b"AreaLightShape", (0, "p_enum", False)),  # Rectangle.
     ))
     if override_defaults is not None:
@@ -585,7 +595,115 @@ def fbx_template_def_light(scene, settings, override_defaults=None, nbr_users=0)
 
 
 def fbx_template_def_camera(scene, settings, override_defaults=None, nbr_users=0):
-    props = OrderedDict()  # TODO!!!
+    r = scene.render
+    props = OrderedDict((
+        (b"Color", ((0.8, 0.8, 0.8), "p_color_rgb", False)),
+        (b"Position", ((0.0, 0.0, -50.0), "p_vector", True)),
+        (b"UpVector", ((0.0, 1.0, 0.0), "p_vector", True)),
+        (b"InterestPosition", ((0.0, 0.0, 0.0), "p_vector", True)),
+        (b"Roll", (0.0, "p_roll", True)),
+        (b"OpticalCenterX", (0.0, "p_opticalcenterx", True)),
+        (b"OpticalCenterY", (0.0, "p_opticalcentery", True)),
+        (b"BackgroundColor", ((0.8, 0.8, 0.8), "p_color", True)),
+        (b"TurnTable", (0.0, "p_number", True)),
+        (b"DisplayTurnTableIcon", (False, "p_bool", False)),
+        (b"UseMotionBlur", (False, "p_bool", False)),
+        (b"UseRealTimeMotionBlur", (True, "p_bool", False)),
+        (b"Motion Blur Intensity", (1.0, "p_number", True)),
+        (b"AspectRatioMode", (2, "p_enum", False)),  # Fixed ratio, height and width in pixels.
+        (b"AspectWidth", (float(r.resolution_x), "p_double", False)),
+        (b"AspectHeight", (float(r.resolution_y), "p_double", False)),
+        (b"PixelAspectRatio", (float(r.pixel_aspect_x / r.pixel_aspect_y), "p_double", False)),
+        (b"FilmOffsetX", (0.0, "p_number", True)),
+        (b"FilmOffsetY", (0.0, "p_number", True)),
+        (b"FilmWidth", (1.2598425196850394, "p_double", False)),
+        (b"FilmHeight", (0.7086614173228346, "p_double", False)),
+        (b"FilmAspectRatio", (1.777777777777778, "p_double", False)),
+        (b"FilmSqueezeRatio", (1.0, "p_double", False)),
+        (b"FilmFormatIndex", (0, "p_enum", False)),  # Assuming this is ApertureFormat, 0 = custom.
+        (b"PreScale", (1.0, "p_number", True)),
+        (b"FilmTranslateX", (0.0, "p_number", True)),
+        (b"FilmTranslateY", (0.0, "p_number", True)),
+        (b"FilmRollPivotX", (0.0, "p_number", True)),
+        (b"FilmRollPivotY", (0.0, "p_number", True)),
+        (b"FilmRollValue", (0.0, "p_number", True)),
+        (b"FilmRollOrder", (0, "p_enum", False)),  # 0 = rotate first (default).
+        (b"ApertureMode", (3, "p_enum", False)),  # 3 = focal length.
+        (b"GateFit", (0, "p_enum", False)),  # 0 = no resolution gate fit.
+        (b"FieldOfView", (49.13434207760448, "p_fov", True)),
+        (b"FieldOfViewX", (49.13434207760448, "p_fov_x", True)),
+        (b"FieldOfViewY", (28.841546110078532, "p_fov_y", True)),
+        (b"FocalLength", (35.0, "p_number", True)),
+        (b"CameraFormat", (0, "p_enum", False)),  # Custom camera format.
+        (b"UseFrameColor", (False, "p_bool", False)),
+        (b"FrameColor", ((0.3, 0.3, 0.3), "p_color_rgb", False)),
+        (b"ShowName", (True, "p_bool", False)),
+        (b"ShowInfoOnMoving", (True, "p_bool", False)),
+        (b"ShowGrid", (True, "p_bool", False)),
+        (b"ShowOpticalCenter", (False, "p_bool", False)),
+        (b"ShowAzimut", (True, "p_bool", False)),
+        (b"ShowTimeCode", (True, "p_bool", False)),
+        (b"ShowAudio", (False, "p_bool", False)),
+        (b"AudioColor", ((0.0, 1.0, 0.0), "p_vector_3d", False)),  # Yep, vector3d, not corlorgb… :cry:
+        (b"NearPlane", (1.0, "p_double", False)),
+        (b"FarPlane", (100.0, "p_double", False)),
+        (b"AutoComputeClipPanes", (False, "p_bool", False)),
+        (b"ViewCameraToLookAt", (True, "p_bool", False)),
+        (b"ViewFrustumNearFarPlane", (False, "p_bool", False)),
+        (b"ViewFrustumBackPlaneMode", (2, "p_enum", False)),  # 2 = show back plane if texture added.
+        (b"BackPlaneDistance", (100.0, "p_number", True)),
+        (b"BackPlaneDistanceMode", (1, "p_enum", False)),  # 1 = relative to camera.
+        (b"ViewFrustumFrontPlaneMode", (2, "p_enum", False)),  # 2 = show front plane if texture added.
+        (b"FrontPlaneDistance", (1.0, "p_number", True)),
+        (b"FrontPlaneDistanceMode", (1, "p_enum", False)),  # 1 = relative to camera.
+        (b"LockMode", (False, "p_bool", False)),
+        (b"LockInterestNavigation", (False, "p_bool", False)),
+        (b"BackPlateFitImage", (False, "p_bool", False)),
+        (b"BackPlateCrop", (False, "p_bool", False)),
+        (b"BackPlateCenter", (True, "p_bool", False)),
+        (b"BackPlateKeepRatio", (True, "p_bool", False)),
+        (b"BackgroundAlphaTreshold", (0.5, "p_double", False)),
+        (b"ShowBackplate", (True, "p_bool", False)),
+        (b"BackPlaneOffsetX", (0.0, "p_number", True)),
+        (b"BackPlaneOffsetY", (0.0, "p_number", True)),
+        (b"BackPlaneRotation", (0.0, "p_number", True)),
+        (b"BackPlaneScaleX", (1.0, "p_number", True)),
+        (b"BackPlaneScaleY", (1.0, "p_number", True)),
+        (b"Background Texture", (None, "p_object", False)),
+        (b"FrontPlateFitImage", (True, "p_bool", False)),
+        (b"FrontPlateCrop", (False, "p_bool

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list