Skip to content

Commit 00e63f3

Browse files
authored
Merge pull request #2510 from dj-mcg/pr/RfM_Translator_Test_Improvements
RfM Translator Test Improvements
2 parents 53441f4 + b07dcbb commit 00e63f3

2 files changed

Lines changed: 189 additions & 152 deletions

File tree

test/lib/usd/translators/testUsdExportRfMLight.py

Lines changed: 83 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ def setUpClass(cls):
5555
def tearDownClass(cls):
5656
standalone.uninitialize()
5757

58+
def _assertGfIsClose(self, a, b, ep):
59+
if Gf.IsClose(a, b, ep):
60+
return
61+
raise self.failureException("%s != %s (ep=%f)" % (a, b, ep))
62+
5863
def testStageOpens(self):
5964
"""
6065
Tests that the USD stage was opened successfully.
@@ -114,20 +119,22 @@ def _ValidateUsdLuxLight(self, lightTypeName):
114119
return
115120

116121
expectedIntensity = 1.0 + (testNumber * 0.1)
122+
self._assertGfIsClose(lightSchema.GetIntensityAttr().Get(),
123+
expectedIntensity, 1e-6)
117124
self.assertTrue(Gf.IsClose(lightSchema.GetIntensityAttr().Get(),
118125
expectedIntensity, 1e-6))
119126

120127
expectedExposure = 0.1 * testNumber
121-
self.assertTrue(Gf.IsClose(lightSchema.GetExposureAttr().Get(),
122-
expectedExposure, 1e-6))
128+
self._assertGfIsClose(lightSchema.GetExposureAttr().Get(),
129+
expectedExposure, 1e-6)
123130

124131
expectedDiffuse = 1.0 + (testNumber * 0.1)
125-
self.assertTrue(Gf.IsClose(lightSchema.GetDiffuseAttr().Get(),
126-
expectedDiffuse, 1e-6))
132+
self._assertGfIsClose(lightSchema.GetDiffuseAttr().Get(),
133+
expectedDiffuse, 1e-6)
127134

128135
expectedSpecular = 1.0 + (testNumber * 0.1)
129-
self.assertTrue(Gf.IsClose(lightSchema.GetSpecularAttr().Get(),
130-
expectedSpecular, 1e-6))
136+
self._assertGfIsClose(lightSchema.GetSpecularAttr().Get(),
137+
expectedSpecular, 1e-6)
131138

132139
if lightTypeName == 'EnvDayLight':
133140
# PxrEnvDayLight doesn't have any of the below attributes.
@@ -143,16 +150,16 @@ def _ValidateUsdLuxLight(self, lightTypeName):
143150
expectedNormalize)
144151

145152
expectedColor = Gf.Vec3f(0.1 * testNumber)
146-
self.assertTrue(Gf.IsClose(lightSchema.GetColorAttr().Get(),
147-
expectedColor, 1e-6))
153+
self._assertGfIsClose(lightSchema.GetColorAttr().Get(),
154+
expectedColor, 1e-6)
148155

149156
expectedEnableTemperature = True
150157
self.assertEqual(lightSchema.GetEnableColorTemperatureAttr().Get(),
151158
expectedEnableTemperature)
152159

153160
expectedTemperature = 6500.0 + testNumber
154-
self.assertTrue(Gf.IsClose(lightSchema.GetColorTemperatureAttr().Get(),
155-
expectedTemperature, 1e-6))
161+
self._assertGfIsClose(lightSchema.GetColorTemperatureAttr().Get(),
162+
expectedTemperature, 1e-6)
156163

157164
def _ValidateDiskLightXformAnimation(self):
158165
lightPrimPath = '/RfMLightsTest/Lights/DiskLight'
@@ -184,8 +191,8 @@ def _ValidateUsdLuxDistantLightAngle(self):
184191
self.assertTrue(distantLight)
185192

186193
expectedAngle = 0.73
187-
self.assertTrue(Gf.IsClose(distantLight.GetAngleAttr().Get(),
188-
expectedAngle, 1e-6))
194+
self._assertGfIsClose(distantLight.GetAngleAttr().Get(),
195+
expectedAngle, 1e-6)
189196

190197
def _ValidateUsdLuxRectLightTextureFile(self):
191198
lightPrimPath = '/RfMLightsTest/Lights/RectLight'
@@ -264,46 +271,46 @@ def _ValidateUsdRiPxrEnvDayLight(self):
264271
expectedDay)
265272

266273
expectedHaziness = 1.9
267-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:haziness").Get(),
268-
expectedHaziness, 1e-6))
274+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:haziness").Get(),
275+
expectedHaziness, 1e-6)
269276

270277
expectedHour = 9.9
271-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:hour").Get(),
272-
expectedHour, 1e-6))
278+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:hour").Get(),
279+
expectedHour, 1e-6)
273280

274281
expectedLatitude = 90.0
275-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:latitude").Get(),
276-
expectedLatitude, 1e-6))
282+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:latitude").Get(),
283+
expectedLatitude, 1e-6)
277284

278285
expectedLongitude = -90.0
279-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:longitude").Get(),
280-
expectedLongitude, 1e-6))
286+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:longitude").Get(),
287+
expectedLongitude, 1e-6)
281288

282289
expectedMonth = 9
283290
self.assertEqual(envDayLight.GetAttribute("inputs:ri:light:month").Get(), expectedMonth)
284291

285292
expectedSkyTint = Gf.Vec3f(0.9)
286-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:skyTint").Get(),
287-
expectedSkyTint, 1e-6))
293+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:skyTint").Get(),
294+
expectedSkyTint, 1e-6)
288295

289296
expectedSunDirection = Gf.Vec3f(0.0, 0.0, 0.9)
290-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:sunDirection").Get(),
291-
expectedSunDirection, 1e-6))
297+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:sunDirection").Get(),
298+
expectedSunDirection, 1e-6)
292299

293300
expectedSunSize = 0.9
294-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:sunSize").Get(),
295-
expectedSunSize, 1e-6))
301+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:sunSize").Get(),
302+
expectedSunSize, 1e-6)
296303

297304
expectedSunTint = Gf.Vec3f(0.9)
298-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:sunTint").Get(),
299-
expectedSunTint, 1e-6))
305+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:sunTint").Get(),
306+
expectedSunTint, 1e-6)
300307

301308
expectedYear = 2019
302309
self.assertEqual(envDayLight.GetAttribute("inputs:ri:light:year").Get(), expectedYear)
303310

304311
expectedZone = 9.0
305-
self.assertTrue(Gf.IsClose(envDayLight.GetAttribute("inputs:ri:light:zone").Get(),
306-
expectedZone, 1e-6))
312+
self._assertGfIsClose(envDayLight.GetAttribute("inputs:ri:light:zone").Get(),
313+
expectedZone, 1e-6)
307314

308315
def _ValidateUsdLuxShapingAPI(self):
309316
lightPrimPath = '/RfMLightsTest/Lights/DiskLight'
@@ -316,28 +323,34 @@ def _ValidateUsdLuxShapingAPI(self):
316323
self.assertTrue(shapingAPI)
317324

318325
expectedFocus = 0.2
319-
self.assertTrue(Gf.IsClose(shapingAPI.GetShapingFocusAttr().Get(),
320-
expectedFocus, 1e-6))
326+
self._assertGfIsClose(shapingAPI.GetShapingFocusAttr().Get(),
327+
expectedFocus, 1e-6)
321328

322329
expectedFocusTint = Gf.Vec3f(0.2)
323-
self.assertTrue(Gf.IsClose(shapingAPI.GetShapingFocusTintAttr().Get(),
324-
expectedFocusTint, 1e-6))
330+
self._assertGfIsClose(shapingAPI.GetShapingFocusTintAttr().Get(),
331+
expectedFocusTint, 1e-6)
325332

326333
expectedConeAngle = 92.0
327-
self.assertTrue(Gf.IsClose(shapingAPI.GetShapingConeAngleAttr().Get(),
328-
expectedConeAngle, 1e-6))
334+
self._assertGfIsClose(shapingAPI.GetShapingConeAngleAttr().Get(),
335+
expectedConeAngle, 1e-6)
329336

330337
expectedConeSoftness = 0.2
331-
self.assertTrue(Gf.IsClose(shapingAPI.GetShapingConeSoftnessAttr().Get(),
332-
expectedConeSoftness, 1e-6))
338+
self._assertGfIsClose(shapingAPI.GetShapingConeSoftnessAttr().Get(),
339+
expectedConeSoftness, 1e-6)
333340

334341
expectedProfilePath = './DiskLight_profile.ies'
335342
self.assertEqual(shapingAPI.GetShapingIesFileAttr().Get(),
336343
expectedProfilePath)
337344

338345
expectedProfileScale = 1.2
339-
self.assertTrue(Gf.IsClose(shapingAPI.GetShapingIesAngleScaleAttr().Get(),
340-
expectedProfileScale, 1e-6))
346+
self._assertGfIsClose(shapingAPI.GetShapingIesAngleScaleAttr().Get(),
347+
expectedProfileScale, 1e-6)
348+
349+
def _ValidateUsdLuxSuppressed(self):
350+
''' makes sure suppressed properties are not written out '''
351+
lightPrimPath = '/RfMLightsTest/Lights/DiskLight'
352+
lightPrim = self._stage.GetPrimAtPath(lightPrimPath)
353+
self.assertFalse(bool(lightPrim.GetAttribute('inputs:ri:light:shadowSubset')))
341354

342355
def _ValidateUsdLuxShadowAPI(self):
343356
lightPrimPath = '/RfMLightsTest/Lights/RectLight'
@@ -352,50 +365,56 @@ def _ValidateUsdLuxShadowAPI(self):
352365
self.assertTrue(shadowAPI.GetShadowEnableAttr().Get())
353366

354367
expectedShadowColor = Gf.Vec3f(0.6)
355-
self.assertTrue(Gf.IsClose(shadowAPI.GetShadowColorAttr().Get(),
356-
expectedShadowColor, 1e-6))
368+
self._assertGfIsClose(shadowAPI.GetShadowColorAttr().Get(),
369+
expectedShadowColor, 1e-6)
357370

358371
expectedShadowDistance = -0.6
359-
self.assertTrue(Gf.IsClose(shadowAPI.GetShadowDistanceAttr().Get(),
360-
expectedShadowDistance, 1e-6))
372+
self._assertGfIsClose(shadowAPI.GetShadowDistanceAttr().Get(),
373+
expectedShadowDistance, 1e-6)
361374

362375
expectedShadowFalloff = -0.6
363-
self.assertTrue(Gf.IsClose(shadowAPI.GetShadowFalloffAttr().Get(),
364-
expectedShadowFalloff, 1e-6))
376+
self._assertGfIsClose(shadowAPI.GetShadowFalloffAttr().Get(),
377+
expectedShadowFalloff, 1e-6)
365378

366379
expectedShadowFalloffGamma = 0.6
367-
self.assertTrue(Gf.IsClose(shadowAPI.GetShadowFalloffGammaAttr().Get(),
368-
expectedShadowFalloffGamma, 1e-6))
380+
self._assertGfIsClose(shadowAPI.GetShadowFalloffGammaAttr().Get(),
381+
expectedShadowFalloffGamma, 1e-6)
369382

370-
def testExportRenderManForMayaLights(self):
371-
"""
372-
Tests that RenderMan for Maya lights export as UsdLux schema USD prims
373-
correctly.
374-
"""
383+
def testExportCylinderLight(self):
375384
self._ValidateUsdLuxLight('CylinderLight')
376385

386+
def testExportDiskLight(self):
377387
self._ValidateUsdLuxLight('DiskLight')
378388
self._ValidateDiskLightXformAnimation()
389+
self._ValidateUsdLuxShapingAPI()
390+
self._ValidateUsdLuxSuppressed()
379391

392+
def testExportDistantLight(self):
380393
self._ValidateUsdLuxLight('DistantLight')
394+
self._ValidateUsdLuxDistantLightAngle()
395+
396+
def testExportDomeLight(self):
381397
self._ValidateUsdLuxLight('DomeLight')
382-
self._ValidateUsdLuxLight('MeshLight')
383-
self._ValidateUsdLuxLight('RectLight')
384-
self._ValidateUsdLuxLight('SphereLight')
385-
self._ValidateUsdLuxLight('AovLight')
386-
self._ValidateUsdLuxLight('EnvDayLight')
398+
self._ValidateUsdLuxDomeLightTextureFile()
387399

388-
self._ValidateUsdLuxDistantLightAngle()
400+
def testExportMeshLight(self):
401+
self._ValidateUsdLuxLight('MeshLight')
389402

403+
def testExportRectLight(self):
404+
self._ValidateUsdLuxLight('RectLight')
390405
self._ValidateUsdLuxRectLightTextureFile()
391-
self._ValidateUsdLuxDomeLightTextureFile()
406+
self._ValidateUsdLuxShadowAPI()
392407

393-
self._ValidateUsdRiPxrAovLight()
394-
self._ValidateUsdRiPxrEnvDayLight()
408+
def testExportSphereLight(self):
409+
self._ValidateUsdLuxLight('SphereLight')
395410

396-
self._ValidateUsdLuxShapingAPI()
411+
def testExportAovLight(self):
412+
self._ValidateUsdLuxLight('AovLight')
413+
self._ValidateUsdRiPxrAovLight()
397414

398-
self._ValidateUsdLuxShadowAPI()
415+
def testExportEnvDayLight(self):
416+
self._ValidateUsdLuxLight('EnvDayLight')
417+
self._ValidateUsdRiPxrEnvDayLight()
399418

400419

401420
if __name__ == '__main__':

0 commit comments

Comments
 (0)