[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2574] trunk/py/scripts/addons/ io_anim_c3d: Fixed importing float c3d files with non-native endianness.

Daniel M. Basso danielmbasso at gmail.com
Thu Nov 3 02:13:08 CET 2011


Revision: 2574
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2574
Author:   dmbasso
Date:     2011-11-03 01:13:07 +0000 (Thu, 03 Nov 2011)
Log Message:
-----------
Fixed importing float c3d files with non-native endianness.

Modified Paths:
--------------
    trunk/py/scripts/addons/io_anim_c3d/__init__.py
    trunk/py/scripts/addons/io_anim_c3d/c3d.py

Modified: trunk/py/scripts/addons/io_anim_c3d/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_anim_c3d/__init__.py	2011-11-03 00:22:18 UTC (rev 2573)
+++ trunk/py/scripts/addons/io_anim_c3d/__init__.py	2011-11-03 01:13:07 UTC (rev 2574)
@@ -25,7 +25,7 @@
 bl_info = {
     'name': "C3D Graphics Lab Motion Capture file (.c3d)",
     'author': "Daniel Monteiro Basso <daniel at basso.inf.br>",
-    'version': (2011, 11, 2, 1),
+    'version': (2011, 11, 3, 1),
     'blender': (2, 6, 0),
     'api': 41226,
     'location': "File > Import",

Modified: trunk/py/scripts/addons/io_anim_c3d/c3d.py
===================================================================
--- trunk/py/scripts/addons/io_anim_c3d/c3d.py	2011-11-03 00:22:18 UTC (rev 2573)
+++ trunk/py/scripts/addons/io_anim_c3d/c3d.py	2011-11-03 01:13:07 UTC (rev 2574)
@@ -169,7 +169,10 @@
          self.frameRate) = struct.unpack('fhhf', td)
         self.scale *= scale
         if self.scale < 0:
-            self.readMarker = self.readFloatMarker
+            if self.procType == 2:
+                self.readMarker = self.readFloatMarkerInvOrd
+            else:
+                self.readMarker = self.readFloatMarker
             self.scale *= -1
         else:
             self.readMarker = self.readShortMarker
@@ -203,6 +206,14 @@
         m.position = (x * self.scale, y * self.scale, z * self.scale)
         return m
 
+    def readFloatMarkerInvOrd(self, infile):
+        m = Marker()
+        inv = lambda f: f[2:] + f[:2]
+        i = lambda: inv(infile.read(4))
+        x, y, z, m.confidence = struct.unpack('ffff', i() + i() + i() + i())
+        m.position = (x * self.scale, y * self.scale, z * self.scale)
+        return m
+
     def readShortMarker(self, infile):
         m = Marker()
         x, y, z, m.confidence = struct.unpack('hhhh', infile.read(8))



More information about the Bf-extensions-cvs mailing list