@@ -2463,7 +2463,8 @@ class CyclesObject : public IECoreScenePreview::Renderer::ObjectInterface
24632463
24642464 if ( object->mesh ->use_motion_blur )
24652465 {
2466- object->motion = ccl::array<ccl::Transform>( object->mesh ->motion_steps );
2466+ object->motion .clear ();
2467+ object->motion .resize ( object->mesh ->motion_steps , ccl::transform_empty () );
24672468 for ( int i = 0 ; i < object->motion .size (); ++i )
24682469 {
24692470 object->motion [i] = object->tfm ;
@@ -2486,7 +2487,7 @@ class CyclesObject : public IECoreScenePreview::Renderer::ObjectInterface
24862487 {
24872488 IECore::msg ( IECore::Msg::Error, " IECoreCycles::Renderer" , boost::format ( " Transform step size on \" %s\" must match deformation step size." ) % object->name .c_str () );
24882489 object->tfm = SocketAlgo::setTransform ( samples.front () );
2489- object->motion = ccl::array<ccl::Transform> ( object->mesh ->motion_steps );
2490+ object->motion . resize ( object->mesh ->motion_steps , ccl::transform_empty () );
24902491 for ( int i = 0 ; i < object->motion .size (); ++i )
24912492 {
24922493 object->motion [i] = object->tfm ;
@@ -2513,7 +2514,7 @@ class CyclesObject : public IECoreScenePreview::Renderer::ObjectInterface
25132514
25142515 if ( numSamples % 2 ) // Odd numSamples
25152516 {
2516- object->motion = ccl::array<ccl::Transform>( numSamples );
2517+ object->motion . resize ( numSamples, ccl::transform_empty () );
25172518
25182519 for ( int i = 0 ; i < numSamples; ++i )
25192520 {
@@ -2528,7 +2529,7 @@ class CyclesObject : public IECoreScenePreview::Renderer::ObjectInterface
25282529 else if ( numSamples == 2 )
25292530 {
25302531 Imath::M44f matrix;
2531- object->motion = ccl::array<ccl::Transform>( numSamples+ 1 );
2532+ object->motion . resize ( numSamples+ 1 , ccl::transform_empty () );
25322533 IECore::LinearInterpolator<Imath::M44f>()( samples[0 ], samples[1 ], 0 .5f , matrix );
25332534
25342535 if ( frameIdx == -1 ) // Center frame
@@ -2549,7 +2550,7 @@ class CyclesObject : public IECoreScenePreview::Renderer::ObjectInterface
25492550 }
25502551 else // Even numSamples
25512552 {
2552- object->motion = ccl::array<ccl::Transform>( numSamples );
2553+ object->motion . resize ( numSamples, ccl::transform_empty () );
25532554
25542555 if ( frameIdx == -1 ) // Center frame
25552556 {
@@ -2573,6 +2574,11 @@ class CyclesObject : public IECoreScenePreview::Renderer::ObjectInterface
25732574 }
25742575 }
25752576
2577+ if ( !object->mesh ->use_motion_blur )
2578+ {
2579+ object->mesh ->motion_steps = object->motion .size ();
2580+ }
2581+
25762582 if ( object->mesh ->subd_params )
25772583 {
25782584 object->mesh ->subd_params ->objecttoworld = object->tfm ;
0 commit comments