From ba51190bb7cee8fd73cf0b0c61a50e4bcdee3adc Mon Sep 17 00:00:00 2001 From: Pierre Tremblay Date: Mon, 3 Apr 2023 13:42:40 -0400 Subject: [PATCH] Revived visibility test. (#382) * Revived visibility test. * Converted code review comment to code comment. * Disable image comparison test for debugging purposes. * Trace debugging 1 * Trace debugging 2 * Trace debugging 3 * Trace debugging 4 * Trace debugging 5 * Reinstate disabled tests. * Clean up debugging and tracing code. --- .../adapters/renderItemAdapter.h | 3 ++ .../hydraExtensions/delegates/delegateCtx.cpp | 5 +++ .../mayaUsd/render/mayaToHydra/CMakeLists.txt | 2 +- .../MtohVisibilityTest/cube_unselected.png | Bin 3075 -> 1834 bytes .../MtohVisibilityTest/nothing.png | Bin 1513 -> 1511 bytes .../render/mayaToHydra/testMtohVisibility.py | 5 ++- test/testUtils/mtohUtils.py | 36 ++++++++++++------ 7 files changed, 36 insertions(+), 15 deletions(-) diff --git a/lib/mayaHydra/hydraExtensions/adapters/renderItemAdapter.h b/lib/mayaHydra/hydraExtensions/adapters/renderItemAdapter.h index 84c2cdf1f2..6dee0029fb 100644 --- a/lib/mayaHydra/hydraExtensions/adapters/renderItemAdapter.h +++ b/lib/mayaHydra/hydraExtensions/adapters/renderItemAdapter.h @@ -173,6 +173,9 @@ class MayaHydraRenderItemAdapter : public MayaHydraAdapter MAYAHYDRALIB_API MGeometry::Primitive GetPrimitive() const { return _primitive; } + MAYAHYDRALIB_API + const char* Name() const { return _name.asChar(); } + private: MAYAHYDRALIB_API void _RemoveRprim(); diff --git a/lib/mayaHydra/hydraExtensions/delegates/delegateCtx.cpp b/lib/mayaHydra/hydraExtensions/delegates/delegateCtx.cpp index aefe5695f1..5cef2da72c 100644 --- a/lib/mayaHydra/hydraExtensions/delegates/delegateCtx.cpp +++ b/lib/mayaHydra/hydraExtensions/delegates/delegateCtx.cpp @@ -28,6 +28,8 @@ #include #include +#include +#include #include @@ -56,6 +58,9 @@ SdfPath _GetRenderItemMayaPrimPath(const MRenderItem& ri) mayaPath = mayaPath.MakeRelativePath(SdfPath::AbsoluteRootPath()); } + // Prepend Maya node name, for organisation and readability. + mayaPath = SdfPath(MFnDependencyNode(ri.sourceDagPath().node()).name().asChar()).AppendPath(mayaPath); + if (MHWRender::MGeometry::Primitive::kLines != ri.primitive() && MHWRender::MGeometry::Primitive::kLineStrip != ri.primitive() && MHWRender::MGeometry::Primitive::kPoints != ri.primitive()) { diff --git a/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt b/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt index 8dca620c22..06c70d54eb 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt +++ b/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt @@ -4,7 +4,7 @@ set(TEST_SCRIPT_FILES # Fail as of 22-Feb-2023. Entered as MAYA-127898. # testMtohBasicRender.py # testMtohDagChanges.py -# testMtohVisibility.py + testMtohVisibility.py ) foreach(script ${TEST_SCRIPT_FILES}) diff --git a/test/lib/mayaUsd/render/mayaToHydra/MtohVisibilityTest/cube_unselected.png b/test/lib/mayaUsd/render/mayaToHydra/MtohVisibilityTest/cube_unselected.png index 0353a7ec33ffc414e3eada11e98e673d74308f37..132d219c4938d35b3f48144013702ec8013a064a 100644 GIT binary patch literal 1834 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 N=I0ZLZudTW! zaSW-L^Y*GEFN31Mfdh|A*44{qERc6HTD)NYx|u&29$cxnW@s>%=|D{1-7TFpUXO@geCxt^O, which will produce + # lexicographically-ordered paths. + self.cubeRprim = self.getIndex()[0] + cmds.select(clear=1) + cmds.refresh() self.assertVisible(self.cubeRprim) self.setBasicCam(dist=camDist) cmds.select(clear=True) @@ -80,16 +89,6 @@ def makeCubeScene(self, camDist=DEFAULT_CAM_DIST): cmds.setAttr("standardSurface1.baseColor", type='float3', *color) cmds.setAttr("standardSurface1.specularRoughness", 0.4) - def rprimPath(self, fullPath): - if not fullPath.startswith('|'): - nodes = cmds.ls(fullPath, long=1) - if len(nodes) != 1: - raise RuntimeError("given fullPath {!r} mapped to {} nodes" - .format(fullPath, len(nodes))) - fullPath = nodes[0] - return '/'.join([self.delegateId, "rprims", - fullPath.lstrip('|').replace('|', '/')]) - def getIndex(self, **kwargs): return cmds.mayaHydra(renderer=HD_STORM, listRenderIndex=True, **kwargs) @@ -102,3 +101,16 @@ def assertVisible(self, rprim): def assertInIndex(self, rprim): self.assertIn(rprim, self.getIndex()) + + def assertNodeNameInIndex(self, nodeName): + for rprim in self.getIndex(): + if nodeName in rprim: + return True + return False + + def trace(self, msg): + sys.__stdout__.write(msg) + sys.__stdout__.flush() + + def traceIndex(self, msg): + self.trace(msg.format(str(self.getIndex())))