Skip to content

Commit a11a8b7

Browse files
authored
Merge pull request #1251 from johnhaddon/curvesAlgoV2f
CurvesAlgo : Support V2f fully in `resamplePrimitiveVariable()`
2 parents 789e741 + 4cb888d commit a11a8b7

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

src/IECoreScene/CurvesAlgo.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,16 @@ namespace
5252

5353

5454
// PrimitiveEvaluator only supports certain types
55-
template< typename T > struct IsPrimitiveEvaluatableTypedData : boost::mpl::and_<
55+
template< typename T >
56+
struct IsPrimitiveEvaluatableTypedData : boost::mpl::and_<
5657
TypeTraits::IsNumericBasedVectorTypedData<T>,
5758
boost::mpl::or_<
58-
TypeTraits::IsVec3<typename TypeTraits::VectorValueType<T>::type >,
59-
boost::is_same< typename TypeTraits::VectorValueType<T>::type, float >,
60-
boost::is_same< typename TypeTraits::VectorValueType<T>::type, int >,
61-
TypeTraits::IsColor3<typename TypeTraits::VectorValueType<T>::type >
62-
>
59+
TypeTraits::IsVec2<typename TypeTraits::VectorValueType<T>::type>,
60+
TypeTraits::IsVec3<typename TypeTraits::VectorValueType<T>::type>,
61+
boost::is_same<typename TypeTraits::VectorValueType<T>::type, float>,
62+
boost::is_same<typename TypeTraits::VectorValueType<T>::type, int>,
63+
TypeTraits::IsColor3<typename TypeTraits::VectorValueType<T>::type>
64+
>
6365
> {};
6466

6567

@@ -69,6 +71,11 @@ static T evalPrimVar( PrimitiveEvaluator::Result *result, const PrimitiveVariabl
6971
throw Exception( "PrimvarResamplerCache : This should never be called because of IsPrimitiveEvaluatableTypedData" );
7072
}
7173

74+
template<>
75+
Imath::V2f evalPrimVar<Imath::V2f>( PrimitiveEvaluator::Result *result, const PrimitiveVariable &primVar )
76+
{
77+
return result->vec2PrimVar( primVar );
78+
}
7279

7380
template<>
7481
Imath::V3f evalPrimVar<Imath::V3f>( PrimitiveEvaluator::Result *result, const PrimitiveVariable &primVar )

test/IECoreScene/CurvesAlgoTest.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,6 +1195,24 @@ def testBezierCurvesFaceVaryingToVarying( self ) :
11951195

11961196
# endregion
11971197

1198+
def testV2fVaryingToVertex( self ) :
1199+
1200+
curves = IECoreScene.CurvesPrimitive(
1201+
IECore.IntVectorData( [ 4 ] ), IECore.CubicBasisf.catmullRom(), False,
1202+
IECore.V3fVectorData( [ imath.V3f( i ) for i in range( 0, 4 ) ] )
1203+
)
1204+
1205+
uv = IECoreScene.PrimitiveVariable(
1206+
IECoreScene.PrimitiveVariable.Interpolation.Varying,
1207+
IECore.V2fVectorData( [ imath.V2f( 0 ), imath.V2f( 1 ) ] )
1208+
)
1209+
curves["uv"] = uv
1210+
1211+
IECoreScene.CurvesAlgo.resamplePrimitiveVariable( curves, uv, IECoreScene.PrimitiveVariable.Interpolation.Vertex )
1212+
self.assertTrue( curves.arePrimitiveVariablesValid() )
1213+
self.assertEqual( uv.interpolation, IECoreScene.PrimitiveVariable.Interpolation.Vertex )
1214+
self.assertEqual( len( uv.data ), 4 )
1215+
11981216
class CurvesAlgoDeleteCurvesTest ( unittest.TestCase ):
11991217

12001218
def createLinearCurves(self):

0 commit comments

Comments
 (0)