Ejemplo n.º 1
0
    def testChannelNames(self):

        r = IECoreImage.ImageReader(
            "test/IECoreImage/data/exr/AllHalfValues.exr")
        c = r.channelNames()
        self.assertEqual(c.staticTypeId(),
                         IECore.StringVectorData.staticTypeId())
        self.assertEqual(len(c), 3)
        self.assertTrue("R" in c)
        self.assertTrue("G" in c)
        self.assertTrue("B" in c)

        r = IECoreImage.ImageReader(
            "test/IECoreImage/data/exr/manyChannels.exr")
        c = r.channelNames()
        self.assertEqual(c.staticTypeId(),
                         IECore.StringVectorData.staticTypeId())
        self.assertEqual(len(c), 7)
        self.assertTrue("R" in c)
        self.assertTrue("G" in c)
        self.assertTrue("B" in c)
        self.assertTrue("A" in c)
        self.assertTrue("diffuse.red" in c)
        self.assertTrue("diffuse.green" in c)
        self.assertTrue("diffuse.blue" in c)

        r = IECoreImage.ImageReader("thisFileDoesntExist.exr")
        self.assertRaises(Exception, r.channelNames)
Ejemplo n.º 2
0
    def testMissingChannels(self):

        op = IECoreImage.ImageDiffOp()

        w = IECore.Box2i(IECore.V2i(0, 0), IECore.V2i(99, 99))

        f = IECore.FloatVectorData()
        f.resize(100 * 100, 0)

        imageA = IECoreImage.ImagePrimitive(w, w)
        imageB = IECoreImage.ImagePrimitive(w, w)

        # Both images have channel "R"
        imageA["R"] = f
        imageB["R"] = f

        # Only imageA has channel "G"
        imageA["G"] = f

        res = op(imageA=imageA, imageB=imageB, skipMissingChannels=False)

        self.assert_(res.value)

        res = op(imageA=imageA, imageB=imageB, skipMissingChannels=True)

        self.failIf(res.value)
Ejemplo n.º 3
0
    def testOffsetDisplayWindows(self):
        r = IECore.Reader.create("test/IECoreImage/data/exr/carPark.exr")
        imageA = r.read()
        imageB = r.read()

        op = IECoreImage.ImageDiffOp()
        res = op(imageA=imageA, imageB=imageB, alignDisplayWindows=False)
        self.assertFalse(res.value)

        # Offset the display and data windows.
        offsetDisplayWindow = IECore.Box2i(
            imageA.displayWindow.min + IECore.V2i(-261, 172),
            imageA.displayWindow.max + IECore.V2i(-261, 172))
        offsetDataWindow = IECore.Box2i(
            imageA.dataWindow.min + IECore.V2i(-261, 172),
            imageA.dataWindow.max + IECore.V2i(-261, 172))
        imageA.displayWindow = offsetDisplayWindow
        imageA.dataWindow = offsetDataWindow

        # Compare the images again and they should fail as the display windows are different.
        op = IECoreImage.ImageDiffOp()
        res = op(imageA=imageA, imageB=imageB, alignDisplayWindows=False)
        self.assertTrue(res.value)

        # Compare the images again and they should not fail if "alignDisplayWindows" is turned on.
        op = IECoreImage.ImageDiffOp()
        res = op(imageA=imageA, imageB=imageB, alignDisplayWindows=True)
        self.assertFalse(res.value)
Ejemplo n.º 4
0
	def test( self ) :

		image = IECore.Reader.create( "test/IECoreImage/data/exr/carPark.exr" ).read()
		for n in ["R", "G", "B"] :
			p = image[n]
			p.data = IECore.DataCastOp()( object=image[n], targetType=IECore.FloatVectorData.staticTypeId() )
			image[n] = p

		luminanceImage = IECoreImage.LuminanceOp()( input=image )

		s = IECoreImage.MedianCutSampler()( image=luminanceImage, subdivisionDepth=4, projection=IECoreImage.MedianCutSampler.Projection.LatLong )
		centroids = s["centroids"]
		areas = s["areas"]

		self.assertEqual( len( s ), 2 )
		self.assertEqual( len( centroids ), len( areas ) )
		self.assertEqual( len( centroids ), 16 )
		self.assertTrue( centroids.isInstanceOf( IECore.V2fVectorData.staticTypeId() ) )
		self.assertTrue( areas.isInstanceOf( IECore.Box2iVectorData.staticTypeId() ) )

		dataWindow = luminanceImage.dataWindow
		areaSum = 0
		for i in range( 0, len( centroids ) ) :
			c = centroids[i]
			c = imath.V2i( int(c.x), int(c.y) )
			self.assertTrue( dataWindow.intersects( c ) )
			self.assertTrue( areas[i].intersects( c ) )
			s = areas[i].size() + imath.V2i( 1 )
			areaSum += s.x * s.y

		self.assertEqual( areaSum, luminanceImage.channelSize() )
Ejemplo n.º 5
0
    def testConstruction(self):

        w = IECoreImage.ImageWriter(
            IECoreImage.ImagePrimitive(),
            "test/IECoreImage/data/exr/AllHalfValues.exr")
        self.assertEqual(type(w), IECoreImage.ImageWriter)

        w = IECore.Writer.create("test/IECoreImage/data/exr/AllHalfValues.exr")
        self.assertEqual(type(w), IECoreImage.ImageWriter)
Ejemplo n.º 6
0
    def testRoundTripTIF(self):

        imgOrig = IECoreImage.ImageReader(
            os.path.join("test", "IECoreImage", "data", "tiff",
                         "bluegreen_noise.400x300.tif")).read()
        self.assertTrue(imgOrig.channelsValid())
        self.assertTrue(isinstance(imgOrig["R"], IECore.FloatVectorData))

        IECoreImage.ImageWriter(
            imgOrig,
            os.path.join("test", "IECoreImage", "data", "tiff",
                         "output.tif")).write()
        self.assertTrue(
            os.path.exists(
                os.path.join("test", "IECoreImage", "data", "tiff",
                             "output.tif")))

        reader = IECoreImage.ImageReader(
            os.path.join("test", "IECoreImage", "data", "tiff", "output.tif"))
        imgNew = reader.read()
        self.assertTrue(imgNew.channelsValid())
        self.assertTrue(isinstance(imgNew["R"], IECore.FloatVectorData))
        self.__verifyImageRGB(imgOrig, imgNew, same=True)

        reader["rawChannels"].setTypedValue(True)
        imgRaw = reader.read()
        self.assertTrue(imgRaw.channelsValid())
        self.assertTrue(isinstance(imgRaw["R"], IECore.UCharVectorData))
        self.__verifyImageRGB(imgRaw, imgNew, same=False)
        self.__verifyImageRGB(imgRaw, imgOrig, same=False)

        del reader

        self.tearDown()
        self.assertFalse(
            os.path.exists(
                os.path.join("test", "IECoreImage", "data", "tiff",
                             "output.tif")))
        w = IECoreImage.ImageWriter(
            imgRaw,
            os.path.join("test", "IECoreImage", "data", "tiff", "output.tif"))
        w['rawChannels'].setTypedValue(True)
        w.write()
        self.assertTrue(
            os.path.exists(
                os.path.join("test", "IECoreImage", "data", "tiff",
                             "output.tif")))

        reader = IECoreImage.ImageReader(
            os.path.join("test", "IECoreImage", "data", "tiff", "output.tif"))
        reader["rawChannels"].setTypedValue(True)
        imgRawNew = reader.read()
        self.assertTrue(isinstance(imgRawNew["R"], IECore.UCharVectorData))
        self.__verifyImageRGB(imgRawNew, imgNew, same=False)
        self.__verifyImageRGB(imgRawNew, imgOrig, same=False)
        self.__verifyImageRGB(imgRawNew, imgRaw, same=True)
Ejemplo n.º 7
0
	def testDisplacementShader( self ) :

		undisplaced1 = self.__displacementRender( doDisplacement = False )
		undisplaced2 = self.__displacementRender( doDisplacement = False )

		displaced1 = self.__displacementRender( doDisplacement = True )
		displaced2 = self.__displacementRender( doDisplacement = True )

		self.assertEqual( IECoreImage.ImageDiffOp()( imageA=undisplaced1, imageB=undisplaced2, maxError=0.001 ), IECore.BoolData( False ) )
		self.assertEqual( IECoreImage.ImageDiffOp()( imageA=displaced1, imageB=displaced2, maxError=0.001 ), IECore.BoolData( False ) )

		self.assertEqual( IECoreImage.ImageDiffOp()( imageA=displaced1, imageB=undisplaced1, maxError=0.1 ), IECore.BoolData( True ) )
Ejemplo n.º 8
0
	def testCs( self ) :

		i = IECoreImage.ImagePrimitive()
		i["Cs"] = IECore.Color3fVectorData( [ imath.Color3f( 1, 2, 3 ), imath.Color3f( 10, 11, 12 ) ] )

		ii = IECoreImage.LuminanceOp()( input=i, weights=imath.Color3f( 1, 2, 3 ), removeColorChannels=False )

		self.assert_( "Cs" in ii )
		self.assert_( "Y" in ii )

		self.assertAlmostEqual( ii["Y"][0], 14 )
		self.assertAlmostEqual( ii["Y"][1], 68 )
Ejemplo n.º 9
0
    def testConstruction(self):

        w = IECoreImage.ImageWriter(
            IECoreImage.ImagePrimitive(),
            os.path.join("test", "IECoreImage", "data", "exr",
                         "AllHalValues.exr"))
        self.assertIsInstance(w, IECoreImage.ImageWriter)

        w = IECore.Writer.create(
            os.path.join("test", "IECoreImage", "data", "exr",
                         "AllHalValues.exr"))
        self.assertIsInstance(w, IECoreImage.ImageWriter)
Ejemplo n.º 10
0
    def __init__(self):

        IECore.Op.__init__(
            self, "",
            IECoreImage.ImagePrimitiveParameter(
                "result", "", defaultValue=IECoreImage.ImagePrimitive()))

        self.parameters().addParameter(
            IECoreImage.ImagePrimitiveParameter(
                "input",
                "",
                defaultValue=IECoreImage.ImagePrimitive(),
            ), )
Ejemplo n.º 11
0
	def testKeepExistingValues( self ) :

		ph = GafferCortex.ParameterisedHolderNode()

		ph.setParameterised( IECoreImage.MedianCutSampler() )
		ph["parameters"]["channelName"].setValue( "R" )

		ph.setParameterised( IECoreImage.MedianCutSampler() )
		self.assertEqual( ph["parameters"]["channelName"].getValue(), "Y" )

		ph["parameters"]["channelName"].setValue( "R" )
		ph.setParameterised( IECoreImage.MedianCutSampler(), keepExistingValues=True )
		self.assertEqual( ph["parameters"]["channelName"].getValue(), "R" )
Ejemplo n.º 12
0
	def testCanReadAndIsComplete( self ) :

		self.assertTrue( IECoreImage.ImageReader.canRead( "test/IECoreImage/data/exr/AllHalfValues.exr" ) )
		self.assertFalse( IECoreImage.ImageReader.canRead( "thisFileDoesntExist.exr" ) )

		r = IECoreImage.ImageReader( "test/IECoreImage/data/exr/AllHalfValues.exr" )
		self.assertTrue( r.isComplete() )

		r = IECoreImage.ImageReader( "test/IECoreImage/data/exr/incomplete.exr" )
		self.assertFalse( r.isComplete() )

		r = IECoreImage.ImageReader( "thisFileDoesntExist.exr" )
		self.assertFalse( r.isComplete() )
Ejemplo n.º 13
0
	def testDataAndDisplayWindows( self ) :

		r = IECoreImage.ImageReader( "test/IECoreImage/data/exr/AllHalfValues.exr" )
		self.assertEqual( r.dataWindow(), imath.Box2i( imath.V2i( 0 ), imath.V2i( 255 ) ) )
		self.assertEqual( r.displayWindow(), imath.Box2i( imath.V2i( 0 ), imath.V2i( 255 ) ) )

		r = IECoreImage.ImageReader( "test/IECoreImage/data/exr/uvMapWithDataWindow.100x100.exr" )
		self.assertEqual( r.dataWindow(), imath.Box2i( imath.V2i( 25 ), imath.V2i( 49 ) ) )
		self.assertEqual( r.displayWindow(), imath.Box2i( imath.V2i( 0 ), imath.V2i( 99 ) ) )

		r = IECoreImage.ImageReader( "thisFileDoesntExist.exr" )
		self.assertRaises( Exception, r.dataWindow )
		self.assertRaises( Exception, r.displayWindow )
Ejemplo n.º 14
0
	def test( self ) :

		i = IECore.Reader.create( "test/IECoreImage/data/tiff/toTrace.tif" ).read()

		IECoreImage.ImageThinner()( input=i, copyInput=False )

		IECoreImage.ImageWriter( i, "/tmp/newThinning.tif" ).write()

		ii = IECore.Reader.create( "test/IECoreImage/data/tiff/toTraceThinned.tif" ).read()

		i.blindData().clear()
		ii.blindData().clear()

		self.failUnless( i==ii )
Ejemplo n.º 15
0
	def testTilesWithLeftovers( self ) :

		r = IECoreImage.ImageReader( "test/IECoreImage/data/tiff/tilesWithLeftovers.tif" )
		i = r.read()
		i2 = IECoreImage.ImageReader( "test/IECoreImage/data/exr/tiffTileTestExpectedResults.exr" ).read()

		op = IECoreImage.ImageDiffOp()
		res = op(
			imageA = i,
			imageB = i2,
			maxError = 0.004,
			skipMissingChannels = False
		)

		self.failIf( res.value )
Ejemplo n.º 16
0
    def test(self):

        b = imath.Box2i(imath.V2i(0), imath.V2i(1))
        i = IECoreImage.ImagePrimitive(b, b)
        i["Y"] = IECore.FloatVectorData([1, 2, 3, 4])

        ii = IECoreImage.SummedAreaOp()(input=i,
                                        channels=IECore.StringVectorData(["Y"
                                                                          ]))

        yy = ii["Y"]
        self.assertEqual(yy[0], 1)
        self.assertEqual(yy[1], 3)
        self.assertEqual(yy[2], 4)
        self.assertEqual(yy[3], 10)
Ejemplo n.º 17
0
    def testDefaults(self):

        op = IECoreImage.ImageCropOp()

        self.assertTrue(op['cropBox'].getValue().value.isEmpty())
        self.assertEqual(op['resetOrigin'].getValue().value, True)
        self.assertEqual(op['matchDataWindow'].getValue().value, True)
Ejemplo n.º 18
0
	def testFromCompoundData( self ) :
		""" Test conversion from a CompoundData representation of an ImagePrimitive """

		i = IECore.Reader.create( os.path.dirname( __file__ ) + "/images/colorBarsWithAlphaF512x512.exr" ).read()

		cd = IECore.CompoundData()
		cd["displayWindow"] = IECore.Box2iData( i.displayWindow )
		cd["dataWindow"] = IECore.Box2iData( i.dataWindow )

		cnd = IECore.CompoundData()
		for channel in i.channelNames() :
			cnd[ channel ] = i[ channel ]

		cd["channels"] = cnd

		t = IECoreGL.ToGLTextureConverter( cd ).convert()
		self.assertFalse( not t.isInstanceOf( IECoreGL.Texture.staticTypeId() ) )

		ii = t.imagePrimitive()

		res = IECoreImage.ImageDiffOp()(
			imageA = i,
			imageB = ii,
			maxError = 0.01,
			skipMissingChannels = False
		)

		self.assertFalse( res.value )
Ejemplo n.º 19
0
    def testIfdGen(self):
        # the image generated by this scene should be identical to the output of testWorldMesh()
        ifd = _dir + "/output/testIfdGen.ifd"
        r = IECoreMantra.Renderer(ifd)
        r.display(_dir + "/output/testIfdGen.exr", "exr", "rgba", {
            "variable": "Cf+Af",
            "vextype": "vector4",
            "channel": "C"
        })
        m = IECore.M44f().translate(IECore.V3f(0, 0, 6))
        r.camera("main", {"projection": "perspective", "transform": m})
        r.worldBegin()
        self.__greenSquare(r)
        r.worldEnd()
        del r

        self.assertTrue(os.path.isfile(ifd))

        p = subprocess.Popen(['mantra'],
                             stdin=open(ifd),
                             stdout=subprocess.PIPE)
        p.communicate()

        imageCreated = IECore.Reader.create(_dir +
                                            "/output/testIfdGen.exr").read()
        expectedImage = IECore.Reader.create(_dir +
                                             "/data/testWorldMesh.exr").read()
        self.assertEqual(
            IECoreImage.ImageDiffOp()(imageA=imageCreated,
                                      imageB=expectedImage,
                                      maxError=0.01), IECore.BoolData(False))
Ejemplo n.º 20
0
    def testReadImage(self):

        r = IECoreImage.ImageReader(
            "test/IECoreImage/data/exr/uvMap.256x256.exr")

        i = r.read()
        self.assertEqual(i.typeId(), IECoreImage.ImagePrimitive.staticTypeId())

        self.assertEqual(i.dataWindow,
                         IECore.Box2i(IECore.V2i(0), IECore.V2i(255)))
        self.assertEqual(i.displayWindow,
                         IECore.Box2i(IECore.V2i(0), IECore.V2i(255)))

        self.assertTrue(i.channelsValid())

        self.assertEqual(len(i), 3)
        for c in ["R", "G", "B"]:
            self.assertEqual(i[c].typeId(),
                             IECore.FloatVectorData.staticTypeId())

        r = i["R"]
        self.assertEqual(r[0], 0)
        self.assertEqual(r[-1], 1)
        g = i["G"]
        self.assertEqual(g[0], 0)
        self.assertEqual(g[-1], 1)
        for b in i["B"]:
            self.assertEqual(b, 0)
Ejemplo n.º 21
0
    def testReadHeader(self):

        r = IECoreImage.ImageReader(
            "test/IECoreImage/data/exr/manyChannels.exr")
        h = r.readHeader()

        c = h['channelNames']
        self.assertEqual(c.staticTypeId(),
                         IECore.StringVectorData.staticTypeId())
        self.assertEqual(len(c), 7)
        self.assertTrue("R" in c)
        self.assertTrue("G" in c)
        self.assertTrue("B" in c)
        self.assertTrue("A" in c)
        self.assertTrue("diffuse.red" in c)
        self.assertTrue("diffuse.green" in c)
        self.assertTrue("diffuse.blue" in c)

        self.assertEqual(
            h['displayWindow'],
            IECore.Box2iData(
                IECore.Box2i(IECore.V2i(0, 0), IECore.V2i(255, 255))))
        self.assertEqual(
            h['dataWindow'],
            IECore.Box2iData(
                IECore.Box2i(IECore.V2i(0, 0), IECore.V2i(255, 255))))
Ejemplo n.º 22
0
        def __init__(self,
                     format,
                     dataWindow,
                     channelNames,
                     port,
                     extraParameters={}):

            self.__format = format

            parameters = {
                "displayHost": "localHost",
                "displayPort": str(port),
                "remoteDisplayType": "GafferImage::GafferDisplayDriver",
            }
            parameters.update(extraParameters)

            with GafferTest.ParallelAlgoTest.UIThreadCallHandler() as h:

                self.__driver = IECoreImage.ClientDisplayDriver(
                    self.__format.toEXRSpace(self.__format.getDisplayWindow()),
                    self.__format.toEXRSpace(dataWindow),
                    list(channelNames),
                    parameters,
                )

                # Expect UI thread call used to emit Display::driverCreatedSignal()
                h.assertCalled()
                h.assertDone()
Ejemplo n.º 23
0
    def testExecuteWithImageInput(self):

        fnOH = IECoreNuke.FnOpHolder.create("test", "imagePrimitiveInOut", 1)

        self.assertEqual(fnOH.node().minimumInputs(), 1)
        self.assertEqual(fnOH.node().maximumInputs(), 1)

        check = nuke.nodes.CheckerBoard()

        fnOH.node().setInput(0, check)

        # get the image as output by the op
        image = fnOH.execute()

        # write the same image direct to disk without using the op
        write = nuke.nodes.Write()
        write.setInput(0, check)
        write.knob("file").setValue("test/IECoreNuke/check.exr")
        write.knob("channels").setValue("rgba")
        nuke.execute(write, 1, 1)

        # check that they are the same in terms of size and channel data.
        # allow a slight difference due to one having been saved as half float and reloaded.

        image2 = IECore.Reader.create("test/IECoreNuke/check.exr").read()
        self.assertEqual(
            IECoreImage.ImageDiffOp()(imageA=image,
                                      imageB=image2,
                                      maxError=0.001).value, False)
Ejemplo n.º 24
0
    def __verifyImageRGB(self, imgNew, imgOrig, maxError=0.002, same=True):

        self.assertEqual(type(imgNew), IECoreImage.ImagePrimitive)

        if "R" in imgOrig:
            self.assertTrue("R" in imgNew)

        if "G" in imgOrig:
            self.assertTrue("G" in imgNew)

        if "B" in imgOrig:
            self.assertTrue("B" in imgNew)

        if "A" in imgOrig:
            self.assertTrue("A" in imgNew)

        if "Y" in imgOrig:
            self.assertTrue("Y" in imgNew)

        op = IECoreImage.ImageDiffOp()

        res = op(imageA=imgNew,
                 imageB=imgOrig,
                 maxError=maxError,
                 skipMissingChannels=True)

        if same:
            self.assertFalse(res.value)
        else:
            self.assertTrue(res.value)
Ejemplo n.º 25
0
	def testDiskRendering( self ) :

		numPoints = 10
		p = IECore.V3fVectorData( numPoints )
		random.seed( 0 )
		for i in range( 0, numPoints ) :
			p[i] = IECore.V3f( random.random() * 4, random.random() * 4, random.random() * 4 )
		p = IECore.PrimitiveVariable( IECore.PrimitiveVariable.Interpolation.Vertex, p )

		r = IECoreArnold.Renderer()
		r.setOption( "ai:AA_samples", IECore.IntData( 9 ) )

		r.camera( "main", {
				"projection" : IECore.StringData( "orthographic" ),
				"resolution" : IECore.V2iData( IECore.V2i( 256 ) ),
				"clippingPlanes" : IECore.V2fData( IECore.V2f( 1, 1000 ) ),
				"screenWindow" : IECore.Box2fData( IECore.Box2f( IECore.V2f( -3 ), IECore.V2f( 3 ) ) )
			}
		)
		r.display( "test", "ieDisplay", "rgba", { "driverType" : "ImageDisplayDriver", "handle" : "testHandle" } )

		with IECore.WorldBlock( r ) :

			r.concatTransform( IECore.M44f.createTranslated( IECore.V3f( -2, -2, -10 ) ) )
			r.points( numPoints, { "P" : p } )

		image = IECoreImage.ImageDisplayDriver.removeStoredImage( "testHandle" )
		del image["A"]

		expectedImage = IECore.Reader.create( os.path.dirname( __file__ ) + "/data/pointsImages/points.tif" ).read()

		self.assertEqual( IECoreImage.ImageDiffOp()( imageA=image, imageB=expectedImage, maxError=0.01 ), IECore.BoolData( False ) )
Ejemplo n.º 26
0
    def __makeIntImage(self,
                       dataWindow,
                       displayWindow,
                       dataType=IECore.UIntVectorData,
                       maxInt=2**32 - 1):

        img = IECoreImage.ImagePrimitive(dataWindow, displayWindow)

        w = dataWindow.max().x - dataWindow.min().x + 1
        h = dataWindow.max().y - dataWindow.min().y + 1

        area = w * h
        R = dataType(area)
        G = dataType(area)
        B = dataType(area)

        offset = 0
        for y in range(0, h):
            for x in range(0, w):

                R[offset] = int(maxInt * float(x) / (w - 1))
                G[offset] = int(maxInt * float(y) / (h - 1))
                B[offset] = 0

                offset = offset + 1

        img["R"] = R
        img["G"] = G
        img["B"] = B

        return img
Ejemplo n.º 27
0
    def test(self):

        dataWindow = IECore.Box2i(IECore.V2i(0), IECore.V2i(74))
        image = IECoreImage.ImagePrimitive(dataWindow, dataWindow)
        red = IECore.FloatVectorData()
        green = IECore.FloatVectorData()
        blue = IECore.FloatVectorData()
        image["R"] = red
        image["G"] = green
        image["B"] = blue
        for y in range(0, 75):
            for x in range(0, 75):
                red.append(x)
                green.append(y)
                blue.append(0)

        imageNode = GafferImage.ObjectToImage()
        imageNode["object"].setValue(image)

        sampler = GafferImage.ImageSampler()
        sampler["image"].setInput(imageNode["out"])

        hashes = set()
        for x in range(0, 75):
            for y in range(0, 75):
                sampler["pixel"].setValue(IECore.V2f(x + 0.5, y + 0.5))
                # the flip in y is necessary as gaffer image coordinates run bottom->top and
                # cortex image coordinates run top->bottom.
                self.assertEqual(sampler["color"].getValue(),
                                 IECore.Color4f(x, 74 - y, 0, 0))
                hashes.add(str(sampler["color"].hash()))

        self.assertEqual(len(hashes), 75 * 75)
Ejemplo n.º 28
0
	def testTransfer( self ):

		img = IECore.Reader.create( os.path.join( "test", "IECoreImage", "data", "tiff", "bluegreen_noise.400x300.tif" ) )()
		self.assertEqual( img.keys(), [ 'B', 'G', 'R' ] )
		red = img['R']
		green = img['G']
		blue = img['B']
		width = img.dataWindow.max().x - img.dataWindow.min().x + 1

		params = IECore.CompoundData()
		params['displayHost'] = IECore.StringData('localhost')
		params['displayPort'] = IECore.StringData( '1559' )
		params["remoteDisplayType"] = IECore.StringData( "ImageDisplayDriver" )
		params["handle"] = IECore.StringData( "myHandle" )
		params["header:myMetadata"] = IECore.StringData( "Metadata!" )
		idd = IECoreImage.ClientDisplayDriver( img.displayWindow, img.dataWindow, list( img.channelNames() ), params )

		buf = IECore.FloatVectorData( width * 3 )
		for i in range( 0, img.dataWindow.max().y - img.dataWindow.min().y + 1 ):
			self.__prepareBuf( buf, width, i*width, red, green, blue )
			idd.imageData( imath.Box2i( imath.V2i( img.dataWindow.min().x, i + img.dataWindow.min().y ), imath.V2i( img.dataWindow.max().x, i + img.dataWindow.min().y) ), buf )
		idd.imageClose()

		newImg = IECoreImage.ImageDisplayDriver.removeStoredImage( "myHandle" )
		params["clientPID"] = IECore.IntData( os.getpid() )

		# only data prefixed by 'header:' will come through as blindData/metadata
		self.assertEqual( newImg.blindData(), IECore.CompoundData({"myMetadata": IECore.StringData( "Metadata!" )}) )

		# remove blindData for comparison
		newImg.blindData().clear()
		img.blindData().clear()
		self.assertEqual( newImg, img )
Ejemplo n.º 29
0
	def testAcceptsRepeatedData( self ) :

		window = imath.Box2i( imath.V2i( 0 ), imath.V2i( 15 ) )

		dd = IECoreImage.ClientDisplayDriver(
			window, window,
			[ "Y" ],
			IECore.CompoundData( {
				"displayHost" : "localhost",
				"displayPort" : "1559",
				"remoteDisplayType" : "ImageDisplayDriver",
				"handle" : "myHandle"
			} )
		)

		self.assertEqual( dd.acceptsRepeatedData(), True )

		y = IECore.FloatVectorData( [ 1 ] * 16 * 16 )
		dd.imageData( window, y )

		y = IECore.FloatVectorData( [ 0.5 ] * 16 * 16 )
		dd.imageData( window, y )

		dd.imageClose()

		i = IECoreImage.ImageDisplayDriver.removeStoredImage( "myHandle" )
		self.assertEqual( i["Y"], y )
Ejemplo n.º 30
0
    def performCurvesTest(self, curvesPrimitive, expectedImage):

        r = IECoreArnold.Renderer()

        r.setOption("ai:AA_samples", IECore.IntData(3))
        r.display("test", "ieDisplay", "rgba", {
            "driverType": "ImageDisplayDriver",
            "handle": "test"
        })

        with IECore.TransformBlock(r):
            r.concatTransform(IECore.M44f.createTranslated(IECore.V3f(0, 0,
                                                                      2)))
            r.camera(
                "main", {
                    "resolution": IECore.V2i(512),
                    "projectin": "orthographic",
                    "screenWindow": IECore.Box2f(IECore.V2f(0), IECore.V2f(1)),
                })

        with IECore.WorldBlock(r):
            curvesPrimitive.render(r)

        image = IECoreImage.ImageDisplayDriver.removeStoredImage("test")
        del image["A"]

        expectedImage = IECore.Reader.create(expectedImage).read()

        self.assertEqual(
            IECoreImage.ImageDiffOp()(imageA=image,
                                      imageB=expectedImage,
                                      maxError=0.01), IECore.BoolData(False))