From 339a8ca16d0929c89d72faad5ca4b56326672154 Mon Sep 17 00:00:00 2001 From: Ivan Vlasov Date: Thu, 26 May 2022 12:21:48 -0400 Subject: [PATCH] Implementing testVP2RenderDelegateCameras autotest --- .../render/vp2RenderDelegate/CMakeLists.txt | 8 ++ .../baseline/RenderCameras_moved.png | Bin 0 -> 5536 bytes .../baseline/RenderCameras_selected.png | Bin 0 -> 5265 bytes .../baseline/RenderCameras_stage_moved.png | Bin 0 -> 4405 bytes .../baseline/RenderCameras_stage_selected.png | Bin 0 -> 5526 bytes .../baseline/RenderCameras_unselected.png | Bin 0 -> 5254 bytes .../RenderCameras_with_new_camera.png | Bin 0 -> 5640 bytes .../testVP2RenderDelegateCameras.py | 135 ++++++++++++++++++ test/testSamples/camera/RenderCameras.usda | 33 +++++ 9 files changed, 176 insertions(+) create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_moved.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_selected.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_stage_moved.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_stage_selected.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_unselected.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_with_new_camera.png create mode 100644 test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateCameras.py create mode 100644 test/testSamples/camera/RenderCameras.usda diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt index b364654ccc..172e3513dc 100644 --- a/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/CMakeLists.txt @@ -56,6 +56,14 @@ if (MAYA_APP_VERSION VERSION_GREATER 2022) ) endif() +if(CMAKE_UFE_V4_FEATURES_AVAILABLE) + if (${UFE_PREVIEW_VERSION_NUM} GREATER_EQUAL 4007) + list(APPEND TEST_SCRIPT_FILES + testVP2RenderDelegateCameras.py + ) + endif() +endif() + if (CMAKE_WANT_MATERIALX_BUILD) # We want modern OCIO for the MaterialX test: mayaUsd_get_unittest_target(target testVP2RenderDelegateMaterialX.py) diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_moved.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_moved.png new file mode 100644 index 0000000000000000000000000000000000000000..0dbcb4faa0e9bb3275448f0e7dfbc73b263e259f GIT binary patch literal 5536 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 literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_stage_moved.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_stage_moved.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e491d2a194f958b1fd08328b5fd06995f2e61a GIT binary patch literal 4405 zcmeHK|6kJA8b2U9HLd(onq@XBSxuWumUKZa^UIutD_XWql)7uqG-WS0F;RiEym=G1 zyG3)FSX(yNlFU-EfX`yH+sM%7G!zhW$t{yFr9e~go{#+%_rCc2aL()XoaggA@8>!1 z=Q-z`e3zQy>mA|^0PszHJ8=&HZU_L_Rh}MDvXy?D4JWU{3KAz29(sf_@-;pe54zPMQ)W}v|{LwyX zFc{u|W|%CQ%z>ISdtrkC;Nmbo0Bk!3pwl(mfg1o{tl?q+czY=Vb=G+@;OLKwf}=~_ zm6`u#5;V-s3OV!2E+Ix2%5hjB)0vyn&du6K$D9^XwvdhImP594yTv+sP3EgUnFAuB zP*@lb^}?uS%Xjj3@pv5_xDcRg=~dL9Id84k(f^9`^J%R2iUNqQZ)NeMRLdfW!+%CpUeIX6 zNXU8lCz`bflcJdWV0G#~*82A6;7blazP6*C+u@G@a6sAnL?F2(NN~$p59_qxqew~@ zHUCV7O!*bItO>=?&Z4rm+;KN1!(vw7jVc{}IP(LtOo^;m@KDc|nO=W$<3~L53&+$e z05HPp9yp#qw~X0ml7(^SR44n9`fuQ$nS&kGdt;qeyIM=5ixRQ-sHpI6CQ?w__o-*0 zxZ?1NY4R)in6gUL=NAV)llH{0R<(UdxOFV3`){zPF!vM%jOcN;(dEXNwR zK@*L?2)riE&6mW=xEnDgWwrh8#&@8&Ow~bCTW0DQp~5+eQ@u|vzf={)B%nE1*K(`a zZnL!hHvT~K{A+{6c<3>a8IG>tPVh)E`p_(LS77O!Skg3kntjyWpScBHtLlu{(d4Zc zpETbOELLd8_5PFMyb0slDqaWL*|Ld2Eu!S{`_m-_Cuat;9_mfig7ZV0b97H(uR~Ig zsH(}=Zxok8pwkc2?X2Xb&o1nnZoby7Xs#=g zHW)ACtd9s2uB4U@XYq*FV~*yEr$@#x{DW8&O&%da8JV&=+jh^k#PlZLm}8sUwCj|6 zlz9W1rSApd5@AhmtC>D)yby5CAeA>UbO8}O4?t?S;6CpTVwLrM*&;|1(dT#e7kK4y zS@kHw{=sJky;gNy{$uB=Z)R#*Y3JfY$AJjtXLjc_Rnyv>$(Hn+r5PXW%ilm`64RP7 zK>Eo>tALuREtM4}{Yf4pf6iErH0^{GmgXxeM&jcQg82CS+KJeUKNZnNBgfi_FSO$- z(2M3f$+yzxomMT34Gm!wqOcQM!Y`Y8O@0;%g**AjBQ;tY;}cnD zKl?f(Vd!eE?ln{oudSbGlcd=-Y+3Z>nK*`yh5~Z;St2O4#c?Xyk_-cBb=6~q_0caA zinpE`OnJAC(3NuB9IfcY@bNIhO&(@vC?=8^Q5dz?#6%Tpr7+-Eo<_P$%1A95-yy4tM@K7|1Q_gD}cldQHz5>j~~Z z8BG|*A{Ykp`)uW~AXZ6_3A!0BLkJKSaOUK`KRu)iElr#nA?}~U3ZJ3(k5MH6h*w{d zX=uNu)PCCT9``FQ7;sZ*1d{02C-?mgmu-Ml12+pa?263LZhpK>f~-Kh(G}H@?Jw^v z-6@!TknY!oyytMD9UQ#$=DMM{?ryGYDsYj&MFJNI;Hltxu>K!B<;~e5$0-)IVYC?T OC`e7BCblIoj{O(VmnQ}Q literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_stage_selected.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_stage_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..8c136297359806b33d199d9c1c4eaf40a93fcb22 GIT binary patch literal 5526 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 a#wO6ts(AXc9Y+w~A!yCU0Ld!OvHt)T5CxO~ literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_unselected.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3d965d385edf4576c1990dd90081fcda3ef28d GIT binary patch literal 5254 zcmeHLX;)L{7T!rPf}jNfgD6&uLbVboIG_Q=0is2qPE`|7s`VmGAzVR*MBqqktB5EC zK?R|TqShv$kOb5taY6)56eW=5>#iRF!U+V&~48Xy6{n}Mql8bse z+KzXMor9jgpghw2P!x1nx2Wi3Zr>`30$YiQ4#ii$j>FGNyD1BCBC)gen-N5kf@FcvQXF9weFP=cve7aILN(O1=!k$U~{Vg7Hz-9&iLc&6L1m(nr{rnkwtRf+M zHb%mB9H^)F{1LuWJx~c1r%;^JL`%f1RtHXRCB#t)vfOybdq72NV@ zA9!LXg#e$7M&B6R$B%X;xG*}zG`K{2Hf>j0U6m6iFz3NKdsAW8R`|+TRvpg>kqAw9 z3f6l8A8AU%1W5<^1R)k0%BlpV1w6uDKB02H7qBfOAyTB6s;k*6$6vo~k7qH0jzxml z7KQPvq$s5)`bbWXrB2Yw}K zcX8n}WAVnYolHtX^dp@rCpb8FcjI}|_BG~0D5zTmrAHgm371p&CAr{rtV=hUhWVQ# zX|jH-vM?TTIju|lDNWZ>CWWl2=6nrJT2)RU)9wb$M74xkUwwOrMQJT0 zMy=R!|K11pn#)N^sm1JH{YKJb9xR_~h2f}!H8i45+vMGylk{UF=6D0%^gL?W1yKDX z@v42l!^U?-3ZDlHAs%jq)wu<7n}* z*Sw!}&ujN)+60`K_Y9-Is%R8*rq`R7mwM*3UtUz}_o=af+H`&*CH zFuMS#kofNhKX<=xfr`T+6@W#YODTG;_=~D(*?_|95Ttr0(@!&tyYO8Qgi_Gh1``uZ z7eu!u!w2>1_>u|OS!80$3!Z24;HwMIUC#4MCVmiY3yV=lICo_3duuJdQm)h=FeU+H zEOgoXGLwC4HKk%As%X*f-rMRV_d4)mqFP_x(K_-jS3LpK4NUQZIOiN|sr!iUkTn2E z-H~sAPsX4B6avGEMjBvY?*@q4(W~Wn+L%_KMUdfOF;F$vd3V`6$3`WVRLq9#gfZu9 z6DPG@(m39QlfVCuEh2N5^Yo92gc$n%KriqsvGM{*GwVNo5p4U)7g1}G2rYF@zBqPY zGi!l=1nn;LZO9Lx#4+&sT+f}#x*N!Lls5?-VI5-K(d+A7;TNO!jVAynkI*Y}*rTyG zjV?InzJ!MQ8b1S+IBQ&cJU`o?45twWbk1B}qqdhR`)J*1bC?$~d}`IZT$un3k3zn;O>j9Nx$AW=I}4H!YKP{mgl54f1&?gRM9vL0`PTfgxF# zLf^?IJ~}}yKVAWv>1Nm4xLI47-=(7cf%7fs@C~Aca9PtITe>>MrYU{(L-$>kBur

DO_p`;airZ4(nU!0w(SxitUV48!Gszs#*Yq%+N zi1RSR#NaI(?3O)~QK%RPmE7;%^v3h-C{m#_MS1{*J8O^JQdqL}r;6?g*bpKazlM#u zn#DS3vvU3$rGPd5Z_kZ-#*#F5P}7}=Pq@hHw*eEnX(eC8^H(dC4I$;c5}!H9`uiU9 zEHmdXt!mXSdr`|ay(BEreWiL9%C@w}?(W_v`SL$wvP8@T3JjS;QMFq3hHx+I7KVIJ z!Z`hi0POPf=Y@TJDDwTZL9z*`TAsmFYaMaa zL})kJ3YI=Kq literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_with_new_camera.png b/test/lib/mayaUsd/render/vp2RenderDelegate/VP2RenderDelegateCamerasTest/baseline/RenderCameras_with_new_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..b5dc785ec28b47948416f288b5e4bade34020c76 GIT binary patch literal 5640 zcmeHJ`CC%k8s5%xT2`iZXfXAdW2uohr@ESU9n(q!2W-+r(o6#(70Q!ob*fWAmP(VR zm1vr%AcCEynNom zhE|3E0GR9u4u}E(Ee-%^uGH5BXT0KH5WvA8ef#!f;P~U|TTkxBHc3Cb=FQsD`I%uG$6n1?K< zD`!Xaz>%14#sPyQ6q{kj$32w-BrsKADeOqfHB*Uo&oB$fhF{z#sar7Z97m!8oVdinNY_AXrU_` zKH{a(xsIp-B+!=8qnmk}$LE<9267LtO**==&Lt@Tk#gNNIia}Ext*Eix7heYiGdry zF}k|7pINJvtmCg+(Y!^&7#NFUtwC%bJ#%JRJ15=%jD+H4brZR^nV!{mEB40>3c0^A zxwfw2&5uuuy+&L?k+fU>!rOtPgtl00$z(L_a2eaAxdIR!d?krL%Wu$(@z%ns!>gRi z6Z&jee}Dv^&YjW%0JrB$nSOrv^1sx=XA}mn!wYm}Pqo2~x9G4a&pFJDKvGSMS*wAy z2eH8_m({Tzd6|AJ=km#0S9zg~M23))t*;~>m~bqN#xhT8H}Wn6bb;n-UID#SBrD?c zk}0$yHz$#aHV8OuGBmd16b&I9V8C(nmbZ*ruR=e+<2lGw6VY{@5qahLwJ|xkt7f`_ z06+`)5a68F!RAKnE`K3=8C@O}-_di=6xZP4sWWYe`v`rLk!ZS%Cd-JvC#YpXBo79K5bx@Nw39*$>&AGLUhN2jtm#S zCVFA4wwBNiiu%y-<1f=pB2qYT?93iagj~fIU;f0KP^_#xXk~n&U;bbf*uEFwrhiQf z@s(A6Y@s>1NBL@pywCAsD&aDP98x>?i^vHgCj9a7Cz)ukan-RPSz^L|*Z@+gatS-9 z<2L53#z?kf35%a2zS9N>!vPYW&sPK8wswf4);A&|J6O#V+|p{g6J9!jJW02IsPX$o z4X{SH`o_hX@~?eKyM6QyNq25pHq*ahQ5{8HzV0pA=&daZ{H<|D1Y%E`gGa`ukeeES z%dWGm3Udmf7P~tD){-veI1w*}f>2#}4OE3V89hC57k)h`d@nM(zntI{))wS#%_#*9 z;;J^{sC8Mm(cw419f;C;)nSMW&*hfi;$WOctQVY<0^w+v!LAa@nznX|KYD_50BKxdC zzxT*k4$03fsImnuU*e0G+VmjgTDon4APK$wbL!r9jjB{}XFD4xFp9G2FU#*gez&p7 zHXNBAR6H~j)TddCoS?9hUIqJDwfAJdT7czT7)C65tSR${tn6xWn)%C&Zef8lf?T2Q zPy+e1-7XYgyeZL9E!@qH1?)$DD?~_$FK0_1VVhcI62jZqOp{V5j@CCX=h|zAxD$l0 zCZGBYx)#0GRD($vLC&7)5Gu!Es2?;P+U|Om7LWFIpe<&p$?1P)XUA;{&6BDxZ=nux zIeS3|{ukXTfla=jBOTSU@W0ux?Ym?uG@s-S#e%X?=<)4ZS+luldw+S3E)fPoBfg$J z#V7kT`SJ}DE+>ktK`TIhEMob9b!&w~D!;P*lf`#(B9$v1Nd^GXX+&4Q^#fL6Vo{<9 z300)(ewnCs`Gb&=GcplgO6MBJ>=+}c`^jw~2NTUXSqQ$C{X zH3h&&2o()D^WSgL(i8v)@50Cb5q+2R04z0d`kJ16DPu_9q0~1@67}ch`clDe4^rUz z3#ke_Bu5Lu-UTY&w0A>-%YEbl)^9z|E}~lIqQh z>X9h7aA8RsdnpZR_v~O5tZcHAoo?yzW4+3`5b;{M5WbKwj~O0&C=izjA7nd&(xRz# z_;4As@n)&sMATB(_^@$0%fQ3X_8~CrU`iX);P$zVWMGWjedDP?f6^;x^@mTe-5yL z6k#DLF>JbBFaD(s{iq**Z>+mfoR7p?jAfZRrdtGPSDog= ze`kp#;9Fe1w}C(3HnddI_zn|xf?~&N6kC5gvX8h53QZ@q);cv;krL3!W@lTqX4Pj+ zH)LP9Bww#vuddd+iS>6pS)})UTHfq@=K^rILR-xYVqq%lP?d_{Y(`kb>bsL{nlUOA zFZiL&zl`UtT_KqootTcBGX|w~pH*I!+|5)lZXq&Ua+5KMM;t>5f(;*vh0Y76fTtbE zDbsp78_S)_%lp0jt|Igl!6s*(xx5F3Iu8~48n62!ue`tFom1_5yuJL4_^a1q{Crbm zQM%MOh-!(0Lj;Vh@lVr9;ucJvGf2f)wbCbB4q>VreA+oy&}vj;(O7r=XZJskg2&Ey zZ&*lS;*>X4UzZF)G;6f&iCMY2aZ`IuZs+(RRDm$Y4*&r1Y|+1msl(WwyICQsJap8F z!SXw%hFXGuf^;aTel}Ki4(GDi_^mog{qB!)|AZmF89|@Gd}JHB3cfn%X(k%MwB2_v zS)Mawez9XsEC9443d67FGuPTt1m@m*@rrS)eJid(CRQU8oOiV`QUU^gZ|+1)YC0_j z)8dNtuo8z{5%aeki}I#wpG^?ygJ{f9Pkjfd)J6xHWXHGeIpqoN#uU^iGbfNKHxjTO zBfADGSS>!Y$D6Ky>aFhN=z~>W&3U;wzIddo-Nfw=Fs1rO#fQgAx}08;ihMvfN!wv@ zyJZVyiRps^kq;p!(A5pPbZMUVZBCV5eCV@*AtuzA*FJL_gRpB`&sp8!O}(=1vWYk# z7*E&_KrzXzdqmT03blVkLO4%~1AP+xO1(_V7v{xc9wFzRYsQu6n_y$=v9u3tI+-m^ zP)IfZ?k|IcQ}*cEP^;`!MCfeu@7>!Y+M^A&&@=_;u1QHH!Up$&sd*?AwHBF&CF03ArAW{}zpLXBq zt1XD_9cIu22Wy*{V1no5Qx!kv>)J5kAcb0_i z`8;K>+YNagzJVfkTdgwLjlKGw?G5KQr(%13xqHzcZjRO*uR6IQDD7F7Vs{b_9k8(6*sY F{s%b?53K+I literal 0 HcmV?d00001 diff --git a/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateCameras.py b/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateCameras.py new file mode 100644 index 0000000000..c2861c4e8d --- /dev/null +++ b/test/lib/mayaUsd/render/vp2RenderDelegate/testVP2RenderDelegateCameras.py @@ -0,0 +1,135 @@ +#!/usr/bin/env mayapy +# +# Copyright 2022 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 fixturesUtils +import imageUtils +import mayaUtils +import usdUtils +import testUtils +import ufeUtils + +from mayaUsd import ufe as mayaUsdUfe + +from maya import cmds + +import ufe +import os + +class testVP2RenderDelegateCameras(imageUtils.ImageDiffingTestCase): + """ + Tests imaging using the Viewport 2.0 render delegate when using cameras + """ + + @classmethod + def setUpClass(cls): + inputPath = fixturesUtils.setUpClass(__file__, + initializeStandalone=False, loadPlugin=False) + + cls._baselineDir = os.path.join(inputPath, + 'VP2RenderDelegateCamerasTest', 'baseline') + + cls._testDir = os.path.abspath('.') + + def assertSnapshotClose(self, imageName): + baselineImage = os.path.join(self._baselineDir, imageName) + snapshotImage = os.path.join(self._testDir, imageName) + imageUtils.snapshot(snapshotImage, width=960, height=540) + return self.assertImagesClose(baselineImage, snapshotImage) + + def _StartTest(self, testName): + cmds.file(force=True, new=True) + mayaUtils.loadPlugin("mayaUsdPlugin") + mayaUtils.loadPlugin("drawUfe") + self._testName = testName + testFile = testUtils.getTestScene("camera", self._testName + ".usda") + mayaUtils.createProxyFromFile(testFile) + + def _RunTest(self): + cmds.setAttr('stageShape.cplx', 1) + + # reparent one of the cameras to verify that the proxy camera handles this properly + # !this check is temporarily disabled because of a bug in PathSubject::addRemoveAllCallbackHelper + #cmds.parent('|stage|stageShape,/cameras/cam1', '|stage|stageShape,/cameras2') + + # unselect all and compare images + globalSelection = ufe.GlobalSelection.get() + globalSelection.clear() + self.assertSnapshotClose('%s_unselected.png' % (self._testName)) + + # select all 2 cameras and compare images + selection = ufe.Selection() + selection.append(self._GetSceneItem('|stage|stageShape', '/cameras/cam1')) + selection.append(self._GetSceneItem('|stage|stageShape', '/cameras/cam2')) + globalSelection.replaceWith(selection) + self.assertSnapshotClose('%s_selected.png' % (self._testName)) + + # change attributes that affect the camera image + ufeItem = ufeUtils.createItem('|stage|stageShape,/cameras/cam2') + cameraPrim = usdUtils.getPrimFromSceneItem(ufeItem) + cameraPrim.GetAttribute('horizontalAperture').Set(100000) + cameraPrim.GetAttribute('verticalAperture').Set(100000) + cameraPrim.GetAttribute('focalLength').Set(100000) + + # move all 2 cameras and compare images + cmds.move(-2, -2, -2, relative=True) + self.assertSnapshotClose('%s_moved.png' % (self._testName)) + + # rename the stage to verify that the proxy camera handles this properly + cmds.rename('|stage', 'stage2') + + # switch color management view transfrom to verify that the proxy camera handles this properly + cmds.modelEditor('modelPanel4', edit=True, viewTransformName='Log') + + # select the stage and compare images + globalSelection.clear() + cmds.select('|stage2') + self.assertSnapshotClose('%s_stage_selected.png' % (self._testName)) + + # delete one of the cameras to verify that the proxy camera handles this properly + cmds.delete('|stage2|stage2Shape,/cameras/cam2') + + # move the stage and compare images + cmds.move(4, 4, 4, absolute=True) + self.assertSnapshotClose('%s_stage_moved.png' % (self._testName)) + + # add a new USD camera and compare images + stage = mayaUsdUfe.getStage("|stage2|stage2Shape") + stage.DefinePrim('/cameras2/cam3', "Camera") + cmds.select( clear=True ) + self.assertSnapshotClose('%s_with_new_camera.png' % (self._testName)) + + def _GetSceneItem(self, mayaPathString, usdPathString): + mayaPathSegment = mayaUtils.createUfePathSegment(mayaPathString) + usdPathSegment = usdUtils.createUfePathSegment(usdPathString) + ufePath = ufe.Path([mayaPathSegment, usdPathSegment]) + ufeItem = ufe.Hierarchy.createItem(ufePath) + return ufeItem + + def testCameras(self): + self._StartTest('RenderCameras') + + cmds.move(-10, 15, 20, 'persp') + cmds.rotate(-30, -30, 0, 'persp') + cmds.modelEditor('modelPanel4', edit=True, grid=False) + cmds.displayColor('camera', 21, active=True) + + self._RunTest() + + + +if __name__ == '__main__': + fixturesUtils.runTests(globals()) diff --git a/test/testSamples/camera/RenderCameras.usda b/test/testSamples/camera/RenderCameras.usda new file mode 100644 index 0000000000..309b97ad43 --- /dev/null +++ b/test/testSamples/camera/RenderCameras.usda @@ -0,0 +1,33 @@ +#usda 1.0 +( +) + +def Xform "cameras" +{ + def Camera "cam1" + { + float2 clippingRange = (0.1, 10000) + float focalLength = 35 + float focusDistance = 5 + float fStop = 5.6 + float horizontalAperture = 35.999928 + float verticalAperture = 23.999952 + + double3 xformOp:translate = (3, 3, 0) + uniform token[] xformOpOrder = ["xformOp:translate"] + } + + def Camera "cam2" + { + float2 clippingRange = (0.1, 10000) + float focalLength = 35 + float focusDistance = 5 + float fStop = 5.6 + float horizontalAperture = 35.999928 + float verticalAperture = 23.999952 + } +} + +def Xform "cameras2" +{ +} \ No newline at end of file