4141class TestSHWDeepImageWriter ( unittest .TestCase ) :
4242
4343 __shw = "test/IECoreRI/data/shw/translucentBoxes.shw"
44+ __shwOrtho = "test/IECoreRI/data/shw/constantPlaneOrtho.shw"
4445 __exr = "test/IECoreRI/data/dtex/groundPlane.exr"
4546 __output = "test/IECoreRI/data/shw/written.shw"
46-
47+
4748 def testConstructor ( self ) :
4849
4950 self .failUnless ( "shw" in IECore .DeepImageWriter .supportedExtensions () )
@@ -156,16 +157,16 @@ def testReadWritePixel( self ) :
156157 p = reader .readPixel ( 100 , 100 )
157158 self .assertEqual ( p .channelNames (), ( "A" , ) )
158159 self .assertEqual ( p .numSamples (), 1 )
159- self .assertAlmostEqual ( p .getDepth ( 0 ), 107.5978927 , 6 )
160+ self .assertAlmostEqual ( p .getDepth ( 0 ), 102.17636108 , 6 )
160161 self .assertAlmostEqual ( p [0 ][0 ], 1.0 , 6 )
161162
162163 # hits one box then ground plane
163164 p2 = reader .readPixel ( 256 , 256 )
164165 self .assertEqual ( p2 .channelNames (), tuple (reader .channelNames ()) )
165166 self .assertEqual ( p2 .numSamples (), 3 )
166- self .assertAlmostEqual ( p2 .getDepth ( 0 ), 71.7940826 , 6 )
167- self .assertAlmostEqual ( p2 .getDepth ( 1 ), 76.9240646 , 6 )
168- self .assertAlmostEqual ( p2 .getDepth ( 2 ), 84.8475646 , 6 )
167+ self .assertAlmostEqual ( p2 .getDepth ( 0 ), 72.6087493 , 6 )
168+ self .assertAlmostEqual ( p2 .getDepth ( 1 ), 77.7387313 , 6 )
169+ self .assertAlmostEqual ( p2 .getDepth ( 2 ), 85.6622314 , 6 )
169170
170171 expected = ( 0.5 , 0.5 , 1.0 )
171172 for i in range ( 0 , len (expected ) ) :
@@ -175,11 +176,11 @@ def testReadWritePixel( self ) :
175176 p3 = reader .readPixel ( 195 , 225 )
176177 self .assertEqual ( p3 .channelNames (), tuple (reader .channelNames ()) )
177178 self .assertEqual ( p3 .numSamples (), 5 )
178- self .assertAlmostEqual ( p3 .getDepth ( 0 ), 68.2118148 , 6 )
179- self .assertAlmostEqual ( p3 .getDepth ( 1 ), 74.9367370 , 6 )
180- self .assertAlmostEqual ( p3 .getDepth ( 2 ), 77.0554046 , 6 )
181- self .assertAlmostEqual ( p3 .getDepth ( 3 ), 79.7311859 , 6 )
182- self .assertAlmostEqual ( p3 .getDepth ( 4 ), 88.5616073 , 6 )
179+ self .assertAlmostEqual ( p3 .getDepth ( 0 ), 68.6177368 , 6 )
180+ self .assertAlmostEqual ( p3 .getDepth ( 1 ), 75.3023605 , 6 )
181+ self .assertAlmostEqual ( p3 .getDepth ( 2 ), 77.4083328 , 6 )
182+ self .assertAlmostEqual ( p3 .getDepth ( 3 ), 80.0680771 , 6 )
183+ self .assertAlmostEqual ( p3 .getDepth ( 4 ), 88.8455811 , 6 )
183184
184185 expected = ( 0.5 , 0.75 , 0.5 , 0.5 , 1.0 )
185186 for i in range ( 0 , len (expected ) ) :
@@ -200,16 +201,16 @@ def testReadWritePixel( self ) :
200201 rp = reader .readPixel ( 0 , 0 )
201202 self .assertEqual ( rp .channelNames (), ( "A" , ) )
202203 self .assertEqual ( rp .numSamples (), 1 )
203- self .assertAlmostEqual ( rp .getDepth ( 0 ), 107.5978927 , 6 )
204+ self .assertAlmostEqual ( rp .getDepth ( 0 ), 102.17636108 , 4 )
204205 self .assertAlmostEqual ( rp [0 ][0 ], 1.0 , 6 )
205206
206207 # hits one box then ground plane
207208 rp2 = reader .readPixel ( 0 , 1 )
208209 self .assertEqual ( rp2 .channelNames (), tuple (reader .channelNames ()) )
209210 self .assertEqual ( rp2 .numSamples (), 3 )
210- self .assertAlmostEqual ( rp2 .getDepth ( 0 ), 71.7940826 , 6 )
211- self .assertAlmostEqual ( rp2 .getDepth ( 1 ), 76.9240646 , 6 )
212- self .assertAlmostEqual ( rp2 .getDepth ( 2 ), 84.8475646 , 6 )
211+ self .assertAlmostEqual ( rp2 .getDepth ( 0 ), 72.6087493 , 4 )
212+ self .assertAlmostEqual ( rp2 .getDepth ( 1 ), 77.7387313 , 4 )
213+ self .assertAlmostEqual ( rp2 .getDepth ( 2 ), 85.6622314 , 4 )
213214
214215 expected = ( 0.5 , 0.5 , 1.0 )
215216 for i in range ( 0 , len (expected ) ) :
@@ -219,11 +220,11 @@ def testReadWritePixel( self ) :
219220 rp3 = reader .readPixel ( 1 , 1 )
220221 self .assertEqual ( rp3 .channelNames (), tuple (reader .channelNames ()) )
221222 self .assertEqual ( rp3 .numSamples (), 5 )
222- self .assertAlmostEqual ( rp3 .getDepth ( 0 ), 68.2118148 , 6 )
223- self .assertAlmostEqual ( rp3 .getDepth ( 1 ), 74.9367370 , 6 )
224- self .assertAlmostEqual ( rp3 .getDepth ( 2 ), 77.0554046 , 6 )
225- self .assertAlmostEqual ( rp3 .getDepth ( 3 ), 79.7311859 , 6 )
226- self .assertAlmostEqual ( rp3 .getDepth ( 4 ), 88.5616073 , 6 )
223+ self .assertAlmostEqual ( rp3 .getDepth ( 0 ), 68.6177368 , 6 )
224+ self .assertAlmostEqual ( rp3 .getDepth ( 1 ), 75.3023605 , 6 )
225+ self .assertAlmostEqual ( rp3 .getDepth ( 2 ), 77.4083328 , 6 )
226+ self .assertAlmostEqual ( rp3 .getDepth ( 3 ), 80.0680771 , 6 )
227+ self .assertAlmostEqual ( rp3 .getDepth ( 4 ), 88.8455811 , 6 )
227228
228229 expected = ( 0.5 , 0.75 , 0.5 , 0.5 , 1.0 )
229230 for i in range ( 0 , len (expected ) ) :
@@ -299,17 +300,21 @@ def testEmptyPixel( self ) :
299300 self .failUnless ( isinstance ( rp , IECore .DeepPixel ) )
300301 self .assertEqual ( rp [0 ], ( 0.5 , ) )
301302
302- def testFileConversion ( self ) :
303+ def __testFileConversionWithFile ( self , filename ) :
303304
304- reader = IECore .DeepImageReader .create ( TestSHWDeepImageWriter . __shw )
305+ reader = IECore .DeepImageReader .create ( filename )
305306 dataWindow = reader .dataWindow ()
306307
307308 writer = IECore .DeepImageWriter .create ( TestSHWDeepImageWriter .__output )
308309 writer .parameters ()['channelNames' ].setValue ( reader .channelNames () )
309310 writer .parameters ()['resolution' ].setTypedValue ( dataWindow .size () + IECore .V2i ( 1 ) )
311+ writer .parameters ()['worldToCameraMatrix' ] = reader .worldToCameraMatrix ()
312+ writer .parameters ()['worldToNDCMatrix' ] = reader .worldToNDCMatrix ()
313+ writer .parameters ()['tileSize' ] = IECore .V2i ( 16 , 16 )
314+
310315
311- for y in range ( dataWindow .min .y , dataWindow .max .y ) :
312- for x in range ( dataWindow .min .x , dataWindow .max .x ) :
316+ for y in range ( dataWindow .min .y , dataWindow .max .y + 1 ) :
317+ for x in range ( dataWindow .min .x , dataWindow .max .x + 1 ) :
313318 writer .writePixel ( x , y , reader .readPixel ( x , y ) )
314319
315320 del writer
@@ -319,8 +324,8 @@ def testFileConversion( self ) :
319324 self .assertEqual ( reader2 .dataWindow (), reader .dataWindow () )
320325 self .assertEqual ( reader2 .read (), reader .read () )
321326
322- for y in range ( dataWindow .min .y , dataWindow .max .y ) :
323- for x in range ( dataWindow .min .x , dataWindow .max .x ) :
327+ for y in range ( dataWindow .min .y , dataWindow .max .y + 1 ) :
328+ for x in range ( dataWindow .min .x , dataWindow .max .x + 1 ) :
324329 p = reader .readPixel ( x , y )
325330 p2 = reader2 .readPixel ( x , y )
326331 if not p2 and not p :
@@ -329,9 +334,13 @@ def testFileConversion( self ) :
329334 self .assertEqual ( p2 .channelNames (), p .channelNames () )
330335 self .assertEqual ( p2 .numSamples (), p .numSamples () )
331336 for i in range ( 0 , p .numSamples () ) :
332- self .assertEqual ( p2 .getDepth ( i ), p .getDepth ( i ) )
337+ self .assertAlmostEqual ( p2 .getDepth ( i ), p .getDepth ( i ), 4 )
333338 self .assertEqual ( p2 [i ], p [i ] )
334-
339+
340+ def testFileConversion ( self ) :
341+ self .__testFileConversionWithFile ( TestSHWDeepImageWriter .__shw )
342+ self .__testFileConversionWithFile ( TestSHWDeepImageWriter .__shwOrtho )
343+
335344 def testStrangeOrder ( self ) :
336345
337346 writer = IECoreRI .SHWDeepImageWriter ( TestSHWDeepImageWriter .__output )
0 commit comments