diff --git a/io_anim_c3d/__init__.py b/io_anim_c3d/__init__.py index f8510fd2e13ecee81f96abd2d88e22f79c60ad17..1a460ea41bc81d59d87a368a9aabc3b4196950fc 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 a28c5dce9d50b826e380e91bff881536192001d2..7df6bcf8045c81b142e26c2c2e1ef88f30986b39 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))