@@ -496,6 +496,47 @@ def testSopSpaceModes( self ) :
496
496
self .assertEqual ( prims [1 ].vertices ()[0 ].point ().position (), hou .Vector3 ( 0.5 , 0.5 , 0.5 ) )
497
497
self .assertEqual ( prims [2 ].vertices ()[0 ].point ().position (), hou .Vector3 ( 0.5 , 0.5 , 0.5 ) )
498
498
499
+ def testSopTransformsPrimvars ( self ) :
500
+
501
+ def writeTestFile () :
502
+
503
+ scene = IECore .SceneCache ( TestSceneCache .__testFile , IECore .IndexedIO .OpenMode .Write )
504
+
505
+ sc = scene .createChild ( str ( 1 ) )
506
+ matrix = IECore .M44d .createTranslated ( IECore .V3d ( 1 , 0 , 0 ) )
507
+ sc .writeTransform ( IECore .M44dData ( matrix ), 0 )
508
+
509
+ sc = sc .createChild ( str ( 2 ) )
510
+ matrix = IECore .M44d .createTranslated ( IECore .V3d ( 2 , 0 , 0 ) )
511
+ sc .writeTransform ( IECore .M44dData ( matrix ), 0 )
512
+
513
+ sc = sc .createChild ( str ( 3 ) )
514
+ matrix = IECore .M44d .createTranslated ( IECore .V3d ( 3 , 0 , 0 ) )
515
+ sc .writeTransform ( IECore .M44dData ( matrix ), 0 )
516
+
517
+ mesh = IECore .MeshPrimitive .createBox (IECore .Box3f (IECore .V3f (0 ),IECore .V3f (1 )))
518
+ mesh ["Pref" ] = IECore .PrimitiveVariable ( IECore .PrimitiveVariable .Interpolation .Vertex , mesh ["P" ].data .copy () )
519
+ mesh ["otherP" ] = IECore .PrimitiveVariable ( IECore .PrimitiveVariable .Interpolation .Vertex , mesh ["P" ].data .copy () )
520
+ mesh ["Cs" ] = IECore .PrimitiveVariable ( IECore .PrimitiveVariable .Interpolation .Vertex , IECore .V3fVectorData ( [ IECore .V3f ( 0 , 0 , 1 ) ] * 8 ) )
521
+ sc .writeObject ( mesh , 0 )
522
+
523
+ writeTestFile ()
524
+
525
+ node = self .sop ()
526
+ node .parm ( "geometryType" ).set ( IECoreHoudini .SceneCacheNode .GeometryType .Houdini )
527
+ node .parm ( "space" ).set ( IECoreHoudini .SceneCacheNode .Space .World )
528
+ prims = node .geometry ().prims ()
529
+ self .assertEqual ( len (prims ), 6 )
530
+ self .assertEqual ( sorted ( [ x .name () for x in node .geometry ().pointAttribs () ] ), ["Cd" , "P" , "Pw" , "otherP" , "rest" ] )
531
+
532
+ # P is transformed
533
+ self .assertEqual ( prims [0 ].vertex ( 0 ).point ().position (), hou .Vector3 ( 6 , 0 , 0 ) )
534
+ # other Point data is as well
535
+ self .assertEqual ( prims [0 ].vertex ( 0 ).point ().attribValue ( "rest" ), ( 6 , 0 , 0 ) )
536
+ self .assertEqual ( prims [0 ].vertex ( 0 ).point ().attribValue ( "otherP" ), ( 6 , 0 , 0 ) )
537
+ # other data is not
538
+ self .assertEqual ( prims [0 ].vertex ( 0 ).point ().attribValue ( "Cd" ), ( 0 , 0 , 1 ) )
539
+
499
540
def testSopShapeFilter ( self ) :
500
541
501
542
self .writeSCC ()
0 commit comments