From 103447d3f4831b096e6740d5cb2f014758269e38 Mon Sep 17 00:00:00 2001 From: Narann Date: Wed, 21 Aug 2019 11:16:14 +0200 Subject: [PATCH] add quaternion support --- cask.py | 6 ++++++ test/testCask.py | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/cask.py b/cask.py index 84c8a67..451e34f 100644 --- a/cask.py +++ b/cask.py @@ -222,6 +222,8 @@ def uint64(n): imath.M33f: imath.M33fArray, imath.M44d: imath.M44dArray, imath.M44f: imath.M44fArray, + imath.Quatd: imath.QuatdArray, + imath.Quatf: imath.QuatfArray, imath.V2d: imath.V2dArray, imath.V2f: imath.V2fArray, imath.V2i: imath.V2iArray, @@ -272,11 +274,15 @@ def uint64(n): imath.M33d: (alembic.Util.POD.kFloat64POD, 9), imath.M44f: (alembic.Util.POD.kFloat32POD, 16), imath.M44d: (alembic.Util.POD.kFloat64POD, 16), + imath.Quatf: (alembic.Util.POD.kFloat32POD, 4), + imath.Quatd: (alembic.Util.POD.kFloat64POD, 4), imath.StringArray: (alembic.Util.POD.kStringPOD, -1), imath.UnsignedCharArray: (alembic.Util.POD.kUint8POD, -1), imath.IntArray: (alembic.Util.POD.kInt32POD, -1), imath.V3fArray: (alembic.Util.POD.kFloat32POD, 3), imath.V3dArray: (alembic.Util.POD.kFloat64POD, 3), + imath.QuatfArray: (alembic.Util.POD.kFloat32POD, 4), + imath.QuatdArray: (alembic.Util.POD.kFloat64POD, 4), imath.FloatArray: (alembic.Util.POD.kFloat32POD, -1), imath.DoubleArray: (alembic.Util.POD.kFloat64POD, -1), } diff --git a/test/testCask.py b/test/testCask.py index 5e01978..7170cd3 100644 --- a/test/testCask.py +++ b/test/testCask.py @@ -660,6 +660,10 @@ def test_pod_extent(self): qux = foo.properties["qux"] = cask.Property() quux = foo.properties["quux"] = cask.Property() garply = foo.properties["garply"] = cask.Property() + quatf = foo.properties["quatf"] = cask.Property() + quatf.metadata["interpretation"] = "quat" + quatd = foo.properties["quatd"] = cask.Property() + quatd.metadata["interpretation"] = "quat" waldo = foo.properties["waldo"] = cask.Property() fred = foo.properties["fred"] = cask.Property() color = foo.properties["color"] = cask.Property() @@ -680,6 +684,8 @@ def test_pod_extent(self): qux.set_value(imath.Box3d()) quux.set_value(imath.M33d()) garply.set_value(imath.M44d()) + quatf.set_value(imath.Quatf()) + quatd.set_value(imath.Quatd()) waldo.set_value(1) fred.set_value([1, 2, 3, 4]) color.set_value(imath.Color3f(1, 2, 3)) @@ -698,6 +704,8 @@ def test_pod_extent(self): qux = foo.properties["qux"] quux = foo.properties["quux"] garply = foo.properties["garply"] + quatf = foo.properties["quatf"] + quatd = foo.properties["quatd"] waldo = foo.properties["waldo"] fred = foo.properties["fred"] color = foo.properties["color"] @@ -720,6 +728,14 @@ def test_pod_extent(self): self.assertEqual(garply.extent(), 16) self.assertEqual(garply.pod(), alembic.Util.POD.kFloat64POD) self.assertEqual(garply.values[0], imath.M44d()) + self.assertEqual(quatf.extent(), 4) + self.assertEqual(quatf.pod(), alembic.Util.POD.kFloat32POD) + self.assertEqual(quatf.values[0], imath.Quatf()) + self.assertEqual(quatf.metadata["interpretation"], "quat") + self.assertEqual(quatd.extent(), 4) + self.assertEqual(quatd.pod(), alembic.Util.POD.kFloat64POD) + self.assertEqual(quatd.values[0], imath.Quatd()) + self.assertEqual(quatd.metadata["interpretation"], "quat") self.assertEqual(waldo.extent(), 1) self.assertEqual(waldo.pod(), alembic.Util.POD.kInt32POD) self.assertEqual(waldo.values[0], 1)