diff options
author | Daniel M. Basso <danielmbasso@gmail.com> | 2011-11-03 05:13:07 +0400 |
---|---|---|
committer | Daniel M. Basso <danielmbasso@gmail.com> | 2011-11-03 05:13:07 +0400 |
commit | 6afd515ecee367d05c96c6dbc31fb894e14b3c0b (patch) | |
tree | f493b18b2ed0f8618a2a7001efdf296631e35a7f /io_anim_c3d | |
parent | 0fcd60fe15f41054fd3b97e9ac0370851699a35f (diff) |
Fixed importing float c3d files with non-native endianness.
Diffstat (limited to 'io_anim_c3d')
-rw-r--r-- | io_anim_c3d/__init__.py | 2 | ||||
-rw-r--r-- | io_anim_c3d/c3d.py | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/io_anim_c3d/__init__.py b/io_anim_c3d/__init__.py index f8510fd2..1a460ea4 100644 --- a/io_anim_c3d/__init__.py +++ b/io_anim_c3d/__init__.py @@ -25,7 +25,7 @@ bl_info = { 'name': "C3D Graphics Lab Motion Capture file (.c3d)", 'author': "Daniel Monteiro Basso <daniel@basso.inf.br>", - 'version': (2011, 11, 2, 1), + 'version': (2011, 11, 3, 1), 'blender': (2, 6, 0), 'api': 41226, 'location': "File > Import", diff --git a/io_anim_c3d/c3d.py b/io_anim_c3d/c3d.py index a28c5dce..7df6bcf8 100644 --- a/io_anim_c3d/c3d.py +++ b/io_anim_c3d/c3d.py @@ -169,7 +169,10 @@ class MarkerSet: 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 @@ class MarkerSet: 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)) |