( self )
| 250 | self.fail( messageInfo.message ) |
| 251 | |
| 252 | def testTimeRemapping( self ): |
| 253 | |
| 254 | m = IECoreScene.SceneCache( os.path.join( "test", "IECore", "data", "sccFiles", "animatedSpheres.scc" ), IECore.IndexedIO.OpenMode.Read ) |
| 255 | |
| 256 | l = IECoreScene.LinkedScene( os.path.join( self.tempDir, "test.lscc" ), IECore.IndexedIO.OpenMode.Write ) |
| 257 | # save animated spheres with double the speed and with offset, using less samples (time remapping) |
| 258 | i0 = l.createChild("instance0") |
| 259 | i0.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 0.0 ), 1.0 ) |
| 260 | i0.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 3.0 ), 2.0 ) |
| 261 | # save animated spheres with same speed and with offset, same samples (time remapping is identity) |
| 262 | i1 = l.createChild("instance1") |
| 263 | i1.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 0.0 ), 1.0 ) |
| 264 | i1.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 1.0 ), 2.0 ) |
| 265 | i1.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 2.0 ), 3.0 ) |
| 266 | i1.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 3.0 ), 4.0 ) |
| 267 | # save animated spheres with half the speed, adding more samples to a range of the original (time remapping) |
| 268 | i2 = l.createChild("instance2") |
| 269 | i2.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 0.0 ), 0.0 ) |
| 270 | i2.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 0.5 ), 1.0 ) |
| 271 | i2.writeAttribute( IECoreScene.LinkedScene.linkAttribute, IECoreScene.LinkedScene.linkAttributeData( m, 1.0 ), 2.0 ) |
| 272 | |
| 273 | del i0, i1, i2, l |
| 274 | |
| 275 | l = IECoreScene.LinkedScene( os.path.join( self.tempDir, "test.lscc" ), IECore.IndexedIO.OpenMode.Read ) |
| 276 | self.assertEqual( l.numBoundSamples(), 5 ) |
| 277 | self.assertEqual( l.hasAttribute( "sceneInterface:link.time" ), False ) |
| 278 | i0 = l.child("instance0") |
| 279 | |
| 280 | self.assertEqual( i0.hasAttribute( "sceneInterface:link.time" ), True ) |
| 281 | self.assertEqual( i0.readAttribute( "sceneInterface:link.time", 1 ).value, 0 ) |
| 282 | self.assertEqual( i0.readAttribute( "sceneInterface:link.time", 2 ).value, 3 ) |
| 283 | |
| 284 | self.assertEqual( i0.numBoundSamples(), 2 ) |
| 285 | self.assertEqual( i0.numTransformSamples(), 1 ) |
| 286 | self.assertEqual( i0.readTransformAtSample(0), IECore.M44dData() ) |
| 287 | A0 = i0.child("A") |
| 288 | self.assertEqual( A0.hasAttribute( "sceneInterface:link.time" ), False ) |
| 289 | |
| 290 | self.assertEqual( A0.numBoundSamples(), 2 ) |
| 291 | self.assertEqual( A0.numTransformSamples(), 2 ) |
| 292 | self.assertTrue( LinkedSceneTest.compareBBox( A0.readBoundAtSample(0), imath.Box3d(imath.V3d( -1,-1,-1 ), imath.V3d( 1,1,1 ) ) ) ) |
| 293 | self.assertTrue( LinkedSceneTest.compareBBox( A0.readBoundAtSample(1), imath.Box3d(imath.V3d( 0,-1,-1 ), imath.V3d( 2,1,1 ) ) ) ) |
| 294 | self.assertEqual( A0.readTransformAtSample(0), IECore.M44dData( imath.M44d().translate( imath.V3d( 1, 0, 0 ) ) ) ) |
| 295 | self.assertEqual( A0.readTransformAtSample(1), IECore.M44dData( imath.M44d().translate( imath.V3d( 2, 0, 0 ) ) ) ) |
| 296 | i1 = l.child("instance1") |
| 297 | |
| 298 | self.assertEqual( i1.hasAttribute( "sceneInterface:link.time" ), True ) |
| 299 | self.assertEqual( i1.readAttribute( "sceneInterface:link.time", 1 ).value, 0 ) |
| 300 | self.assertEqual( i1.readAttribute( "sceneInterface:link.time", 2 ).value, 1 ) |
| 301 | self.assertEqual( i1.readAttribute( "sceneInterface:link.time", 3 ).value, 2 ) |
| 302 | self.assertEqual( i1.readAttribute( "sceneInterface:link.time", 4 ).value, 3 ) |
| 303 | |
| 304 | self.assertEqual( i1.numBoundSamples(), 4 ) |
| 305 | self.assertEqual( i1.numTransformSamples(), 1 ) |
| 306 | A1 = i1.child("A") |
| 307 | self.assertEqual( A1.numTransformSamples(), 4 ) |
| 308 | self.assertEqual( A1.readTransformAtSample(0), IECore.M44dData( imath.M44d().translate( imath.V3d( 1, 0, 0 ) ) ) ) |
| 309 | self.assertEqual( A1.readTransformAtSample(1), IECore.M44dData( imath.M44d().translate( imath.V3d( 2, 0, 0 ) ) ) ) |
nothing calls this directly
no test coverage detected