Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2007-03-28 11:08:18 +0400
committerCampbell Barton <ideasman42@gmail.com>2007-03-28 11:08:18 +0400
commitc8d53d8620cf938cdd6a6f166880f0e92fc2ca3c (patch)
tree8fb9dc4c898aed5042c67c3595b67eb8d058ea48 /release
parentc820e79e77997155e273f40caa0ac0b2c9dfd028 (diff)
FBX Exporter, blender can write meshes with materials, textures and UV coords.
Armatures bone weights and animation not supported yet.
Diffstat (limited to 'release')
-rw-r--r--release/scripts/export_fbx.py1976
1 files changed, 1976 insertions, 0 deletions
diff --git a/release/scripts/export_fbx.py b/release/scripts/export_fbx.py
new file mode 100644
index 00000000000..cfe93a591ae
--- /dev/null
+++ b/release/scripts/export_fbx.py
@@ -0,0 +1,1976 @@
+#!BPY
+"""
+Name: 'Autodesk FBX (.fbx)...'
+Blender: 243
+Group: 'Export'
+Tooltip: 'Selection to an ASCII Autodesk FBX '
+"""
+__author__ = "Campbell Barton, Jiri Hnidek"
+__url__ = ['www.blender.org', 'blenderartists.org']
+__version__ = "1.1"
+
+__bpydoc__ = """\
+This script is an exporter to the FBX file format.
+
+Usage:
+
+Select the objects you wish to export and run this script from "File->Export" menu.
+All objects that can be represented as a mesh (mesh, curve, metaball, surface, text3d)
+will be exported as mesh data.
+"""
+
+# --------------------------------------------------------------------------
+# FBX Export v0.1 by Campbell Barton (AKA Ideasman)
+# --------------------------------------------------------------------------
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+# --------------------------------------------------------------------------
+
+import Blender
+import BPyMesh
+import time
+
+# Used to add the scene name into the filename without using odd chars
+sane_name_mapping_ob = {}
+sane_name_mapping_mat = {}
+sane_name_mapping_tex = {}
+
+def strip_path(p):
+ return p.split('\\')[-1].split('/')[-1]
+
+def sane_name(name, dct):
+
+ try: return dct[name]
+ except: pass
+
+ orig_name = name
+ for ch in ' /\\~!@#$%^&*()+=[];\':",./<>?\t\r\n':
+ name = name.replace(ch, '_')
+ dct[orig_name] = name
+ return name
+
+def sane_obname(name):
+ return sane_name(name, sane_name_mapping_ob)
+
+def sane_matname(name):
+ return sane_name(name, sane_name_mapping_mat)
+
+def sane_texname(name):
+ return sane_name(name, sane_name_mapping_tex)
+
+header_comment = \
+'''; FBX 6.1.0 project file
+; Created by Blender FBX Exporter
+; for support mail cbarton@metavr.com
+; ----------------------------------------------------
+
+'''
+
+def write_header(file):
+ file.write(header_comment)
+ curtime = time.localtime()[0:6]
+ #
+ file.write(\
+'''FBXHeaderExtension: {
+ FBXHeaderVersion: 1003
+ FBXVersion: 6100
+ CreationTimeStamp: {
+ Version: 1000
+ Year: %.4i
+ Month: %.2i
+ Day: %.2i
+ Hour: %.2i
+ Minute: %.2i
+ Second: %.2i
+ Millisecond: 0
+ }
+ Creator: "FBX SDK/FBX Plugins build 20070228"
+ OtherFlags: {
+ FlagPLE: 0
+ }
+}
+''' % (curtime))
+
+ file.write('CreationTime: "%.4i-%.2i-%.2i %.2i:%.2i:%.2i:000"\n' % curtime)
+ file.write('Creator: "Blender3D version %.2f"\n' % Blender.Get('version'))
+
+
+
+
+def write_scene(file):
+
+ def write_camera_switch():
+ file.write('''
+ Model: "Model::Camera Switcher", "CameraSwitcher" {
+ Version: 232
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",0
+ Property: "Lcl Translation", "Lcl Translation", "A+",0,0,0
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",0
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+ Property: "Color", "Color", "A",0.8,0.8,0.8
+ Property: "Camera Index", "Integer", "A+",100
+ }
+ MultiLayer: 0
+ MultiTake: 1
+ Hidden: "True"
+ Shading: W
+ Culling: "CullingOff"
+ Version: 101
+ Name: "Model::Camera Switcher"
+ CameraId: 0
+ CameraName: 100
+ CameraIndexName:
+ }''')
+
+ def write_cameras():
+ # This sucks but to match FBX converter its easier to
+ # write the cameras though they are not needed.
+ file.write('''
+ Model: "Model::Producer Perspective", "Camera" {
+ Version: 232
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",0
+ Property: "Lcl Translation", "Lcl Translation", "A+",0,71.3,287.5
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",0
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+ Property: "Color", "Color", "A",0.8,0.8,0.8
+ Property: "Roll", "Roll", "A+",0
+ Property: "FieldOfView", "FieldOfView", "A+",40
+ Property: "FieldOfViewX", "FieldOfView", "A+",1
+ Property: "FieldOfViewY", "FieldOfView", "A+",1
+ Property: "OpticalCenterX", "Real", "A+",0
+ Property: "OpticalCenterY", "Real", "A+",0
+ Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63
+ Property: "TurnTable", "Real", "A+",0
+ Property: "DisplayTurnTableIcon", "bool", "",1
+ Property: "Motion Blur Intensity", "Real", "A+",1
+ Property: "UseMotionBlur", "bool", "",0
+ Property: "UseRealTimeMotionBlur", "bool", "",1
+ Property: "ResolutionMode", "enum", "",0
+ Property: "ApertureMode", "enum", "",2
+ Property: "GateFit", "enum", "",0
+ Property: "FocalLength", "Real", "A+",21.3544940948486
+ Property: "CameraFormat", "enum", "",0
+ Property: "AspectW", "double", "",320
+ Property: "AspectH", "double", "",200
+ Property: "PixelAspectRatio", "double", "",1
+ Property: "UseFrameColor", "bool", "",0
+ Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3
+ Property: "ShowName", "bool", "",1
+ Property: "ShowGrid", "bool", "",1
+ Property: "ShowOpticalCenter", "bool", "",0
+ Property: "ShowAzimut", "bool", "",1
+ Property: "ShowTimeCode", "bool", "",0
+ Property: "NearPlane", "double", "",10
+ Property: "FarPlane", "double", "",4000
+ Property: "FilmWidth", "double", "",0.816
+ Property: "FilmHeight", "double", "",0.612
+ Property: "FilmAspectRatio", "double", "",1.33333333333333
+ Property: "FilmSqueezeRatio", "double", "",1
+ Property: "FilmFormatIndex", "enum", "",4
+ Property: "ViewFrustum", "bool", "",1
+ Property: "ViewFrustumNearFarPlane", "bool", "",0
+ Property: "ViewFrustumBackPlaneMode", "enum", "",2
+ Property: "BackPlaneDistance", "double", "",100
+ Property: "BackPlaneDistanceMode", "enum", "",0
+ Property: "ViewCameraToLookAt", "bool", "",1
+ Property: "LockMode", "bool", "",0
+ Property: "LockInterestNavigation", "bool", "",0
+ Property: "FitImage", "bool", "",0
+ Property: "Crop", "bool", "",0
+ Property: "Center", "bool", "",1
+ Property: "KeepRatio", "bool", "",1
+ Property: "BackgroundMode", "enum", "",0
+ Property: "BackgroundAlphaTreshold", "double", "",0.5
+ Property: "ForegroundTransparent", "bool", "",1
+ Property: "DisplaySafeArea", "bool", "",0
+ Property: "SafeAreaDisplayStyle", "enum", "",1
+ Property: "SafeAreaAspectRatio", "double", "",1.33333333333333
+ Property: "Use2DMagnifierZoom", "bool", "",0
+ Property: "2D Magnifier Zoom", "Real", "A+",100
+ Property: "2D Magnifier X", "Real", "A+",50
+ Property: "2D Magnifier Y", "Real", "A+",50
+ Property: "CameraProjectionType", "enum", "",0
+ Property: "UseRealTimeDOFAndAA", "bool", "",0
+ Property: "UseDepthOfField", "bool", "",0
+ Property: "FocusSource", "enum", "",0
+ Property: "FocusAngle", "double", "",3.5
+ Property: "FocusDistance", "double", "",200
+ Property: "UseAntialiasing", "bool", "",0
+ Property: "AntialiasingIntensity", "double", "",0.77777
+ Property: "UseAccumulationBuffer", "bool", "",0
+ Property: "FrameSamplingCount", "int", "",7
+ }
+ MultiLayer: 0
+ MultiTake: 0
+ Hidden: "True"
+ Shading: Y
+ Culling: "CullingOff"
+ TypeFlags: "Camera"
+ GeometryVersion: 124
+ Position: 0,71.3,287.5
+ Up: 0,1,0
+ LookAt: 0,0,0
+ ShowInfoOnMoving: 1
+ ShowAudio: 0
+ AudioColor: 0,1,0
+ CameraOrthoZoom: 1
+ }
+ Model: "Model::Producer Top", "Camera" {
+ Version: 232
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",0
+ Property: "Lcl Translation", "Lcl Translation", "A+",0,4000,0
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",0
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+ Property: "Color", "Color", "A",0.8,0.8,0.8
+ Property: "Roll", "Roll", "A+",0
+ Property: "FieldOfView", "FieldOfView", "A+",40
+ Property: "FieldOfViewX", "FieldOfView", "A+",1
+ Property: "FieldOfViewY", "FieldOfView", "A+",1
+ Property: "OpticalCenterX", "Real", "A+",0
+ Property: "OpticalCenterY", "Real", "A+",0
+ Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63
+ Property: "TurnTable", "Real", "A+",0
+ Property: "DisplayTurnTableIcon", "bool", "",1
+ Property: "Motion Blur Intensity", "Real", "A+",1
+ Property: "UseMotionBlur", "bool", "",0
+ Property: "UseRealTimeMotionBlur", "bool", "",1
+ Property: "ResolutionMode", "enum", "",0
+ Property: "ApertureMode", "enum", "",2
+ Property: "GateFit", "enum", "",0
+ Property: "FocalLength", "Real", "A+",21.3544940948486
+ Property: "CameraFormat", "enum", "",0
+ Property: "AspectW", "double", "",320
+ Property: "AspectH", "double", "",200
+ Property: "PixelAspectRatio", "double", "",1
+ Property: "UseFrameColor", "bool", "",0
+ Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3
+ Property: "ShowName", "bool", "",1
+ Property: "ShowGrid", "bool", "",1
+ Property: "ShowOpticalCenter", "bool", "",0
+ Property: "ShowAzimut", "bool", "",1
+ Property: "ShowTimeCode", "bool", "",0
+ Property: "NearPlane", "double", "",1
+ Property: "FarPlane", "double", "",30000
+ Property: "FilmWidth", "double", "",0.816
+ Property: "FilmHeight", "double", "",0.612
+ Property: "FilmAspectRatio", "double", "",1.33333333333333
+ Property: "FilmSqueezeRatio", "double", "",1
+ Property: "FilmFormatIndex", "enum", "",4
+ Property: "ViewFrustum", "bool", "",1
+ Property: "ViewFrustumNearFarPlane", "bool", "",0
+ Property: "ViewFrustumBackPlaneMode", "enum", "",2
+ Property: "BackPlaneDistance", "double", "",100
+ Property: "BackPlaneDistanceMode", "enum", "",0
+ Property: "ViewCameraToLookAt", "bool", "",1
+ Property: "LockMode", "bool", "",0
+ Property: "LockInterestNavigation", "bool", "",0
+ Property: "FitImage", "bool", "",0
+ Property: "Crop", "bool", "",0
+ Property: "Center", "bool", "",1
+ Property: "KeepRatio", "bool", "",1
+ Property: "BackgroundMode", "enum", "",0
+ Property: "BackgroundAlphaTreshold", "double", "",0.5
+ Property: "ForegroundTransparent", "bool", "",1
+ Property: "DisplaySafeArea", "bool", "",0
+ Property: "SafeAreaDisplayStyle", "enum", "",1
+ Property: "SafeAreaAspectRatio", "double", "",1.33333333333333
+ Property: "Use2DMagnifierZoom", "bool", "",0
+ Property: "2D Magnifier Zoom", "Real", "A+",100
+ Property: "2D Magnifier X", "Real", "A+",50
+ Property: "2D Magnifier Y", "Real", "A+",50
+ Property: "CameraProjectionType", "enum", "",1
+ Property: "UseRealTimeDOFAndAA", "bool", "",0
+ Property: "UseDepthOfField", "bool", "",0
+ Property: "FocusSource", "enum", "",0
+ Property: "FocusAngle", "double", "",3.5
+ Property: "FocusDistance", "double", "",200
+ Property: "UseAntialiasing", "bool", "",0
+ Property: "AntialiasingIntensity", "double", "",0.77777
+ Property: "UseAccumulationBuffer", "bool", "",0
+ Property: "FrameSamplingCount", "int", "",7
+ }
+ MultiLayer: 0
+ MultiTake: 0
+ Hidden: "True"
+ Shading: Y
+ Culling: "CullingOff"
+ TypeFlags: "Camera"
+ GeometryVersion: 124
+ Position: 0,4000,0
+ Up: 0,0,-1
+ LookAt: 0,0,0
+ ShowInfoOnMoving: 1
+ ShowAudio: 0
+ AudioColor: 0,1,0
+ CameraOrthoZoom: 1
+ }
+ Model: "Model::Producer Bottom", "Camera" {
+ Version: 232
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",0
+ Property: "Lcl Translation", "Lcl Translation", "A+",0,-4000,0
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",0
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+ Property: "Color", "Color", "A",0.8,0.8,0.8
+ Property: "Roll", "Roll", "A+",0
+ Property: "FieldOfView", "FieldOfView", "A+",40
+ Property: "FieldOfViewX", "FieldOfView", "A+",1
+ Property: "FieldOfViewY", "FieldOfView", "A+",1
+ Property: "OpticalCenterX", "Real", "A+",0
+ Property: "OpticalCenterY", "Real", "A+",0
+ Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63
+ Property: "TurnTable", "Real", "A+",0
+ Property: "DisplayTurnTableIcon", "bool", "",1
+ Property: "Motion Blur Intensity", "Real", "A+",1
+ Property: "UseMotionBlur", "bool", "",0
+ Property: "UseRealTimeMotionBlur", "bool", "",1
+ Property: "ResolutionMode", "enum", "",0
+ Property: "ApertureMode", "enum", "",2
+ Property: "GateFit", "enum", "",0
+ Property: "FocalLength", "Real", "A+",21.3544940948486
+ Property: "CameraFormat", "enum", "",0
+ Property: "AspectW", "double", "",320
+ Property: "AspectH", "double", "",200
+ Property: "PixelAspectRatio", "double", "",1
+ Property: "UseFrameColor", "bool", "",0
+ Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3
+ Property: "ShowName", "bool", "",1
+ Property: "ShowGrid", "bool", "",1
+ Property: "ShowOpticalCenter", "bool", "",0
+ Property: "ShowAzimut", "bool", "",1
+ Property: "ShowTimeCode", "bool", "",0
+ Property: "NearPlane", "double", "",1
+ Property: "FarPlane", "double", "",30000
+ Property: "FilmWidth", "double", "",0.816
+ Property: "FilmHeight", "double", "",0.612
+ Property: "FilmAspectRatio", "double", "",1.33333333333333
+ Property: "FilmSqueezeRatio", "double", "",1
+ Property: "FilmFormatIndex", "enum", "",4
+ Property: "ViewFrustum", "bool", "",1
+ Property: "ViewFrustumNearFarPlane", "bool", "",0
+ Property: "ViewFrustumBackPlaneMode", "enum", "",2
+ Property: "BackPlaneDistance", "double", "",100
+ Property: "BackPlaneDistanceMode", "enum", "",0
+ Property: "ViewCameraToLookAt", "bool", "",1
+ Property: "LockMode", "bool", "",0
+ Property: "LockInterestNavigation", "bool", "",0
+ Property: "FitImage", "bool", "",0
+ Property: "Crop", "bool", "",0
+ Property: "Center", "bool", "",1
+ Property: "KeepRatio", "bool", "",1
+ Property: "BackgroundMode", "enum", "",0
+ Property: "BackgroundAlphaTreshold", "double", "",0.5
+ Property: "ForegroundTransparent", "bool", "",1
+ Property: "DisplaySafeArea", "bool", "",0
+ Property: "SafeAreaDisplayStyle", "enum", "",1
+ Property: "SafeAreaAspectRatio", "double", "",1.33333333333333
+ Property: "Use2DMagnifierZoom", "bool", "",0
+ Property: "2D Magnifier Zoom", "Real", "A+",100
+ Property: "2D Magnifier X", "Real", "A+",50
+ Property: "2D Magnifier Y", "Real", "A+",50
+ Property: "CameraProjectionType", "enum", "",1
+ Property: "UseRealTimeDOFAndAA", "bool", "",0
+ Property: "UseDepthOfField", "bool", "",0
+ Property: "FocusSource", "enum", "",0
+ Property: "FocusAngle", "double", "",3.5
+ Property: "FocusDistance", "double", "",200
+ Property: "UseAntialiasing", "bool", "",0
+ Property: "AntialiasingIntensity", "double", "",0.77777
+ Property: "UseAccumulationBuffer", "bool", "",0
+ Property: "FrameSamplingCount", "int", "",7
+ }
+ MultiLayer: 0
+ MultiTake: 0
+ Hidden: "True"
+ Shading: Y
+ Culling: "CullingOff"
+ TypeFlags: "Camera"
+ GeometryVersion: 124
+ Position: 0,-4000,0
+ Up: 0,0,-1
+ LookAt: 0,0,0
+ ShowInfoOnMoving: 1
+ ShowAudio: 0
+ AudioColor: 0,1,0
+ CameraOrthoZoom: 1
+ }
+ Model: "Model::Producer Front", "Camera" {
+ Version: 232
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",0
+ Property: "Lcl Translation", "Lcl Translation", "A+",0,0,4000
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",0
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+ Property: "Color", "Color", "A",0.8,0.8,0.8
+ Property: "Roll", "Roll", "A+",0
+ Property: "FieldOfView", "FieldOfView", "A+",40
+ Property: "FieldOfViewX", "FieldOfView", "A+",1
+ Property: "FieldOfViewY", "FieldOfView", "A+",1
+ Property: "OpticalCenterX", "Real", "A+",0
+ Property: "OpticalCenterY", "Real", "A+",0
+ Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63
+ Property: "TurnTable", "Real", "A+",0
+ Property: "DisplayTurnTableIcon", "bool", "",1
+ Property: "Motion Blur Intensity", "Real", "A+",1
+ Property: "UseMotionBlur", "bool", "",0
+ Property: "UseRealTimeMotionBlur", "bool", "",1
+ Property: "ResolutionMode", "enum", "",0
+ Property: "ApertureMode", "enum", "",2
+ Property: "GateFit", "enum", "",0
+ Property: "FocalLength", "Real", "A+",21.3544940948486
+ Property: "CameraFormat", "enum", "",0
+ Property: "AspectW", "double", "",320
+ Property: "AspectH", "double", "",200
+ Property: "PixelAspectRatio", "double", "",1
+ Property: "UseFrameColor", "bool", "",0
+ Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3
+ Property: "ShowName", "bool", "",1
+ Property: "ShowGrid", "bool", "",1
+ Property: "ShowOpticalCenter", "bool", "",0
+ Property: "ShowAzimut", "bool", "",1
+ Property: "ShowTimeCode", "bool", "",0
+ Property: "NearPlane", "double", "",1
+ Property: "FarPlane", "double", "",30000
+ Property: "FilmWidth", "double", "",0.816
+ Property: "FilmHeight", "double", "",0.612
+ Property: "FilmAspectRatio", "double", "",1.33333333333333
+ Property: "FilmSqueezeRatio", "double", "",1
+ Property: "FilmFormatIndex", "enum", "",4
+ Property: "ViewFrustum", "bool", "",1
+ Property: "ViewFrustumNearFarPlane", "bool", "",0
+ Property: "ViewFrustumBackPlaneMode", "enum", "",2
+ Property: "BackPlaneDistance", "double", "",100
+ Property: "BackPlaneDistanceMode", "enum", "",0
+ Property: "ViewCameraToLookAt", "bool", "",1
+ Property: "LockMode", "bool", "",0
+ Property: "LockInterestNavigation", "bool", "",0
+ Property: "FitImage", "bool", "",0
+ Property: "Crop", "bool", "",0
+ Property: "Center", "bool", "",1
+ Property: "KeepRatio", "bool", "",1
+ Property: "BackgroundMode", "enum", "",0
+ Property: "BackgroundAlphaTreshold", "double", "",0.5
+ Property: "ForegroundTransparent", "bool", "",1
+ Property: "DisplaySafeArea", "bool", "",0
+ Property: "SafeAreaDisplayStyle", "enum", "",1
+ Property: "SafeAreaAspectRatio", "double", "",1.33333333333333
+ Property: "Use2DMagnifierZoom", "bool", "",0
+ Property: "2D Magnifier Zoom", "Real", "A+",100
+ Property: "2D Magnifier X", "Real", "A+",50
+ Property: "2D Magnifier Y", "Real", "A+",50
+ Property: "CameraProjectionType", "enum", "",1
+ Property: "UseRealTimeDOFAndAA", "bool", "",0
+ Property: "UseDepthOfField", "bool", "",0
+ Property: "FocusSource", "enum", "",0
+ Property: "FocusAngle", "double", "",3.5
+ Property: "FocusDistance", "double", "",200
+ Property: "UseAntialiasing", "bool", "",0
+ Property: "AntialiasingIntensity", "double", "",0.77777
+ Property: "UseAccumulationBuffer", "bool", "",0
+ Property: "FrameSamplingCount", "int", "",7
+ }
+ MultiLayer: 0
+ MultiTake: 0
+ Hidden: "True"
+ Shading: Y
+ Culling: "CullingOff"
+ TypeFlags: "Camera"
+ GeometryVersion: 124
+ Position: 0,0,4000
+ Up: 0,1,0
+ LookAt: 0,0,0
+ ShowInfoOnMoving: 1
+ ShowAudio: 0
+ AudioColor: 0,1,0
+ CameraOrthoZoom: 1
+ }
+ Model: "Model::Producer Back", "Camera" {
+ Version: 232
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",0
+ Property: "Lcl Translation", "Lcl Translation", "A+",0,0,-4000
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",0
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+ Property: "Color", "Color", "A",0.8,0.8,0.8
+ Property: "Roll", "Roll", "A+",0
+ Property: "FieldOfView", "FieldOfView", "A+",40
+ Property: "FieldOfViewX", "FieldOfView", "A+",1
+ Property: "FieldOfViewY", "FieldOfView", "A+",1
+ Property: "OpticalCenterX", "Real", "A+",0
+ Property: "OpticalCenterY", "Real", "A+",0
+ Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63
+ Property: "TurnTable", "Real", "A+",0
+ Property: "DisplayTurnTableIcon", "bool", "",1
+ Property: "Motion Blur Intensity", "Real", "A+",1
+ Property: "UseMotionBlur", "bool", "",0
+ Property: "UseRealTimeMotionBlur", "bool", "",1
+ Property: "ResolutionMode", "enum", "",0
+ Property: "ApertureMode", "enum", "",2
+ Property: "GateFit", "enum", "",0
+ Property: "FocalLength", "Real", "A+",21.3544940948486
+ Property: "CameraFormat", "enum", "",0
+ Property: "AspectW", "double", "",320
+ Property: "AspectH", "double", "",200
+ Property: "PixelAspectRatio", "double", "",1
+ Property: "UseFrameColor", "bool", "",0
+ Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3
+ Property: "ShowName", "bool", "",1
+ Property: "ShowGrid", "bool", "",1
+ Property: "ShowOpticalCenter", "bool", "",0
+ Property: "ShowAzimut", "bool", "",1
+ Property: "ShowTimeCode", "bool", "",0
+ Property: "NearPlane", "double", "",1
+ Property: "FarPlane", "double", "",30000
+ Property: "FilmWidth", "double", "",0.816
+ Property: "FilmHeight", "double", "",0.612
+ Property: "FilmAspectRatio", "double", "",1.33333333333333
+ Property: "FilmSqueezeRatio", "double", "",1
+ Property: "FilmFormatIndex", "enum", "",4
+ Property: "ViewFrustum", "bool", "",1
+ Property: "ViewFrustumNearFarPlane", "bool", "",0
+ Property: "ViewFrustumBackPlaneMode", "enum", "",2
+ Property: "BackPlaneDistance", "double", "",100
+ Property: "BackPlaneDistanceMode", "enum", "",0
+ Property: "ViewCameraToLookAt", "bool", "",1
+ Property: "LockMode", "bool", "",0
+ Property: "LockInterestNavigation", "bool", "",0
+ Property: "FitImage", "bool", "",0
+ Property: "Crop", "bool", "",0
+ Property: "Center", "bool", "",1
+ Property: "KeepRatio", "bool", "",1
+ Property: "BackgroundMode", "enum", "",0
+ Property: "BackgroundAlphaTreshold", "double", "",0.5
+ Property: "ForegroundTransparent", "bool", "",1
+ Property: "DisplaySafeArea", "bool", "",0
+ Property: "SafeAreaDisplayStyle", "enum", "",1
+ Property: "SafeAreaAspectRatio", "double", "",1.33333333333333
+ Property: "Use2DMagnifierZoom", "bool", "",0
+ Property: "2D Magnifier Zoom", "Real", "A+",100
+ Property: "2D Magnifier X", "Real", "A+",50
+ Property: "2D Magnifier Y", "Real", "A+",50
+ Property: "CameraProjectionType", "enum", "",1
+ Property: "UseRealTimeDOFAndAA", "bool", "",0
+ Property: "UseDepthOfField", "bool", "",0
+ Property: "FocusSource", "enum", "",0
+ Property: "FocusAngle", "double", "",3.5
+ Property: "FocusDistance", "double", "",200
+ Property: "UseAntialiasing", "bool", "",0
+ Property: "AntialiasingIntensity", "double", "",0.77777
+ Property: "UseAccumulationBuffer", "bool", "",0
+ Property: "FrameSamplingCount", "int", "",7
+ }
+ MultiLayer: 0
+ MultiTake: 0
+ Hidden: "True"
+ Shading: Y
+ Culling: "CullingOff"
+ TypeFlags: "Camera"
+ GeometryVersion: 124
+ Position: 0,0,-4000
+ Up: 0,1,0
+ LookAt: 0,0,0
+ ShowInfoOnMoving: 1
+ ShowAudio: 0
+ AudioColor: 0,1,0
+ CameraOrthoZoom: 1
+ }
+ Model: "Model::Producer Right", "Camera" {
+ Version: 232
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",0
+ Property: "Lcl Translation", "Lcl Translation", "A+",4000,0,0
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",0
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+ Property: "Color", "Color", "A",0.8,0.8,0.8
+ Property: "Roll", "Roll", "A+",0
+ Property: "FieldOfView", "FieldOfView", "A+",40
+ Property: "FieldOfViewX", "FieldOfView", "A+",1
+ Property: "FieldOfViewY", "FieldOfView", "A+",1
+ Property: "OpticalCenterX", "Real", "A+",0
+ Property: "OpticalCenterY", "Real", "A+",0
+ Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63
+ Property: "TurnTable", "Real", "A+",0
+ Property: "DisplayTurnTableIcon", "bool", "",1
+ Property: "Motion Blur Intensity", "Real", "A+",1
+ Property: "UseMotionBlur", "bool", "",0
+ Property: "UseRealTimeMotionBlur", "bool", "",1
+ Property: "ResolutionMode", "enum", "",0
+ Property: "ApertureMode", "enum", "",2
+ Property: "GateFit", "enum", "",0
+ Property: "FocalLength", "Real", "A+",21.3544940948486
+ Property: "CameraFormat", "enum", "",0
+ Property: "AspectW", "double", "",320
+ Property: "AspectH", "double", "",200
+ Property: "PixelAspectRatio", "double", "",1
+ Property: "UseFrameColor", "bool", "",0
+ Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3
+ Property: "ShowName", "bool", "",1
+ Property: "ShowGrid", "bool", "",1
+ Property: "ShowOpticalCenter", "bool", "",0
+ Property: "ShowAzimut", "bool", "",1
+ Property: "ShowTimeCode", "bool", "",0
+ Property: "NearPlane", "double", "",1
+ Property: "FarPlane", "double", "",30000
+ Property: "FilmWidth", "double", "",0.816
+ Property: "FilmHeight", "double", "",0.612
+ Property: "FilmAspectRatio", "double", "",1.33333333333333
+ Property: "FilmSqueezeRatio", "double", "",1
+ Property: "FilmFormatIndex", "enum", "",4
+ Property: "ViewFrustum", "bool", "",1
+ Property: "ViewFrustumNearFarPlane", "bool", "",0
+ Property: "ViewFrustumBackPlaneMode", "enum", "",2
+ Property: "BackPlaneDistance", "double", "",100
+ Property: "BackPlaneDistanceMode", "enum", "",0
+ Property: "ViewCameraToLookAt", "bool", "",1
+ Property: "LockMode", "bool", "",0
+ Property: "LockInterestNavigation", "bool", "",0
+ Property: "FitImage", "bool", "",0
+ Property: "Crop", "bool", "",0
+ Property: "Center", "bool", "",1
+ Property: "KeepRatio", "bool", "",1
+ Property: "BackgroundMode", "enum", "",0
+ Property: "BackgroundAlphaTreshold", "double", "",0.5
+ Property: "ForegroundTransparent", "bool", "",1
+ Property: "DisplaySafeArea", "bool", "",0
+ Property: "SafeAreaDisplayStyle", "enum", "",1
+ Property: "SafeAreaAspectRatio", "double", "",1.33333333333333
+ Property: "Use2DMagnifierZoom", "bool", "",0
+ Property: "2D Magnifier Zoom", "Real", "A+",100
+ Property: "2D Magnifier X", "Real", "A+",50
+ Property: "2D Magnifier Y", "Real", "A+",50
+ Property: "CameraProjectionType", "enum", "",1
+ Property: "UseRealTimeDOFAndAA", "bool", "",0
+ Property: "UseDepthOfField", "bool", "",0
+ Property: "FocusSource", "enum", "",0
+ Property: "FocusAngle", "double", "",3.5
+ Property: "FocusDistance", "double", "",200
+ Property: "UseAntialiasing", "bool", "",0
+ Property: "AntialiasingIntensity", "double", "",0.77777
+ Property: "UseAccumulationBuffer", "bool", "",0
+ Property: "FrameSamplingCount", "int", "",7
+ }
+ MultiLayer: 0
+ MultiTake: 0
+ Hidden: "True"
+ Shading: Y
+ Culling: "CullingOff"
+ TypeFlags: "Camera"
+ GeometryVersion: 124
+ Position: 4000,0,0
+ Up: 0,1,0
+ LookAt: 0,0,0
+ ShowInfoOnMoving: 1
+ ShowAudio: 0
+ AudioColor: 0,1,0
+ CameraOrthoZoom: 1
+ }
+ Model: "Model::Producer Left", "Camera" {
+ Version: 232
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",0
+ Property: "Lcl Translation", "Lcl Translation", "A+",-4000,0,0
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",0
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+ Property: "Color", "Color", "A",0.8,0.8,0.8
+ Property: "Roll", "Roll", "A+",0
+ Property: "FieldOfView", "FieldOfView", "A+",40
+ Property: "FieldOfViewX", "FieldOfView", "A+",1
+ Property: "FieldOfViewY", "FieldOfView", "A+",1
+ Property: "OpticalCenterX", "Real", "A+",0
+ Property: "OpticalCenterY", "Real", "A+",0
+ Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63
+ Property: "TurnTable", "Real", "A+",0
+ Property: "DisplayTurnTableIcon", "bool", "",1
+ Property: "Motion Blur Intensity", "Real", "A+",1
+ Property: "UseMotionBlur", "bool", "",0
+ Property: "UseRealTimeMotionBlur", "bool", "",1
+ Property: "ResolutionMode", "enum", "",0
+ Property: "ApertureMode", "enum", "",2
+ Property: "GateFit", "enum", "",0
+ Property: "FocalLength", "Real", "A+",21.3544940948486
+ Property: "CameraFormat", "enum", "",0
+ Property: "AspectW", "double", "",320
+ Property: "AspectH", "double", "",200
+ Property: "PixelAspectRatio", "double", "",1
+ Property: "UseFrameColor", "bool", "",0
+ Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3
+ Property: "ShowName", "bool", "",1
+ Property: "ShowGrid", "bool", "",1
+ Property: "ShowOpticalCenter", "bool", "",0
+ Property: "ShowAzimut", "bool", "",1
+ Property: "ShowTimeCode", "bool", "",0
+ Property: "NearPlane", "double", "",1
+ Property: "FarPlane", "double", "",30000
+ Property: "FilmWidth", "double", "",0.816
+ Property: "FilmHeight", "double", "",0.612
+ Property: "FilmAspectRatio", "double", "",1.33333333333333
+ Property: "FilmSqueezeRatio", "double", "",1
+ Property: "FilmFormatIndex", "enum", "",4
+ Property: "ViewFrustum", "bool", "",1
+ Property: "ViewFrustumNearFarPlane", "bool", "",0
+ Property: "ViewFrustumBackPlaneMode", "enum", "",2
+ Property: "BackPlaneDistance", "double", "",100
+ Property: "BackPlaneDistanceMode", "enum", "",0
+ Property: "ViewCameraToLookAt", "bool", "",1
+ Property: "LockMode", "bool", "",0
+ Property: "LockInterestNavigation", "bool", "",0
+ Property: "FitImage", "bool", "",0
+ Property: "Crop", "bool", "",0
+ Property: "Center", "bool", "",1
+ Property: "KeepRatio", "bool", "",1
+ Property: "BackgroundMode", "enum", "",0
+ Property: "BackgroundAlphaTreshold", "double", "",0.5
+ Property: "ForegroundTransparent", "bool", "",1
+ Property: "DisplaySafeArea", "bool", "",0
+ Property: "SafeAreaDisplayStyle", "enum", "",1
+ Property: "SafeAreaAspectRatio", "double", "",1.33333333333333
+ Property: "Use2DMagnifierZoom", "bool", "",0
+ Property: "2D Magnifier Zoom", "Real", "A+",100
+ Property: "2D Magnifier X", "Real", "A+",50
+ Property: "2D Magnifier Y", "Real", "A+",50
+ Property: "CameraProjectionType", "enum", "",1
+ Property: "UseRealTimeDOFAndAA", "bool", "",0
+ Property: "UseDepthOfField", "bool", "",0
+ Property: "FocusSource", "enum", "",0
+ Property: "FocusAngle", "double", "",3.5
+ Property: "FocusDistance", "double", "",200
+ Property: "UseAntialiasing", "bool", "",0
+ Property: "AntialiasingIntensity", "double", "",0.77777
+ Property: "UseAccumulationBuffer", "bool", "",0
+ Property: "FrameSamplingCount", "int", "",7
+ }
+ MultiLayer: 0
+ MultiTake: 0
+ Hidden: "True"
+ Shading: Y
+ Culling: "CullingOff"
+ TypeFlags: "Camera"
+ GeometryVersion: 124
+ Position: -4000,0,0
+ Up: 0,1,0
+ LookAt: 0,0,0
+ ShowInfoOnMoving: 1
+ ShowAudio: 0
+ AudioColor: 0,1,0
+ CameraOrthoZoom: 1
+ }''')
+
+
+ def write_object_props(ob):
+ # if the type is 0 its an empty otherwise its a mesh
+ # only difference at the moment is one has a color
+ file.write(\
+'''
+ Properties60: {
+ Property: "QuaternionInterpolate", "bool", "",0
+ Property: "Visibility", "Visibility", "A+",1
+ Property: "Lcl Translation", "Lcl Translation", "A+",0,0,0
+ Property: "Lcl Rotation", "Lcl Rotation", "A+",0,0,0
+ Property: "Lcl Scaling", "Lcl Scaling", "A+",1,1,1
+ Property: "RotationOffset", "Vector3D", "",0,0,0
+ Property: "RotationPivot", "Vector3D", "",0,0,0
+ Property: "ScalingOffset", "Vector3D", "",0,0,0
+ Property: "ScalingPivot", "Vector3D", "",0,0,0
+ Property: "TranslationActive", "bool", "",0
+ Property: "TranslationMin", "Vector3D", "",0,0,0
+ Property: "TranslationMax", "Vector3D", "",0,0,0
+ Property: "TranslationMinX", "bool", "",0
+ Property: "TranslationMinY", "bool", "",0
+ Property: "TranslationMinZ", "bool", "",0
+ Property: "TranslationMaxX", "bool", "",0
+ Property: "TranslationMaxY", "bool", "",0
+ Property: "TranslationMaxZ", "bool", "",0
+ Property: "RotationOrder", "enum", "",0
+ Property: "RotationSpaceForLimitOnly", "bool", "",0
+ Property: "AxisLen", "double", "",10
+ Property: "PreRotation", "Vector3D", "",0,0,0
+ Property: "PostRotation", "Vector3D", "",0,0,0
+ Property: "RotationActive", "bool", "",0
+ Property: "RotationMin", "Vector3D", "",0,0,0
+ Property: "RotationMax", "Vector3D", "",0,0,0
+ Property: "RotationMinX", "bool", "",0
+ Property: "RotationMinY", "bool", "",0
+ Property: "RotationMinZ", "bool", "",0
+ Property: "RotationMaxX", "bool", "",0
+ Property: "RotationMaxY", "bool", "",0
+ Property: "RotationMaxZ", "bool", "",0
+ Property: "RotationStiffnessX", "double", "",0
+ Property: "RotationStiffnessY", "double", "",0
+ Property: "RotationStiffnessZ", "double", "",0
+ Property: "MinDampRangeX", "double", "",0
+ Property: "MinDampRangeY", "double", "",0
+ Property: "MinDampRangeZ", "double", "",0
+ Property: "MaxDampRangeX", "double", "",0
+ Property: "MaxDampRangeY", "double", "",0
+ Property: "MaxDampRangeZ", "double", "",0
+ Property: "MinDampStrengthX", "double", "",0
+ Property: "MinDampStrengthY", "double", "",0
+ Property: "MinDampStrengthZ", "double", "",0
+ Property: "MaxDampStrengthX", "double", "",0
+ Property: "MaxDampStrengthY", "double", "",0
+ Property: "MaxDampStrengthZ", "double", "",0
+ Property: "PreferedAngleX", "double", "",0
+ Property: "PreferedAngleY", "double", "",0
+ Property: "PreferedAngleZ", "double", "",0
+ Property: "InheritType", "enum", "",0
+ Property: "ScalingActive", "bool", "",0
+ Property: "ScalingMin", "Vector3D", "",1,1,1
+ Property: "ScalingMax", "Vector3D", "",1,1,1
+ Property: "ScalingMinX", "bool", "",0
+ Property: "ScalingMinY", "bool", "",0
+ Property: "ScalingMinZ", "bool", "",0
+ Property: "ScalingMaxX", "bool", "",0
+ Property: "ScalingMaxY", "bool", "",0
+ Property: "ScalingMaxZ", "bool", "",0
+ Property: "GeometricTranslation", "Vector3D", "",0,0,0
+ Property: "GeometricRotation", "Vector3D", "",0,0,0
+ Property: "GeometricScaling", "Vector3D", "",1,1,1
+ Property: "LookAtProperty", "object", ""
+ Property: "UpVectorProperty", "object", ""
+ Property: "Show", "bool", "",1
+ Property: "NegativePercentShapeSupport", "bool", "",1
+ Property: "DefaultAttributeIndex", "int", "",0
+''')
+ if ob:
+ # Only mesh objects have color
+ file.write(' Property: "Color", "Color", "A",0.8,0.8,0.8\n')
+
+ file.write(' }\n')
+
+
+
+ # Material Settings
+ world = Blender.World.GetCurrent()
+ if world:
+ world_amb = world.getAmb()
+ else:
+ world_amb = (0,0,0) # Default value
+
+
+ def write_material(matname, mat):
+ file.write('\n Material: "Material::%s", "" {' % matname)
+
+ # Todo, add more material Properties.
+ if mat:
+ mat_cold = tuple(mat.rgbCol)
+ mat_cols = tuple(mat.rgbCol)
+ mat_amb = tuple([c for c in world_amb])
+ else:
+ mat_cols = mat_cold = 0.8, 0.8, 0.8
+ mat_amb = 0.0,0.0,0.0
+
+ file.write('''
+ Version: 102
+ ShadingModel: "phong"
+ MultiLayer: 0
+ Properties60: {
+ Property: "ShadingModel", "KString", "", "Phong"
+ Property: "MultiLayer", "bool", "",0
+ Property: "EmissiveColor", "ColorRGB", "",0,0,0
+ Property: "EmissiveFactor", "double", "",1
+''')
+ file.write(' Property: "AmbientColor", "ColorRGB", "",%.1f,%.1f,%.1f\n' % mat_amb)
+ file.write(' Property: "AmbientFactor", "double", "",1\n')
+ file.write(' Property: "DiffuseColor", "ColorRGB", "",%.1f,%.1f,%.1f\n' % mat_cold)
+ file.write(' Property: "DiffuseFactor", "double", "",1\n')
+ file.write(' Property: "Bump", "Vector3D", "",0,0,0\n')
+ file.write(' Property: "TransparentColor", "ColorRGB", "",1,1,1\n')
+ file.write(' Property: "TransparencyFactor", "double", "",0\n')
+ file.write(' Property: "SpecularColor", "ColorRGB", "",%.1f,%.1f,%.1f' % mat_cols)
+
+ file.write('''
+ Property: "SpecularFactor", "double", "",1
+ Property: "ShininessExponent", "double", "",80.0
+ Property: "ReflectionColor", "ColorRGB", "",0,0,0
+ Property: "ReflectionFactor", "double", "",1
+ Property: "Emissive", "Vector3D", "",0,0,0
+ Property: "Ambient", "Vector3D", "",0,0,0
+ Property: "Diffuse", "Vector3D", "",0,0.8,0
+ Property: "Specular", "Vector3D", "",0.5,0.5,0.5
+ Property: "Shininess", "double", "",80.0
+ Property: "Opacity", "double", "",1
+ Property: "Reflectivity", "double", "",0
+ }
+ }''')
+
+
+ def write_video(texname, tex):
+ # Same as texture really!
+ file.write('\n Video: "Video::%s", "Clip" {' % texname)
+
+ file.write('''
+ Type: "Clip"
+ Properties60: {
+ Property: "FrameRate", "double", "",0
+ Property: "LastFrame", "int", "",0
+ Property: "Width", "int", "",0
+ Property: "Height", "int", "",0''')
+ if tex:
+ fname = tex.filename
+ fname_strip = strip_path(fname)
+ else:
+ fname = fname_strip = ''
+
+ file.write('\n Property: "Path", "charptr", "", "%s"' % fname_strip)
+
+
+ file.write('''
+ Property: "StartFrame", "int", "",0
+ Property: "StopFrame", "int", "",0
+ Property: "PlaySpeed", "double", "",1
+ Property: "Offset", "KTime", "",0
+ Property: "InterlaceMode", "enum", "",0
+ Property: "FreeRunning", "bool", "",0
+ Property: "Loop", "bool", "",0
+ Property: "AccessMode", "enum", "",0
+ }
+ UseMipMap: 0''')
+
+ file.write('\n Filename: "%s"' % fname_strip)
+ if fname_strip: fname_strip = '/' + fname_strip
+ file.write('\n RelativeFilename: "fbx%s"' % fname_strip) # make relative
+ file.write('\n }')
+
+
+ def write_texture(texname, tex, num):
+ # if tex == None then this is a dummy tex
+ file.write('\n Texture: "Texture::%s", "TextureVideoClip" {' % texname)
+ file.write('\n Type: "TextureVideoClip"')
+ file.write('\n Version: 202')
+ # TODO, rare case _empty_ exists as a name.
+ file.write('\n TextureName: "Texture::%s"' % texname)
+
+ file.write('''
+ Properties60: {
+ Property: "Translation", "Vector", "A+",0,0,0
+ Property: "Rotation", "Vector", "A+",0,0,0
+ Property: "Scaling", "Vector", "A+",1,1,1''')
+ file.write('\n Property: "Texture alpha", "Number", "A+",%i' % num)
+ file.write('''
+ Property: "TextureTypeUse", "enum", "",0
+ Property: "CurrentTextureBlendMode", "enum", "",1
+ Property: "UseMaterial", "bool", "",0
+ Property: "UseMipMap", "bool", "",0
+ Property: "CurrentMappingType", "enum", "",0
+ Property: "UVSwap", "bool", "",0
+ Property: "WrapModeU", "enum", "",0
+ Property: "WrapModeV", "enum", "",0
+ Property: "TextureRotationPivot", "Vector3D", "",0,0,0
+ Property: "TextureScalingPivot", "Vector3D", "",0,0,0
+ Property: "VideoProperty", "object", ""
+ }''')
+
+ file.write('\n Media: "Video::%s"' % texname)
+ if tex:
+ fname = tex.filename
+ file.write('\n FileName: "%s"' % strip_path(fname))
+ file.write('\n RelativeFilename: "fbx/%s"' % strip_path(fname)) # need some make relative command
+ else:
+ file.write('\n FileName: ""')
+ file.write('\n RelativeFilename: "fbx"')
+
+ file.write('''
+ ModelUVTranslation: 0,0
+ ModelUVScaling: 1,1
+ Texture_Alpha_Source: "None"
+ Cropping: 0,0,0,0
+ }''')
+
+
+ scn = Blender.Scene.GetCurrent()
+ objects = []
+ materials = {}
+ textures = {}
+ for ob in scn.objects.context:
+ me = BPyMesh.getMeshFromObject(ob)
+ if me:
+
+ for mat in me.materials:
+ # 2.44 use mat.lib too for uniqueness
+ if mat: materials[mat.name] = mat
+
+ if me.faceUV:
+ for f in me.faces:
+ img = f.image
+ if img: textures[img.name] = img
+
+ me.transform(ob.matrixWorld)
+ BPyMesh.meshCalcNormals(me) # high quality normals nice for realtime engines.
+ objects.append( (sane_obname(ob.name), ob, me) )
+
+ materials = [(sane_matname(mat.name), mat) for mat in materials.itervalues()]
+ textures = [(sane_texname(img.name), img) for img in textures.itervalues()]
+ materials.sort() # sort by name
+ textures.sort()
+
+ if not materials:
+ materials = [('null', None)]
+
+ material_mapping = {} # blen name : index
+ if textures:
+ texture_mapping_local = {None:0} # ditto
+ i = 0
+ for texname, tex in textures:
+ texture_mapping_local[tex.name] = i
+ i+=1
+ textures.insert(0, ('_empty_', None))
+
+
+ i = 0
+ for matname, mat in materials:
+ material_mapping[matname] = i
+ i+=1
+
+
+ camera_count = 8
+ file.write(\
+'''
+; Object definitions
+;------------------------------------------------------------------
+
+Definitions: {
+ Version: 100
+ Count: %i''' % (1+1+camera_count+len(objects)+len(materials)+(len(textures)*2))) # add 1 for the root model 1 for global settings
+
+ file.write('''
+ ObjectType: "Model" {
+ Count: %i
+ }''' % (1+camera_count+len(objects))) # add 1 for the root model
+
+ file.write('''
+ ObjectType: "Geometry" {
+ Count: %i
+ }''' % len(objects))
+
+ if materials:
+ file.write('''
+ ObjectType: "Material" {
+ Count: %i
+ }''' % len(materials))
+
+ if textures:
+ file.write('''
+ ObjectType: "Texture" {
+ Count: %i
+ }''' % len(textures)) # add 1 for an empty tex
+ file.write('''
+ ObjectType: "Video" {
+ Count: %i
+ }''' % len(textures)) # add 1 for an empty tex
+
+ file.write('''
+ ObjectType: "GlobalSettings" {
+ Count: 1
+ }
+}
+''')
+
+ file.write(\
+'''
+; Object properties
+;------------------------------------------------------------------
+
+Objects: {''')
+
+ # To comply with other FBX FILES
+ write_camera_switch()
+
+ # Write the null object
+ file.write('''
+ Model: "Model::blend_root", "Null" {
+ Version: 232''')
+ write_object_props(None)
+ file.write(\
+''' MultiLayer: 0
+ MultiTake: 1
+ Shading: Y
+ Culling: "CullingOff"hr
+ TypeFlags: "Null"
+ }''')
+
+
+ for obname, ob, me in objects:
+ file.write('\n Model: "Model::%s", "Mesh" {\n' % sane_obname(ob.name))
+ file.write(' Version: 232') # newline is added in write_object_props
+ write_object_props(ob)
+
+ file.write(' MultiLayer: 0\n')
+ file.write(' MultiTake: 1\n')
+ file.write(' Shading: Y\n')
+ file.write(' Culling: "CullingOff"')
+
+ # Write the Real Mesh data here
+ file.write('\n Vertices: ')
+ i=-1
+ for v in me.verts:
+ if i==-1:
+ file.write('%.6f,%.6f,%.6f' % tuple(v.co))
+ i=0
+ else:
+ if i==7:
+ file.write('\n ')
+ i=0
+ file.write(',%.6f,%.6f,%.6f'% tuple(v.co))
+ i+=1
+ file.write('\n PolygonVertexIndex: ')
+ i=-1
+ for f in me.faces:
+ fi = [v.index for v in f]
+ # flip the last index, odd but it looks like
+ # this is how fbx tells one face from another
+ fi[-1] = -(fi[-1]+1)
+ fi = tuple(fi)
+ if i==-1:
+ if len(f) == 3: file.write('%i,%i,%i' % fi )
+ else: file.write('%i,%i,%i,%i' % fi )
+ i=0
+ else:
+ if i==13:
+ file.write('\n ')
+ i=0
+ if len(f) == 3: file.write(',%i,%i,%i' % fi )
+ else: file.write(',%i,%i,%i,%i' % fi )
+ i+=1
+
+ file.write('\n GeometryVersion: 124')
+
+ file.write(\
+'''
+ LayerElementNormal: 0 {
+ Version: 101
+ Name: ""
+ MappingInformationType: "ByVertice"
+ ReferenceInformationType: "Direct"
+ Normals: ''')
+
+ i=-1
+ for v in me.verts:
+ if i==-1:
+ file.write('%.15f,%.15f,%.15f' % tuple(v.no))
+ i=0
+ else:
+ if i==2:
+ file.write('\n ')
+ i=0
+ file.write(',%.15f,%.15f,%.15f' % tuple(v.no))
+ i+=1
+ file.write('\n }')
+
+
+ if me.faceUV:
+ file.write('''
+ LayerElementUV: 0 {
+ Version: 101
+ Name: ""
+ MappingInformationType: "ByPolygonVertex"
+ ReferenceInformationType: "IndexToDirect"
+ UV: ''')
+
+ i = -1
+ ii = 0
+ for f in me.faces:
+ for uv in f.uv:
+
+ if i==-1:
+ file.write('%.6f,%.6f' % tuple(uv))
+ i=0
+ else:
+ if i==7:
+ file.write('\n ')
+ i=0
+ file.write(',%.6f,%.6f' % tuple(uv))
+ i+=1
+ ii+=1
+
+
+ file.write('\n UVIndex: ')
+ for i in xrange(ii):
+ if i == 0: file.write('%i' % i)
+ else: file.write(',%i' % i)
+
+ file.write('\n }')
+
+
+
+ if materials:
+ file.write('''
+ LayerElementMaterial: 0 {
+ Version: 101
+ Name: ""
+ MappingInformationType: "ByPolygon"
+ ReferenceInformationType: "IndexToDirect"
+ Materials: ''')
+
+ # Build a material mapping for this
+ material_mapping_local = {} # local-index : global index.
+ for i, mat in enumerate(me.materials):
+ if mat:
+ material_mapping_local[i] = material_mapping[mat.name]
+ else:
+ material_mapping_local[i] = 0 # None material is zero for now.
+
+ if not material_mapping_local:
+ material_mapping_local[0] = 0
+
+ i=-1
+ for f in me.faces:
+ if i==-1:
+ i=0
+ file.write( '%s' % material_mapping_local[f.mat])
+ else:
+ file.write(',%s' % material_mapping_local[f.mat])
+ i+=1
+
+ file.write('\n }')
+
+
+ if textures:
+ if me.faceUV:
+ file.write('''
+ LayerElementTexture: 0 {
+ Version: 101
+ Name: ""
+ MappingInformationType: "ByPolygon"
+ ReferenceInformationType: "IndexToDirect"
+ BlendMode: "Translucent"
+ TextureAlpha: 1
+ TextureId: ''')
+ i=-1
+ for f in me.faces:
+ img_key = f.image
+ if img_key: img_key = img_key.name
+
+ if i==-1:
+ i=0
+ file.write( '%s' % texture_mapping_local[img_key])
+ else:
+ file.write(',%s' % texture_mapping_local[img_key])
+ i+=1
+ else:
+ file.write('''
+ LayerElementTexture: 0 {
+ Version: 101
+ Name: ""
+ MappingInformationType: "NoMappingInformation"
+ ReferenceInformationType: "IndexToDirect"
+ BlendMode: "Translucent"
+ TextureAlpha: 1
+ TextureId: ''')
+ file.write('\n }')
+
+
+ file.write('''
+ Layer: 0 {
+ Version: 100
+ LayerElement: {
+ Type: "LayerElementNormal"
+ TypedIndex: 0
+ }''')
+
+ if materials:
+ file.write('''
+ LayerElement: {
+ Type: "LayerElementMaterial"
+ TypedIndex: 0
+ }''')
+
+ # Always write this
+ if textures:
+ file.write('''
+ LayerElement: {
+ Type: "LayerElementTexture"
+ TypedIndex: 0
+ }''')
+
+ if me.faceUV:
+ file.write('''
+ LayerElement: {
+ Type: "LayerElementUV"
+ TypedIndex: 0
+ }''')
+ file.write('\n }')
+ file.write('\n }')
+
+ write_cameras()
+
+ for matname, mat in materials:
+ write_material(matname, mat)
+
+ # each texture uses a video, odd
+ for texname, tex in textures:
+ write_video(texname, tex)
+ i = 0
+ for texname, tex in textures:
+ write_texture(texname, tex, i)
+ i+=1
+
+
+ # Finish Writing Objects
+ # Write global settings
+ file.write('''
+ GlobalSettings: {
+ Version: 1000
+ Properties60: {
+ Property: "UpAxis", "int", "",1
+ Property: "UpAxisSign", "int", "",1
+ Property: "FrontAxis", "int", "",2
+ Property: "FrontAxisSign", "int", "",1
+ Property: "CoordAxis", "int", "",0
+ Property: "CoordAxisSign", "int", "",1
+ Property: "UnitScaleFactor", "double", "",1
+ }
+ }
+''')
+ file.write('}\n\n')
+
+ file.write(\
+'''; Object relations
+;------------------------------------------------------------------
+
+Relations: {
+''')
+
+ file.write(' Model: "Model::blend_root", "Null" {\n }\n')
+
+ for obname, ob, me in objects:
+ file.write(' Model: "Model::%s", "Mesh" {\n }\n' % obname)
+
+ file.write(''' Model: "Model::Producer Perspective", "Camera" {
+ }
+ Model: "Model::Producer Top", "Camera" {
+ }
+ Model: "Model::Producer Bottom", "Camera" {
+ }
+ Model: "Model::Producer Front", "Camera" {
+ }
+ Model: "Model::Producer Back", "Camera" {
+ }
+ Model: "Model::Producer Right", "Camera" {
+ }
+ Model: "Model::Producer Left", "Camera" {
+ }
+ Model: "Model::Camera Switcher", "CameraSwitcher" {
+ }
+''')
+
+ for matname, mat in materials:
+ file.write(' Material: "Material::%s", "" {\n }\n' % matname)
+
+
+ if textures:
+ for texname, tex in textures:
+ file.write(' Texture: "Texture::%s", "TextureVideoClip" {\n }\n' % texname)
+ for texname, tex in textures:
+ file.write(' Video: "Video::%s", "Clip" {\n }\n' % texname)
+
+ file.write('}\n')
+ file.write(\
+'''
+; Object connections
+;------------------------------------------------------------------
+
+Connections: {
+''')
+
+ # write the fake root node
+ file.write(' Connect: "OO", "Model::blend_root", "Model::Scene"\n')
+
+ for obname, ob, me in objects:
+ file.write(' Connect: "OO", "Model::%s", "Model::blend_root"\n' % obname)
+
+ for obname, ob, me in objects:
+ # Connect all materials to all objects, not good form but ok for now.
+ for matname, mat in materials:
+ file.write(' Connect: "OO", "Material::%s", "Model::%s"\n' % (matname, obname))
+
+ if textures:
+ for obname, ob, me in objects:
+ for texname, tex in textures:
+ file.write(' Connect: "OO", "Texture::%s", "Model::%s"\n' % (texname, obname))
+
+ for texname, tex in textures:
+ file.write(' Connect: "OO", "Video::%s", "Texture::%s"\n' % (texname, texname))
+
+ file.write('}\n')
+
+
+def write_footer(file):
+ file.write(\
+''';Takes and animation section
+;----------------------------------------------------
+
+Takes: {
+ Current: ""
+}
+;Version 5 settings
+;------------------------------------------------------------------
+
+Version5: {
+ AmbientRenderSettings: {
+ Version: 101
+ AmbientLightColor: 0.4,0.4,0.4,0
+ }
+ FogOptions: {
+ FlogEnable: 0
+ FogMode: 0
+ FogDensity: 0.002
+ FogStart: 0.3
+ FogEnd: 1000
+ FogColor: 1,1,1,1
+ }
+ Settings: {
+ FrameRate: "30"
+ TimeFormat: 1
+ SnapOnFrames: 0
+ ReferenceTimeIndex: -1
+ TimeLineStartTime: 0
+ TimeLineStopTime: 46186158000
+ }
+ RendererSetting: {
+ DefaultCamera: "Producer Perspective"
+ DefaultViewingMode: 0
+ }
+}
+''')
+
+
+def write_ui(filename):
+ Blender.Window.WaitCursor(1)
+ file = open(filename, 'w')
+ write_header(file)
+ write_scene(file)
+ write_footer(file)
+ Blender.Window.WaitCursor(0)
+
+if __name__ == '__main__':
+ Blender.Window.FileSelector(write_ui, 'Export FBX', Blender.sys.makename(ext='.fbx'))