@@ -328,6 +328,10 @@ def testCornersAndCreases( self ) :
328328 cornerIds = [ 1 , 2 ]
329329 cornerSharpnesses = [ 1.0 , 2.0 ]
330330 mesh .setCorners ( IECore .IntVectorData ( cornerIds ), IECore .FloatVectorData ( cornerSharpnesses ) )
331+
332+ # First test - the first 3 vertex crease include two edges through vertex 1, which is not
333+ # used in the second triangle, and is getting deleted. This whole crease will be deleted, since
334+ # neither edge is in the final mesh
331335 creaseLengths = [ 3 , 2 ]
332336 creaseIds = [ 0 , 1 , 2 , 2 , 3 ] # note that these are vertex ids
333337 creaseSharpnesses = [ 1.0 , 2.0 ]
@@ -345,10 +349,35 @@ def testCornersAndCreases( self ) :
345349
346350 self .assertEqual ( facesDeletedMesh .cornerIds (), IECore .IntVectorData ( [ 1 ] ) )
347351 self .assertEqual ( facesDeletedMesh .cornerSharpnesses (), IECore .FloatVectorData ( [ 2.0 ] ) )
352+ self .assertEqual ( facesDeletedMesh .creaseLengths (), IECore .IntVectorData ( [ 2 ] ) )
353+ self .assertEqual ( facesDeletedMesh .creaseIds (), IECore .IntVectorData ( [ 1 , 2 ] ) )
354+ self .assertEqual ( facesDeletedMesh .creaseSharpnesses (), IECore .FloatVectorData ( [ 2.0 ] ) )
355+
356+ # Second test - the first crease includes two edges, one is deleted, the other is left
357+ creaseLengths = [ 3 , 2 ]
358+ creaseIds = [ 0 , 2 , 1 , 2 , 3 ] # note that these are vertex ids
359+ creaseSharpnesses = [ 1.0 , 2.0 ]
360+ mesh .setCreases ( IECore .IntVectorData ( creaseLengths ), IECore .IntVectorData ( creaseIds ), IECore .FloatVectorData ( creaseSharpnesses ) )
361+
362+ facesDeletedMesh = IECoreScene .MeshAlgo .deleteFaces ( mesh , mesh ["delete" ] )
363+
348364 self .assertEqual ( facesDeletedMesh .creaseLengths (), IECore .IntVectorData ( [ 2 , 2 ] ) )
349365 self .assertEqual ( facesDeletedMesh .creaseIds (), IECore .IntVectorData ( [ 0 , 1 , 1 , 2 ] ) )
350366 self .assertEqual ( facesDeletedMesh .creaseSharpnesses (), IECore .FloatVectorData ( [ 1.0 , 2.0 ] ) )
351367
368+ #Third test - one long crease of 4 edges, where the middle vertex is removed, resulting in two 1
369+ # edge creases
370+ creaseLengths = [ 5 ]
371+ creaseIds = [ 3 , 0 , 1 , 2 , 3 ] # note that these are vertex ids
372+ creaseSharpnesses = [ 3.0 ]
373+ mesh .setCreases ( IECore .IntVectorData ( creaseLengths ), IECore .IntVectorData ( creaseIds ), IECore .FloatVectorData ( creaseSharpnesses ) )
374+
375+ facesDeletedMesh = IECoreScene .MeshAlgo .deleteFaces ( mesh , mesh ["delete" ] )
376+
377+ self .assertEqual ( facesDeletedMesh .creaseLengths (), IECore .IntVectorData ( [ 2 , 2 ] ) )
378+ self .assertEqual ( facesDeletedMesh .creaseIds (), IECore .IntVectorData ( [ 2 , 0 , 1 , 2 ] ) )
379+ self .assertEqual ( facesDeletedMesh .creaseSharpnesses (), IECore .FloatVectorData ( [ 3.0 , 3.0 ] ) )
380+
352381 def testBadPrimitiveVariables ( self ):
353382
354383 planeMesh = IECoreScene .MeshPrimitive .createPlane ( imath .Box2f ( imath .V2f ( 0 ), imath .V2f ( 2 ) ), imath .V2i ( 1 , 1 ) )
0 commit comments