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:
Diffstat (limited to 'release/scripts/import_lightwave_motion.py')
-rw-r--r--release/scripts/import_lightwave_motion.py244
1 files changed, 244 insertions, 0 deletions
diff --git a/release/scripts/import_lightwave_motion.py b/release/scripts/import_lightwave_motion.py
new file mode 100644
index 00000000000..20c87dfd5c6
--- /dev/null
+++ b/release/scripts/import_lightwave_motion.py
@@ -0,0 +1,244 @@
+#!BPY
+
+""" Registration info for Blender menus: <- these words are ignored
+Name: 'Lightwave Motion (.mot)...'
+Blender: 245
+Group: 'Import'
+Tip: 'Import Loc Rot Size chanels from a Lightwave .mot file'
+"""
+
+__author__ = "Daniel Salazar (ZanQdo)"
+__url__ = ("blender", "blenderartists.org",
+"e-mail: zanqdo@gmail.com")
+__version__ = "16/04/08"
+
+__bpydoc__ = """\
+This script loads Lightwave motion files (.mot)
+into the selected objects
+
+Usage:
+Run the script with one or more objects selected (any kind)
+Be sure to set the framerate correctly
+
+"""
+
+# $Id$
+# --------------------------------------------------------------------------
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# Copyright (C) 2003, 2004: A Vanpoucke
+#
+# 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 math as M
+import Blender as B
+import bpy
+
+
+def FuncionPrincipal (Dir):
+ B.Window.WaitCursor(1)
+ ObjSelect = B.Object.GetSelected()
+
+ if not ObjSelect:
+ B.Draw.PupMenu('Select one or more objects, aborting.')
+ return
+
+
+ SC = B.Scene.GetCurrent()
+ SCR = SC.getRenderingContext()
+ FrameRate = float(SCR.framesPerSec())
+
+
+ # Creating new IPO
+
+ IPO = B.Ipo.New('Object', 'LW_Motion')
+
+
+ # Creating Curves in the IPO
+
+ LocX = IPO.addCurve("LocX")
+ LocX.setInterpolation("Bezier")
+
+ LocY = IPO.addCurve("LocY")
+ LocX.setInterpolation("Bezier")
+
+ LocZ = IPO.addCurve("LocZ")
+ LocX.setInterpolation("Bezier")
+
+ RotX = IPO.addCurve("RotX")
+ LocX.setInterpolation("Bezier")
+
+ RotY = IPO.addCurve("RotY")
+ LocX.setInterpolation("Bezier")
+
+ RotZ = IPO.addCurve("RotZ")
+ LocX.setInterpolation("Bezier")
+
+ ScaleX = IPO.addCurve("ScaleX")
+ LocX.setInterpolation("Bezier")
+
+ ScaleY = IPO.addCurve("ScaleY")
+ LocX.setInterpolation("Bezier")
+
+ ScaleZ = IPO.addCurve("ScaleZ")
+ LocX.setInterpolation("Bezier")
+
+
+ # Opening the mot file
+
+ File = open (Dir, 'rU')
+
+
+ # Init flags
+
+ CurChannel = -1
+ ScaleFlag = 0
+
+ # Main file reading cycle
+
+ for Line in File:
+
+ '''
+ # Number of channels in the file
+
+ if "NumChannels" in Line:
+ Line = Line.split (' ')
+ NumChannels = int(Line[1])
+ '''
+
+ # Current Channel Flag
+
+ if "Channel 0" in Line:
+ CurChannel = 0
+
+ elif "Channel 1" in Line:
+ CurChannel = 1
+
+ elif "Channel 2" in Line:
+ CurChannel = 2
+
+ elif "Channel 3" in Line:
+ CurChannel = 3
+
+ elif "Channel 4" in Line:
+ CurChannel = 4
+
+ elif "Channel 5" in Line:
+ CurChannel = 5
+
+ elif "Channel 6" in Line:
+ CurChannel = 6
+
+ elif "Channel 7" in Line:
+ CurChannel = 7
+
+ elif "Channel 8" in Line:
+ CurChannel = 8
+
+
+ # Getting the data and writing to IPOs
+
+ if CurChannel == 0:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_0 = float (Line [3])
+ TimeCh_0 = float (Line [4]) * FrameRate
+ LocX.addBezier ((TimeCh_0, ValCh_0))
+
+ if CurChannel == 1:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_1 = float (Line [3])
+ TimeCh_1 = float (Line [4]) * FrameRate
+ LocZ.addBezier ((TimeCh_1, ValCh_1))
+
+ if CurChannel == 2:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_2 = float (Line [3])
+ TimeCh_2 = float (Line [4]) * FrameRate
+ LocY.addBezier ((TimeCh_2, ValCh_2))
+
+ if CurChannel == 3:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_3 = M.degrees ( - float (Line [3]) ) / 10
+ TimeCh_3 = float (Line [4]) * FrameRate
+ RotZ.addBezier ((TimeCh_3, ValCh_3))
+
+ if CurChannel == 4:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_4 = M.degrees ( - float (Line [3]) ) / 10
+ TimeCh_4 = float (Line [4]) * FrameRate
+ RotX.addBezier ((TimeCh_4, ValCh_4))
+
+ if CurChannel == 5:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_5 = M.degrees ( - float (Line [3]) ) / 10
+ TimeCh_5 = float (Line [4]) * FrameRate
+ RotY.addBezier ((TimeCh_5, ValCh_5))
+
+ if CurChannel == 6:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_6 = float (Line [3])
+ TimeCh_6 = float (Line [4]) * FrameRate
+ ScaleX.addBezier ((TimeCh_6, ValCh_6))
+ elif ScaleFlag < 3:
+ ScaleFlag += 1
+ ScaleX.addBezier ((0, 1))
+
+ if CurChannel == 7:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_7 = float (Line [3])
+ TimeCh_7 = float (Line [4]) * FrameRate
+ ScaleZ.addBezier ((TimeCh_7, ValCh_7))
+ elif ScaleFlag < 3:
+ ScaleFlag += 1
+ ScaleZ.addBezier ((0, 1))
+
+ if CurChannel == 8:
+ if "Key" in Line:
+ Line = Line.split (' ')
+ ValCh_8 = float (Line [3])
+ TimeCh_8 = float (Line [4]) * FrameRate
+ ScaleY.addBezier ((TimeCh_8, ValCh_8))
+ elif ScaleFlag < 3:
+ ScaleFlag += 1
+ ScaleY.addBezier ((0, 1))
+
+
+ # Link the IPO to all selected objects
+
+ for ob in ObjSelect:
+ ob.setIpo(IPO)
+
+ File.close()
+
+ print '\nDone, the following motion file has been loaded:\n\n%s' % Dir
+ B.Window.WaitCursor(0)
+
+def main():
+ B.Window.FileSelector(FuncionPrincipal, "Load IPO from .mot File", B.sys.makename(ext='.mot'))
+
+if __name__=='__main__':
+ main()
+