From b9b5659b209cee082c21f2dba5e68687b472d853 Mon Sep 17 00:00:00 2001 From: debloip Date: Wed, 31 Jan 2024 17:44:31 -0500 Subject: [PATCH 01/17] HYDRA-780 : Add image-based NURBS unit test --- .../mayaUsd/render/mayaToHydra/CMakeLists.txt | 1 + .../render/mayaToHydra/testNurbsPrimitives.py | 128 ++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py diff --git a/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt b/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt index 1e47a21e3e..01e1d3b035 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt +++ b/test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt @@ -14,6 +14,7 @@ set(TEST_SCRIPT_FILES testNewSceneWithStage.py testDirectionalLights.py testFlowViewportAPI.py + testNurbsPrimitives.py cpp/testColorPreferences.py cpp/testCppFramework.py cpp/testMayaSceneFlattening.py diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py new file mode 100644 index 0000000000..d5d8f2a657 --- /dev/null +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -0,0 +1,128 @@ +# Copyright 2024 Autodesk +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import maya.cmds as cmds +import fixturesUtils +import mtohUtils +from testUtils import PluginLoaded + +class TestNurbsPrimitives(mtohUtils.MtohTestCase): + # MayaHydraBaseTestCase.setUpClass requirement. + _file = __file__ + + IMAGE_DIFF_FAIL_THRESHOLD = 0.0 + IMAGE_DIFF_FAIL_PERCENT = 0.0 + + def testSnapshot(self, referenceFilename): + try: + self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) + except: + pass + + def setupScene(self, nurbsCreationCallable): + self.setHdStormRenderer() + #cmds.loadPlugin('ArubaTessellator') + nurbsCreationCallable() + #cmds.viewFit() + cmds.refresh(force=True) + + def test_NurbsTorus(self): + with PluginLoaded('ArubaTessellator'): + self.setupScene(cmds.torus) + self.testSnapshot("torus_fresh.png") + + makeNurbNodeName = "makeNurbTorus1" + cmds.setAttr(makeNurbNodeName + ".startSweep", 50) + cmds.setAttr(makeNurbNodeName + ".endSweep", 300) + cmds.setAttr(makeNurbNodeName + ".radius", 2) + cmds.setAttr(makeNurbNodeName + ".degree", 1) + cmds.setAttr(makeNurbNodeName + ".sections", 12) + cmds.setAttr(makeNurbNodeName + ".spans", 6) + cmds.setAttr(makeNurbNodeName + ".heightRatio", 0.8) + cmds.setAttr(makeNurbNodeName + ".minorSweep", 250) + cmds.refresh(force=True) + self.testSnapshot("torus_modified.png") + + cmds.setAttr(makeNurbNodeName + ".useTolerance", True) + cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) + cmds.refresh(force=True) + self.testSnapshot("torus_tolerance.png") + + def test_NurbsCube(self): + with PluginLoaded('ArubaTessellator'): + self.setupScene(cmds.nurbsCube) + self.testSnapshot("cube_fresh.png") + + makeNurbNodeName = "makeNurbCube1" + cmds.setAttr(makeNurbNodeName + ".degree", 1) + cmds.setAttr(makeNurbNodeName + ".patchesU", 2) + cmds.setAttr(makeNurbNodeName + ".patchesV", 3) + cmds.setAttr(makeNurbNodeName + ".width", 4) + cmds.setAttr(makeNurbNodeName + ".lengthRatio", 5) + cmds.setAttr(makeNurbNodeName + ".heightRatio", 6) + cmds.refresh(force=True) + self.testSnapshot("cube_modified.png") + + def test_NurbsCircle(self): + with PluginLoaded('ArubaTessellator'): + self.setupScene(cmds.circle) + self.testSnapshot("circle_fresh.png") + + makeNurbNodeName = "makeNurbCircle1" + cmds.setAttr(makeNurbNodeName + ".sweep", 180) + cmds.setAttr(makeNurbNodeName + ".radius", 2) + cmds.setAttr(makeNurbNodeName + ".degree", 1) + cmds.setAttr(makeNurbNodeName + ".sections", 12) + cmds.setAttr(makeNurbNodeName + ".normalX", 1) + cmds.setAttr(makeNurbNodeName + ".normalY", 2) + cmds.setAttr(makeNurbNodeName + ".normalZ", 3) + cmds.setAttr(makeNurbNodeName + ".centerX", 4) + cmds.setAttr(makeNurbNodeName + ".centerY", 5) + cmds.setAttr(makeNurbNodeName + ".centerZ", 6) + cmds.setAttr(makeNurbNodeName + ".firstPointX", 7) + cmds.setAttr(makeNurbNodeName + ".firstPointY", 8) + cmds.setAttr(makeNurbNodeName + ".firstPointZ", 9) + cmds.refresh(force=True) + self.testSnapshot("circle_modified.png") + + cmds.setAttr(makeNurbNodeName + ".useTolerance", True) + cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) + cmds.refresh(force=True) + self.testSnapshot("circle_tolerance.png") + + cmds.setAttr(makeNurbNodeName + ".fixCenter", False) + cmds.refresh(force=True) + self.testSnapshot("circle_unfixedCenter.png") + + def test_NurbsSquare(self): + with PluginLoaded('ArubaTessellator'): + self.setupScene(cmds.nurbsSquare) + self.testSnapshot("square_fresh.png") + + makeNurbNodeName = "makeNurbsSquare1" + cmds.setAttr(makeNurbNodeName + ".sideLength1", 2) + cmds.setAttr(makeNurbNodeName + ".sideLength2", 3) + cmds.setAttr(makeNurbNodeName + ".spansPerSide", 4) + cmds.setAttr(makeNurbNodeName + ".degree", 1) + cmds.setAttr(makeNurbNodeName + ".normalX", 1) + cmds.setAttr(makeNurbNodeName + ".normalY", 2) + cmds.setAttr(makeNurbNodeName + ".normalZ", 3) + cmds.setAttr(makeNurbNodeName + ".centerX", 4) + cmds.setAttr(makeNurbNodeName + ".centerY", 5) + cmds.setAttr(makeNurbNodeName + ".centerZ", 6) + cmds.refresh(force=True) + self.testSnapshot("square_modified.png") + +if __name__ == '__main__': + fixturesUtils.runTests(globals()) From debfd92c8618616d87234bfafb4ba0d2073e339c Mon Sep 17 00:00:00 2001 From: debloip Date: Wed, 31 Jan 2024 18:00:57 -0500 Subject: [PATCH 02/17] HYDRA-780 : Add image files and fix test --- .../NurbsPrimitivesTest/circle_fresh.png | Bin 0 -> 3289 bytes .../NurbsPrimitivesTest/circle_modified.png | Bin 0 -> 2775 bytes .../NurbsPrimitivesTest/circle_tolerance.png | Bin 0 -> 2667 bytes .../circle_unfixedCenter.png | Bin 0 -> 2451 bytes .../NurbsPrimitivesTest/cube_fresh.png | Bin 0 -> 3665 bytes .../NurbsPrimitivesTest/cube_modified.png | Bin 0 -> 5180 bytes .../NurbsPrimitivesTest/square_fresh.png | Bin 0 -> 2783 bytes .../NurbsPrimitivesTest/square_modified.png | Bin 0 -> 3113 bytes .../NurbsPrimitivesTest/torus_fresh.png | Bin 0 -> 6609 bytes .../NurbsPrimitivesTest/torus_modified.png | Bin 0 -> 8080 bytes .../NurbsPrimitivesTest/torus_tolerance.png | Bin 0 -> 10452 bytes .../render/mayaToHydra/testNurbsPrimitives.py | 35 ++++++++---------- 12 files changed, 15 insertions(+), 20 deletions(-) create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_fresh.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_modified.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_tolerance.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_unfixedCenter.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/cube_fresh.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/cube_modified.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_fresh.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_modified.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/torus_fresh.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/torus_modified.png create mode 100644 test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/torus_tolerance.png diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_fresh.png new file mode 100644 index 0000000000000000000000000000000000000000..65756b684c1a7643f2407af4928353a24a069fab GIT binary patch literal 3289 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 Bxm^GN literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_tolerance.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_tolerance.png new file mode 100644 index 0000000000000000000000000000000000000000..3338b0be0d92e831b98ef172937f314718954d3f GIT binary patch literal 2667 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 literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/cube_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/cube_fresh.png new file mode 100644 index 0000000000000000000000000000000000000000..a83e5a1198341133b8028690b581319be84f706c GIT binary patch literal 3665 zcmeHKZ9LOmAK%ux+mMHG5v5Hs5qY{ulr1T$q1!{PNOrhU$7!0XB-24=xo2%oO)HbW?pNFyi@# zf_OEC%YpH9HcQa(tX^3~Whbbg&iBE9K=XT1AR8!@c$Wy0SC9wofk3b}SkPS<45R=C zqxSsm{C^Q)tg{jcqD_b#k>*QKp`+<%;XMN-z02z%-#5-Tw1sf?W*bYO z?eRoIxG7Fmrw8t=g-WF@ZbEgTq^2C>y2}>cIEZyQPW3g=XD_(OnU?z1F#r8Quy-p? zb>7ROC=kM_p&Czgg;}dWN%}^9LA;CJCIte<4`D90|lvkVA6i(X@k*OM}oyHZLp5BP{ zYbH09Rv%p&qn00xj+-0kZZO&ZtR;50aeZqnDD)hCb#yFlL(HCN2*EIyTL)&pd9@8h zFw$B*8#bnUzy2Z=XhaD5<*>nBi7&Y9mBlWHndt9!gpG)Xisgi*32wP5CGHRF`B}=j zme|9Qjw`|RwShaMwJYq(Ef|CzZ&1yJ2rr8F_j^`*^gBg<#oxqx#D=pNx9_2O_Fsl9D3LmNig`1lIB4 znw_$38YmOq%!d%O_-kWZoZm4r@nAG#J?A-tf4zG4OTqli?RF~BWpW~O*UD!(^^i&} z(eociGIp5-Rh+{5&+tF9w6oZ}Ic2xrR-;}HC*E%-ejbf7sh$1s+J1gD`|y)4bY`0Q5Xa~zH!ak)w{vG>?hMgF?_FPql0JvBTx%-RO9sJI44BGv zb4LqvN6SJ}V{p9<$Jz^t6+!8>6Wphmy1f8DpG$HluuSEgKLfohWFXesyF%={`deKj z%UzKLc-`Vy3yoEdrpP6pVtVaA%#wU`DKIVywRLjJ*t>6i^_6GY`c!1#4rfc+<696X zBHcjoX2;ywxL_;V@){-f@POEGN)sjHUo~3B_K<#;XZ=#2U{0(1X_F*%WMZ_8pI%#2 zO#Tn;j&A_1ndOjiHfy#(F)8=eR&{5l4PF-PjR>|HTAr*ez~`R|kbO6pQL?X)sN^LC zVtla{`GV~8yyN#x+{*xqAze{UvIWdegBC`u2-HG`^hV;w5#EQO#q!RtaQ%!lK!P2= zc4w6QmOxaxG(~~e-<+T0HJI4?-(WGUcBPl(Sc1KI6W3X;qei`Do3us142ME-3?m?L zVA*r#{W$cr7}j`B0O5ebgX37KJ*b0f-y*q2KbayjtxM^1R_2S&xO1MZZs{d8ty-Ly zFqrGtDTyCu_s;?83vu)-*%8{mj_S9%SPBr{=b@x2{*1(Z4TqI-`V6oKg|T`=alQGk zwCQU{jzk9wTOVmcAP3J&pNy{Vy^wdNpBb@14N|%!?w137EXo&N+@qI5RPq%WYc$G3 ziwz+V86c{WTT~slS2mOC`pJ^amC3ot{%vc|C|@t*&n7FHDv!RrfY3OuAnzq_^@w7N zB@O|4qrp0-wg_%B@kxzwl$}TO^|CfeAWYobkAO&MFgQxE zC5j4#PG+AbjUzGv2Tame3xyp9h&uDA2tYlcRlZnYet1#yy&_nLoZ^OSc2}`SK1E2< zs?$CSoGSGf>K4|3LR4zkHSi(atGEXEFx3*GGos3PICK&i{M8MK9rC>e&=+pkbP?@) z4Ok3&Nn-x9HPrMHE=kck4_!T4MiAah&|S z=x2Rr0^zN`d0B92OgwOBBL79grckHw<9_=NDDaM9b^n#5I{7E~ksJgP)~3aY0+@8f z=~Ei0>_3ie53|SWRth-1o`{T1KoA^ z>bJ}MZAAw~_2J(qKWOb|Ey!mk-x?8Oka0g=IO-qyL+I>-kxINeT(Zco+X$(5NL$mB zvBm0E&9=9dY#U~Z=aL)@a!*XYX)=flX2v`lhzJy3_Qpe;iWcvB2dOD2IEg;a^*c5& zKeoKCbj^nrUlPsk$UtHmEYecf^x9AF%+Rz=*P~iY-2_ha#^29AyD!}lN{E_k?kkL2 z7~5&!uC{VNr(!4PMy#K()!P>>f0ki;LG<&;7Rx-N@at8U>FSndizbE&5vyxueJaYz zov}Z@CdoD|@Z7cyua9O|BComx4krZ^whgf5_(0OrLlHB;UBvX%?H+3PON(H|f##iX`Vz@q2 zD8DpH&|gYD`zY*Ji^yxVucUw{x1~;r~9C!&eFmY zEwReMW5*7~$je(W%+hwnjgvLY;P^a?-B#>qO5}S}aFL4i@R7^>2w$4)vVR(7s6B=s zK@Vi{2&&0&lE+e`mEJT{<|K9pDSUYSe3#!92*(SjxmHoY#RIARyjYYjH=YW(6T^q| zD+{2pC=G>&oTEB^QaSfjxFBmUC+9)c{Bv!qKbVxO`!`uDm3H$s`E35z7Le-A~Hn z*DE_1H2heeFE4o57A10EWc7Y{VoRC9u%}%JlEsVHH;Fg2)Qa({E#N+c!>U|3b>#~e zCmgUjWlZ|Yg|4Sc5RS0pD!(r&^wb`dlK0ef1CO9{pLm9>Ltn|Y*q3eUk!+G3?m5jQ zcS5ZzTUHx`k5JTLu;V*@_YF?`(QsOqsyR1YC5= zy%ga2E#K7RdA4N0#AzJLCBzchUnbzJK%u#1Wh*stolyr^A$=nwBmG^VtZywnNd@&` zU%R`PH#%!&e?0nYyEPUMhR;oXN=!_wiijI8N|+st7B@NGx^nce*A_Hz05rt^eb@hA hK6sWeM{d0t+jS^c4S3=G_m?2(EKCdQL0H}s!~H+)Rd^AqErnfq%EPXnW}k+SgP9Q1(?M0V)DS_5o8J3=eZRiH_rv{g_C9B=^Iz-i|K5A8eOAKF8`q8<7Cp?v z!*dL6sAtZ@14#dKfevvc5pAj;xE=p}4ElkI$vN&V59m+B!;`(xXv6KmUIqp}{}%jd z80RScJUoI_wB8lVz-K>aOiN4V@$IV@U7d8U4K|@I4wPN(&LHU($y&-t1eV+!B0+P` z*VWD(WXLn@7rVU$&n-&dIZg%XpY@e3l6vygnlVIr;;!+};E=<)vr)v1a+QV`Wo?@4 z-SmqK)9VFuL38VzAS6trd#GuF=5wu|jSQb%(DwcIA@3v)d5KC>~en14)Dj9C2r>qw9PQX6u2t)w-q3h0~}F-Qe<@9(~=WZTg~gV@6* z*PB<`eksaRYk8=khyGg~^Ls-H zx$VEeAh}y_0{38d87Yfp_lx2|(;M@e51?6%oX@|-x+HU%Q8+<}P@*&WaQ78PBAR7O zqS^-nW8Cz#W_P;^iLKkT%sTc!>#z}zL$K?JOVy5B9y5vq2GQdqcE5Yk0ybyDsh5-D zr#H8*)+u*Na){5{H$hyjONFpq=xP(lP>NT8k&2Elt5S6ka426I$9m0ZKKit_?!Y@E z0I8}y3-_CfN7s1rzLkc{ZxkzX<_2cB)>kTb@pn2UEt7tEbahg}^`<(QQWqU2H5DzU zNxh-9-mq6#NofBDjETJfC=)X>W=iC3ZC85X_w)BX%a1(b%KPp1H+`z{?81Plz)A(j zSI*byPPEm3WWwe`FIlw~lqonH=wQD0u;EeDzTJAaMqdPp*1??hln&+mMZ^1J3#-w_2+=XyZVegE zV~W2o7d!(5#z;}b)2Z9JF`#!9X`C^G>Zx1CWWvpJ09+CBfH{4PH`LiD-L-Im$!y2h4F%r>~m+}>-*<*1-Nq~-)YT2ZkZWRWQ*<4 zcpfiJ)Dm0M!WcidFHofaHizZu86)?4+E_ybA5G=5>Wt2TvD7M1yL7b}?DuTbp5tAA zI~3l5E`+0WfnrJ?2deFm_(da6Z75G>p!axs?@Od8Q24B?#oVDJIqp~UzS{a?-SvVd zLR;Rjw4REtpi?|`3BZ^V;60Yx#~#U}K_L(K8Y&4jvH)C}vbfW*B>|8ZK2s(9&sA$> zFa=bn0Kmxt`odEc90jPCwO?}>B&suaCeHCb;_NgQ5{5s3+Z4i>81WDeSX|cVKAmZw^l%awa{z3}rl@~B!CmyMopFWaiGLv2grGzA$ag!%gg-J z`WD(;w%euyfrut)zFzXuNuDatwY*k%s$S_X-aS+EceOiMEmlQ}S65<;VA5g(>f4Y{ zN{IF5N5ILxto~0kTMOIiF+~M(`ZxB(qNT$dubIx(uCY7!6;Aa_>Hf1w6>Wn*X0^yq%gxa7=^`1) z*1Iz*;x?Cv9S*_3nDLKsFKp#-`S~#<^gR(6py(pY?@4^T-;>qL!7ToD%Bd#%9oIy1 z4*9y4_pSH{e)6?BfKy_cR@L3$ed`45_y;2s=?#G#avRb}$n~xMNxbzt?UkSK zj$~fP-x-1V(_+?tSx!@SEUivJN3eq^35bD|fh4K1d;VRqdmaK%l<`*4Zg%OnD3hG& z>qPXaIZKEb?7cZ~A>U4>_E=y@e$~@c+CNtu%gK>S;MD6U6^?u#xex64nmfxdCh*Bp z6CN^vF$SMa?A^UOQ=hJ6M<0hmq`f$p?Wxn@y`?}~`(rTmhI8HE)%cHIwj<2 zNc6;ME<$d;xlbg+(v64In0+xeHlkf%9Id)wMj3f<_=r_0sSyG9wloS|&>ow?nhd;g z)fk(X?r;%=h&J!ceDxg284~MxSKSluv15$866H95MaN#k0xRPZ%x{$`D{qQ;h6Lcw zJBCO9NOYW+%}{}e*1@Uyj`Jx0`%`R9yxk%33%rr3$=<>5!Oi5WI?nE{3pkJWB3F4$ zKp?jSeJigh_4PA(I~oZD&`WOGx;}kR$SZ1W7r9iSd!hb|xv^cXLeh8gJd^TaW+z~{ zXh&tKY;GQzeUMGU26|9)krI&cN9*`Pt;mMp;knV5j#SmQV-w#~m6dpLj*hzu!KJ6< z269CrYqFz-41TJ*(kXN_L&LB(c)6u{kn7Nym|pKDZ#Te9NF9Is?hM@bfxK6!W34ms z#m8!w5uX|%?SzM67rQc!7{H`z4(TqG2kp7K7UyR#j^s9yH}T|9eExfdmRDfzSSs@- z)#i%a_r%>U3zg9xPtCU1FjszkUraMF7-$>a_8U~Rz_{OG$se1#H8s-hi_7#nT292V z1{&iJZd~A!;j*qp&V5%-qL9<-i{CrWS4>!^ZQSWLiJ4c5)vunuI-H`K_O!6D>VoSF z1pH`Jy6?+Ay8qC|*x!Ds%3jFlcv6kXacp?=$c7shhP$V#5t!wno~(nxYPl?@Ou9F| zAHeAi6L;vU;L(Ve`YBselz8PuLazg9FAih=*;j&62-B zds~X8uU@!s(*Gt(!wpXM7%~%@GDjh2J>lPTB9t_s5O#Wf#iBaKLJ}KhnC2V-Lv5AU0-+LRI4}uVL(kAiSZn6FKqkSZ;cN8sN zUX?L*?3jJVeN-uJf%#(s3UZMOjk_xjvt#b`YJ}psnd!y! z?uQD~0>N)q8Nnx&#VQ z74VsDMD6z<;AWBF=ULH5UWy7}av}y3L4CyVy_LA-{eJpD_S$2O*z`-S-=vGP$~=BP zPyrO(Qm#BvoMBFC=$J@L3!t5_p{x#5_gpG-oI-j|hioMzvF~VM-w91TY2;87YK#rw zzNC8nO``^unt_DW5A)*Nyt*%$Nk5=ZXw^>Ga!p2D*k5SwinfOWaB}78ornWV8aw9;LJ}{=T!a%|<_{XQe4J2@-XVeWd&$l?@+eNrc2U{?m zB`+fjWFe4XmA2ly46#Ma)HGBumE5LQ#f_;&UtKC8#Ti@B@J$cSHo@3bWm{Wl@VzAb zs8QdDEiSpIr#YeKHgCs2SxC{7Bf25C=RDF-qwM>Gf&g5N!=<&7b-K6)t0PlC)qu+1 zN9uWP?H#^e<}^i>H0ZX$9G&e~vrE+9oKb@{EhNxszoTb{m$C6Euia81Mui>wK8IYr z#rm{9u48l$*l{)sS$Se7pHYr-sp*VH*evffuh5!T+#cu+WFQ zZ}(qk1rsR+9rU=Zi#-kDO!o53_W>wu|I<>ARoHIERKO<6lzU(>GF< zWIvj$BSI7?jC$Qmp>V7uAjSOOz@Xw=pDiH5eWzh|h55EGY<&{+AFckOeZwg9@aL8v ztE=xx)#Y^O3)tF>oGvFTF);N^_G~jq+ao+*K#lrfyZ7$o!tcTwYb}_yq5I zbTU#Yh}3`-Dk@D)tKM%W54RPRT;weRpX0kX#UJZ(X-?VsV0deFTFJCNEh6N4ygFy238RAxg5KKq?_!|Uy zSyzz|(SF$C_B}7hVArvAy<8+9@{rcSRoiO{BKWKuI`+q;v=0t}qHh6#0^PgEJ4qwf z6`q&0f`e~|dopC;>6cjgo3}D*BT^&UACsuPG-g|K0t65#6nGdRB>-_YJMjc_55}yw z%8Wi<1O`O%C*y71#&nwrATTel_(>)rB-5wnIaiUIg1_{t_vy7sa}7Y``CPkug+_+l zjNUGE3}^dZ`DeYp&T~G;!tu4U*r*5{)5l7peUAjsT+w;%G!=T-A#<@p8XI^91UlM@ zDTsPq=eUz72Lv9v_kG0H+oUm^RiLc~72pa=2lO}ZTVQ%%O#zBkvQ-`x!kzYD&{0ca z(<>jIMW28PI)&(KC2N%mLPTC83!_9VtdxllM&BTKc_oIrEg*DtKDp1{YhTf;_OjfQ z=HxgcMDH9$D2a~`3K1!)5}K?qyQWv(AbkH75NJ^T^Cdk0mBSq_wz1y=lH)Oyl2)gm z;|B&A>pifQ3!AIn=Xe#Su=ugQHgs0N96n%<&Qt$&rx6wSGaI)5b&)vN>a^L`My8 literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_fresh.png new file mode 100644 index 0000000000000000000000000000000000000000..a913aeab6f7a0f0ef6b895e4eb87ede0eb4b00eb GIT binary patch literal 2783 zcmeH}d0Z3M7RM*!2otn85SQ2@3`R`?5rb3(p%79Cpnz+E60M0K^|6FaHmwi@#8^am zDvM#KwN`>?kg)k4Ay`y4sfvIf30g`}WDzVP+oLz3^56UOy}$a$+&lN4Gv}UjKJ)v2 zu4uQr(Oc_miHoztUI-#wP(P>^*b&xlZ3dI>5ib`%H#ZaT3Zd!&g3|jdz6KL9 zn8OLzY^aB4CbCut(mCkjV81^)d#Kwj)xgoP;U$A-Q8uKMCh>b0;pc=)@VaWfiMOXm zPoGG!6s|YpQPv%*Gcv`v(@T@;A1~h0H+BCzQ#(qYleD^BD!Jr6R!S-C%@fzu)M!D~ zQ@jCfh?j*R!ZSh$)5D;(FwAmbL1$1D(jyS?wK(MPxAA}8gvp}=+WEShYP)9Ms>)PN zW0TbL73T$c+jjkQaxL$u2mVLl-CkAD=Z$%u!9HW}c8Q0|lEu{0ks|oXJ)K15^E;jY z858u4R>s_3;v{-dmfUi2Y+SmTeyD7F{Pw`%;o+;XS|+5)77tg3vxf`{AB&BZ#Jv>l(I*NW zgrjODmVW?Z5SE)3(28Z7wfrjd>Gt#@e(o2~ZMsUlc!EIwuf;#M)L*gS9&FCp$jGEe zxo27v;*&!96RY$vFB~ivfv#LPn3{5l_Ev@~ydYYj8uppF({>w!BhFMX2Np`4}b^-QL#X|S@+U8OL%pS>3kZ(uP zwkt+UJE=H}Dl6^O!;V*c_S$wl9IDsX_}}(RAx_Ury=1kI!j@1Fr6j^{aLvDew1rH1 z500^DM4sAf=+Jg{$W)i8h6EpLwa<@*;oFB(h{=BiAp0ncfdK>_KRbaTZrAQ# zK;6<-=csEJg-n{orSuj9M(aEdv-hibpdla{03-QQ+VJj81cG~5+J$gU_Dstn*L-(a zkslbx$QUv;TVSZL2-Krb;D>-NMCfBLXg;o$^JGmhoqnZmjUL#XVEwhJ#;ww4`s`Lv zL<}gxMN`^aLm$_pU$V&Adp7K*svS~@K@0h&D6H;FE4A65Eik)?`RJro;GtjBh0H4% zJzM8Ob>VRgy})pUTWr0G z_?peSmK(H@d|G%@hf{dKZ`|G!R$K=zvwE1v1Lx(Hxx$;?oI-g7lGtvc-xt?t!0>T> z#b&+8t)aA?6UuY9^sF&&NW6g{sUcB_840tjb6#$_i}m7Ed0;@5v$H1*Z|r({YL1Gx z#i!BUZX?9Af+%|e52ayP<*789Bugm2oZ`S&^GN!88m%Go0*1ZHs-Z}dgmNf7GU_gw z1gN$sEGqE|5nbBsyxf01&itoUa6pwdo6X|+%F3_(;8otic5fK@N4Jg z;7>j+WI2LbTw(aKxqi|u6y1Nl<)fkR`5HbAhD}5KxlLr!jh7wKe8)!F)0Xd58BxV) z54Rq2pS59#h4RM1o;CDu@qKp7nm`VFYc9CX8Za^}KH}@|OUVD>CN@UphsAtxg)JBW T_s#!)FNItj-5qYQd8hsa>$SHE literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_modified.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_modified.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4cb8fa1870c49dfb7843ad8a4d4ee836f13a29 GIT binary patch literal 3113 zcmeHJ`#Y5D8vbUC%&=upq7^eNhn5_7QI7Lvkwc-Sa;TA!Lm^Q_<2X}oP^>VTEaTKAGEPfFGY%OwreTd4>`(o&f7yS)x~}!Z_rA~jywCgG_j7;O`+ZN& zaW7Y8#odYk04Te=Ir{(rjI#A0w?Q6Kn{_WVZ4dKz5BKymhD-ptH2^^2Y*PRhM`0=MT4&_RjZd z2Z;Ytnuh5K;kr&9Jp#3A@aJF0k3JviTFz)}V2t2Cm6zDeitbXhyC^wYQoC7MVq#%e zSCx=NAldeJ{N(CQz zZQi&uDa6m=LQ%)~Fm0LM*|6&BXz~ya!CGk!DI0BO=k$#&QhR1*X6Sk3 zk|ZeZnXG+^r6SeU?~HWuC#=LMli2+*ZhxJl zQ)HdB@=~s6FkN}uCv|i)^Lr-2E*v{CTE@pn`KrNRj)Bb$)HHk@yEAbeY%Q;UBM0Mp zy-wM1RkEKcFDxd5E{R$bD%6-p=E(qZtPvk0=4=aDKxEiiZfa8NEq210?|N~MJpHTt z{(;!d)iD_gm*4V?O{)e^6p`w!M0t++6zIrzaHelBZY}&J(=Z&{UORCk)3XNT+>$6H z(gn9zk^?bc_c`)6qzn#o+PAZyA|`SvsplvG8iAZb6O8ScxNydxVb}($f)rzjZ@1zAH&To*NgP_PTI3?Duw z1S7XM+gn7D7Z8DZc-x z2k--IzRc7l(sJ`c9x48qJxPkD+=1k}r&PFtbnEKHRlC@a>0`A;o}Q+BOtc!sD@P$V z2tN3O2-2ft&=5ACFHvaBc5Ojao_P8AaaAvFds&pH8fANqLgTkmH8~Ejd5T2A>Nz2z zh!p?3?8fO=718iP-Kn7=AKw-}MxaLNhomSNu9Iw~*$>I^;d&Jmp#@>6=B=RI&ZnG^ zYth4ML+@Z2eoLTExl{a&A=fB6x#C2YVJZ;;~KAzJLnky}j|_#kZR&Cmz@$1KtT zudm6>;e&@nDuf_JWbtpS@uv%5cU)Y}R>$)&P{%l-Dtdnk4ONs9xoj9 z-8FK#<%44YxxP_6+}*yA!IV{a>%8uH$L>tWNy3CbN@gqWv8X&rwW&SXtx^-`K2d5YqAfuriVK@G?SVf!&&jPWIyRCV+d`mlVoD*8x6U!2#g(6I^d z3G|K7$2Zy1hpnQGX63$QlHxtU;z}A#{Y>E7{k=F@`dksog2;G5xR1yPfTFbd7$mYG zoTl`8CMV;-{EO1?obF5cPa~ews*KPpeTo@|lZ@e0OOt_@+Kl(w1liSqb9aiW+S;D2 zeYWaU%vfrU&{(`ldeb<*q!L4mYFHK%WhuhY#Tfz~4v(^SctV>n>8W_J!Ij^kg+$^z zeMiE1QL%4Er%L(|2nK=n@!4{swp3G->KfePAYQ39J4iW4kcY1hz4a}UD11a966P4S zb<1>{r(SG9P9ILwUQ-G@3^Uk~M}1nJZ%Pd|@VV~8AhYiYZ|>~D=O>SsrdwFZkyY`l zrvrH*C(b@7POtCR(6~*wb0(0F!5d&LV15e1uy+=XrQro3yF~-%lP(5#WOzobmzesuBU#JGFAa?jV|$af>2Wy&j$iMJ{$r6C}}S zvSeOcW1hg0-=m1IjT74#HAP=lrUsS&6eI>q?DwPRdLKayS0@kTwy2@!IMz?~@o5e< zK7u)iCwzhu{WcT?_-fysc^ Ka;|eCT>mfb=(dCa literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/torus_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/torus_fresh.png new file mode 100644 index 0000000000000000000000000000000000000000..c026a756f2de14673ab5fbb51100b0ddbdd5954a GIT binary patch literal 6609 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 LJ4W>e9tr;g_|EgE literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index d5d8f2a657..f1ff77140b 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -24,8 +24,11 @@ class TestNurbsPrimitives(mtohUtils.MtohTestCase): IMAGE_DIFF_FAIL_THRESHOLD = 0.0 IMAGE_DIFF_FAIL_PERCENT = 0.0 - def testSnapshot(self, referenceFilename): + def compareSnapshot(self, referenceFilename, fitView=True): try: + if fitView: + cmds.viewFit() + cmds.refresh(force=True) self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) except: pass @@ -34,13 +37,12 @@ def setupScene(self, nurbsCreationCallable): self.setHdStormRenderer() #cmds.loadPlugin('ArubaTessellator') nurbsCreationCallable() - #cmds.viewFit() cmds.refresh(force=True) def test_NurbsTorus(self): with PluginLoaded('ArubaTessellator'): self.setupScene(cmds.torus) - self.testSnapshot("torus_fresh.png") + self.compareSnapshot("torus_fresh.png") makeNurbNodeName = "makeNurbTorus1" cmds.setAttr(makeNurbNodeName + ".startSweep", 50) @@ -51,18 +53,16 @@ def test_NurbsTorus(self): cmds.setAttr(makeNurbNodeName + ".spans", 6) cmds.setAttr(makeNurbNodeName + ".heightRatio", 0.8) cmds.setAttr(makeNurbNodeName + ".minorSweep", 250) - cmds.refresh(force=True) - self.testSnapshot("torus_modified.png") + self.compareSnapshot("torus_modified.png") cmds.setAttr(makeNurbNodeName + ".useTolerance", True) cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) - cmds.refresh(force=True) - self.testSnapshot("torus_tolerance.png") + self.compareSnapshot("torus_tolerance.png") def test_NurbsCube(self): with PluginLoaded('ArubaTessellator'): self.setupScene(cmds.nurbsCube) - self.testSnapshot("cube_fresh.png") + self.compareSnapshot("cube_fresh.png") makeNurbNodeName = "makeNurbCube1" cmds.setAttr(makeNurbNodeName + ".degree", 1) @@ -71,13 +71,12 @@ def test_NurbsCube(self): cmds.setAttr(makeNurbNodeName + ".width", 4) cmds.setAttr(makeNurbNodeName + ".lengthRatio", 5) cmds.setAttr(makeNurbNodeName + ".heightRatio", 6) - cmds.refresh(force=True) - self.testSnapshot("cube_modified.png") + self.compareSnapshot("cube_modified.png") def test_NurbsCircle(self): with PluginLoaded('ArubaTessellator'): self.setupScene(cmds.circle) - self.testSnapshot("circle_fresh.png") + self.compareSnapshot("circle_fresh.png") makeNurbNodeName = "makeNurbCircle1" cmds.setAttr(makeNurbNodeName + ".sweep", 180) @@ -93,22 +92,19 @@ def test_NurbsCircle(self): cmds.setAttr(makeNurbNodeName + ".firstPointX", 7) cmds.setAttr(makeNurbNodeName + ".firstPointY", 8) cmds.setAttr(makeNurbNodeName + ".firstPointZ", 9) - cmds.refresh(force=True) - self.testSnapshot("circle_modified.png") + self.compareSnapshot("circle_modified.png") cmds.setAttr(makeNurbNodeName + ".useTolerance", True) cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) - cmds.refresh(force=True) - self.testSnapshot("circle_tolerance.png") + self.compareSnapshot("circle_tolerance.png") cmds.setAttr(makeNurbNodeName + ".fixCenter", False) - cmds.refresh(force=True) - self.testSnapshot("circle_unfixedCenter.png") + self.compareSnapshot("circle_unfixedCenter.png", False) def test_NurbsSquare(self): with PluginLoaded('ArubaTessellator'): self.setupScene(cmds.nurbsSquare) - self.testSnapshot("square_fresh.png") + self.compareSnapshot("square_fresh.png") makeNurbNodeName = "makeNurbsSquare1" cmds.setAttr(makeNurbNodeName + ".sideLength1", 2) @@ -121,8 +117,7 @@ def test_NurbsSquare(self): cmds.setAttr(makeNurbNodeName + ".centerX", 4) cmds.setAttr(makeNurbNodeName + ".centerY", 5) cmds.setAttr(makeNurbNodeName + ".centerZ", 6) - cmds.refresh(force=True) - self.testSnapshot("square_modified.png") + self.compareSnapshot("square_modified.png") if __name__ == '__main__': fixturesUtils.runTests(globals()) From cf3be32ca0dbf2453d8de041f877ad636c072126 Mon Sep 17 00:00:00 2001 From: debloip Date: Wed, 31 Jan 2024 18:04:09 -0500 Subject: [PATCH 03/17] HYDRA-780 : Cleanup compareSnapshot --- .../render/mayaToHydra/testNurbsPrimitives.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index f1ff77140b..e456f97900 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -25,17 +25,13 @@ class TestNurbsPrimitives(mtohUtils.MtohTestCase): IMAGE_DIFF_FAIL_PERCENT = 0.0 def compareSnapshot(self, referenceFilename, fitView=True): - try: - if fitView: - cmds.viewFit() - cmds.refresh(force=True) - self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) - except: - pass + if fitView: + cmds.viewFit() + cmds.refresh(force=True) + self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) def setupScene(self, nurbsCreationCallable): self.setHdStormRenderer() - #cmds.loadPlugin('ArubaTessellator') nurbsCreationCallable() cmds.refresh(force=True) From d82d259d7d62f12b7e93c9a4ad7298e241b5a4f1 Mon Sep 17 00:00:00 2001 From: debloip Date: Wed, 31 Jan 2024 18:23:18 -0500 Subject: [PATCH 04/17] HYDRA-780 : Remove need for PluginLoaded --- .../render/mayaToHydra/testNurbsPrimitives.py | 128 +++++++++--------- 1 file changed, 63 insertions(+), 65 deletions(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index e456f97900..a11fd58a36 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -31,89 +31,87 @@ def compareSnapshot(self, referenceFilename, fitView=True): self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) def setupScene(self, nurbsCreationCallable): + cmds.file(new=True, force=True) + cmds.loadPlugin('ArubaTessellator') self.setHdStormRenderer() nurbsCreationCallable() cmds.refresh(force=True) def test_NurbsTorus(self): - with PluginLoaded('ArubaTessellator'): - self.setupScene(cmds.torus) - self.compareSnapshot("torus_fresh.png") + self.setupScene(cmds.torus) + self.compareSnapshot("torus_fresh.png") - makeNurbNodeName = "makeNurbTorus1" - cmds.setAttr(makeNurbNodeName + ".startSweep", 50) - cmds.setAttr(makeNurbNodeName + ".endSweep", 300) - cmds.setAttr(makeNurbNodeName + ".radius", 2) - cmds.setAttr(makeNurbNodeName + ".degree", 1) - cmds.setAttr(makeNurbNodeName + ".sections", 12) - cmds.setAttr(makeNurbNodeName + ".spans", 6) - cmds.setAttr(makeNurbNodeName + ".heightRatio", 0.8) - cmds.setAttr(makeNurbNodeName + ".minorSweep", 250) - self.compareSnapshot("torus_modified.png") + makeNurbNodeName = "makeNurbTorus1" + cmds.setAttr(makeNurbNodeName + ".startSweep", 50) + cmds.setAttr(makeNurbNodeName + ".endSweep", 300) + cmds.setAttr(makeNurbNodeName + ".radius", 2) + cmds.setAttr(makeNurbNodeName + ".degree", 1) + cmds.setAttr(makeNurbNodeName + ".sections", 12) + cmds.setAttr(makeNurbNodeName + ".spans", 6) + cmds.setAttr(makeNurbNodeName + ".heightRatio", 0.8) + cmds.setAttr(makeNurbNodeName + ".minorSweep", 250) + self.compareSnapshot("torus_modified.png") - cmds.setAttr(makeNurbNodeName + ".useTolerance", True) - cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) - self.compareSnapshot("torus_tolerance.png") + cmds.setAttr(makeNurbNodeName + ".useTolerance", True) + cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) + self.compareSnapshot("torus_tolerance.png") def test_NurbsCube(self): - with PluginLoaded('ArubaTessellator'): - self.setupScene(cmds.nurbsCube) - self.compareSnapshot("cube_fresh.png") + self.setupScene(cmds.nurbsCube) + self.compareSnapshot("cube_fresh.png") - makeNurbNodeName = "makeNurbCube1" - cmds.setAttr(makeNurbNodeName + ".degree", 1) - cmds.setAttr(makeNurbNodeName + ".patchesU", 2) - cmds.setAttr(makeNurbNodeName + ".patchesV", 3) - cmds.setAttr(makeNurbNodeName + ".width", 4) - cmds.setAttr(makeNurbNodeName + ".lengthRatio", 5) - cmds.setAttr(makeNurbNodeName + ".heightRatio", 6) - self.compareSnapshot("cube_modified.png") + makeNurbNodeName = "makeNurbCube1" + cmds.setAttr(makeNurbNodeName + ".degree", 1) + cmds.setAttr(makeNurbNodeName + ".patchesU", 2) + cmds.setAttr(makeNurbNodeName + ".patchesV", 3) + cmds.setAttr(makeNurbNodeName + ".width", 4) + cmds.setAttr(makeNurbNodeName + ".lengthRatio", 5) + cmds.setAttr(makeNurbNodeName + ".heightRatio", 6) + self.compareSnapshot("cube_modified.png") def test_NurbsCircle(self): - with PluginLoaded('ArubaTessellator'): - self.setupScene(cmds.circle) - self.compareSnapshot("circle_fresh.png") + self.setupScene(cmds.circle) + self.compareSnapshot("circle_fresh.png") - makeNurbNodeName = "makeNurbCircle1" - cmds.setAttr(makeNurbNodeName + ".sweep", 180) - cmds.setAttr(makeNurbNodeName + ".radius", 2) - cmds.setAttr(makeNurbNodeName + ".degree", 1) - cmds.setAttr(makeNurbNodeName + ".sections", 12) - cmds.setAttr(makeNurbNodeName + ".normalX", 1) - cmds.setAttr(makeNurbNodeName + ".normalY", 2) - cmds.setAttr(makeNurbNodeName + ".normalZ", 3) - cmds.setAttr(makeNurbNodeName + ".centerX", 4) - cmds.setAttr(makeNurbNodeName + ".centerY", 5) - cmds.setAttr(makeNurbNodeName + ".centerZ", 6) - cmds.setAttr(makeNurbNodeName + ".firstPointX", 7) - cmds.setAttr(makeNurbNodeName + ".firstPointY", 8) - cmds.setAttr(makeNurbNodeName + ".firstPointZ", 9) - self.compareSnapshot("circle_modified.png") + makeNurbNodeName = "makeNurbCircle1" + cmds.setAttr(makeNurbNodeName + ".sweep", 180) + cmds.setAttr(makeNurbNodeName + ".radius", 2) + cmds.setAttr(makeNurbNodeName + ".degree", 1) + cmds.setAttr(makeNurbNodeName + ".sections", 12) + cmds.setAttr(makeNurbNodeName + ".normalX", 1) + cmds.setAttr(makeNurbNodeName + ".normalY", 2) + cmds.setAttr(makeNurbNodeName + ".normalZ", 3) + cmds.setAttr(makeNurbNodeName + ".centerX", 4) + cmds.setAttr(makeNurbNodeName + ".centerY", 5) + cmds.setAttr(makeNurbNodeName + ".centerZ", 6) + cmds.setAttr(makeNurbNodeName + ".firstPointX", 7) + cmds.setAttr(makeNurbNodeName + ".firstPointY", 8) + cmds.setAttr(makeNurbNodeName + ".firstPointZ", 9) + self.compareSnapshot("circle_modified.png") - cmds.setAttr(makeNurbNodeName + ".useTolerance", True) - cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) - self.compareSnapshot("circle_tolerance.png") + cmds.setAttr(makeNurbNodeName + ".useTolerance", True) + cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) + self.compareSnapshot("circle_tolerance.png") - cmds.setAttr(makeNurbNodeName + ".fixCenter", False) - self.compareSnapshot("circle_unfixedCenter.png", False) + cmds.setAttr(makeNurbNodeName + ".fixCenter", False) + self.compareSnapshot("circle_unfixedCenter.png", False) def test_NurbsSquare(self): - with PluginLoaded('ArubaTessellator'): - self.setupScene(cmds.nurbsSquare) - self.compareSnapshot("square_fresh.png") + self.setupScene(cmds.nurbsSquare) + self.compareSnapshot("square_fresh.png") - makeNurbNodeName = "makeNurbsSquare1" - cmds.setAttr(makeNurbNodeName + ".sideLength1", 2) - cmds.setAttr(makeNurbNodeName + ".sideLength2", 3) - cmds.setAttr(makeNurbNodeName + ".spansPerSide", 4) - cmds.setAttr(makeNurbNodeName + ".degree", 1) - cmds.setAttr(makeNurbNodeName + ".normalX", 1) - cmds.setAttr(makeNurbNodeName + ".normalY", 2) - cmds.setAttr(makeNurbNodeName + ".normalZ", 3) - cmds.setAttr(makeNurbNodeName + ".centerX", 4) - cmds.setAttr(makeNurbNodeName + ".centerY", 5) - cmds.setAttr(makeNurbNodeName + ".centerZ", 6) - self.compareSnapshot("square_modified.png") + makeNurbNodeName = "makeNurbsSquare1" + cmds.setAttr(makeNurbNodeName + ".sideLength1", 2) + cmds.setAttr(makeNurbNodeName + ".sideLength2", 3) + cmds.setAttr(makeNurbNodeName + ".spansPerSide", 4) + cmds.setAttr(makeNurbNodeName + ".degree", 1) + cmds.setAttr(makeNurbNodeName + ".normalX", 1) + cmds.setAttr(makeNurbNodeName + ".normalY", 2) + cmds.setAttr(makeNurbNodeName + ".normalZ", 3) + cmds.setAttr(makeNurbNodeName + ".centerX", 4) + cmds.setAttr(makeNurbNodeName + ".centerY", 5) + cmds.setAttr(makeNurbNodeName + ".centerZ", 6) + self.compareSnapshot("square_modified.png") if __name__ == '__main__': fixturesUtils.runTests(globals()) From ed6339d24571a04c99fc7f3ac5a675741d394e20 Mon Sep 17 00:00:00 2001 From: debloip Date: Wed, 31 Jan 2024 20:44:39 -0500 Subject: [PATCH 05/17] HYDRA-780 : Add comment on why specific NURBS were chosen --- test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index a11fd58a36..99eae10671 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -37,6 +37,7 @@ def setupScene(self, nurbsCreationCallable): nurbsCreationCallable() cmds.refresh(force=True) + # Torus attributes is a superset of sphere, cone, and cylinder attributes def test_NurbsTorus(self): self.setupScene(cmds.torus) self.compareSnapshot("torus_fresh.png") @@ -56,6 +57,7 @@ def test_NurbsTorus(self): cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05) self.compareSnapshot("torus_tolerance.png") + # Cube attributes is a superset of plane attributes def test_NurbsCube(self): self.setupScene(cmds.nurbsCube) self.compareSnapshot("cube_fresh.png") From 7f804292b9c3acb7f66df86d8f9f8135f3c9a47a Mon Sep 17 00:00:00 2001 From: debloip Date: Thu, 1 Feb 2024 10:11:34 -0500 Subject: [PATCH 06/17] HYDRA-780 : Make each test have a new file by default --- test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py | 1 - test/testUtils/mtohUtils.py | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index 99eae10671..dcece0389a 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -31,7 +31,6 @@ def compareSnapshot(self, referenceFilename, fitView=True): self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) def setupScene(self, nurbsCreationCallable): - cmds.file(new=True, force=True) cmds.loadPlugin('ArubaTessellator') self.setHdStormRenderer() nurbsCreationCallable() diff --git a/test/testUtils/mtohUtils.py b/test/testUtils/mtohUtils.py index 6f6bc666c0..c768e839ec 100644 --- a/test/testUtils/mtohUtils.py +++ b/test/testUtils/mtohUtils.py @@ -53,6 +53,12 @@ def setUpClass(cls): "define `_file = __file__`") fixturesUtils.readOnlySetUpClass(cls._file, 'mayaHydra', initializeStandalone=False) + + def setUp(self): + # Maya is not closed/reset between each test of a test suite, + # so open a new file before each test to minimize leftovers + # from previous tests. + cmds.file(new=True, force=True) def setHdStormRenderer(self): self.activeEditor = cmds.playblast(activeEditor=1) From 9eb7e6e41dc01ee92d62181828cb3d3653286f95 Mon Sep 17 00:00:00 2001 From: debloip Date: Thu, 1 Feb 2024 11:51:00 -0500 Subject: [PATCH 07/17] HYDRA-780 : Adjust camera --- .../NurbsPrimitivesTest/circle_fresh.png | Bin 3289 -> 2386 bytes .../NurbsPrimitivesTest/circle_modified.png | Bin 2775 -> 2844 bytes .../NurbsPrimitivesTest/circle_tolerance.png | Bin 2667 -> 2822 bytes .../circle_unfixedCenter.png | Bin 2451 -> 2506 bytes .../NurbsPrimitivesTest/cube_fresh.png | Bin 3665 -> 2350 bytes .../NurbsPrimitivesTest/cube_modified.png | Bin 5180 -> 8948 bytes .../NurbsPrimitivesTest/square_fresh.png | Bin 2783 -> 1858 bytes .../NurbsPrimitivesTest/square_modified.png | Bin 3113 -> 2739 bytes .../NurbsPrimitivesTest/torus_fresh.png | Bin 6609 -> 10504 bytes .../NurbsPrimitivesTest/torus_modified.png | Bin 8080 -> 9187 bytes .../NurbsPrimitivesTest/torus_tolerance.png | Bin 10452 -> 11611 bytes .../render/mayaToHydra/testNurbsPrimitives.py | 11 +++++------ 12 files changed, 5 insertions(+), 6 deletions(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_fresh.png index 65756b684c1a7643f2407af4928353a24a069fab..5533030bbb28f5601fd6d269286c8507c38ae016 100644 GIT binary patch literal 2386 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 F{6FoB6}SKZ diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_unfixedCenter.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_unfixedCenter.png index da9b48f250ad6d14159712c651204a9c489cec47..adca306a0770c4156fe9ff0f1d3c1116219950cd 100644 GIT binary patch delta 1462 zcmXw2YcQK>6#l-?S4oojf=A*$^L4Q-dAq^(wTqIR}MYeqE$Wn4DsE)jf*R?DtS z^sAJy$!S^En$?3G@R%Bx7* z*w){jC)i?+PU}ZVoUqC365tU-l;9SZ6??$4XBz%|fyE6(qx%Gg6`gx~b>k?Nd{gPd z!LfYco5AkYMQ-thaakHhx>~+DP+vO&)6YJMp*JMWRg zGi6R+34@~#$d}!GdkiGbkl2j*MJFpDPnls9dj-DS!|4A(CiLajq7`2uS05e5D89mJ zq-dVG;g$_tH09@wZV&dpdJhzrrANB_ne*k-AenLAiND7^8%Se7VV1)viiHzDkG(dh zCEL7{;ssQkT&=G~LSg*PrYq)X3JMYvU5%hL2O{98r^yutdWy9tNXOA=pn&UqbKiAF zG7NM5sW=${P4R%l05SvimvR9O0;vEEjz+);0hMcI#uqMqo6cz1HMf%oqs-nCSv=AhF4%aT+T292GaSa6@^rq=|cCO||lV zq$a|^E~$;pPU0-h&cA*6iVRYC0HW_aH=}S*e?h?IUsY~6im`sgDF9EV8$9BbVDGGZ!K zKn;!E);-TbvtH^K_E>dEFEZ(iAI=YiC5N2&_pQqpT&*CBK3M$24(@FGfiqJMY~*H3 z>Q18Ptc)~u$DU)vWnYNzBT556kn-IJ5c_g!GZ6rUR^i&!q)PK6Z zy8~U1JC#X6q}}*lJnTs}SD20klT>Z-ur9>OBqG?3Y0b{zaITHpxD^3*U9c>HX>E0| zMZTIcJ8}%lQfQZ*mai`yryL~_hPDw6%WgmSsypu!c|CsidEJml`6AF63xPy8Ub8(o h2i^f=uzlNr2@i99uJo6IQhQqr5P0^2f5T};?!Vm+jD7$B literal 2451 zcmeHJSx{3~7|y*!Nwh)&PNX0qWs#PlfMNqkfGCt@Sgb+|SR@JiqBWI@aS2H@iVR?| zRE(9FVl7r%1v^E828fA}QUVO3h){tTAtI86B^aX6gECHE`qY;`_;AnnZ{I(6{_~wP zr|7eouvIH;S0E6GRT1GK+Ytz;Z1F=a2N8BNQ31drJs~0^I@%4G2-M<&Kvbyf69J(2 zgoft54lFMHZZ|qX3>y)$IgU{|@u>M^(#ZP~r5`%_uI9$6pHs39L*ZDuS-2?qVq61i zd*8;SFvo*sBB;c%Ax0ha`Gt#V0~h~#Q67*YKzapfJB^)+sqkMCzmQJt3u;sg@-iAk zqCQB{HB($?iI5P{C`1t(QHFX4??&)nRUoc2K*Mo|XEmCm;|t7r#w=Y>F6qEvM9Z9T zXSD8G-jHx`Ai$=^$tJUlG!h4C&#D` z#k|0V9TxgQQ<3VW{=O_&>>&1lI6|+->#IxsDH^pL)rC;`9hUdC_YWq&;f@AwOB=>gln6^B033j&-PV>Odsw;+KtRRQwO3zt za2`YTGNg3dO}r&Vf~*fF`)*RLMgVZ59F3WJ`LqzFvKNjnTDo-w*)ef19a7-V1(IYt_UXgmFPdItG479vTM<*$@T+-{Qei2@17T4Ab*c-mgWlV<~UUC>KUh?ZmWJOwW{>awy29E3A0z1KRe+<;R= zkP+cX?&VURZjQKxU;fXlEY@y+6=iNUE^4W!!4f&@vdDe&BkAr-XacvzZ|P%TSJlBT2r7qzmd&|$KlEz_M-mmS94;iurjOUM8XxB5`_u_2SuY4-PUzqYWK+%E{ox~Yzk}HZf_w+O1rPe z70PNu)E_2Zkxh7W=)W5x_fa@27Ztms;u-yxd$(VXNiG15IzV>X;9s`BNL0DZ2T&ty zdgL`t1Fv4SjQpCOY0L4+gq3L}fssGm23wWg3hef ywGJp(p^!76a3qo)vM8r_@IM^Eycxl9me-{F{y2Ce{rg)A5%FnE$h9rhBYy)0l5xTS diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/cube_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/cube_fresh.png index a83e5a1198341133b8028690b581319be84f706c..902dcfdc512cd57ba7f15482b2a2e0511ae381c3 100644 GIT binary patch literal 2350 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

Y!_<~;g7u^Ucg=cIX4puOT8|Dw*W#(#$}<}p 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 diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_fresh.png index a913aeab6f7a0f0ef6b895e4eb87ede0eb4b00eb..93ca8fe7ec951fd82a374e0faaed385f9704645a 100644 GIT binary patch literal 1858 zcmeAS@N?(olHy`uVBq!ia0y~yV4MKL9Be?5hW%z|fD~V9glC$suNIKWzyTr{7^Xen z9tos4^WEHv!2%%Sme#g&3=C`sJY5_^D(1Ysd)7B3P@>_Xq%(U!v%T()KxuZF2*HU9F~Zm-Y3KEK{3dhZ-tZW|Y-LyK(x?WirU+F>W9__OYx zWwl&|2TO~qwMC??ef|DgQ>UV`eVsSF63VMLvp4)sXnFD=rP}6D;kS~%NiHch=7)^z z($BMhzgV^T=9zhn%Oq|edu@LEt8cx$q2=C+HL5Bf%%wT*Ja`pmziW<)jdwXXViZ+2STi?kg)k4Ay`y4sfvIf30g`}WDzVP+oLz3^56UOy}$a$+&lN4Gv}UjKJ)v2 zu4uQr(Oc_miHoztUI-#wP(P>^*b&xlZ3dI>5ib`%H#ZaT3Zd!&g3|jdz6KL9 zn8OLzY^aB4CbCut(mCkjV81^)d#Kwj)xgoP;U$A-Q8uKMCh>b0;pc=)@VaWfiMOXm zPoGG!6s|YpQPv%*Gcv`v(@T@;A1~h0H+BCzQ#(qYleD^BD!Jr6R!S-C%@fzu)M!D~ zQ@jCfh?j*R!ZSh$)5D;(FwAmbL1$1D(jyS?wK(MPxAA}8gvp}=+WEShYP)9Ms>)PN zW0TbL73T$c+jjkQaxL$u2mVLl-CkAD=Z$%u!9HW}c8Q0|lEu{0ks|oXJ)K15^E;jY z858u4R>s_3;v{-dmfUi2Y+SmTeyD7F{Pw`%;o+;XS|+5)77tg3vxf`{AB&BZ#Jv>l(I*NW zgrjODmVW?Z5SE)3(28Z7wfrjd>Gt#@e(o2~ZMsUlc!EIwuf;#M)L*gS9&FCp$jGEe zxo27v;*&!96RY$vFB~ivfv#LPn3{5l_Ev@~ydYYj8uppF({>w!BhFMX2Np`4}b^-QL#X|S@+U8OL%pS>3kZ(uP zwkt+UJE=H}Dl6^O!;V*c_S$wl9IDsX_}}(RAx_Ury=1kI!j@1Fr6j^{aLvDew1rH1 z500^DM4sAf=+Jg{$W)i8h6EpLwa<@*;oFB(h{=BiAp0ncfdK>_KRbaTZrAQ# zK;6<-=csEJg-n{orSuj9M(aEdv-hibpdla{03-QQ+VJj81cG~5+J$gU_Dstn*L-(a zkslbx$QUv;TVSZL2-Krb;D>-NMCfBLXg;o$^JGmhoqnZmjUL#XVEwhJ#;ww4`s`Lv zL<}gxMN`^aLm$_pU$V&Adp7K*svS~@K@0h&D6H;FE4A65Eik)?`RJro;GtjBh0H4% zJzM8Ob>VRgy})pUTWr0G z_?peSmK(H@d|G%@hf{dKZ`|G!R$K=zvwE1v1Lx(Hxx$;?oI-g7lGtvc-xt?t!0>T> z#b&+8t)aA?6UuY9^sF&&NW6g{sUcB_840tjb6#$_i}m7Ed0;@5v$H1*Z|r({YL1Gx z#i!BUZX?9Af+%|e52ayP<*789Bugm2oZ`S&^GN!88m%Go0*1ZHs-Z}dgmNf7GU_gw z1gN$sEGqE|5nbBsyxf01&itoUa6pwdo6X|+%F3_(;8otic5fK@N4Jg z;7>j+WI2LbTw(aKxqi|u6y1Nl<)fkR`5HbAhD}5KxlLr!jh7wKe8)!F)0Xd58BxV) z54Rq2pS59#h4RM1o;CDu@qKp7nm`VFYc9CX8Za^}KH}@|OUVD>CN@UphsAtxg)JBW T_s#!)FNItj-5qYQd8hsa>$SHE diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_modified.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/square_modified.png index 3b4cb8fa1870c49dfb7843ad8a4d4ee836f13a29..3677d5acdf3904eb494e17bfcb430664a1f90e0c 100644 GIT binary patch delta 1702 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 diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/torus_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/torus_fresh.png index c026a756f2de14673ab5fbb51100b0ddbdd5954a..0b447403fb476bf2b0dceecab20bc68d657fab74 100644 GIT binary patch literal 10504 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 Hy2t+?FI;G5 literal 6609 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 S|NSL~&-tpW1I9k+(f7P!8?&wm&G?j|K`1^@sd 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 b5{KSLUC*M{-2C5ba{xwq4|Gel?GgV2Sd)oW literal 8080 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 LJ4W>e9tr;g_|EgE diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index dcece0389a..dffd7bb206 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -24,9 +24,7 @@ class TestNurbsPrimitives(mtohUtils.MtohTestCase): IMAGE_DIFF_FAIL_THRESHOLD = 0.0 IMAGE_DIFF_FAIL_PERCENT = 0.0 - def compareSnapshot(self, referenceFilename, fitView=True): - if fitView: - cmds.viewFit() + def compareSnapshot(self, referenceFilename): cmds.refresh(force=True) self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) @@ -34,6 +32,7 @@ def setupScene(self, nurbsCreationCallable): cmds.loadPlugin('ArubaTessellator') self.setHdStormRenderer() nurbsCreationCallable() + self.setBasicCam(10) cmds.refresh(force=True) # Torus attributes is a superset of sphere, cone, and cylinder attributes @@ -66,8 +65,8 @@ def test_NurbsCube(self): cmds.setAttr(makeNurbNodeName + ".patchesU", 2) cmds.setAttr(makeNurbNodeName + ".patchesV", 3) cmds.setAttr(makeNurbNodeName + ".width", 4) - cmds.setAttr(makeNurbNodeName + ".lengthRatio", 5) - cmds.setAttr(makeNurbNodeName + ".heightRatio", 6) + cmds.setAttr(makeNurbNodeName + ".lengthRatio", 2) + cmds.setAttr(makeNurbNodeName + ".heightRatio", 3) self.compareSnapshot("cube_modified.png") def test_NurbsCircle(self): @@ -95,7 +94,7 @@ def test_NurbsCircle(self): self.compareSnapshot("circle_tolerance.png") cmds.setAttr(makeNurbNodeName + ".fixCenter", False) - self.compareSnapshot("circle_unfixedCenter.png", False) + self.compareSnapshot("circle_unfixedCenter.png") def test_NurbsSquare(self): self.setupScene(cmds.nurbsSquare) From f10b93ecc0cac89441b4356cd486d1ec260df43a Mon Sep 17 00:00:00 2001 From: debloip Date: Thu, 1 Feb 2024 14:30:23 -0500 Subject: [PATCH 08/17] HYDRA-780 : Adjust image diff threshold --- test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index dffd7bb206..db9f956cbf 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -22,7 +22,7 @@ class TestNurbsPrimitives(mtohUtils.MtohTestCase): _file = __file__ IMAGE_DIFF_FAIL_THRESHOLD = 0.0 - IMAGE_DIFF_FAIL_PERCENT = 0.0 + IMAGE_DIFF_FAIL_PERCENT = 1.0 def compareSnapshot(self, referenceFilename): cmds.refresh(force=True) From aa3ed1c3af6f03d2d07279eb280514a852c128c6 Mon Sep 17 00:00:00 2001 From: debloip Date: Thu, 1 Feb 2024 15:48:06 -0500 Subject: [PATCH 09/17] HYDRA-780 : Return makeNurbNodeName programmatically --- .../render/mayaToHydra/testNurbsPrimitives.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index db9f956cbf..565a2e1cc4 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -25,22 +25,22 @@ class TestNurbsPrimitives(mtohUtils.MtohTestCase): IMAGE_DIFF_FAIL_PERCENT = 1.0 def compareSnapshot(self, referenceFilename): - cmds.refresh(force=True) + cmds.refresh() self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) def setupScene(self, nurbsCreationCallable): cmds.loadPlugin('ArubaTessellator') self.setHdStormRenderer() - nurbsCreationCallable() self.setBasicCam(10) - cmds.refresh(force=True) + nurbsResult = nurbsCreationCallable() + cmds.refresh() + return nurbsResult # Torus attributes is a superset of sphere, cone, and cylinder attributes def test_NurbsTorus(self): - self.setupScene(cmds.torus) + makeNurbNodeName = self.setupScene(cmds.torus)[1] self.compareSnapshot("torus_fresh.png") - makeNurbNodeName = "makeNurbTorus1" cmds.setAttr(makeNurbNodeName + ".startSweep", 50) cmds.setAttr(makeNurbNodeName + ".endSweep", 300) cmds.setAttr(makeNurbNodeName + ".radius", 2) @@ -57,10 +57,9 @@ def test_NurbsTorus(self): # Cube attributes is a superset of plane attributes def test_NurbsCube(self): - self.setupScene(cmds.nurbsCube) + makeNurbNodeName = self.setupScene(cmds.nurbsCube)[1] self.compareSnapshot("cube_fresh.png") - makeNurbNodeName = "makeNurbCube1" cmds.setAttr(makeNurbNodeName + ".degree", 1) cmds.setAttr(makeNurbNodeName + ".patchesU", 2) cmds.setAttr(makeNurbNodeName + ".patchesV", 3) @@ -70,10 +69,9 @@ def test_NurbsCube(self): self.compareSnapshot("cube_modified.png") def test_NurbsCircle(self): - self.setupScene(cmds.circle) + makeNurbNodeName = self.setupScene(cmds.circle)[1] self.compareSnapshot("circle_fresh.png") - makeNurbNodeName = "makeNurbCircle1" cmds.setAttr(makeNurbNodeName + ".sweep", 180) cmds.setAttr(makeNurbNodeName + ".radius", 2) cmds.setAttr(makeNurbNodeName + ".degree", 1) @@ -97,10 +95,9 @@ def test_NurbsCircle(self): self.compareSnapshot("circle_unfixedCenter.png") def test_NurbsSquare(self): - self.setupScene(cmds.nurbsSquare) + makeNurbNodeName = self.setupScene(cmds.nurbsSquare)[1] self.compareSnapshot("square_fresh.png") - makeNurbNodeName = "makeNurbsSquare1" cmds.setAttr(makeNurbNodeName + ".sideLength1", 2) cmds.setAttr(makeNurbNodeName + ".sideLength2", 3) cmds.setAttr(makeNurbNodeName + ".spansPerSide", 4) From c567332d6a37475fd31272f29e24a1cf9aecb000 Mon Sep 17 00:00:00 2001 From: debloip Date: Thu, 1 Feb 2024 17:14:12 -0500 Subject: [PATCH 10/17] HYDRA-780 : Put stricter percent threshold --- test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index 565a2e1cc4..de60f6f146 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -21,8 +21,8 @@ class TestNurbsPrimitives(mtohUtils.MtohTestCase): # MayaHydraBaseTestCase.setUpClass requirement. _file = __file__ - IMAGE_DIFF_FAIL_THRESHOLD = 0.0 - IMAGE_DIFF_FAIL_PERCENT = 1.0 + IMAGE_DIFF_FAIL_THRESHOLD = 0.1 + IMAGE_DIFF_FAIL_PERCENT = 0.5 def compareSnapshot(self, referenceFilename): cmds.refresh() From 99fd474eb07a896ec450d129c366643ad8d40598 Mon Sep 17 00:00:00 2001 From: debloip Date: Fri, 2 Feb 2024 10:02:53 -0500 Subject: [PATCH 11/17] HYDRA-780 : Adjust image diff threshold --- test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index de60f6f146..696120b961 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -15,14 +15,13 @@ import maya.cmds as cmds import fixturesUtils import mtohUtils -from testUtils import PluginLoaded class TestNurbsPrimitives(mtohUtils.MtohTestCase): # MayaHydraBaseTestCase.setUpClass requirement. _file = __file__ IMAGE_DIFF_FAIL_THRESHOLD = 0.1 - IMAGE_DIFF_FAIL_PERCENT = 0.5 + IMAGE_DIFF_FAIL_PERCENT = 0.75 def compareSnapshot(self, referenceFilename): cmds.refresh() From f37797cc1eae1e4025479164d1370c944b421b32 Mon Sep 17 00:00:00 2001 From: debloip Date: Fri, 2 Feb 2024 16:31:18 -0500 Subject: [PATCH 12/17] HYDRA-780 : Move camera closer for fresh prims --- .../NurbsPrimitivesTest/circle_fresh.png | Bin 2386 -> 2916 bytes .../NurbsPrimitivesTest/cube_fresh.png | Bin 2350 -> 2784 bytes .../NurbsPrimitivesTest/square_fresh.png | Bin 1858 -> 2172 bytes .../NurbsPrimitivesTest/torus_fresh.png | Bin 10504 -> 19760 bytes .../render/mayaToHydra/testNurbsPrimitives.py | 12 ++++++------ 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_fresh.png b/test/lib/mayaUsd/render/mayaToHydra/NurbsPrimitivesTest/circle_fresh.png index 5533030bbb28f5601fd6d269286c8507c38ae016..c5eaa7631df33fed2ac635f25846181a85197a37 100644 GIT binary patch literal 2916 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 BxU>KO literal 1858 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 Hy2t+?FI;G5 diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index 696120b961..f758cd8553 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -23,14 +23,14 @@ class TestNurbsPrimitives(mtohUtils.MtohTestCase): IMAGE_DIFF_FAIL_THRESHOLD = 0.1 IMAGE_DIFF_FAIL_PERCENT = 0.75 - def compareSnapshot(self, referenceFilename): + def compareSnapshot(self, referenceFilename, cameraDistance=10): + self.setBasicCam(cameraDistance) cmds.refresh() self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) def setupScene(self, nurbsCreationCallable): cmds.loadPlugin('ArubaTessellator') self.setHdStormRenderer() - self.setBasicCam(10) nurbsResult = nurbsCreationCallable() cmds.refresh() return nurbsResult @@ -38,7 +38,7 @@ def setupScene(self, nurbsCreationCallable): # Torus attributes is a superset of sphere, cone, and cylinder attributes def test_NurbsTorus(self): makeNurbNodeName = self.setupScene(cmds.torus)[1] - self.compareSnapshot("torus_fresh.png") + self.compareSnapshot("torus_fresh.png", 5) cmds.setAttr(makeNurbNodeName + ".startSweep", 50) cmds.setAttr(makeNurbNodeName + ".endSweep", 300) @@ -57,7 +57,7 @@ def test_NurbsTorus(self): # Cube attributes is a superset of plane attributes def test_NurbsCube(self): makeNurbNodeName = self.setupScene(cmds.nurbsCube)[1] - self.compareSnapshot("cube_fresh.png") + self.compareSnapshot("cube_fresh.png", 5) cmds.setAttr(makeNurbNodeName + ".degree", 1) cmds.setAttr(makeNurbNodeName + ".patchesU", 2) @@ -69,7 +69,7 @@ def test_NurbsCube(self): def test_NurbsCircle(self): makeNurbNodeName = self.setupScene(cmds.circle)[1] - self.compareSnapshot("circle_fresh.png") + self.compareSnapshot("circle_fresh.png", 5) cmds.setAttr(makeNurbNodeName + ".sweep", 180) cmds.setAttr(makeNurbNodeName + ".radius", 2) @@ -95,7 +95,7 @@ def test_NurbsCircle(self): def test_NurbsSquare(self): makeNurbNodeName = self.setupScene(cmds.nurbsSquare)[1] - self.compareSnapshot("square_fresh.png") + self.compareSnapshot("square_fresh.png", 5) cmds.setAttr(makeNurbNodeName + ".sideLength1", 2) cmds.setAttr(makeNurbNodeName + ".sideLength2", 3) From 3148c15ca1028771d6a2e3742144e72a31cfd770 Mon Sep 17 00:00:00 2001 From: debloip Date: Fri, 2 Feb 2024 16:33:12 -0500 Subject: [PATCH 13/17] HYDRA-780 : Remove new file in mtohutils --- test/testUtils/mtohUtils.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/testUtils/mtohUtils.py b/test/testUtils/mtohUtils.py index c768e839ec..6f6bc666c0 100644 --- a/test/testUtils/mtohUtils.py +++ b/test/testUtils/mtohUtils.py @@ -53,12 +53,6 @@ def setUpClass(cls): "define `_file = __file__`") fixturesUtils.readOnlySetUpClass(cls._file, 'mayaHydra', initializeStandalone=False) - - def setUp(self): - # Maya is not closed/reset between each test of a test suite, - # so open a new file before each test to minimize leftovers - # from previous tests. - cmds.file(new=True, force=True) def setHdStormRenderer(self): self.activeEditor = cmds.playblast(activeEditor=1) From e67cefa2720ae1ba7ab800a1446f6cfefc538ea2 Mon Sep 17 00:00:00 2001 From: debloip Date: Fri, 2 Feb 2024 16:33:38 -0500 Subject: [PATCH 14/17] Create new scene before each test --- test/testUtils/mtohUtils.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/testUtils/mtohUtils.py b/test/testUtils/mtohUtils.py index 6f6bc666c0..c768e839ec 100644 --- a/test/testUtils/mtohUtils.py +++ b/test/testUtils/mtohUtils.py @@ -53,6 +53,12 @@ def setUpClass(cls): "define `_file = __file__`") fixturesUtils.readOnlySetUpClass(cls._file, 'mayaHydra', initializeStandalone=False) + + def setUp(self): + # Maya is not closed/reset between each test of a test suite, + # so open a new file before each test to minimize leftovers + # from previous tests. + cmds.file(new=True, force=True) def setHdStormRenderer(self): self.activeEditor = cmds.playblast(activeEditor=1) From d3ffb20992e9c7eb2d1f6b37ec717333086dfe5d Mon Sep 17 00:00:00 2001 From: debloip Date: Fri, 2 Feb 2024 16:55:39 -0500 Subject: [PATCH 15/17] HYDRA-780 : Add comment on ArubaTessellator --- test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index f758cd8553..3fc5e88031 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -29,7 +29,7 @@ def compareSnapshot(self, referenceFilename, cameraDistance=10): self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) def setupScene(self, nurbsCreationCallable): - cmds.loadPlugin('ArubaTessellator') + cmds.loadPlugin('ArubaTessellator') # Loaded by default in Maya, changes NURBS vertices calculations self.setHdStormRenderer() nurbsResult = nurbsCreationCallable() cmds.refresh() From 65aa6a4f0842034b7075b6168e7e680cc4c75406 Mon Sep 17 00:00:00 2001 From: debloip Date: Mon, 5 Feb 2024 10:59:06 -0500 Subject: [PATCH 16/17] HYDRA-780 : Refactor nurbsCreationCallable setup --- .../render/mayaToHydra/testNurbsPrimitives.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index 3fc5e88031..976db90ac1 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -31,13 +31,13 @@ def compareSnapshot(self, referenceFilename, cameraDistance=10): def setupScene(self, nurbsCreationCallable): cmds.loadPlugin('ArubaTessellator') # Loaded by default in Maya, changes NURBS vertices calculations self.setHdStormRenderer() - nurbsResult = nurbsCreationCallable() + makeNurbNodeName = nurbsCreationCallable()[1] cmds.refresh() - return nurbsResult + return makeNurbNodeName # Torus attributes is a superset of sphere, cone, and cylinder attributes def test_NurbsTorus(self): - makeNurbNodeName = self.setupScene(cmds.torus)[1] + makeNurbNodeName = self.setupScene(cmds.torus) self.compareSnapshot("torus_fresh.png", 5) cmds.setAttr(makeNurbNodeName + ".startSweep", 50) @@ -56,7 +56,7 @@ def test_NurbsTorus(self): # Cube attributes is a superset of plane attributes def test_NurbsCube(self): - makeNurbNodeName = self.setupScene(cmds.nurbsCube)[1] + makeNurbNodeName = self.setupScene(cmds.nurbsCube) self.compareSnapshot("cube_fresh.png", 5) cmds.setAttr(makeNurbNodeName + ".degree", 1) @@ -68,7 +68,7 @@ def test_NurbsCube(self): self.compareSnapshot("cube_modified.png") def test_NurbsCircle(self): - makeNurbNodeName = self.setupScene(cmds.circle)[1] + makeNurbNodeName = self.setupScene(cmds.circle) self.compareSnapshot("circle_fresh.png", 5) cmds.setAttr(makeNurbNodeName + ".sweep", 180) @@ -94,7 +94,7 @@ def test_NurbsCircle(self): self.compareSnapshot("circle_unfixedCenter.png") def test_NurbsSquare(self): - makeNurbNodeName = self.setupScene(cmds.nurbsSquare)[1] + makeNurbNodeName = self.setupScene(cmds.nurbsSquare) self.compareSnapshot("square_fresh.png", 5) cmds.setAttr(makeNurbNodeName + ".sideLength1", 2) From e70f367ead055fc2122509be7a916bd9ebbe4334 Mon Sep 17 00:00:00 2001 From: debloip Date: Mon, 5 Feb 2024 11:10:49 -0500 Subject: [PATCH 17/17] HYDRA-780 : Move ArubaTessellator load code to common code --- test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py | 1 - test/testUtils/fixturesUtils.py | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py index 976db90ac1..d318fd6649 100644 --- a/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py +++ b/test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py @@ -29,7 +29,6 @@ def compareSnapshot(self, referenceFilename, cameraDistance=10): self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT) def setupScene(self, nurbsCreationCallable): - cmds.loadPlugin('ArubaTessellator') # Loaded by default in Maya, changes NURBS vertices calculations self.setHdStormRenderer() makeNurbNodeName = nurbsCreationCallable()[1] cmds.refresh() diff --git a/test/testUtils/fixturesUtils.py b/test/testUtils/fixturesUtils.py index 717be63fea..36cc1a61b6 100644 --- a/test/testUtils/fixturesUtils.py +++ b/test/testUtils/fixturesUtils.py @@ -19,6 +19,9 @@ import sys import unittest +# Plugins that are bundled and loaded by default in a Maya installation +DEFAULT_PLUGINS = ['ArubaTessellator'] + def _setUpClass(modulePathName, pluginName, initializeStandalone): ''' Common code for setUpClass() and readOnlySetUpClass() @@ -31,6 +34,9 @@ def _setUpClass(modulePathName, pluginName, initializeStandalone): import maya.cmds as cmds cmds.loadPlugin(pluginName, quiet=True) + for defaultPlugin in DEFAULT_PLUGINS: + cmds.loadPlugin(defaultPlugin, quiet=True) + realPath = os.path.realpath(modulePathName) return os.path.split(realPath)