From 6a40cdfd3f352135d6b452e2805de610d7ca0eff Mon Sep 17 00:00:00 2001 From: Mark Moissette Date: Sun, 22 Oct 2023 15:21:55 +0200 Subject: [PATCH] feat(tools:gltf_auto_export): big ux improvements (#28) * export_main_output_name => export_output_folder & the blueprints folder is now relative to this one * exported main scene gltf file name is now created based on the Blender scene name, not settable * blueprints folder defaults to "library" * the exporter now defaults to enabled blueprints, & enabled change detection in library * added handling of export parameter changes * ie when the gltf parameters (gltf vs glb, compression etc), are changed the next time you save , all the models are re-exported * feat(tools:gltf_auto_export): major overhaul & optimisation of library export * added change detection handling so only the actually changed collections get exported on save * works with actual changes (ie clicks/ selections don't count) * this means "progressive" export of only the changed parts, WAY faster * removed "export_on_library_changes" setting, which was semi redundant with the library toggle itself * also scans for already existing exports on disk (for "first runs" in a Blender session) * many smaller cleanups * added logic to save/load export parameters in operator * parameters are thus now persisted even if the addon is removed & added back * based on standard gltf exporter * operator presets are now fixed as well & can be used normally * added injection of saved parameters in case there is a save attempts after installing the add_on and there where previously saved settings * feat(tools:gltf_auto_export): added support for multiple main & lib scenes * with scene picking & filtering * adding a scene to the list now only works once you selected a scene from the picker * docs(tools/gltf_auto_export): updated docs --- assets/advanced/advanced.blend | Bin 1316384 -> 1318192 bytes assets/advanced/assets_game.assets.ron | 2 +- assets/advanced/models/World.glb | Bin 0 -> 6444 bytes assets/advanced/models/world.glb | Bin 6132 -> 0 bytes docs/blender_addon_add_scene.png | Bin 0 -> 29595 bytes docs/blender_addon_add_scene2.png | Bin 0 -> 35179 bytes docs/blender_addon_add_scene3.png | Bin 0 -> 32486 bytes docs/blender_addon_use3.png | Bin 41879 -> 55685 bytes tools/gltf_auto_export/README.md | 38 +- tools/gltf_auto_export/gltf_auto_export.py | 813 +++++++++++--- tools/gltf_auto_export/old.py | 1141 -------------------- 11 files changed, 665 insertions(+), 1329 deletions(-) create mode 100644 assets/advanced/models/World.glb delete mode 100644 assets/advanced/models/world.glb create mode 100644 docs/blender_addon_add_scene.png create mode 100644 docs/blender_addon_add_scene2.png create mode 100644 docs/blender_addon_add_scene3.png delete mode 100644 tools/gltf_auto_export/old.py diff --git a/assets/advanced/advanced.blend b/assets/advanced/advanced.blend index 4f374fe80f6c98c7a97d508021f792dfb784a547..6ce38c09567771d266e02c7f2f17d674123284e5 100644 GIT binary patch delta 9758 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 Qj!!3i9Q>8bowwfgAI7pbq5uE@ diff --git a/assets/advanced/assets_game.assets.ron b/assets/advanced/assets_game.assets.ron index 6efe66d..f21a754 100644 --- a/assets/advanced/assets_game.assets.ron +++ b/assets/advanced/assets_game.assets.ron @@ -1,5 +1,5 @@ ({ - "world":File (path: "advanced/models/world.glb#Scene0"), + "world":File (path: "advanced/models/World.glb#Scene0"), "models": Folder ( path: "advanced/models/library", ), diff --git a/assets/advanced/models/World.glb b/assets/advanced/models/World.glb new file mode 100644 index 0000000000000000000000000000000000000000..8918e96685cb03a39ce6aa11f9a165beba9f7e57 GIT binary patch literal 6444 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 Ya5yn0`MWUQwn=eV^Voq*jnn@B14+3yMgRZ+ literal 0 HcmV?d00001 diff --git a/docs/blender_addon_add_scene2.png b/docs/blender_addon_add_scene2.png new file mode 100644 index 0000000000000000000000000000000000000000..b439ed2cb6f4e3d6abc784deedcbdd116a6b80e4 GIT binary patch literal 35179 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 XAGOIezr#X>e~u}uAIVZQx&D6udj$pL literal 0 HcmV?d00001 diff --git a/docs/blender_addon_add_scene3.png b/docs/blender_addon_add_scene3.png new file mode 100644 index 0000000000000000000000000000000000000000..835cc5c56f8c8d6aab90b698a51ff3987da0ef2f GIT binary patch literal 32486 zcmb4r1yq%9wGBqyWg`R324mn$Xe_x^?h%3(-Uj9D5#MH++5 z%fd;E^ya)2sj5;4fh@js;8W7f zH#pdgI1KgD_!?^PCDuz5h9EXp_!3j#o2p`XCMg}An(wL=scc{5;Bxl6cR1-?I?Ior z(GXF}GqSUX2L@s(D=P;My&{c5%ST*dzJ6U$*Ed%^-Tvhvyx!8@p7s9y`vFYG_w@|o z;s#hxNu$^}If>Yo87VJc9<&+G=%h|mVIjbg6)67n>60jNy9Jg;7{h(a><=Dq6=bhb zv4zXp*sxbW*<<12TFpFIzjp0fSa|p~_y`n=JNe{N)bfy3dNtdrQ1UU^ocqe}jmq(p z7ebGJzf4KFD=Uj-J6K?``)BBpzT<#lw?I_6%RHY&8|8?-N9xkLceT&)Mzd$NQI!#Q za!!%whUu99*$M90aLABxw<|dXg$CvINB&*J*-B4vlXEt{Q>fq5)ooem&Y~7`=e(bz zGP#sjICpxqhR49peqLTbh{xnl_`&7ln%NOcm?Re;{l&m5bg(^`B~g$tT_EHkZIw?Jb)M=U5o47MpI4ZeDaX zEz89!a`efDK*b`3u&tdrwO37(y@4~CPMW*N0sF^369Ne0}-q)%T_-+Qs2gZnXZTt<22KL|!voCWT086w1i|#0?|OYmQnW zlB)ja+uKgJu6%E9-Wqt|P~^R{6ma;}Zs=R(S`8to<4}{GP>E#+jq=^Q&!eN~tM|tE zzYcx2rYJ8j$2_VqsmDUTwVk^*vVHd3@{Z{j{eun%zlQf3Sy*kSTj^)-p6snQogVr~ zT6U$WdV71j;HPms0JeneiBZSD$e^^n$sSmCNzI z(+^92mN?}3z3>ru0SpWG|#AK49mMY3? z)%hmCH&xPC^io9d$cO=*|FM&RDwDYQo4&q2<+bG`tF*~(MS8*A!9`a-%O8o#!`|X_ zzx}ZOQ?2P;lX1(!(SO{^w&HDt1QK%>>bEp}pi>kem1^Wrce$Ub9DIv= zSH28l@xc1al1%Ba^f8IJ%q_H3HT(Jj6^}^(Z@0(cw)OOF{v?(6XyvXn2@&sYwxhkZ zW;>y+HUG1eX1XVliHV8IJE+K?u=u#IU%!6q$^|%wrwx-lUojVYbJeqb`vs!jyt(rG zi)}NlLsfmW)M-nxMf<{NrAKygQBjfWpI^Kt{{DxHtSl;tCU%w1v&wMIP_@QkJSr(d zQNm-M*a5_}LOd>WDgiX-umTc{yl+e#Nu3>ZiSP8?cdOta<@rtWl_gbL+;IYffPmoh z<6)tRXpx&Yqu_^6JC_F(x7Y|Jtf0pPJKNjMrkkRg>dWDRs-;U3ORK3}uq;V}g^*mi zS`l&C$n)u1?OB>emIANOzGK!^xNLbC-uL)YI&?WNP0U-2Iy*am(&db=@Wwbhsy%C; z>qvQ;j-6B!W#rN5Ygp|qNKH-cbF@-A;@CjEy*wDbTu}MKZFvB7P^0$d*26!AjiwLR z#;V2F>#&Jv1j77I4tY(#DlSY%F{#QFCdwVYUxH{7!9+NtZX$BY3RAyGzEVlD-3h#1q zdcN4|XrU~=hmpOJ^i6h|@1)*AUButsdy7YU7Vy?#tARvH>-S(oC<(>YtEw_Gn1q+P z%$NE;z#7rk){b9W9w~QeIz^+EZES3^AIHVUns;VkE@EOPTQR&>j@u#Hel`nxWF8j& z!_(sfI4rWumz#BreH)*wRa;#t8?A6N8>{mAY&R4O#j41CML#w+cE5rC6uDvAc^Bn1 zsQ4{a>ekIp4tFAH1ly?A(nVaF_7B?PIlN#sv$3&Fc+?(UP4_#zQCM@x4wsCHg(YOD z#0vXz+QPAN3jv{dPF6T)=a$Oob&{ z;&b3^YHG?}T}VK|LUr^2I>X`4a{11{gQ&+It0S#@%`#^vMkQTzEnLnW6vr#CzuD@Q+D_l5)o;k>vaBJ1ZT31zEvxFbh3 zrR;Di&w8-nDpx`Tzg4FRU(!zjV(2zK*@UpEV6Wm74%%Kxv@D@k?Oi|cF>oKUxFY5E z=J?o0K$SlP)4r58uGL({AS5_ACONt7DK;MTy?q}^v$Twn%8f$jlVs( z^BCT-O8j$g2g*4#Wm7XV>*23AFN8jWo`Sc{emtIV>Njd%+WjT3EWgzpEl_?VkX4Ib zYqPL0BV!`af}KS}qo=25=?W3Lvc@pZ1jE8g_oV4+UE)VrM0O)(F__r6IFXOH3wN*w zJo)|NqUSlX1`FB3d08jUs{Ow1N%5R4Z;e~+dtqr64xhRC()#*(pBaVt1sv^NV_ywD zJL)$c9L}>D-XgY;Yp{J$pV7J|9h82SxMMQm|Fbh$us!is?-Oj%lRs;d6NOiqLVR~A1b#057dCI)~5 z^w1lCHg+Wm7?Y)=ym1d_6xdXp@fibe{~zES7cF+fsdz(eIRhA6M4hWNz2CesUh7iEgvRxt; zms^FYd`pOu_WqHx%#lyp40@zkCK=@RxJnypg zimBKB?&|!_ENdE%5hpyTJll)Cp$iL-rmYTRdrrrP0YG`I(S7=ulF25gsMrhWaBGhD zXK%sYLU+TRar+`&d=e6pJ58B`)}_N5l)?6+72VL#1Ncy1vJ=)|<6ISU|M)ptR_i+R zJdxzd_Wjk`Ge61W_1n8^;|`nzV;}CbHbv8S9UpAj#=o6=fq9i`r1qv1-4DyvT6d#Q ze==mA?E^0P;k!55ygu2GB;_x8IrY5=n$+EGC&pr=qb!G{P)Rp1V zt>dk(H~?Z<(UNV+g0}l}DGp%~5lkW?N!&I2fg&z*>kC=Y+BUWao3kJFNN9#7MsnT(VyTC44X+D9efEdX_Un#6zq8E@+WbP^t$KDO1$HA(y06L(w^Is=Ob z-U_*JMO@}nJ)EJP(jMJ{KB<-_u2(o7^{7Uck4jokdLJ+wm9YI4zz0keEGiS}XUFsB zu%9-*+ZEv{@6w8ep&u3=Lv!Wz@4*?*O zNbWQE187a+d58rY7I6IroPhK8f<~J6(hUG#7BA?f?9EjV2WwA*Tg|5?>Yx1?DUXA7 z;|NVc`Eg@Y6W02{e7YH5Qlz|4hb6ydiC!_+^R4r(4+B@>n|%Pnj<|G5Ab(%Em@Pyis3sT)QnpDblWOo+kbTJGhguu=5HnZF|3taa8m4B&-_THtpoAl0IcI zWhnYMMR|ELGO~wPbiMTj&a~_ z^TENvpY2C!N`~yV6}CkMRkPl``;M=2ak$60tFyDovgF*mk6Y@b9CGrE{>isI*BM}O zntpjIT{@fFE54uG|Ei)|F64pdO4gc)r}$dnFti|K#lYnNz~#FzSV#}+a2}S^+~IPe z@IXl|(3yLb!EbMe(%_+-oOmDq{w#w+eSJKv5PIP%!gJ7QKKDPmaPwO?rkkU_ezhM} z2EGS~`eAGAbxyrv1j0@@-ts&>m`C=Ly5s>fvMzOuyt2DHuX>C;Z8gsX{PNj$@I^d_ zj`q;&wBa5p<9BD0=ba=ONBQ69O~1Iddf0G&_3B7)VJUs#*Q&wg*$`TL6IdfndfL4L z+8=f6`Mbm$RE0;s=cfC$0knb5NTe7|C)l}p_ciBae(BgXZtmz%dcQkeTq+j-!JEZ43D z`X230ZXK{^y9=juzgX(zbfel5;uW4A-@>RKP`0G3nP`A{qmmr|Xw@ zrraw<;MN1n%`t0!@#^(!=cT?IS^3Zv1HK;jwuA-;zqO{x&dzR<)aQKt@}T;8j@#6C zf@x>>7W0P%+@-@&94;3J+-u(*24qZ%R){h*#7U0rcKsrfV)gGXk%DzX12jcR#J50N z>gA48dHbv>Fb}ryKmb~ISV>I2=x=ye1E9iV6Wiy=c_W;p0_1+$CS=HN?)!6!rd{uY z@W%(GS^g{Zk>>9iI&<}KkdFTP3w2l0nvK@jtg{9b;FpJ^Xa4@D9{R~DIqba|IwJ+> z?ak9|j45Le)KJn62L>$cOec#BQ~krG-#zVjNJ;yxFV#zHP$FtaS688iS6;vVyxz|5 zckT{hd_e5Fq|T~-f8Lhu(}6B~&s|!eIeTP>F_N^N#owAyt@ALm=nfC*6nVC~_OfyN z$5>LV_f}nXv(AEje)x>ZiQ7c~4g@fMoOUgwN1vf(PiJQfgcy@aM3RI54JiCqJ%>)q zCMPp1%eJa2X?UezL!UJBAlBq3k-VZJMcQV>Z;Ncn3K^_#*VRG@I$k!KesI%XLVJ@T zNMpqv?t0V?-R-Ba>Vf8dK!sNmc8}+t)!y?ej8gK(?a=Nh)|8T1qaC3$&QABLHqy@5 zxA@re(V7Mbn17iH4mF_D6#lr*8oScEXP`~VYTQIzQl*28Y{_2(1v^V^>GW?DV$Qj%Lg5Q&? zPG3;5#D2KF*f5a)fPj!NkB{T4kq+vyqN1Y9!E6GadE>6bQE@w07VKgL2j*9I;Fz@H zKK6M#V6=r?wH^5Q_Vedg@7^)H1HuO#qa7fCm3i#x@c3yH9=%T;XeFT85a;WE$pm_L ze6r?0pKM!DZ(rIACv4=sc>Oh}o@U{S)X^V)j4`kItI#j+sHx4>o}F-mKw^5lzcHWh z0VD?sZ8G$6e)xd_dmq@soiJ>Zn@~E2jR;SUQ)6my(#u( ztU(qIL20hrd3ahC+#U{&2Xx?V6*Kge9${L;!?i9%KYD?y7YxdcS=}I3OzoxM-%X z)f~NmGE4OsK0U>0x(R_#R7boZ>Rr02Z~pltq4xNkYA@1&;2t&sbZ?&w4gC3wkc`q> z+XnTt`Lrr6R#QEyM044DZ&lUW`i72y)48?kJvvaMj+b<5WqSquwo=BatTa-pa)W>8^yFx$+=cZSE^&oP zHPBuG=Q~J+Dq~;$#nQe=AUFv&IC*hreW{00g*b<&!n$H#xC%aQ|>n zQ7}m_UTkEF77rY?SL_u4dfp5>Bhuv8&v#ai1n(bf+oYZ<=0+EeKUtGN8Zk8LmK2AY zRzT4$ot;8_TBEMLs+j)olXFmqlA!4V>mT%ba`L2b@Gi6+q&34vH?0pm$NAuEB$PkY z0|(Ta3qX5?q@Es4*c{UO`ZOM+ZkGX+Oah#p3BGJ(GSd=+5&zq$*qi{_2csV2jgyX~ z0MjD4YaT)M*#l{D9U$Y>)&Z52UlkdTk0d?v5y*vYe|__NQ`6=zv*-;#5V7g$>LA^e z1GCUAb9@-(ANu7j;7yd6YhSYj21pzHHLv4e$ljNgl}#x@*T-Xv(rW6 zCA433%vtTu!b3EKTaFl@A(#hz9kPRlX~2~b!`d^wG2vbrwIZmR*SibfUosR4AQCDg z!iJMR?AY%IFYV-#aEsHa*ZCdfmhh)^H1X6;Z#d4hkRi}HS1lFm_wIp@oPt8n+uL{m zm&6t;;(!Yt@V_SFc`Bl)hw1fZK6TON%n* zvA;&%$G*nq8eYx5hOTO?le(WIOYJt1JK(Okse*_apt>N}xF@hjaMpu^#^a9MYqT`L znq^rb%V~hG0C}P5aU$NrwDDkp;j^B!9Bc8j<1LhX(snRE9x;uaii%2nbTrrj3NNnc z&C(a;Si^2dcj7s#s1O0@%-<>FqFhX$J&+_+?e$!E8w%j_(ToJem+tozVTV&M&-VP! zngNbGh!fIXx)cI6j_=39bDr>si05Hpb&IY&1%_fEm zT2;jGN)DI{AjEvs=4fneY^s5Of}(e@-K%~u8A=b@+OL(}fWzZBw*^AA?~RQQONW7d zeA-9@BLY}7D6ozIiQlMMW&7T^d2_b!!~LdfjKZU?6rm*abFgYuoe#R~OYduG$-xdr z7Oj{&k-Wy8yLYDn*MfpR?E*Od-Me?6pl68FMQ?aRQGh#Z1_cSDDO~p9!-pW7$Nc!A z0yi@9oanaEE0BIyN2ntjzk&1@IomAXYtvWzEu4TOKntgopY(@|+zL%+erp5Bcu%p#T?8Q@?G2n3DuGA$q>q3-R zZtkvIpB&0(F9Fq80Tmh~Qck0)#M$-)+M`(Dpb84O={}p!H_{L%1z^V0CV%qI`K=<; z#`8$6b#~@Mh|&IJD59{xf6u1>#int&u(mV&B8MluN(~Ftsw?d}BjZ!R51(xM*;xQ8 z!Ky?^+tAQZlPs%QQ{+Q1XW%mHe|}UC@()NmHQnyZ1NljUwy%qPlKO3C$DXV`zH~b~ z!Z6N2A9U6#r-7SrAE9cS1MNHpUT@hLei63%v&G)r`yj8@f$^kQ=E(SX`0Fgxe+GX3 zxCi#-!SKH>fFeRj=sSU^MLqM_TOIWQs`@Co>02;ilF(xs`_f@uF*rXkiLO|7BsYRe zq7Je!unC{+!)=RtVBoOa4g61bko{q9Y3aN->d{+brT+WtBoO80$jmF5)!;&?dX;5=*y zi2-ZL&||dG!EcKes(8o##J0kS^ioB-@!23QpC&?Ib=rui*0I=UBw%kkH@Wu@bAo}u!z&$%WEs+xgL2Tcrd zJ;CkkfN~IJKMSH4Pm+qcg@qG9lY+9T^B@{@PBw%V>2iKFD31mDPa79t3?-v(^ZsA6 zPiK}~M>0JcWIvRiv5HEhM$X*?F4#$tA3t(3jsAMccpI*HC~wmHTKb4a=#PO#+!rZ4 zpjCluddp+gAnppz;rt;Sd?wrZqumuSu*2X0-=f(;ddT!YJKbLDj{srhlgFBo3JXQL z?=Cf>`wSX-Tm>wcBv#4tA6bBze}weYqw%x9cL(@~fU4QIAOeggQ#7my!J2V^j3nag z7@$PV0{$>r?8#Oz!tVb3z)xe?d zO8N8+I%)&)iAo{&r4I>RU0o!1bl(>0=s4Bx$P1qAHPqIGyWpN4!I?RVreaWDx>W3Y zquV-!$5q_j z-LuW9!!z$`YRZCN&GqZ*c=Z!u5GW)ad@-Kv{$ad+Js92#UerY0(j2+) zSvrsRvNHi+_msO>F)S&o-KcM7*~UP zy*Q9h8=lGIz5NKBp5?*9T-ak!QOQuK@|CZ{AV|SoBcrE}ZkRL~Dz@M>u6YCEGfjF{ zCL1CofrpC_BVaLspf16hAwH~;8x=U@k?9qHLTmoUdemMRiY4;B^J!0BfcuH4NI-zQ zz+)zqZhmn!3EW^XD?jQM1*)b9A(jmwXH_F3ICs2Wc)q37Wx;hW+&>=DS=M z);qjvUb800-9LIDPz)8B;SHBMfO{;we7%tiH!4~9Ef)cY5D^k)!Ig!AhdWb|r}XXoiPa(1`1FQJ$q)o68cpk0+(G}2fKm<14LH{i%aWM0 zLb#1(23*C(#axMHw|fPqrl$6Rop(XUg+^ujbA}qOIe2L^RZ@G#fi6 z7;JN~-ok0X-*_5`{p5TE!EOq}Q(%fUZJa;FDB5*$RLDoKaBlVrWA> zG&-!1rp++SFo=ts_r$Wx0;)R zI^Xp5Vkv>;X5@0zUVoHRD(`-iS^&WD$ zHWe<`XjQFcFqRu|{c(TtZ1BN@%ZHpahkGo3mo8pJP2-53%6exEj5Np8i!uPmjyk$> zyu}(m#|`14@87=%lvgL8U(8bNyy6Ca5SWqR12M6M-Gv45ZPKxC@fX3O3B!__1|^iH zNZQ=**>5E&ib31pJz;-NDoEBt5hfef#Dv6|{sGM**o<5nhjBGcsh?G=Z_9@LM3PVc z6;LPHZuX5F&{@UL<_ABLd}sB)0Bv%R$%gU;%f=lQ-8kE0F9n=v{<;?QiPDs>kNe;YcX+4lApkzc06?ma zRx8CJ=L7-*ufv#l&C#kD03jKGgis0R!R-+GZ42ukk7;lF- zu8xR6I!m|Q`8tR8M-%Wfi0H%^Qous9W<29M|ZM8GCulEKP*-!}(- z#^pcJ+F`gCw@otUecB;*1Bsfy0h_m>bfy3#>;R)cvEXr>kQTBZX#rGcZ@!xf%3$e; zGojS!KGVH{+dr2fNOBoMDoC>zKl)PwhFo3C>2RJ7H>`|(u)e~&<{K$ z#{e1c`CkhWk_g}akC;i@h84gQXmL91XAl50DbmII4HXE{V2-vOr>5r8f0k-!79aUY zVt{B8fks1JnsOC|-arUC5d@GxbqECs^|x(dwtBiGf-%16gJ~?xhXtA`1kW(?bPAiy z`HBF~1Em1`4yt*kH4WZ{D-$ooR!!jY!rn~)HL)9FUyy%k1PU9ewInYuk3c_wi$JlW zUM+xsb4O`z{6*J%7J%INHaH+S>qosgQQdRUE<~Q}+I^DJXQa`}O058{Q>35&9v$8_ ze_Mlc`utOH=bRcZj(9KU|48BwHLP^!^;|cxui8*xO4Rz;Zdn3mz)yjj40pGnW8P6$ zpNHIAj!vPGfm=VyZuo2dpN`}Xg+mvKmVcoOrhX8{hNG~DYOm(@>RB9gqzIRQe8$Je z7b)aWb6}a~f9hqHb~`LWCd*Lu9!k(8hVpFfuCnqS6&2`B>CjM3g;F4Mw&oS5xHNpI z&S#TssUj_!s`i@8uniI`;b`=mTTX#syK#Z;3kVD{iXil;OPv5YBmyZ5(L><}h5SQ< z&~|V|B;woXrTnf`j;c91IZ3C$z9`<0D0?rU+?6pUqp@MPw&A%CUM;n#D_ddpE)5zz z<#;P{<+$DWJ(p@PM3RJ`;gPTa?*a4s0-ZP#^#Im2UDQm+1TTh#;a}o5`hiB}{dU%Jz_ zX9W(bojy>sEr{cdW4FAkp>e@ULcArq8H%1P3Z;d*E+`leG!5ANqcLemfe#{{^lwWH%N$7F_B7m@%1zyVPuK+~Y}fU*QW`1e`onE3eM!DT^j z($kfNHE51m$8aFbT;gw>PV{7Z|WPyMw+fk)9WIWIknbXtLQH5QpVpcwe zaeZBf@91CUr@vRPxDjp|S-G>eL&SY?d7%BEm&8#5W5I3t@sb3tZ5B?#~+o{03(*%C>;g~<)CzfN9TfVg5I^y7- zdD|Qv9{d(DK3G~Jz4j`2BzQeU^kt`x`eWll)e~}@?~N*lMgQ+it1m9ZElP)Hhx{06 zo;FXv&B(}T%k|Bp=ws4Cp`a8y-ns${8MovHBMvDwwGtG}me$q}ZqoQRJfDVF`f;&* zeV>J+z2)@qogN-e@4CVz-LZERVE`mp0LcRMFYBT316Te!7|O6r_}rGXpt}h0oZNVr-WA$4 zZ(CtPdg)RV05S+PK(+k|mSI5p5ecDr7=zrppdL>d;8Rd;IED#O7E|A!V^%+dV4ySD zYluY(yM`T8CXB&0cG>r@ar!Huz#qi^#qnCH6k!L2UI8S73F>IF>0VG7v!D_W&~#Ej z+ZQ}LfM2u+9pF8$FyOu@+h>%8hYc|+VS9tRm*7$%!aJZU#EbxqUQvS*oQWnt*{YV7 zIYbme_W%tXKt7$#)T2Ug(1CK8ZZb!TVHsaCs0=4cqDrxE+jy{8JU=#36J}1 zRf${-CMC}8W+h!KpHB;T7yt!yt4qpibEXxs5}=4~0`QHAi)#oxN4O6%MUsGZEGHMc z+)KejvVlsEwEz=DW!c=?Le3AG(FBy=>k<;9i5$8h-~)`Y{WD5A72CT|Zvufy%(%eA zl{jyOchLU08HAtJ1XYk;E2EL1s@k85_>m$U4cZ4;Xv4!1sS{|FeC91LmG7pLK+}U$ z5!$ss@6>9&oksw+CX%K&*qX_#i%!4G)@l|pc5m7x32Il;lqQTyDCjDWzvK<_`9q?tmHz6}F> zDJ69lI1A(i^tYzR*fOd75T|BlWW=l-g@6hG6ZkeLq#t_;ZoO~7QSF7*3=x^QmoG_w zy6j1I|i}ag3?t+4pD7+X#KV3ot^#{c@%5z6xr4z_Y8g{x3q*1 z;#&Q%4Dnc^T-S$M4w(Z8O$lr9%Nn@;6Z}RCeNY1F(!KI(M5AWm?uflGh@4Fn_48Zb zW0=GZ3{>z+Qv?NM$uH*iQvYBH!uL|kEm2TXRbjbbjg1)q7H6-rxlC;`Lj$(c2ipZR z23>++EztAb&bAFgy>Ty{q?2ZD?ED$xXTyBkO7~FBCSKOn)o$lpaM>NonR(|WbM2qQ zMMHKnA4-+%MU|E9nVw1ui0v-u#y-dv*s<@^11V!6u`K72c34IU-X!yUI=ar^^IpI0 z4jCWERRTuz0O&K{zJ0?oS{^Pf-1q{VhKVU_j3Qo@oJgEb*ldli0XQDLII#ekUXdCK zrKI{eqQi1_eNtt_zSLld^l~;-Y#g8QQU_z$X9E-dUGPS@2Gh->9T1(p!B({%MfN4% zWwFNsU?1N}ur;JvATm}o^s(w7p>$|-Wgx@wHQAKuAhQc@L60VevLP3fabSmK*4_Db zB)e8q=!vZW!F1{P*&R`6$!whL=DTl%sojt6D7>KQ`0WOaWbaY=754Av1eCg@YaR5r z;zt`CkJcYh3vOO0F6oL%Ol%3IznKA*46yrpTe=ZI3;;15f23+VnQBv80+tI1*lO2H zx(+6u6=x3$b~G>cTHQ)>8!5waIsQ)IZ9GI+I*iH^s}I7rC}5DdKJrd6B**%*Z9-dO z<*IqxTAJnf*oo^}T2rt3$&1<_z7Yw=hfEJ23ccwh#~pX3kTN$n`I1<^Tp;GvQ+RA! z*lAuLs2)&k^bC#GZO4|;(qe9KsEl%39=yAHuA9@`+#Dx+jD;9M>_BcOdIeUgp9rHf z0f1@jvb||+G`}j<86|AcbvYtoGa~P3V_2#r9k~hs`kU84eUYKVBFikd*|g}YIb(db zzkds^bCJysO^s3Y>jp)>8!g=CL&X=t5Q`C8rRo$Ox06NvFgHKe{cv1=JM;!8r@)dH zD&DFm{hLk6CMZ#ug@cNoa^|UNGvt{?p5ke^NhILGxamh#wR!_pAwdbc>^rhR4o%8) z@?gHDwFAyCBV&C%EBgMudo3j6XLW*u1`Szj5-<8KC-2O4v$sdn@n3=_HMpF$7hk5X&6GHQ9H=M>S+s)JmHU}j$D z-(vgv$q^{BynOJj)W%f+ODJiMZ}fZGjF&T~C}wc~FdAnee6Xq;w=| zQ9PWS)U_Cs#u+-T7UQTM0EZqVjJ(kS&?c#=_2wD#LF)(CLxEMo*C{SxYWm=Tic0S` z(e}|ffqXle(DikE*mstCZr zk;Q2I`u2_2o>x;EWs%4rn=)kAWLnfGf(*D=TU)0Vyn&|6wtW7?hcyF@25m*4!)7Gt z-S~}1d`aw4JKS1EtV$2QH$v_KAWGPa7eZ=@Ur?HwfkSoxOToi=tAzX0%c~q!Q!vhS zulGTS?E|AQllHE{Lx)NhVBOVNn9^X{@bdDyDZ7s_OFZMxeSu9%K@s6kA`=#&=Vx>w zxBcwv@;5u7K@QRdC{atUxsT%vRd2a0m61`xxKNitobB4_sN>n@=ABQZ9iaxUmt`^j zGT|97BSu*Rx8*BK)_sZS8^MB{t ze+{hv;MHW;47hYsUvuQOEV@FX$hJCl#EL;K4EmhFrP&Y5SwGZr<3Oc6fBw8pbv|Td zWrK38K?p(Kqyyn3gPHmHL7RGd-xvl!P(h^f8Zd;E*Q+^y@2j-3p$p;+JK{>ac74J;w9NRW5IWuU`9YU4?c|bq4B@#8Z?YlEfz9PA1ZZU zJk7wxPH2~hZNig6dTk~+G}M?Y^l~gu_9p4%DEgK^w{rp4UVbvHU-?NwggVJpw1b;$7>nkbiDQ%9T-t@J z`~FEu#6?oFVG2_lo-mpc+KMCalZUa(+|;%C1+hjvX=V)EZpbIWSlc7O=tSH6+h5t}xV9tu&*B7!0?ac2;8LutW*MY_2JaflRi1uGH zjc&d+P$TfV&bx2PhS8k&=J}bf1kxyIiAadk*~KMlu-b?la;U6aT%Bb>)MR8&GudD^ zA{G=KX)x*^fgoOIp?2mBT5vsNJEYj0Pi%6%v}drH~=Cu z>yV3rO$Na^7-azsxCtx^YCdy(L^*~iAlOF5V6cT;xY`EsQ=pUAB_-1uBQ7K34`BW^ zLxxxp7*betv=zW=Bm-Ul3=i+s*;E8Kj6o@83#C6*Jkt)?cL# z^oVH!m&c+hk{YCLtN>)9;!*dt49>U8Fv^jfgJgs4!3%_Z@WWR}kbs75IGLSbbPeV; zKvJ?Vo5V#TGk}93ou1yMSZGuYyL>v@|Ck9{80cbP)|Q{_4tt&K3?i`{kO*KP1x~*q zgm@Y>>Pa|F#H<3tQoF!_pbk_OUC^i?lfn4k=sl)Fp?%-_WCiSbeo{E^&)+ksbic_G z_Z%!GATp1JimzjU1@$E+$gM5_6J%vXDF8tSk!?*5z%=DeQh6ip6^o5`!4VFr1cnWf zBpMQ>%2I{A5{xJzQFpjGW?+_od{FuV+$$#_F`x(rH=4?5P=cXbc6zuBLyTa3!D>p* zfu(%s&K(RB&|6_z1Cp50{}=Vg%n$Ctow)Qg6_z-s*L@_{0-%IKU#j-rK}OmvI^T#O zx<7LF-kr38K-Dw}zNZqZ;if;V{v`rwq2z&7I*i+2X+eDQckg=_KNcUul0o<$SRe{1!1VZ$Y$UHM*)=VJ z17BRYHgYKFX_}8lD+EE;#OApa^j|e0hdO4cw@tNB9v|{0A)Gg|aL1cc{w=%!me~JO zAu=ZtK@>#z*|#k%SwKZos5}(Mtpo7K9xvs0d<$F_=&u1n6y)SHv1ojes2=|Hu0frR zW!Ry7zK5;=Ms#7G3&w4U*h*la%pUYCqbDn0ikojisvWj71Z8{*h z_@OM^QfhHe9+&_E?uw+x1`3VU4GgYCOYBl1FUrY%f&~E)qDI90g}`L@UCcyrFXwFc zd~FW65_wuRFlGp0EFSX~(yR{1=N3U0&rayUGyhK6zR(^}5p2{oz`<)8JRKcQelx1v zrX#gUj|Dg6$~s+iC>Ui>s=?%jiZUGu^ARvY1gr-JYayES_S2`I_&DCBV`p_0kgkK# z33yQis$iB?M%R5fwwG_-Abvc^&wN~pFuMhA2Ph(ptgLu(twA6hVZ8<(!@)ra8KP|l zsH4d_8W4P1r`y?t6s0^01^y29ZvpV2jsZtp2S@;0Bjb;QFw|autgbUo!~U+5u9@|% z=^mrP!9<>IV|6udTfQU+olkX&tucdBhbS2^#u{LI=$&$iS>RAe|Le3c4^8v)tH0OT z+owk0CsQA-85?nDsk0oGdKG<)U`;LzuV+|j2wFN_*uid-($zvW`TsGF0i=+s21?}q zpOP*xTm&k1M193dhOYd)-QB;tvsK-^6<=6zfiYP>&RF#)%HyTh-d0tWxOSnD;nx`# zL5`lZ!h+v5Mk$Ba@x$(2=Bv+;WKY}4CghS^5sWa&*rM+uWVC7isQ$w+>?|nV-%A9W zu-m7loAcjeI)70P&1?=+T~EMly$kuZp(-za7{0b>ztmdBEXQOMYr^yBCxd>e{nhp4_F2BySX(6I zZskVoLGP;-NN~ZLwI3-9V0;SE@3vPrKt};vfaq{<4bf1Bzebgg`=x;DOU;7cUAMg> zzeC}e)kVF%I+_C2^jy_0gpcCl;~QZtxgB&<^fSKX?^!X{Y2W6 zRRStpkVp~#5eczhLQ)pat-V2OK{s)pS zAS!~I1vW`EZL2O^28zCI8>od4fCHGlR1_f__8S?yhwgiPd`$S-<<^y;&`{w{UtExA zKx!~49ey?xNt$T@sXaiDZlaiYZiz4t^N(EzMH6{GKwxpD7v%d==?+K^-vDHS#xl9# z894fiG@)u~Gt$U$7Q$$#_y`CH5xVCT#_ z_b;waC@5vdrldslF22Hh@%_5I1|?uakmvI>G%4gY@CgZ-I5|IdvZ{l8jz$9m>^t-% zT;hRLb{sq-z{#ly2g|7y+UnGlDPTKW*Xh)Ln|vLHfa1FmV8^&scwgRTW>?GQPgKPx z+l1s+)CETriq`y=;ouYEK*^U0bWh9rf|qzR*upm`o#Q?}Wea+r9&Q^ZL<#J}z#NM7 zy&hs^B%sImx$HS7Mfog59A0RCJbQ^Uo$SK z1qHYeu2|5VH#nWiy*lh@^)6|cG&Gpm7QCI6l|?{8Qh5I=com5qb2Rzox-oz0*r z4g&^Uc8&`k!gW z);GW*)#!WEVOG8vH zhwJ>e!u~h@Y!H4zdoVx|4+#(k)ogFHsVd3_g+T%au$pu#y@k7ID$qv|I_@n$zD@tN;q|C8!58^QyR{*!jR<&Q9k1Hi%z04HeAsF3qA z4FBSh0I9(du!I=%k7U6Ju+ehV)Qz7nwerYly+iWFPku*5M+?_TLXKm@&CQ<;tTb@r zGU+N=<+gtQBch~u3uD3a7a%}F(Bcc@t5W~D9LqECu**5wxZEzc^OE+Nz;y+JiEl|E z8&tKvz8*1!*1h*k=HWv|&?x{Z83}Z2goQu|3ntYd`8;5)`mO0wpB2Tn;3!}Us51nX z_ho~a;f^*;ma(aY0BibCV_QMs#GBWZ92AwWk*05l790&C74&cl;`|R%$oLi6h8vHP zLk5?jR(J`?;BWB5Uj45RL+SizrBzOP_Ta`zd;9MoSpoW<|6E)%u!FcXVA;dOmKlvS zY>t24Y*0e@cTRW39dum{RKMrzk>#CDQ2HO13oY1)4?Fi<3J2Q}|FFXK28@n9gsOnFB#2)E6@^|?79((t3WCVEW7Y*C2+3ze zP4PeV`728VTleNbT<~Axr>t;<;Ne1r0kTC-;!40JCRl6*sQL%wp*-P~t$7^0gH@jrv<2jn9mSa28c_qg9t{syQ+Av_BbP&%9{M-2Y&?`m5*}3?#jTo8Joo2-q!{zrH@EMV`a~kCEUV$jxm!g%J@X?FNy% zY)IoGUKgxpWHbti0Yjm=<$EZA5FGNP7tmQ-0T}|2!zHE(6Tz;x$W_=Q zIwbQ+vAOhOGtm74zkWb&3~^`NC%JD z0Y_41#GBH<{oVfl{+3Z77B+TN*CC4BW{d;mTMAgd2**P)g$Oys z<%eqhrQo%Y%gH(a1T81vtN?>R3QrkEeIR3)4S8IkD6ql8Ga1_XAQ%zafca`yQardB z#+=NB*b^Z#s~J}jeC zrp>Xs43kObdhoO&7a%P_=4sN523FilAm*F#xv0W`>ozB-0N_R`6xLIm*cbsrjSYfS ztiA72shEWx3#=!|&QK2n5+uc{x0nwn$FAxem{!@6K3{1KznwVt7T=Sdzk%R$Zy}n02vu1El1%SJ~ zN87xc=@p2Ac@8A*2eSjV_zf`luMBe~h-3vV7I_Q>fHXuKh8Yx&C@)BtDA*Cx2$(?N z7@4$#O#!V?26@`rz(+<=(PT(i*8p7w$3Ai&g|dLL)+&%LMjyy#H8M24w#0xDG@@LJES5$+WG6WSHPz-`xkP%c2qpF$>F*Xn^y$|%4pcjWAne3lG@4-Wv>cNbx{$AH>_&|fQ;T{P6FF?@Sgajb+ zGz5SHNZ^b5v9aU|Q8dBOrPJq-;TTABBQiHUh-1X5`6@Cr zZ&dBAaqnIoqNcaCWkNg{f_R06g=9La^4mlOCO^V|SYIP=<=i zWzElGAAApL03^c0nU$bZ!xJlDw)8DjoJd;X7oZ8dz*8o&7`gO6cp%IS6$D+ z7~XeyzyUaHM6^Ob*v!7@Tf@=|PK3bZqrUesWGT7)3AvTKfUO`K4+aMXC8aqLu`Bi) zBt-}h=YV_F08s_NwboG{gO{Lw+@I3+deV8JNowfD;@N_njK<>rVL6F#tg+UYS8m7@ z)O@->uJV&GQ0y;VQUJLg(vqyAqBQavkqXz^i=E^>L{mcoT8bkx*+Q1%{enAMT6o^% zY>RfjPL_lu6#zSE3?PO6eM|;`D}OtOq2s4xo+l?K;DyV@GXIa(zB``lw(pzHrk0G% zs7Qk-BncTMA|qL4WF@0)Ss^kqLq-xx$%>+~6GBF$$Vx)8$sQT^`{+8K`?{a&d9K&< zJooE4|8RQ!UgGEL`#p~L=e-UfL(S~VL0uU@V`hog&K1K08P6)!?-e+}3ymHitL886 zneDS9$QQ3;bM%03J&Kg^kvt4Bz)Q!+_(e+;md@K-GAq4VqOGGj`bJ1#C8i*}tkO1Z z(dAEW51Ss^2(T9;3`2k(-2F9xXL(&dEP-oL%%=p#8h=bkInO~7#|WBA0dQe22VS#< zWvk5Q+hp}cWo3!;=Nq*w^#(`V9zJ{+k#9Z}Q~)d>8}<$mjpDAufV7kpo_7<3Mo0t| zBLx&}?ss1w%h7IO6;|H$dZORKHEy)cc`?7h0kR69T6fjn_>(GhKn`Xzv6A-dcIHm8 z*7JPt(omn6>-eBqP&BBcrlvOkt88n~+CDoGtztJZ)Nj4&ViiLS396Z1j0~dEW@CY*?lNes5_nl2wa4@^Syy1wMFZjTd!@ z1>x;Lk7ZH8R(HETlv$|&DjNz~wA_Jf59;+Yi{Ei}CsyM|aypJn|TYSr`UVq69jti1vH|O^6-XmfXa4O{C zVke6005KV-hiayMVxyzi$9Cwn8}Tz`d==@-j~TKaiWlp6Wou*8l4tw$MX>GW<7TU* zHf2cQ&S`jgw&m0H^C^X8T{{uA7&`eZHSv{rO7cD`@J{~LYJ6kob-uMOXb&Bz_s%sR z61!C$n!s>LH7ETpQ!$larz*JE_-G>{`3(X2K@& zk%HO)FI4~eNMU`n%O6uahpAt}C}FJ>73<=wkL-T;o$6$yv6Qqlxdnj&^2@eq%edaS zv0?M(Jscc8o@*olGi0$1QhSP=K`))M^A?cDIv*{|V@v4$$_=(jDf=SfJEvMEt*Vw! z6IY)TQ0Tj=BtkA|fC**{d?(nxbTgeHf8Yt=8#vk0o7^J>ldLaD)G(t8e1;MqJoDVH zY@&|8PGu@7A5Y$905C&p`_Ll!9n}jxSO$6!0tAPjn0f%qPyS=4J~g#o0BzBylmM34 z*1E!qI@H~kuI1c^SyC@6pGeNb4##7XAnhtaTmhVi0a5@0p-gl)ZW*$Xx*|}ZEE_Prrg>s5}Hqf}YIdf~}d9@?mxte@m95XI{ z7G!gq)8`iu2x`>D8+>$XBa9=3VFA@y3K*gD22;}lMct7y{^ehjt&LZ>r(W0fp5aW^ zHG9`_Yl4djI#bDjo%*3FXij~wR{l(R8i)P`S65dIqkR4FZh{Bt0WRTyX!QO2B{K5? z2C*k8KB$JL_Qc}SQVJkGi;%@7C|0B_0lUsNj9aJ%A&o-V`bbt4bVwGYI=r{_Tee(o zN>yvj)MM9*WI{<4gl6amkkUzt2bU?kwN{?5$jBlbbm_}c;vt7p_}S4H_B#Qm2_w?t zWw=BE%*jtdoV#f1#M=VEssvnEnONpMF-6otOw9?QGsF0+?-Uk}hHgRvfc*IPWnXxp zsgqibo}i=5a$@)e{s`2s%%fCz4;`YG3nR-pBB)nlAf~Vqkvv3vAvu&PkqK=FW}C{wN-?W&v@8iHDMQXIviMFMnyS+6+jb+@)}r(%^ue{ zAgzCVV!^q(xyZUlhRD~bZwg9HCB2oT(GGSFY^C2#RC_?8yCSo`t?FP<=LD`~e2t zLvX&3Q5jj_tzuKugnJaRKl6ho`DWw3!+#62WCy}VO`0n4vsXLDzl`Hzf)D{vPl0+@ z{U7Bynmo6>y(!7uZ>04T>p!cQ^Ibq(3eX3(>fwRthum;Vg=q4aTx4d|`OqeF5}S<^ zY&>K<#SQl>zipuC!G!(Mt8H}1R^!6^bzH;v>Aa*k%kZ)M2SAKaH(ETfcCc=#Jk{P8 zC;it0_m$tB@3Rz;R0hrws+9p{XEyb1v}jgW5y9hZ zF2jeBIH|<@azgAH$p&AIV>j+2y68R$vI==(Ip8c@Lh2$<<}*Rj5{(Vn?Q7SpX?SU> zn#jHRNzln+PYg$Na$&jXngw5i9xvrgT`_D>t-015An(8wl{@|-4O8#4YSD^w3Zhf- z%5s59r+2gwaR!x^0!kqP4g)v|DK;g>rZ`rVuFyV(rXy_HErlN9hA@=aHn&@7W8ux2(s|Z}KMIU!8?ll{5 zBboW6XP1zFSSxVN5tzmAh`SK!q$K3Jv0P~SNp6-gYj{-d#3zt1$MqHo_Mm!(A=7so zk5sMSycs6Z32;d+_l)oeTUhYGqlZ6GmrdRrL|5Dd>%cE#0wiT`4GR3LR;>z5Lq2nF zkpe%AEt*+Iw>3KO)cZ6`V5bqbAEbkEM)%mVJ?*yok%>TQ_N3S}Nf_2Z0y%#fo8BdB z3T1n}T-QWJx*4(VLfKDro*C5I;CHD$0cCbB)utbF5H!-Q3&)cN~8$bI(t^ zs=u!}FFCX|l&_IfI=(!kmXibR+;e4|(tJ^&q1Fv&`Ei+HJ>dVM;?|<_=9*GCbOoU^TNwieJt7B{^v^k-c2%XxN)LC?p9po2Z7hvLnd;Hmx4&OFCKo~DJnDJ zBT}1qpU739+c349Q#$N%_Lq^?eFxfoQs0ehI-1TndN`n`SWA)nOVqW=yoN_=$XlLP@x82|wb5opBr|H%4ZAq>eG(1xc}?H{2Er7O^XGk^dhJ^OIQ;vl2Gs$2I=V*J!@s7Efed3{5F5vDe8hbf>D0-%H0s1lP~-abZ=0K& zhv;=NvOsyQA9%T_k;iJ^-`+Pi7J`MEl9KWWZ@`^DQ*rvI#?gFVG9{n9a;5*6-iw*9 z@eH<|y1_l?SyILge&MMGY4eu({HiGm3N|NlM!DJU!(#i#mbKWjd}R1z<;ZF=M)dY-s7GK|oEL>vYXikBju*H^~}sm;FK z*O^!VycK=Kd^;kLKT-N|8)7;}!yIeiaUA#l>n4*0sGaqRVBX|jzHCBV# z&Kzm&r7@EI{%YT>16iRV$Fh^^%jlaoZ*+^BRw6k!z)=S~*!b-1(ZP-D*GohiBh*_#^7H=w{X1UZ+JACwB?d3f=Zk@8OQRlYoeANT1I0xeM0(8hmY;ngCNwx#qj+^l z|1sgvvEUsVbt@1;rHE{9R!ic(!gIJe-3(PaxlGi}Ym94kPc&p=WD`G@a+04T%G6Uup;G@@fZ zaVbwMIN@@kdLVw?CPrmbR+0<`WB3ELHXwWt0a}xqw9FAS##0d04GS~YmT}lQ$)EJNm7v|6EW6vsJ7A?c#aT*8_ zHFu=FpI$q*q`j@9*M^8^Kp#%sxA(#__!u`C4pAt3?$i$NCnP&@TyD}WLQ2X0Fo6H$ z>Uxbw-Z)KOPEv|j1kyy3jD{F7q47K=+#nqt$#22oNsuT~p+iIRSaEoxhSKMEla5Zv z>^ILb43f%r{Pj>&{}yrxWX8X+v%Ic@;yJyJ07W@XvM z&_#TC&aiCwZypjidJWZYBB~5`7RQsc92!Gl?5xL+A#TQR(tYnDno7F3%i=;8qGI^5&Y9_AxvtKTA~S7$atUZ*>y zkE=nRzK*LMB3DUu2%PYwkOvc5S^F;tWs^376Qq9#j_TcVVWGdK{#TmQ@PtzZ?v`sr z)COk>pEDmc6Vg|ULjbCNRbt7!*uUI@RE(=E1f$T*Ie zEcxq-^Cc#klBF-Af|i;2f_}T2+OsKPRI`)LB2+uUvK6q+R$u?2O8hmCME3ibnlg%) z7i>p2*7rR9M^GDe_2VMCl_Bhz)FxLStNTe}{c%FgC20-PAF$`eg+pn|j?`2fzELAK z`?U;FKMU8)kQ37tLt|q~&_=^JNtzKXTHwVPKrW#zuSbI)yMOT}+(r7AQFv&4p5%YH zJekFfqBU|4{VOwxF@e!1J;EAgd2Y+|CWd1FLZ7w`J)RA0M|az*M!V?pAKrOblMj`{O-hWP;))0s{gHcJA`{#Esk?VVD0{ z;->5}X{9W`LV1x4<79LEPMPphKAAy`BEca_y0)0b~;z=prtLt{A~K^@dh;bNktmN zKv)l5HZZ3}H0N{({UwMW^fUGFLeE3wHf?*kAM44fNMnfX1N1pOH5P3z$y7pGyRo(g zieQSa#BB(wMa*2ZH-#q{Yv6N`%jjsx#eo2u#{nrP+JYy33+&p}6-%yHTGJWA0@l@K zSQVP}#7a6Ts8t#E=RJ%%KBfMgb{=m2|6Tn+dM zxT}cW2!FV6)R=&d!ryz{#n%>H>??EYpy3+fHrDMh`(9rRaAI23jZ0WkqW)A!N3ACWgc&i_$Pu!kZ7|T`tm`ud9^8F+-gBjMkNI-O||T|B`<$3D22 zZ`8Qk-0gj#00pp+!7=iCM6D4a?gyl8FlSHO1oh6mN!ZW|dLthyzP6-nja%Yej`f@q%<4ZqKRDHGZo1Vmf-d zN}-75nI5C)Y>4;<7Ie^sglt8Byi87;!3)Q$w&=RX*iACK7|qF$)%km2A?^rU{jLDF z#k%djRYtoJ!N9g|=+bfR`V)uQh5XbkK2X;b&;|RS)#is&KX4oax^8ZP@lKSyJGMNuSIhXkgZanLcN!zn(|4@8#-|>?slG7n5dpHnZJ>lnyQgk?WU(C8nL5z zvRp-cZT-dCxVp}`zS6uIZ?`v5Cv;ymrT_F7(k;6CWt6xVUuhO-%>15gN<8X#N~Mk| z=gqM8w6njj$#BGxFSa8r^;dtzx)yzOtgf`r5U%Ds(LQpb-nL8IUax;V^{Tdtn3w!1 z`?jZVRgpo3naK?LA2})o4Jo??1sl0TeI=9`lE*C%COv*k2qV(A z2U7BnlZa)2B=YeHB5uzPnsp7%xJ*()or?Lp1Z)pP_5>Kn z|D-QvEVBc2>t$qe$kZ4XX5e?zB%dd|>PJMYy3*o)XN-_!t6J?B6l9Dqaz!==kNtyJ zUx6H8U=>i{&p|N)X0cMZ^8y1)zCYkpjWp)j9uSpxd(?0rb>kkhMJ9G^>$FOu*1Ef} zhLN@tG`o|of5;Jt{lHAa(PTeATuz9$d$%Q&n^VTiZjmd2^%K|7uFl3eW*9v5FRWf! zpz?q=kx<2-99QD<uCS_^=kdPB&t?Z19S6u6=st$`c zpJZVA<8H-lbqj)iFq_z!3l}b|ncRfGGL{usYtj~;F31-kXC-M9Sr%_{$I)|NkC?IEXfcXIp0 zOQFm&PGALoQ~xJv@qcBH`EUHh|6;wNi2izQ)@h?@%w^XZ9yI##$tkb8`F(-|oXG#I zb^RL&?ElNlhxYs1e3J^}WQtEar;C+H{A9fZNF6mgFZkdySFrj;_@*52#vBaQys+^F zmO!(Un`l?BqTKloUwC&H`S>>nM3|ue&C6Wbt=b)j@ei3j`kCNN`mc-Uzqvi${umq6 z!@uFBz+nJoT@q?d2O^>f`@m(R@nswD)Z(vqbZl&H8>DEo4`9m!eToS!cGg2a>{fg{ zdt}9|KGp4Yk8L9v8XW|+wSFsyt>`?NOcYf+66Ah2aCy!7kqsiPEu>WyW z@A|XKBeKzhIji43csb>%O7DNn>jKh@N)h=>{*NxD^4&_v&`))rj%VIZbvXA^=(~>z zqvL(SdH;F`NNlG5OD>EU&R{)&wM-|H)FG!8%Lh;poWyxpA_74GJ1>%hYhIceRSqWeHm_P{< z7oalXr7yB}eu05Mz$d}i?Q$>#sbCHca(F^n7X?albw@vB&?cwe&lq{s8g3VB-Xk?G zK(Ct6Ch_@K_Pwg>cd6UohQx}l)0*FtAQ!>Q$IBzO*FRw5xu$f(oqg6T4g6QPdp|N@ zh|BKd|0w(^SnlTC@HKP=^7WJfa=W=|qYRnm>FCWhjUs+(tm!daRb^JHb-sK0y1wED zrNTmwM+WrlE7Xfu)hBlB5e)wI8*ny|;)F4X(Se>hovTc9O)B+g6Q3I$#zyC?FE-FN1EH8n@hn_(Cr8wm(dR`JUFfjNJQdJL%h68JALc&fI zm)8P5_cx}{lC0?Q<17Uob&wl1i`|M|h(c_{*N_|^@c7od;<+5RFIqCNHQmN@q# zjeVefglp8I-D51r==%YO=ifWtShQdFbaqph@^aOBaHpC<-XZII$LRw+?v@vJC#ZD4 zH|dwop{6nF3ul`=yYm1~u!#&emrUSZ+( z=#KjzvsG2IY^c_6o-nT4THKH&$C$+23W zd2b%aF-f=iPL?;x1se9UST=D-rNM@T3VPyl)3iNTg(k()^=U%wt$ zl`VJKUW!Klq2yP4dG1JyxgDo<*HRRZh}G7P(OjY1_Ljj?wB(VoIk(R8NGYr(I^9N9 zgE|UM1Cpzr?J+t|H)`%q-%b;PY})?x|Vzwb8;fB`_9(?`XR5n-==1te?*X8NOx6KQaAq^K z5Ka$gKKV5ci}HPYt|fD2RZOQ$(mhF(FUK&XnZ?-|?-6(;F^* zc%3MU6Uq!Yt_~~kQGD+-zkX?Ayl=MF;9PJL?Y8e3c1~r_Kb_7rF0T!J=}NP8M_=5` z=6fru2XbBp{~SqKkyP!FmBp2#+4`Wnq2S^~m;8;E2eDNlEI5MFNjN5TqUA<2M-`V~ z)7eX6?#!p}DyrYVu_!Sk&FvE0Io#uGvEgy<&UGKHj%~C$R^7d9y7zLt1dXb#Rg`dE zk_tuDX#wH5NZ$~>_1v#nANTDTUyOA0qwKI0?ABZ|Kfq+dyIB6P=IpEKi{z}lOP6-S z>VtiNu?C&U@DmXZoAg8tqc{(C2sCAxd>#E1o|Ky#?cqUz%rk&k#YQFs#|t`wIput; zh=Up4HCS~%3I^em@O$^1=8xv`CYY|CJD}aUn-BFleD{r>RL|Pr(UyGn{ta1p5GIlLBE+=mShzBj#Y8*GnlkI{d~=-h~N%-+I7J{ z4`2CeA@VAqCrRi-?y+Tcq2)0;CljjH=l1OWb` zjX#{c%<}G|0;L6FHAYKv<`%I#8_oi50>b}=YCv*A2FPWI2u?vG^rtWi8Mfj%MWBnc z3(M4(Udyos;|v1!GzJF*i;(9HI|-2H>}+TcaE*aQhZ#Xb?u@H?e3&r(>$wPY1TPlhH& z|5{j<;n=rw-N`6?jn?6)3J&?){G_CwnDnKMznK5npDH^h%(;GAE$G|n zvrjHKuSG|TT-Y4QXC`!;!Ag$C@vZLe?xdU+xJWu>CAgThDmoHEIskJ;zeYRwq$ z+@(1zc_pTLL1!=16Ekg=iz1@t4Z^oVu3b5!`TRtU`vUvv&-Lfuh#q8DJ1F)ojMMP- zeD>uUH?}u92Rk#rc~>!ea7MkklbFKWmb2+$pTN=ZP#urrj?!;lRp~7+LlT_d6bf}q zX4MP7h(0Szvx%+vu3GW1;iu$vDk_en9TB?jCzeYo6R%OIaTlaU>3CQO=>qUtfJL3?~E1)D|f2cPMqndovJ|V@@&TIg5-a6 zu8`XS`rhBWyOfnvt1Ir}g^!7!n>H~Odp!S0%@J(4SIKaCbLn>K%YMyIlB|Y` z>s;Jm2WQ#3AQyJNXnqqGB*=;AIkSZj&%xv?{zge&{x9f{402%~1)r4~CBh#3q7bVW zhF{7jlk0FFBY6LhL#-%CTZyY{pom!_b>n%S*Pqh0xYGEzvfR^)O4VJ&g%GajVg^f%UhB_{S6Xb8P}NB= zjjk06RC!bBw43|#@bqrwj`G5Z#%G#8KACV|sE|3-J4CN(K}nZ?RfhGo$03g37{708 zQ`I)XbI<(j+tRG-NzLL8$BeZ@rd#`Zdc2Ub;AnQg{<_yQAmAJqg}*O#f4@fO^r?IWzEP;<1b9lVD_-V{7?^CfnR8^DdHbGfGu_)kmRm`A4T5)! z^6bPsa7(mS7EiJM(#(iX?|qF^2eb9F+EhBWi!VEDJZQM6Vl;Q9?n3a>zAjZh*0g83 zPplh_%-*R|o0uoKCpE;G>qxCmWk|E6Ug@ye6y8*v{vzHbFPKwO@n*ovVpw3oyPF~I zvQIn{86r7VpV-cXrE53lxoWArx0g+CcS@hy{xtnNEwxYUpi7;w+3qHB1?t9wJTq^z zlrBU>4#|djKHjG}eDg`pj+)C;Y3v)a%YzNF?)u;40UUO)r zEZQA!xADrFn|>$}Bo%h1CspOeQl87ISE{9h!sxTe)y|lVw9V7bxowmlo^%Qca6i;SIUGn@7R+VK! literal 0 HcmV?d00001 diff --git a/docs/blender_addon_use3.png b/docs/blender_addon_use3.png index 6555e13c1e6714394edbe095959d221727383186..dbc8948cbfb6bf3948f905b34e3a6de9d3452754 100644 GIT binary patch literal 55685 zcmYhjcRZKv`#-K-+L0YCqpZj*qlB_Yc1Ct2TV%Fmrx2lt3du;acUD%ilTETW+5DbY z_xtns{`%v-qu08w^E{8^xsI2QqWsnUq%@=?BqaN#u8Av?kZkiKA=zrSdnbOgeK=m1 z_@AAal*(@Waoug?ji0IQB{b}>TbbB9>f0KVm|9xhF=n?jv^6%iw7X?xKeeq$1P@{* z9(2XlSl`~v%JR61*&Sn&>kgL3xw(%k7}_7_KF59jIM?|L=LIjE<3D~y;<^fJ$m)9% zlH(*&;+IvNUX6D-+LI5i6wgeJTS%SQbK=r4*K?Cg#eQ2iIIby?pS-;Np=7Q-t@RzJ zd}*?@6HdI=N|zFq4!wWmJ%93{vbglMx7)8VZ*R=3ojN$_AGveOTji*FLAs!>GgFfm zf5V58rPEF7cpe`T+kFE6>1_QTCG3}##ZTfJdvhhS=G6cGp?{~*M&91z|M$~Wycvyr zJeh=&BKeN=#6%Cr@PGeO#{PB0expm`kXQ)W$dj}Gdvq+76ou#iUZ4C_RqX%%>TPgZ zll;GT-L2$*+7ExVl=<-CgNNhcGCkRpoI_&TwEw>+UjJj%P+Gd}V~f@}7d~nK-QK>w z2l4UDCUen6;xscX4t30|Qs&ncTm z{gC~Is+yX-6zM{4M!y|9c98tE;LCLwt7v>L)4;Qz#H;i{&EQufZl%1tci1TQ+Su4g z9-5n-?Z-cN-Wz)T`}c3_zvG(Z5;2xtx$oY;x7k>`Hy}je=lSN%@t~lfZ*_GAe<-nK z`u~2p-Nu1SP##Wudo?h$V`f2Msr80cn#-c)S(SuKMnU|IXOAan-eaJ ziHXG+@f<%+A}T8SltJ{s{Vq$>;`>{E4-H+95!-=(#ce&%k$LCTg$p$CO+GE=yw%#u z?Y{I)eb$|ylW#}FHN2A|!)>noq+cp-(eG>V&fT~ABS8x)arMFV3p&-nWk}Yk-lNIjm-8c6Rn#bv1FP+FqRt%`raQ zJC<4$=dw7Nq?J*<)ZcVlb8{|wld8kT#bs_|b;@pOTEB2*l+}H0=IYjM+de42CzT0h z>+5!zD(~osOjP}NWnSLa6Jqdyx~9@x2`rtHx{k!$AWXQ`>FiwA!XbyyV*;+XX>4@JjoWti`y z7kc@pF0v`d&UEGPgv{N$d^&k|+0`;tKdQZOs=bjzn^-d#E9OZm@LGQSZr<~2m1Sjb zSV()^SJ?|(7UQmX9eC{NNxj;Vp!A6PyvfZBt.yw0YOuT4$Yk4T)@5L@|iIljqE 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 diff --git a/tools/gltf_auto_export/README.md b/tools/gltf_auto_export/README.md index ede7351..54e9232 100644 --- a/tools/gltf_auto_export/README.md +++ b/tools/gltf_auto_export/README.md @@ -2,8 +2,15 @@ For convenience I also added this [Blender addon](./gltf_auto_export.py) that - automatically exports your level/world from Blender to gltf whenever you save your Blend file. -- it also supports automatical exports of used collections as [Gltf blueprints](../../crates/bevy_gltf_blueprints/README.md) & more ! - +- in Blueprints mode (highly recommended !) : + - supports automatic exports of used collections as [Gltf blueprints](../../crates/bevy_gltf_blueprints/README.md) + - supports any number of main/level scenes + - Blender scenes where you define your levels, and all collection instances are replaced with "pointers" to other gltf files (all automatic) + - supports any number of library scenes + - Blender scenes where you define the assets that you use in your levels, in the form of collections + - automatic export of **changed** objects & collections only ! a sort of "incremental export", where only the changed collections (if in use) + get exported when you save your blend file + ## Installation: @@ -25,9 +32,26 @@ For convenience I also added this [Blender addon](./gltf_auto_export.py) that ![blender addon use](../../docs/blender_addon_use.png) -* set the autoexport parameters : output path, name of your main scene etc in the **auto export** panel +* set the autoexport parameters in the **auto export** panel: + + ![blender addon use3](../../docs/blender_addon_use3.png) + + + - export folder + - pick your main (level) scenes and library scenes (see the chapter about Blueprints below) + - click in the scene picker & select your scene + + ![select scene](../../docs/blender_addon_add_scene.png) + + - click on the "+" icon + + ![select scene2](../../docs/blender_addon_add_scene2.png) + + - your scene is added to the list + + ![select scene3](../../docs/blender_addon_add_scene3.png) + -![blender addon use3](../../docs/blender_addon_use3.png) * and your standard gltf export parameters in the **gltf** panel @@ -84,12 +108,6 @@ and what actually gets exported for the main scene/world/level all collections instances replaced with empties, and all those collections exported to gltf files as seen above - -### TODO: - -- [ ] add ability to have multiple main & library scenes -- [ ] detect which objects have been changed to only re-export those - ## License This tool, all its code, contents & assets is Dual-licensed under either of diff --git a/tools/gltf_auto_export/gltf_auto_export.py b/tools/gltf_auto_export/gltf_auto_export.py index 1ab5232..7e758ca 100644 --- a/tools/gltf_auto_export/gltf_auto_export.py +++ b/tools/gltf_auto_export/gltf_auto_export.py @@ -1,7 +1,7 @@ bl_info = { "name": "gltf_auto_export", "author": "kaosigh", - "version": (0, 3), + "version": (0, 5), "blender": (3, 4, 0), "location": "File > Import-Export", "description": "glTF/glb auto-export", @@ -13,6 +13,7 @@ bl_info = { import os import bpy +import traceback from bpy.types import Operator, AddonPreferences from bpy.app.handlers import persistent from bpy_extras.io_utils import ExportHelper @@ -23,39 +24,177 @@ from bpy.props import (BoolProperty, CollectionProperty ) +bpy.context.window_manager['changed_objects_per_scene'] = {} +bpy.context.window_manager['previous_params'] = {} +bpy.context.window_manager['__gltf_auto_export_initialized'] = False +bpy.context.window_manager['__gltf_auto_export_gltf_params_changed'] = False + +scene_key = "auto_gltfExportSettings" +################## +### internals too + +class SceneLink(bpy.types.PropertyGroup): + name: bpy.props.StringProperty(name="") + scene: bpy.props.PointerProperty(type=bpy.types.Scene) + +class SceneLinks(bpy.types.PropertyGroup): + name = bpy.props.StringProperty(name="List of scenes to export", default="Unknown") + items: bpy.props.CollectionProperty(type = SceneLink) + +class CUSTOM_PG_sceneName(bpy.types.PropertyGroup): + name: bpy.props.StringProperty() + display: bpy.props.BoolProperty() + + +################ + +# TODO: move this out +class CUSTOM_OT_actions(Operator): + """Move items up and down, add and remove""" + bl_idname = "scene_list.list_action" + bl_label = "List Actions" + bl_description = "Move items up and down, add and remove" + bl_options = {'REGISTER'} + + action: bpy.props.EnumProperty( + items=( + ('UP', "Up", ""), + ('DOWN', "Down", ""), + ('REMOVE', "Remove", ""), + ('ADD', "Add", ""))) + + + scene_type: bpy.props.StringProperty()#TODO: replace with enum + + def invoke(self, context, event): + print("INVOKE", self.scene_type, __name__) + source = bpy.context.preferences.addons[__name__].preferences + target_name = "library_scenes" + target_index = "library_scenes_index" + if self.scene_type == "level": + target_name = "main_scenes" + target_index = "main_scenes_index" + + target = getattr(source, target_name) + idx = getattr(source, target_index) + + try: + item = target[idx] + except IndexError: + pass + else: + if self.action == 'DOWN' and idx < len(target) - 1: + item_next = target[idx + 1].name + target.move(idx, idx + 1) + source[target_index] += 1 + info = 'Item "%s" moved to position %d' % (item.name, source[target_index] + 1) + self.report({'INFO'}, info) + + elif self.action == 'UP' and idx >= 1: + item_prev = target[idx - 1].name + target.move(idx, idx - 1) + source[target_index] -= 1 + info = 'Item "%s" moved to position %d' % (item.name, source[target_index] + 1) + self.report({'INFO'}, info) + + elif self.action == 'REMOVE': + info = 'Item "%s" removed from list' % (target[idx].name) + source[target_index] -= 1 + target.remove(idx) + self.report({'INFO'}, info) + + if self.action == 'ADD': + new_scene_name = None + if self.scene_type == "level": + if context.scene.main_scene: + new_scene_name = context.scene.main_scene.name + else: + if context.scene.library_scene: + new_scene_name = context.scene.library_scene.name + if new_scene_name: + item = target.add() + item.name = new_scene_name#f"Rule {idx +1}" + + if self.scene_type == "level": + context.scene.main_scene = None + else: + context.scene.library_scene = None + + #name = f"Rule {idx +1}" + #target.append({"name": name}) + + source[target_index] = len(target) - 1 + info = '"%s" added to list' % (item.name) + self.report({'INFO'}, info) + + return {"FINISHED"} + + + +############# #see here for original gltf exporter infos https://github.com/KhronosGroup/glTF-Blender-IO/blob/main/addons/io_scene_gltf2/__init__.py @persistent def deps_update_handler(scene, depsgraph): - print("depsgraph_update_post", scene.name) - print("-------------") - changed_objects = [] - for obj in depsgraph.updates: - if isinstance(obj.id, bpy.types.Object): - print("object changed, amazing", obj.id, obj.id.name) - changed_objects.append(obj.id.name) - - changed = scene.name or "" + if scene.name != "temp_scene": # actually do we care about anything else than the main scene(s) ? + print("depsgraph_update_post", scene.name) + print("-------------") + changed = scene.name or "" - bpy.context.window_manager.changedObjects.clear() - for obj in changed_objects: - new_entry = bpy.context.window_manager.changedObjects.add() - new_entry.name = obj - #bpy.context.window_manager.changedObjects.add(obj) + # depsgraph = bpy.context.evaluated_depsgraph_get() + if not 'changed_objects_per_scene' in bpy.context.window_manager: + bpy.context.window_manager['changed_objects_per_scene'] = {} - print("changed objects", bpy.context.window_manager.changedObjects) - - bpy.context.window_manager.changedScene = changed + if not changed in bpy.context.window_manager['changed_objects_per_scene']: + bpy.context.window_manager['changed_objects_per_scene'][changed] = {} + + for obj in depsgraph.updates: + if isinstance(obj.id, bpy.types.Object): + # get the actual object + object = bpy.data.objects[obj.id.name] + bpy.context.window_manager['changed_objects_per_scene'][scene.name][obj.id.name] = object + + bpy.context.window_manager.changedScene = changed @persistent def save_handler(dummy): print("-------------") print("saved", bpy.data.filepath) - auto_export() + if not 'changed_objects_per_scene' in bpy.context.window_manager: + bpy.context.window_manager['changed_objects_per_scene'] = {} + changes_per_scene = bpy.context.window_manager['changed_objects_per_scene'] + #determine changed parameters + addon_prefs = bpy.context.preferences.addons[__name__].preferences + + prefs = {} + for (k,v) in addon_prefs.items(): + if k not in AutoExportGltfPreferenceNames: + prefs[k] = v + + set1 = set(bpy.context.window_manager['previous_params'].items()) + set2 = set(prefs.items()) + difference = dict(set1 ^ set2) + + changed_param_names = list(set(difference.keys())- set(AutoExportGltfPreferenceNames)) + changed_parameters = len(changed_param_names) > 0 + # do the export + auto_export(changes_per_scene, changed_parameters) + + + # save the parameters + # todo add back + for (k, v) in prefs.items(): + bpy.context.window_manager['previous_params'][k] = v + + # reset a few things after exporting + # reset wether the gltf export paramters were changed since the last save + bpy.context.window_manager['__gltf_auto_export_gltf_params_changed'] = False + # reset whether there have been changed objects since the last save + bpy.context.window_manager['changed_objects_per_scene'] = {} def get_changedScene(self): return self["changedScene"] @@ -219,12 +358,12 @@ def get_used_collections(scene): collection_names = set() used_collections = [] for object in scene_objects: - print("object ", object) + #print("object ", object) if object.instance_type == 'COLLECTION': - print("THIS OBJECT IS A COLLECTION") + #print("THIS OBJECT IS A COLLECTION") # print("instance_type" ,object.instance_type) collection_name = object.instance_collection.name - print("instance collection", object.instance_collection.name) + #print("instance collection", object.instance_collection.name) #object.instance_collection.users_scene # del object['blueprint'] # object['BlueprintName'] = '"'+collection_name+'"' @@ -232,7 +371,7 @@ def get_used_collections(scene): collection_names.add(collection_name) used_collections.append(object.instance_collection) - print("scene objects", scene_objects) + #print("scene objects", scene_objects) return (collection_names, used_collections) @@ -243,7 +382,7 @@ def traverse_tree(t): # gets all collections that should ALWAYS be exported to their respective gltf files, even if they are not used in the main scene/level def get_marked_collections(scene): - print("checking library for marked collections") + # print("checking library for marked collections") root_collection = scene.collection marked_collections = [] collection_names = [] @@ -290,39 +429,73 @@ def generate_gltf_export_preferences(addon_prefs): for key in addon_prefs.__annotations__.keys(): if str(key) not in AutoExportGltfPreferenceNames: - print("overriding setting", key, "value", getattr(addon_prefs,key)) + #print("overriding setting", key, "value", getattr(addon_prefs,key)) gltf_export_preferences[key] = getattr(addon_prefs,key) return gltf_export_preferences + +# get exportable collections from lists of mains scenes and lists of library scenes +def get_exportable_collections(main_scenes, library_scenes): + all_collections = [] + for main_scene in main_scenes: + (collection_names, _) = get_used_collections(main_scene) + all_collections = all_collections + list(collection_names) + for library_scene in library_scenes: + marked_collections = get_marked_collections(library_scene) + all_collections = all_collections + marked_collections[0] + return all_collections + +def check_if_blueprints_exist(collections, folder_path, extension): + not_found_blueprints = [] + for collection_name in collections: + gltf_output_path = os.path.join(folder_path, collection_name + extension) + print("gltf_output_path", gltf_output_path) + found = os.path.exists(gltf_output_path) and os.path.isfile(gltf_output_path) + if not found: + not_found_blueprints.append(collection_name) + return not_found_blueprints + ###################################################### #### Export logic ##### +# find which of the library scenes the given collection stems from +# TODO: does not seem efficient at all ? +def get_source_scene(collection_name, library_scenes): + match = None + for scene in library_scenes: + root_collection = scene.collection + found = False + for cur_collection in traverse_tree(root_collection): + if cur_collection.name == collection_name: + found = True + break + if found: + match = scene + break + return match + +def get_collections_per_scene(collection_names, library_scenes): + collections_per_scene = {} + for scene in library_scenes: + root_collection = scene.collection + for cur_collection in traverse_tree(root_collection): + if cur_collection.name in collection_names: + if not scene.name in collections_per_scene: + collections_per_scene[scene.name] = [] + collections_per_scene[scene.name].append(cur_collection.name) + + return collections_per_scene + # export collections: all the collections that have an instance in the main scene AND any marked collections, even if they do not have instances -def export_collections(scene, folder_path, addon_prefs, gltf_export_preferences): - (collection_names, used_collections) = get_used_collections(scene) - library_scene = getattr(addon_prefs, "export_library_scene_name") - marked_collections = get_marked_collections(bpy.data.scenes[library_scene]) - print("used collection names", collection_names, used_collections) - print("marked collection names", marked_collections[0]) - +def export_collections(collections, folder_path, library_scene, addon_prefs, gltf_export_preferences): # set active scene to be the library scene (hack for now) - bpy.context.window.scene = bpy.data.scenes[library_scene] + bpy.context.window.scene = library_scene # save current active collection active_collection = bpy.context.view_layer.active_layer_collection - all_collections = list(collection_names) + marked_collections[0] - # we save this list of collections in the context - bpy.context.window_manager.exportedCollections.clear() - - for collection_name in all_collections: + for collection_name in collections: print("exporting collection", collection_name) - - #TODO: add error handling for this - ui_info = bpy.context.window_manager.exportedCollections.add() - ui_info.name = collection_name - - layer_collection = bpy.context.view_layer.layer_collection layerColl = recurLayerCollection(layer_collection, collection_name) # set active collection to the collection @@ -337,29 +510,34 @@ def export_collections(scene, folder_path, addon_prefs, gltf_export_preferences) bpy.context.view_layer.active_layer_collection = active_collection -def export_main(scene, folder_path, addon_prefs): - output_name = getattr(addon_prefs,"export_main_output_name") +def export_blueprints_from_collections(collections, library_scene, folder_path, addon_prefs): + export_output_folder = getattr(addon_prefs,"export_output_folder") gltf_export_preferences = generate_gltf_export_preferences(addon_prefs) - print("exporting to", folder_path, output_name) + export_blueprints_path = os.path.join(folder_path, export_output_folder, getattr(addon_prefs,"export_blueprints_path")) if getattr(addon_prefs,"export_blueprints_path") != '' else folder_path + + #print("-----EXPORTING BLUEPRINTS----") + #print("LIBRARY EXPORT", export_blueprints_path ) + + try: + export_collections(collections, export_blueprints_path, library_scene, addon_prefs, gltf_export_preferences) + except Exception as error: + print("failed to export collections to gltf: ", error) + # TODO : rethrow + + +# export all main scenes +def export_main_scenes(scenes, folder_path, addon_prefs): + for scene in scenes: + export_main_scene(scene, folder_path, addon_prefs) + +def export_main_scene(scene, folder_path, addon_prefs): + export_output_folder = getattr(addon_prefs,"export_output_folder") + gltf_export_preferences = generate_gltf_export_preferences(addon_prefs) + print("exporting to", folder_path, export_output_folder) export_blueprints = getattr(addon_prefs,"export_blueprints") - export_blueprints_path = os.path.join(folder_path, getattr(addon_prefs,"export_blueprints_path")) if getattr(addon_prefs,"export_blueprints_path") != '' else folder_path - - # backup current active scene - old_current_scene = bpy.context.scene - # backup current selections - old_selections = bpy.context.selected_objects - - + if export_blueprints : - print("-----EXPORTING BLUEPRINTS----") - print("LIBRARY EXPORT", export_blueprints_path ) - - try: - export_collections(scene, export_blueprints_path, addon_prefs, gltf_export_preferences) - except Exception as error: - print("failed to export collections to gltf: ", error) - (hollow_scene, object_names) = generate_hollow_scene(scene) #except Exception: # print("failed to create hollow scene") @@ -367,7 +545,7 @@ def export_main(scene, folder_path, addon_prefs): # set active scene to be the given scene bpy.context.window.scene = hollow_scene - gltf_output_path = os.path.join(folder_path, output_name) + gltf_output_path = os.path.join(folder_path, export_output_folder, scene.name) export_settings = { **gltf_export_preferences, 'use_active_scene': True, @@ -382,42 +560,135 @@ def export_main(scene, folder_path, addon_prefs): if export_blueprints : clear_hollow_scene(hollow_scene, scene, object_names) - # reset current scene from backup - bpy.context.window.scene = old_current_scene - # reset selections - for obj in old_selections: - obj.select_set(True) - - """Main function""" -def auto_export(): - file_path = bpy.data.filepath - # Get the folder - folder_path = os.path.dirname(file_path) - # get the preferences for our addon +def auto_export(changes_per_scene, changed_export_parameters): addon_prefs = bpy.context.preferences.addons[__name__].preferences - print("last changed", bpy.context.window_manager.changedScene) + # a semi_hack to ensure we have the latest version of the settings + initialized = bpy.context.window_manager['__gltf_auto_export_initialized'] if '__gltf_auto_export_initialized' in bpy.context.window_manager else False + if not initialized: + print("not initialized, fetching settings if any") + # semi_hack to restore the correct settings if the add_on was installed before + settings = bpy.context.scene.get(scene_key) + if settings: + print("loading settings") + try: + # Update filter if user saved settings + #if hasattr(self, 'export_format'): + # self.filter_glob = '*.glb' if self.export_format == 'GLB' else '*.gltf' + for (k, v) in settings.items(): + setattr(addon_prefs, k, v) + except Exception as error: + print("error setting preferences from saved settings", error) + bpy.context.window_manager['__gltf_auto_export_initialized'] = True - # optimised variation - last_changed = bpy.context.window_manager.changedScene + # have the export parameters (not auto export, just gltf export) have changed: if yes (for example switch from glb to gltf, compression or not, animations or not etc), we need to re-export everything + print ("changed_export_parameters", changed_export_parameters) + try: + file_path = bpy.data.filepath + # Get the folder + folder_path = os.path.dirname(file_path) + # get the preferences for our addon - export_main_scene_name = getattr(addon_prefs,"export_main_scene_name") - export_on_library_changes = getattr(addon_prefs,"export_on_library_changes") - export_library_scene_name = getattr(addon_prefs,"export_library_scene_name") + export_blueprints = getattr(addon_prefs,"export_blueprints") + export_output_folder = getattr(addon_prefs,"export_output_folder") - # export the main game world - game_scene = bpy.data.scenes[export_main_scene_name] + main_scene_names= list(map(lambda scene: scene.name, getattr(addon_prefs,"main_scenes"))) + library_scene_names = list(map(lambda scene: scene.name, getattr(addon_prefs,"library_scenes"))) + print("main scenes", main_scene_names, "library_scenes", library_scene_names) + print("export_output_folder", export_output_folder) + + # export the main game world + level_scenes = list(map(lambda name: bpy.data.scenes[name], main_scene_names)) + library_scenes = list(map(lambda name: bpy.data.scenes[name], library_scene_names)) + + # export everything everytime + if export_blueprints: + print("EXPORTING") + # get a list of all collections actually in use + collections = get_exportable_collections(level_scenes, library_scenes) + # first check if all collections have already been exported before (if this is the first time the exporter is run + # in your current Blender session for example) + export_blueprints_path = os.path.join(folder_path, export_output_folder, getattr(addon_prefs,"export_blueprints_path")) if getattr(addon_prefs,"export_blueprints_path") != '' else folder_path + + gltf_extension = getattr(addon_prefs, "export_format") + gltf_extension = '.glb' if gltf_extension == 'GLB' else '.gltf' + collections_not_on_disk = check_if_blueprints_exist(collections, export_blueprints_path, gltf_extension) + changed_collections = [] + + print('changes_per_scene', changes_per_scene.items(), changes_per_scene.keys()) + for scene, bla in changes_per_scene.items(): + print(" changed scene", scene) + for obj_name, obj in bla.items(): + object_collections = list(obj.users_collection) + object_collection_names = list(map(lambda collection: collection.name, object_collections)) + if len(object_collection_names) > 1: + print("ERRROR, objects in multiple collections not supported") + else: + object_collection_name = object_collection_names[0] if len(object_collection_names) > 0 else None + print(" object ", obj, object_collection_name) + if object_collection_name in collections: + changed_collections.append(object_collection_name) + + collections_to_export = list(set(changed_collections + collections_not_on_disk)) + + # we need to re_export everything if the export parameters have been changed + collections_to_export = collections if changed_export_parameters else collections_to_export + collections_per_scene = get_collections_per_scene(collections_to_export, library_scenes) + + print("--------------") + print("collections: all:", collections) + print("collections: changed:", changed_collections) + print("collections: not found on disk:", collections_not_on_disk) + print("collections: to export:", collections_to_export) + print("collections: per_scene:", collections_per_scene) + + # backup current active scene + old_current_scene = bpy.context.scene + # backup current selections + old_selections = bpy.context.selected_objects + + # first export any main/level/world scenes + print("export MAIN scenes") + for scene_name in main_scene_names: + do_export_main_scene = changed_export_parameters or (scene_name in changes_per_scene.keys() and len(changes_per_scene[scene_name].keys()) > 0) + if do_export_main_scene: + print(" exporting scene:", scene_name) + export_main_scene(bpy.data.scenes[scene_name], folder_path, addon_prefs) + + + # now deal with blueprints/collections + do_export_library_scene = changed_export_parameters or len(collections_to_export) > 0 # export_library_scene_name in changes_per_scene.keys() + print("export LIBRARY") + if do_export_library_scene: + # we only want to go through the library scenes where our collections to export are present + for (scene_name, collections_to_export) in collections_per_scene.items(): + print(" exporting collections from scene:", scene_name) + print(" collections to export", collections_to_export) + library_scene = bpy.data.scenes[scene_name] + export_blueprints_from_collections(collections_to_export, library_scene, folder_path, addon_prefs) + + + # reset current scene from backup + bpy.context.window.scene = old_current_scene + # reset selections + for obj in old_selections: + obj.select_set(True) + + + else: + print("dsfsfsdf") + for scene_name in main_scene_names: + export_main_scene(bpy.data.scenes[scene_name], folder_path, addon_prefs) + + except Exception as error: + traceback.print_stack() + def error_message(self, context): + self.layout.label(text="Failure during auto_export: please check your main scene name & make sure your output folder exists. Error: "+ str(error)) + + bpy.context.window_manager.popup_menu(error_message, title="Error", icon='ERROR') - # most recent change was in the main scene (game world/ level) - if last_changed == export_main_scene_name: - print("game world changed, exporting game gltf only") - export_main(game_scene, folder_path, addon_prefs) - # if the library has changed, so will likely the game world that uses the library assets - if last_changed == export_library_scene_name and export_library_scene_name != "" and export_on_library_changes: - print("library changed") - export_main(game_scene, folder_path, addon_prefs) ###################################################### @@ -426,18 +697,23 @@ def auto_export(): AutoExportGltfPreferenceNames = [ 'auto_export', 'export_main_scene_name', - 'export_main_output_name', - 'export_on_library_changes', + 'export_output_folder', 'export_library_scene_name', 'export_blueprints', - 'export_blueprints_path' + 'export_blueprints_path', + + 'main_scenes', + 'library_scenes', + 'main_scenes_index', + 'library_scenes_index' ] class AutoExportGltfAddonPreferences(AddonPreferences): # this must match the add-on name, use '__package__' # when defining this in a submodule of a python package. bl_idname = __name__ - + bl_options = {'PRESET'} + auto_export: BoolProperty( name='Auto export', description='Automatically export to gltf on save', @@ -448,15 +724,10 @@ class AutoExportGltfAddonPreferences(AddonPreferences): description='The name of the main scene/level/world to auto export', default='Scene' ) - export_main_output_name: StringProperty( - name='Glb output name', - description='The glb output name for the main scene to auto export', - default='world' - ) - export_on_library_changes: BoolProperty( - name='Export on library changes', - description='Export main scene on library changes', - default=False + export_output_folder: StringProperty( + name='Export folder (relative)', + description='The root folder for all exports(relative to current file) Defaults to current folder', + default='' ) export_library_scene_name: StringProperty( name='Library scene', @@ -467,14 +738,19 @@ class AutoExportGltfAddonPreferences(AddonPreferences): export_blueprints: BoolProperty( name='Export Blueprints', description='Replaces collection instances with an Empty with a BlueprintName custom property', - default=False + default=True ) export_blueprints_path: StringProperty( name='Blueprints path', - description='path to export the blueprints to (relative to this Blend file)', - default='' + description='path to export the blueprints to (relative to the Export folder)', + default='library' ) + main_scenes: CollectionProperty(name="main scenes", type=CUSTOM_PG_sceneName) + main_scenes_index: IntProperty(name = "Index for main scenes list", default = 0) + + library_scenes: CollectionProperty(name="library scenes", type=CUSTOM_PG_sceneName) + library_scenes_index: IntProperty(name = "Index for library scenes list", default = 0) ##### export_format: EnumProperty( @@ -726,7 +1002,7 @@ class AutoExportGltfAddonPreferences(AddonPreferences): default=False ) -class AutoExportGLTF(Operator, ExportHelper): +class AutoExportGLTF(Operator, AutoExportGltfAddonPreferences, ExportHelper): """test""" bl_idname = "export_scenes.auto_gltf" bl_label = "Apply settings" @@ -739,50 +1015,109 @@ class AutoExportGLTF(Operator, ExportHelper): default='*.glb;*.gltf', options={'HIDDEN'} ) - """ - auto_export: BoolProperty( - name='Auto export', - description='Automatically export to gltf on save', + + will_save_settings: BoolProperty( + name='Remember Export Settings', + description='Store glTF export settings in the Blender project', default=True ) - export_main_scene_name: StringProperty( - name='Main scene', - description='The name of the main scene/level/world to auto export', - default='Scene' - ) - export_main_output_name: StringProperty( - name='Glb output name', - description='The glb output name for the main scene to auto export', - default='world' - ) - export_on_library_changes: BoolProperty( - name='Export on library changes', - description='Export main scene on library changes', - default=False - ) - export_library_scene_name: StringProperty( - name='Library scene', - description='The name of the library scene to auto export', - default='Library' - ) - # blueprint settings - export_blueprints: BoolProperty( - name='Export Blueprints', - description='Replaces collection instances with an Empty with a BlueprintName custom property', - default=False - ) - export_blueprints_path: StringProperty( - name='Blueprints path', - description='path to export the blueprints to (relative to this Blend file)', - default='' - )""" - - def draw(self, context): - pass + + # Custom scene property for saving settings + scene_key = "auto_gltfExportSettings" + + def save_settings(self, context): + # find all props to save + exceptional = [ + # options that don't start with 'export_' + 'main_scenes', + 'library_scenes' + ] + all_props = self.properties + export_props = { + x: getattr(self, x) for x in dir(all_props) + if (x.startswith("export_") or x in exceptional) and all_props.get(x) is not None + } + print("saving settings", export_props)#, self.properties, dir(self.properties)) + context.scene[self.scene_key] = export_props + + + def apply_settings_to_preferences(self, context): + # find all props to save + exceptional = [ + # options that don't start with 'export_' + 'main_scenes', + 'library_scenes' + ] + all_props = self.properties + export_props = { + x: getattr(self, x) for x in dir(all_props) + if (x.startswith("export_") or x in exceptional) and all_props.get(x) is not None + } + addon_prefs = bpy.context.preferences.addons[__name__].preferences + + for (k, v) in export_props.items(): + setattr(addon_prefs, k, v) + def execute(self, context): - preferences = context.preferences + if self.will_save_settings: + self.save_settings(context) + # apply the operator properties to the addon preferences + self.apply_settings_to_preferences(context) + return {'FINISHED'} + + def invoke(self, context, event): + settings = context.scene.get(self.scene_key) + self.will_save_settings = False + if settings: + print("loading settings") + try: + for (k, v) in settings.items(): + print("loading setting", k, v) + setattr(self, k, v) + self.will_save_settings = True + + # Update filter if user saved settings + if hasattr(self, 'export_format'): + self.filter_glob = '*.glb' if self.export_format == 'GLB' else '*.gltf' + + except (AttributeError, TypeError): + self.report({"ERROR"}, "Loading export settings failed. Removed corrupted settings") + del context.scene[self.scene_key] + + + for (k, v) in self.properties.items(): + print("PROPERTIES", k, v) + + addon_prefs = bpy.context.preferences.addons[__name__].preferences + + main_scene_names= list(map(lambda scene: scene.name, getattr(addon_prefs,"main_scenes"))) + library_scene_names = list(map(lambda scene: scene.name, getattr(addon_prefs,"library_scenes"))) + level_scenes = list(map(lambda name: bpy.data.scenes[name], main_scene_names)) + library_scenes = list(map(lambda name: bpy.data.scenes[name], library_scene_names)) + + collections = get_exportable_collections(level_scenes, library_scenes) + + try: + # we save this list of collections in the context + bpy.context.window_manager.exportedCollections.clear() + #TODO: add error handling for this + for collection_name in collections: + ui_info = bpy.context.window_manager.exportedCollections.add() + ui_info.name = collection_name + except Exception as error: + self.report({"ERROR"}, "Failed to populate list of exported collections/blueprints") + + + + wm = context.window_manager + wm.fileselect_add(self) + return {'RUNNING_MODAL'} + # return self.execute(context) + + def draw(self, context): + pass class GLTF_PT_auto_export_main(bpy.types.Panel): bl_space_type = 'FILE_BROWSER' @@ -817,7 +1152,6 @@ class GLTF_PT_auto_export_root(bpy.types.Panel): def poll(cls, context): sfile = context.space_data operator = sfile.active_operator - return operator.bl_idname == "EXPORT_SCENES_OT_auto_gltf" def draw_header(self, context): @@ -831,16 +1165,69 @@ class GLTF_PT_auto_export_root(bpy.types.Panel): layout.use_property_decorate = False # No animation. sfile = context.space_data - #operator = sfile.active_operator - operator = bpy.context.preferences.addons[__name__].preferences + operator = sfile.active_operator layout.active = operator.auto_export - layout.prop(operator, "export_main_scene_name") - layout.prop(operator, "export_library_scene_name") + layout.prop(operator, 'will_save_settings') + layout.prop(operator, "export_output_folder") - layout.prop(operator, "export_main_output_name") - layout.prop(operator, "export_on_library_changes") - + # scene selectors + row = layout.row() + col = row.column(align=True) + col.separator() + + source = bpy.context.preferences.addons[__name__].preferences + + rows = 2 + + # main/level scenes + layout.label(text="main scenes") + layout.prop(context.scene, "main_scene", text='') + + row = layout.row() + row.template_list("GLTF_auto_export_UL_SCENES", "level scenes", source, "main_scenes", source, "main_scenes_index", rows=rows) + + col = row.column(align=True) + sub_row = col.row() + add_operator = sub_row.operator("scene_list.list_action", icon='ADD', text="") + add_operator.action = 'ADD' + add_operator.scene_type = 'level' + #add_operator.source = operator + sub_row.enabled = context.scene.main_scene is not None + + sub_row = col.row() + remove_operator = sub_row.operator("scene_list.list_action", icon='REMOVE', text="") + remove_operator.action = 'REMOVE' + remove_operator.scene_type = 'level' + col.separator() + + #up_operator = col.operator("scene_list.list_action", icon='TRIA_UP', text="") + #up_operator.action = 'UP' + #col.operator("scene_list.list_action", icon='TRIA_DOWN', text="").action = 'DOWN' + + # library scenes + layout.label(text="library scenes") + layout.prop(context.scene, "library_scene", text='') + + row = layout.row() + row.template_list("GLTF_auto_export_UL_SCENES", "library scenes", source, "library_scenes", source, "library_scenes_index", rows=rows) + + col = row.column(align=True) + sub_row = col.row() + add_operator = sub_row.operator("scene_list.list_action", icon='ADD', text="") + add_operator.action = 'ADD' + add_operator.scene_type = 'library' + sub_row.enabled = context.scene.library_scene is not None + + + sub_row = col.row() + remove_operator = sub_row.operator("scene_list.list_action", icon='REMOVE', text="") + remove_operator.action = 'REMOVE' + remove_operator.scene_type = 'library' + col.separator() + + + class GLTF_PT_auto_export_blueprints(bpy.types.Panel): bl_space_type = 'FILE_BROWSER' bl_region_type = 'TOOL_PROPS' @@ -861,11 +1248,10 @@ class GLTF_PT_auto_export_blueprints(bpy.types.Panel): sfile = context.space_data operator = sfile.active_operator - addon_prefs = bpy.context.preferences.addons[__name__].preferences - - layout.prop(addon_prefs, "export_blueprints") - layout.prop(addon_prefs, "export_blueprints_path") + # addon_prefs = bpy.context.preferences.addons[__name__].preferences + layout.prop(operator, "export_blueprints") + layout.prop(operator, "export_blueprints_path") class GLTF_PT_auto_export_collections_list(bpy.types.Panel): bl_space_type = 'FILE_BROWSER' @@ -913,6 +1299,9 @@ class GLTF_PT_auto_export_gltf(bpy.types.Panel): addon_prefs = preferences.addons[__name__].preferences layout = self.layout + sfile = context.space_data + operator = sfile.active_operator + #preferences = context.preferences #print("ADDON PREFERENCES ", list(preferences.addons.keys())) #print("standard blender gltf prefs", list(preferences.addons["io_scene_gltf2"].preferences.keys())) @@ -921,28 +1310,55 @@ class GLTF_PT_auto_export_gltf(bpy.types.Panel): #addon_prefs = preferences.addons[__name__].preferences - # print("KEYS", dir(addon_prefs)) + # print("KEYS", operator.properties.keys()) #print("BLAS", addon_prefs.__annotations__) #print(addon_prefs.__dict__) for key in addon_prefs.__annotations__.keys(): if key not in AutoExportGltfPreferenceNames: - layout.prop(addon_prefs, key) - #for key in addon_prefs_gltf.__annotations__.keys(): - # layout.prop(addon_prefs_gltf, key) + layout.prop(operator, key) + + + + +class GLTF_auto_export_UL_SCENES(bpy.types.UIList): + # The draw_item function is called for each item of the collection that is visible in the list. + # data is the RNA object containing the collection, + # item is the current drawn item of the collection, + # icon is the "computed" icon for the item (as an integer, because some objects like materials or textures + # have custom icons ID, which are not available as enum items). + # active_data is the RNA object containing the active property for the collection (i.e. integer pointing to the + # active item of the collection). + # active_propname is the name of the active property (use 'getattr(active_data, active_propname)'). + # index is index of the current item in the collection. + # flt_flag is the result of the filtering process for this item. + # Note: as index and flt_flag are optional arguments, you do not have to use/declare them here if you don't + # need them. + def draw_item(self, context, layout, data, item, icon, active_data, active_propname): + ob = data + # draw_item must handle the three layout types... Usually 'DEFAULT' and 'COMPACT' can share the same code. + if self.layout_type in {'DEFAULT', 'COMPACT'}: + # You should always start your row layout by a label (icon + text), or a non-embossed text field, + # this will also make the row easily selectable in the list! The later also enables ctrl-click rename. + # We use icon_value of label, as our given icon is an integer value, not an enum ID. + # Note "data" names should never be translated! + #if ma: + # layout.prop(ma, "name", text="", emboss=False, icon_value=icon) + #else: + # layout.label(text="", translate=False, icon_value=icon) + layout.label(text=item.name, icon_value=icon) + #layout.prop(item, "name", text="", emboss=False, icon_value=icon) + # 'GRID' layout type should be as compact as possible (typically a single icon!). + elif self.layout_type == 'GRID': + layout.alignment = 'CENTER' + layout.label(text="", icon_value=icon) + + def menu_func_import(self, context): self.layout.operator(AutoExportGLTF.bl_idname, text="glTF auto Export (.glb/gltf)") ###################################################### # internals -class ChangedObject(bpy.types.PropertyGroup): - name: bpy.props.StringProperty(name="") - -class ChangedObjects(bpy.types.PropertyGroup): - name = bpy.props.StringProperty(name="List of changed objects", default="Unknown") - items: bpy.props.CollectionProperty(type = ChangedObject) - - class CollectionToExport(bpy.types.PropertyGroup): name: bpy.props.StringProperty(name="") @@ -951,15 +1367,20 @@ class CollectionsToExport(bpy.types.PropertyGroup): items: bpy.props.CollectionProperty(type = CollectionToExport) + + ###################################################### classes = [ + SceneLink, + SceneLinks, + CUSTOM_PG_sceneName, + GLTF_auto_export_UL_SCENES, + CUSTOM_OT_actions, + AutoExportGLTF, AutoExportGltfAddonPreferences, - ChangedObject, - ChangedObjects, - CollectionToExport, CollectionsToExport, @@ -971,22 +1392,53 @@ classes = [ ] + + +def is_scene_ok(self, scene): + prefs = bpy.context.preferences.addons[__name__].preferences + return scene.name not in prefs.main_scenes and scene.name not in prefs.library_scenes + + def register(): for cls in classes: bpy.utils.register_class(cls) + bpy.types.Scene.main_scene = bpy.props.PointerProperty(type=bpy.types.Scene, name="main scene", description="main_scene_chooser", poll=is_scene_ok) + bpy.types.Scene.library_scene = bpy.props.PointerProperty(type=bpy.types.Scene, name="library scene", description="library_scene_picker", poll=is_scene_ok) + # setup handlers for updates & saving bpy.app.handlers.depsgraph_update_post.append(deps_update_handler) bpy.app.handlers.save_post.append(save_handler) bpy.types.WindowManager.changedScene = bpy.props.StringProperty(get=get_changedScene, set=set_changedScene) - bpy.types.WindowManager.changedObjects = bpy.props.CollectionProperty(type=ChangedObjects) bpy.types.WindowManager.exportedCollections = bpy.props.CollectionProperty(type=CollectionsToExport) # add our addon to the toolbar bpy.types.TOPBAR_MT_file_export.append(menu_func_import) + + ## just experiments + bpy.types.Scene.main_scenes_list_index = IntProperty(name = "Index for main scenes list", default = 0) + bpy.types.Scene.library_scenes_list_index = IntProperty(name = "Index for library scenes list", default = 0) + + + mock_main_scenes = []#["World", "level2"] + main_scenes = bpy.context.preferences.addons[__name__].preferences.main_scenes + for item_name in mock_main_scenes: + item = main_scenes.add() + item.name = item_name + + mock_library_scenes = [] #["Library", "Library2"] + library_scenes = bpy.context.preferences.addons[__name__].preferences.library_scenes + for item_name in mock_library_scenes: + item = library_scenes.add() + item.name = item_name + + bpy.context.preferences.addons[__name__].preferences.main_scenes_index = 0 + bpy.context.preferences.addons[__name__].preferences.library_scenes_index = 0 + + def unregister(): for cls in classes: bpy.utils.unregister_class(cls) @@ -998,8 +1450,15 @@ def unregister(): bpy.app.handlers.save_post.remove(save_handler) del bpy.types.WindowManager.changedScene - del bpy.types.WindowManager.changedObjects del bpy.types.WindowManager.exportedCollections + del bpy.types.Scene.main_scene + del bpy.types.Scene.library_scene + + del bpy.types.Scene.main_scenes_list_index + del bpy.types.Scene.library_scenes_list_index + + + if __name__ == "__main__": register() \ No newline at end of file diff --git a/tools/gltf_auto_export/old.py b/tools/gltf_auto_export/old.py deleted file mode 100644 index 1a67c9a..0000000 --- a/tools/gltf_auto_export/old.py +++ /dev/null @@ -1,1141 +0,0 @@ -bl_info = { - "name": "gltf_auto_export_gltf", - "author": "kaosigh", - "version": (0, 1), - "blender": (3, 4, 0), - "location": "File > Import-Export", - "description": "glTF/glb auto-export", - "warning": "", - "wiki_url": "", - "tracker_url": "", - "category": "Import-Export" - } - -import os -import bpy -from bpy.types import Operator, AddonPreferences -from bpy.app.handlers import persistent -from bpy_extras.io_utils import ExportHelper -from bpy.props import (BoolProperty, - IntProperty, - StringProperty, - EnumProperty, - CollectionProperty - ) - -#see here for original gltf exporter infos https://github.com/KhronosGroup/glTF-Blender-IO/blob/main/addons/io_scene_gltf2/__init__.py -@persistent -def deps_update_handler(scene): - print("-------------") - print("depsgraph_update_post", scene.name) - - changed = scene.name or "" - print("changed", changed) - bpy.context.scene.changedScene = changed - #set_ChangedScene(changed) - #auto_export() - - - -#https://docs.blender.org/api/current/bpy.ops.export_scene.html#bpy.ops.export_scene.gltf -def export_gltf (path, export_settings): - settings = {**export_settings, "filepath": path} - bpy.ops.export_scene.gltf(**settings) - -def get_collection_hierarchy(root_col, levels=1): - """Read hierarchy of the collections in the scene""" - level_lookup = {} - def recurse(root_col, parent, depth): - if depth > levels: - return - if isinstance(parent, bpy.types.Collection): - level_lookup.setdefault(parent, []).append(root_col) - for child in root_col.children: - recurse(child, root_col, depth + 1) - recurse(root_col, root_col.children, 0) - return level_lookup - -""" -This exports the library's collections into seperate gltf files -""" -def export_library_split(scene, folder_path, gltf_export_preferences): - # backup current active scene - old_current_scene = bpy.context.scene - # set active scene to be the given scene - bpy.context.window.scene = scene - - export_settings = { **gltf_export_preferences, 'use_active_scene': True} - - root_collection = scene.collection - collections_lookup = get_collection_hierarchy(root_collection, 3) - - children_to_parent_collections = {i : k for k, v in collections_lookup.items() for i in v} - scene_objects = [o for o in root_collection.objects] - candidates = [x for v in collections_lookup.values() for x in v] - """ - print("prt_col", children_to_parent_collections) - print("scene objects", scene_objects) - print("candidate", candidates) - """ - - if not candidates: - # self.report({'INFO'}, "Nothing to export") - # reset current scene from backup - bpy.context.window.scene = old_current_scene - return #{'CANCELLED'} - - # Unlink all Collections and objects - for canditate in candidates: - children_to_parent_collections.get(canditate).children.unlink(canditate) - for object in scene_objects: - scene_objects.objects.unlink(object) - - # (Re-)link collections of choice to root level and export - for canditate in candidates: - root_collection.children.link(canditate) - collection_name = canditate.name - gltf_output_path = os.path.join(folder_path, collection_name) - export_gltf(gltf_output_path, export_settings) - print("exporting", collection_name, "to", gltf_output_path) - root_collection.children.unlink(canditate) - - # Reset all back - for object in scene_objects: - scene_objects.objects.link(object) - for canditate in candidates: - children_to_parent_collections.get(canditate).children.link(canditate) - - # reset current scene from backup - bpy.context.window.scene = old_current_scene - -def debug_test(scene): - root_collection = scene.collection - collections_lookup = get_collection_hierarchy(root_collection, 1) - - children_to_parent_collections = {i : k for k, v in collections_lookup.items() for i in v} - scene_objects = [o for o in root_collection.objects] - candidates = [x for v in collections_lookup.values() for x in v] - print("prt_col", children_to_parent_collections) - print("scene objects", scene_objects) - print("candidates", candidates) - -""" -export the library into only a few gltf files ie - scene_collection - asset_pack1 - asset_a - asset_b - asset_c - - asset_pack2 - asset_d - asset_e - -would export 2 gltf files - asset_pack1.glb - with three scenes: - asset_a - asset_b - asset_c - - asset_pack2.glb - with two scenes: - asset_d - asset_f -""" -def export_library_merged(scene, folder_path, gltf_export_preferences): - # backup current active scene - old_current_scene = bpy.context.scene - # set active scene to be the given scene - bpy.context.window.scene = scene - - export_settings = { - **gltf_export_preferences, - 'use_active_scene': False, - 'use_visible': False, - } - - root_collection = scene.collection - collections_lookup = get_collection_hierarchy(root_collection, 3) - - children_to_parent_collections = {i : k for k, v in collections_lookup.items() for i in v} - scene_objects = [o for o in root_collection.objects] - candidates = [x for v in collections_lookup.values() for x in v] - - """ - print("prt_col", children_to_parent_collections) - print("scene objects", scene_objects) - print("candidate", candidates) - """ - - virtual_scenes = [] - if not candidates: - # self.report({'INFO'}, "Nothing to export") - return #{'CANCELLED'} - - for canditate in candidates: - #print("candidate collection", canditate) - virtual_scene = bpy.data.scenes.new(name=canditate.name) - virtual_scenes.append(virtual_scene) - virtual_scene.collection.children.link(canditate) - try: - gltf_output_path = os.path.join(folder_path, "library") - export_gltf(gltf_output_path, export_settings) - except Exception: - print("failed to export to gltf") - - for virtual_scene in virtual_scenes: - bpy.data.scenes.remove(virtual_scene) - - # TODO: we want to exclude the library and the game scene ??? - """ - #backup test - backup = bpy.data.scenes["toto"] - ## add back the scene - #bpy.data.scenes["toto"] = backup - collection = "" - try: - collection = bpy.data.collections["virtual"] - bpy.data.collections.remove(collection) - collection = bpy.data.collections.new("virtual") - except Exception: - collection = bpy.data.collections.new("virtual") - raise - - #bpy.data.scenes["toto"].collection.children.unlink(bpy.data.scenes["toto"].collection) - #print("copy", collection) - - # nuke the scene - toto = bpy.data.scenes["toto"] - print(" toto.collection", toto.collection.children) - for child in toto.collection.children: - print("child ", child) - for child in toto.collection.objects: - print("child ", child) - - collection.children.link(toto.collection) - - for child in collection.children: - print("child 2 ", child) - - for child in toto.collection.objects: - print("child ", child) - toto.collection.objects.unlink(child) - - #toto.collection.children.unlink(toto.collection) - - bpy.data.scenes.remove(toto) - - # now recreate it - toto = bpy.data.scenes.new(name="toto") - toto.collection.children.link(collection) - for child in collection.objects: - print("adding back child ", child) - toto.collection.objects.link(child) - """ - # reset current scene from backup - bpy.context.window.scene = old_current_scene - - -# the active collection is a View Layer concept, so you actually have to find the active LayerCollection -# which must be done recursively -def find_layer_collection_recursive(find, col): - for c in col.children: - if c.collection == find: - return c - return None - - -# Makes an empty, at location, stores it in existing collection, from https://blender.stackexchange.com/questions/51290/how-to-add-empty-object-not-using-bpy-ops -def make_empty(name, location, coll_name): #string, vector, string of existing coll - empty_obj = bpy.data.objects.new( "empty", None, ) - empty_obj.name = name - empty_obj.empty_display_size = 1 - bpy.data.collections[coll_name].objects.link(empty_obj) - empty_obj.location = location - return empty_obj - - -def make_empty2(name, location, collection): - object_data = None #bpy.data.meshes.new("NewMesh") #None - empty_obj = bpy.data.objects.new( name, object_data ) - empty_obj.name = name - empty_obj.location = location - - - empty_obj.empty_display_size = 2 - empty_obj.empty_display_type = 'PLAIN_AXES' - collection.objects.link( empty_obj ) - return empty_obj - -def make_empty3(name, location, collection): - original_active_object = bpy.context.active_object - bpy.ops.object.empty_add(type='PLAIN_AXES', location=location) - empty_obj = bpy.context.active_object - empty_obj.name = name - collection.objects.link( empty_obj ) - bpy.context.view_layer.objects.active = original_active_object - return empty_obj - -# generate a copy of a scene that replaces collection instances with empties -# FIXME: will not preserve original names -# alternative: copy original names before creating a new scene, & reset them -# or create empties, hide original ones, and do the same renaming trick -def generate_hollow_scene(scene): - root_collection = scene.collection - temp_scene = bpy.data.scenes.new(name="temp_scene") - copy_root_collection = temp_scene.collection - scene_objects = [o for o in root_collection.objects] - - - found = find_layer_collection_recursive(copy_root_collection, bpy.context.view_layer.layer_collection) - if found: - print("FOUND COLLECTION") - # once it's found, set the active layer collection to the one we found - bpy.context.view_layer.active_layer_collection = found - - #original_names = {} - original_names = [] - for object in scene_objects: - if object.instance_type == 'COLLECTION': - collection_name = object.instance_collection.name - - #original_names[object.name] = object.name# + "____bak" - #print("custom properties", object, object.keys(), object.items()) - #for k, e in object.items(): - # print("custom properties ", k, e) - print("object location", object.location) - original_name = object.name - original_names.append(original_name) - - object.name = original_name + "____bak" - empty_obj = make_empty3(original_name, object.location, copy_root_collection) - """we inject the collection/blueprint name, as a component called 'BlueprintName', but we only do this in the empty, not the original object""" - empty_obj['BlueprintName'] = '"'+collection_name+'"' - empty_obj['SpawnHere'] = '' - - for k, v in object.items(): - empty_obj[k] = v - else: - copy_root_collection.objects.link(object) - - # bpy.data.scenes.remove(temp_scene) - # objs = bpy.data.objects - #objs.remove(objs["Cube"], do_unlink=True) - return (temp_scene, original_names) - -def clear_hollow_scene(temp_scene, original_scene, original_names): - # reset original names - root_collection = original_scene.collection - scene_objects = [o for o in root_collection.objects] - - for object in scene_objects: - if object.instance_type == 'COLLECTION': - print("object name to reset", object.name) - if object.name.endswith("____bak"): - print("reseting") - object.name = object.name.replace("____bak", "") - - # remove empties (only needed when we go via ops ????) - root_collection = temp_scene.collection - scene_objects = [o for o in root_collection.objects] - for object in scene_objects: - if object.type == 'EMPTY': - bpy.data.objects.remove(object, do_unlink=True) - - bpy.data.scenes.remove(temp_scene) - -#Recursivly transverse layer_collection for a particular name -def recurLayerCollection(layerColl, collName): - found = None - if (layerColl.name == collName): - return layerColl - for layer in layerColl.children: - found = recurLayerCollection(layer, collName) - if found: - return found - -def get_used_collections(scene): - root_collection = scene.collection - - scene_objects = [o for o in root_collection.objects] - collection_names = set() - used_collections = [] - for object in scene_objects: - print("object ", object) - if object.instance_type == 'COLLECTION': - print("THIS OBJECT IS A COLLECTION") - # print("instance_type" ,object.instance_type) - collection_name = object.instance_collection.name - print("instance collection", object.instance_collection.name) - #object.instance_collection.users_scene - # del object['blueprint'] - # object['BlueprintName'] = '"'+collection_name+'"' - if not collection_name in collection_names: - collection_names.add(collection_name) - used_collections.append(object.instance_collection) - - print("scene objects", scene_objects) - return (collection_names, used_collections) - -def export_used_collections(scene, folder_path, gltf_export_preferences): - (collection_names, used_collections) = get_used_collections(scene) - print("used collection names", collection_names, used_collections) - - # set active scene to be the library scene (hack for now) - bpy.context.window.scene = bpy.data.scenes["library"] - # save current active collection - active_collection = bpy.context.view_layer.active_layer_collection - - for collection_name in list(collection_names): - print("exporting collection", collection_name) - - layer_collection = bpy.context.view_layer.layer_collection - layerColl = recurLayerCollection(layer_collection, collection_name) - # set active collection to the collection - bpy.context.view_layer.active_layer_collection = layerColl - - print("layercoll", layerColl) - gltf_output_path = os.path.join(folder_path, collection_name) - - export_settings = { **gltf_export_preferences, 'use_active_scene': True, 'use_active_collection': True} #'use_visible': False, - export_gltf(gltf_output_path, export_settings) - - # reset active collection to the one we save before - bpy.context.view_layer.active_layer_collection = active_collection - -def export_main(scene, folder_path, gltf_export_preferences, output_name, addon_prefs): - print("exporting to", folder_path, output_name) - export_blueprints = getattr(addon_prefs,"export_blueprints") - export_blueprints_path = os.path.join(folder_path, getattr(addon_prefs,"export_blueprints_path")) if getattr(addon_prefs,"export_blueprints_path") != '' else folder_path - - # backup current active scene - old_current_scene = bpy.context.scene - - if export_blueprints : - print("-----EXPORTING BLUEPRINTS----") - print("LIBRARY EXPORT", export_blueprints_path ) - - try: - #gltf_output_path = os.path.join(folder_path, "library") - #export_gltf(gltf_output_path, export_settings) - export_used_collections(scene, export_blueprints_path, gltf_export_preferences) - except Exception: - print("failed to export collections to gltf") - - (hollow_scene, object_names) = generate_hollow_scene(scene) - #except Exception: - # print("failed to create hollow scene") - - # set active scene to be the given scene - bpy.context.window.scene = hollow_scene - - gltf_output_path = os.path.join(folder_path, output_name) - - export_settings = { **gltf_export_preferences, - 'use_active_scene': True, - 'use_active_collection':True, - 'use_active_collection_with_nested':True, - 'use_visible': False, - 'use_renderable': False, - 'export_apply':True - } - export_gltf(gltf_output_path, export_settings) - - if export_blueprints : - clear_hollow_scene(hollow_scene, scene, object_names) - - # reset current scene from backup - bpy.context.window.scene = old_current_scene - -def auto_export(): - file_path = bpy.data.filepath - # Get the folder - folder_path = os.path.dirname(file_path) - addon_prefs = bpy.context.preferences.addons[__name__].preferences - - """ - print("folder", folder_path) - scn_col = bpy.context.scene.collection - - print("scene", scn_col) - print("scenes", library_scene, game_scene) - - library_root_collection = library_scene.collection - library_base_collections_lookup = get_collection_hierarchy(library_root_collection, 3) - print("lib root collection", library_root_collection) - print("all collections", library_base_collections_lookup) - """ - - """ - lkp_col = get_collection_hierarchy(scn_col, levels=3) - prt_col = {i : k for k, v in lkp_col.items() for i in v} - scn_obj = [o for o in scn_col.objects] - candidates = [x for v in lkp_col.values() for x in v] - print("scn_col", scn_col) - - print("lkp_col", lkp_col) - print("prt_col", prt_col) - print("scene objects", scn_obj) - print("candidate", candidates) - """ - - print("-------------") - - gltf_export_preferences = dict( - export_format= 'GLB', #'GLB', 'GLTF_SEPARATE', 'GLTF_EMBEDDED' - check_existing=False, - - use_selection=False, - use_visible=True, # Export visible and hidden objects. See Object/Batch Export to skip. - use_renderable=False, - use_active_collection= False, - use_active_collection_with_nested=False, - use_active_scene = False, - - export_texcoords=True, - export_normals=True, - # here add draco settings - export_draco_mesh_compression_enable = False, - - export_tangents=False, - #export_materials - export_colors=True, - export_attributes=True, - #use_mesh_edges - #use_mesh_vertices - export_cameras=True, - export_extras=True, # For custom exported properties. - export_lights=True, - export_yup=True, - export_skins=True, - export_morph=False, - export_apply=False, - export_animations=False - ) - - for key in addon_prefs.__annotations__.keys(): - if key != "export_on_library_changes" and key != "export_main_scene_name" and key != "export_main_output_name" and key != "export_library_scene_name" and key != "export_blueprints" and key != "export_blueprints_path": #FIXME: ugh, cleanup - gltf_export_preferences[key] = getattr(addon_prefs,key) - print("overriding setting", key, "value", getattr(addon_prefs,key)) - - # (we want an in-memory scene, not one that is visible in the ui) - #invisible_scene = bpy.types.Scene("foo") - - - # export the library - #export_library_split(library_scene, folder_path) - #export_library_merged(library_scene, folder_path, gltf_export_preferences) - - # export the main game world - # export_main(game_scene, folder_path, gltf_export_preferences) - - export_main_scene_name = getattr(addon_prefs,"export_main_scene_name") - export_main_output_name = getattr(addon_prefs,"export_main_output_name") - export_on_library_changes = getattr(addon_prefs,"export_on_library_changes") - export_library_scene_name = getattr(addon_prefs,"export_library_scene_name") - - # print("ADD ON PARAMS FOR EXPORT ??", export_on_library_changes, export_main_scene_name, export_main_output_name, export_blueprints) - print("last changed", bpy.context.scene.changedScene) - # optimised variation - last_changed = bpy.context.scene.changedScene #get_changedScene() - if last_changed == export_main_scene_name: - # export the main game world - game_scene = bpy.data.scenes[export_main_scene_name] - - print("game world changed, exporting game gltf only") - export_main(game_scene, folder_path, gltf_export_preferences, export_main_output_name, addon_prefs) - if last_changed == export_library_scene_name and export_library_scene_name != "" : # if the library has changed, so will likely the game world that uses the library assets - print("library changed, exporting both game & library gltf") - library_scene = bpy.data.scenes[export_library_scene_name] - - # export the library - # export_library_merged(library_scene, folder_path, gltf_export_preferences) - # export the main game world - if export_on_library_changes: - game_scene = bpy.data.scenes[export_main_scene_name] - export_main(game_scene, folder_path, gltf_export_preferences, export_main_output_name, addon_prefs) - - return {'FINISHED'} - - - -@persistent -def save_handler(dummy): - print("-------------") - print("saved", bpy.data.filepath) - auto_export() - - -def get_changedScene(self): - return self["changedScene"] - - -def set_ChangedScene(self, value): - self["changedScene"] = value - -class AutoExportGltfAddonPreferences(AddonPreferences): - # this must match the add-on name, use '__package__' - # when defining this in a submodule of a python package. - bl_idname = __name__ - ui_tab: EnumProperty( - items=(('GENERAL', "General", "General settings"), - ('MESHES', "Meshes", "Mesh settings"), - ('OBJECTS', "Objects", "Object settings"), - ('ANIMATION', "Animation", "Animation settings")), - name="ui_tab", - description="Export setting categories", - ) - export_format: EnumProperty( - name='Format', - items=(('GLB', 'glTF Binary (.glb)', - 'Exports a single file, with all data packed in binary form. ' - 'Most efficient and portable, but more difficult to edit later'), - ('GLTF_EMBEDDED', 'glTF Embedded (.gltf)', - 'Exports a single file, with all data packed in JSON. ' - 'Less efficient than binary, but easier to edit later'), - ('GLTF_SEPARATE', 'glTF Separate (.gltf + .bin + textures)', - 'Exports multiple files, with separate JSON, binary and texture data. ' - 'Easiest to edit later')), - description=( - 'Output format and embedding options. Binary is most efficient, ' - 'but JSON (embedded or separate) may be easier to edit later' - ), - default='GLB' - ) - - - export_main_scene_name: StringProperty( - name='Main scene', - description='The name of the main scene/level/world to auto export', - default='Scene' - ) - export_main_output_name: StringProperty( - name='Glb output name', - description='The glb output name for the main scene to auto export', - default='world' - ) - export_on_library_changes: BoolProperty( - name='Export on library changes', - description='Export main scene on library changes', - default=False - ) - export_library_scene_name: StringProperty( - name='Library scene', - description='The name of the library scene to auto export', - default='' - ) - - # blueprint settings - export_blueprints: BoolProperty( - name='Export Blueprints', - description='Replaces collection instances with an Empty with a BlueprintName custom property', - default=False - ) - - export_blueprints_path: StringProperty( - name='Export Blueprints path', - description='path to export the blueprints to', - default='' - ) - - - ##### - export_copyright: StringProperty( - name='Copyright', - description='Legal rights and conditions for the model', - default='' - ) - - export_image_format: EnumProperty( - name='Images', - items=(('AUTO', 'Automatic', - 'Save PNGs as PNGs and JPEGs as JPEGs. ' - 'If neither one, use PNG'), - ('JPEG', 'JPEG Format (.jpg)', - 'Save images as JPEGs. (Images that need alpha are saved as PNGs though.) ' - 'Be aware of a possible loss in quality'), - ('NONE', 'None', - 'Don\'t export images'), - ), - description=( - 'Output format for images. PNG is lossless and generally preferred, but JPEG might be preferable for web ' - 'applications due to the smaller file size. Alternatively they can be omitted if they are not needed' - ), - default='AUTO' - ) - - export_texture_dir: StringProperty( - name='Textures', - description='Folder to place texture files in. Relative to the .gltf file', - default='', - ) - - """ - export_jpeg_quality: IntProperty( - name='JPEG quality', - description='Quality of JPEG export', - default=75, - min=0, - max=100 - ) - """ - - export_keep_originals: BoolProperty( - name='Keep original', - description=('Keep original textures files if possible. ' - 'WARNING: if you use more than one texture, ' - 'where pbr standard requires only one, only one texture will be used. ' - 'This can lead to unexpected results' - ), - default=False, - ) - - export_texcoords: BoolProperty( - name='UVs', - description='Export UVs (texture coordinates) with meshes', - default=True - ) - - export_normals: BoolProperty( - name='Normals', - description='Export vertex normals with meshes', - default=True - ) - - export_draco_mesh_compression_enable: BoolProperty( - name='Draco mesh compression', - description='Compress mesh using Draco', - default=False - ) - - export_draco_mesh_compression_level: IntProperty( - name='Compression level', - description='Compression level (0 = most speed, 6 = most compression, higher values currently not supported)', - default=6, - min=0, - max=10 - ) - - export_draco_position_quantization: IntProperty( - name='Position quantization bits', - description='Quantization bits for position values (0 = no quantization)', - default=14, - min=0, - max=30 - ) - - export_draco_normal_quantization: IntProperty( - name='Normal quantization bits', - description='Quantization bits for normal values (0 = no quantization)', - default=10, - min=0, - max=30 - ) - - export_draco_texcoord_quantization: IntProperty( - name='Texcoord quantization bits', - description='Quantization bits for texture coordinate values (0 = no quantization)', - default=12, - min=0, - max=30 - ) - - export_draco_color_quantization: IntProperty( - name='Color quantization bits', - description='Quantization bits for color values (0 = no quantization)', - default=10, - min=0, - max=30 - ) - - export_draco_generic_quantization: IntProperty( - name='Generic quantization bits', - description='Quantization bits for generic coordinate values like weights or joints (0 = no quantization)', - default=12, - min=0, - max=30 - ) - - export_tangents: BoolProperty( - name='Tangents', - description='Export vertex tangents with meshes', - default=False - ) - - export_materials: EnumProperty( - name='Materials', - items=(('EXPORT', 'Export', - 'Export all materials used by included objects'), - ('PLACEHOLDER', 'Placeholder', - 'Do not export materials, but write multiple primitive groups per mesh, keeping material slot information'), - ('NONE', 'No export', - 'Do not export materials, and combine mesh primitive groups, losing material slot information')), - description='Export materials', - default='EXPORT' - ) - - export_original_specular: BoolProperty( - name='Export original PBR Specular', - description=( - 'Export original glTF PBR Specular, instead of Blender Principled Shader Specular' - ), - default=False, - ) - - export_colors: BoolProperty( - name='Vertex Colors', - description='Export vertex colors with meshes', - default=True - ) - - export_attributes: BoolProperty( - name='Attributes', - description='Export Attributes (when starting with underscore)', - default=False - ) - - use_mesh_edges: BoolProperty( - name='Loose Edges', - description=( - 'Export loose edges as lines, using the material from the first material slot' - ), - default=False, - ) - - use_mesh_vertices: BoolProperty( - name='Loose Points', - description=( - 'Export loose points as glTF points, using the material from the first material slot' - ), - default=False, - ) - - export_cameras: BoolProperty( - name='Cameras', - description='Export cameras', - default=True - ) - - use_selection: BoolProperty( - name='Selected Objects', - description='Export selected objects only', - default=False - ) - - use_visible: BoolProperty( - name='Visible Objects', - description='Export visible objects only', - default=True - ) - - use_renderable: BoolProperty( - name='Renderable Objects', - description='Export renderable objects only', - default=False - ) - - - export_apply: BoolProperty( - name='Export Apply Modifiers', - description='Apply modifiers (excluding Armatures) to mesh objects -' - 'WARNING: prevents exporting shape keys', - default=True - ) - - export_yup: BoolProperty( - name='+Y Up', - description='Export using glTF convention, +Y up', - default=True - ) - - use_visible: BoolProperty( - name='Visible Objects', - description='Export visible objects only', - default=False - ) - - use_renderable: BoolProperty( - name='Renderable Objects', - description='Export renderable objects only', - default=False - ) - - export_extras: BoolProperty( - name='Custom Properties', - description='Export custom properties as glTF extras', - default=True - ) - - export_animations: BoolProperty( - name='Animations', - description='Exports active actions and NLA tracks as glTF animations', - default=False - ) - - - - - -class AutoExportGLTF2(Operator, ExportHelper): - """test""" - bl_idname = "export_scenes.auto_gltf" - bl_label = "Apply settings" - bl_options = {'PRESET', 'UNDO'} - - # ExportHelper mixin class uses this - filename_ext = '' - - filter_glob: StringProperty( - default='*.glb;*.gltf', - options={'HIDDEN'} - ) - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator setting before calling. - - def draw(self, context): - pass - layout = self.layout - preferences = context.preferences - addon_prefs = preferences.addons[__name__].preferences - - # print("KEYS", dir(addon_prefs)) - #print("BLAS", addon_prefs.__annotations__) - #print(addon_prefs.__dict__) - for key in addon_prefs.__annotations__.keys(): - layout.prop(addon_prefs, key) - #print("key", key) - - - #def __init__(self): - # print("initializing my magic foo") - - def execute(self, context): - preferences = context.preferences - - #print("preferences", preferences.addons, __name__) - addon_prefs = preferences.addons[__name__].preferences - - #print("addon prefs", addon_prefs) - #info = ("Path: %s, Number: %d, Boolean %r" % - # (addon_prefs.filepath, addon_prefs.number, addon_prefs.boolean)) - - #self.report({'INFO'}, info) - #print(info) - - print("CHGANGED color", self) - return {'FINISHED'} - - - -# Only needed if you want to add into a dynamic menu -def menu_func_import(self, context): - self.layout.operator(AutoExportGLTF2.bl_idname, text="glTF auto Export (.glb/gltf)") - - -class GLTF_PT_export_main(bpy.types.Panel): - bl_space_type = 'FILE_BROWSER' - bl_region_type = 'TOOL_PROPS' - bl_label = "" - bl_parent_id = "FILE_PT_operator" - bl_options = {'HIDE_HEADER'} - - @classmethod - def poll(cls, context): - sfile = context.space_data - operator = sfile.active_operator - - return operator.bl_idname == "EXPORT_SCENE_OT_gltf" - - def draw(self, context): - layout = self.layout - layout.use_property_split = True - layout.use_property_decorate = False # No animation. - - sfile = context.space_data - operator = sfile.active_operator - - layout.prop(operator, 'export_format') - if operator.export_format == 'GLTF_SEPARATE': - layout.prop(operator, 'export_keep_originals') - if operator.export_keep_originals is False: - layout.prop(operator, 'export_texture_dir', icon='FILE_FOLDER') - - layout.prop(operator, 'export_copyright') - layout.prop(operator, 'will_save_settings') - - -class GLTF_PT_export_transform(bpy.types.Panel): - bl_space_type = 'FILE_BROWSER' - bl_region_type = 'TOOL_PROPS' - bl_label = "Transform" - bl_parent_id = "FILE_PT_operator" - bl_options = {'DEFAULT_CLOSED'} - - @classmethod - def poll(cls, context): - sfile = context.space_data - operator = sfile.active_operator - - return operator.bl_idname == "EXPORT_SCENE_OT_gltf" - - def draw(self, context): - layout = self.layout - layout.use_property_split = True - layout.use_property_decorate = False # No animation. - - sfile = context.space_data - operator = sfile.active_operator - - layout.prop(operator, 'export_yup') - -class GLTF_PT_export_include(bpy.types.Panel): - bl_space_type = 'FILE_BROWSER' - bl_region_type = 'TOOL_PROPS' - bl_label = "Include" - bl_parent_id = "FILE_PT_operator" - bl_options = {'DEFAULT_CLOSED'} - - @classmethod - def poll(cls, context): - sfile = context.space_data - operator = sfile.active_operator - - return operator.bl_idname == "EXPORT_SCENE_OT_gltf" - - def draw(self, context): - layout = self.layout - layout.use_property_split = True - layout.use_property_decorate = False # No animation. - - sfile = context.space_data - operator = sfile.active_operator - - col = layout.column(heading = "Limit to", align = True) - col.prop(operator, 'use_selection') - col.prop(operator, 'use_visible') - col.prop(operator, 'use_renderable') - col.prop(operator, 'use_active_collection') - if operator.use_active_collection: - col.prop(operator, 'use_active_collection_with_nested') - col.prop(operator, 'use_active_scene') - - col = layout.column(heading = "Data", align = True) - col.prop(operator, 'export_extras') - col.prop(operator, 'export_cameras') - col.prop(operator, 'export_lights') - -class GLTF_PT_export_animation(bpy.types.Panel): - bl_space_type = 'FILE_BROWSER' - bl_region_type = 'TOOL_PROPS' - bl_label = "Animation" - bl_parent_id = "FILE_PT_operator" - bl_options = {'DEFAULT_CLOSED'} - - @classmethod - def poll(cls, context): - sfile = context.space_data - operator = sfile.active_operator - - return operator.bl_idname == "EXPORT_SCENE_OT_gltf" - - def draw_header(self, context): - sfile = context.space_data - operator = sfile.active_operator - self.layout.prop(operator, "export_animations", text="") - - def draw(self, context): - layout = self.layout - layout.use_property_split = True - layout.use_property_decorate = False # No animation. - - sfile = context.space_data - operator = sfile.active_operator - - layout.active = operator.export_animations - - layout.prop(operator, 'export_animation_mode') - if operator.export_animation_mode == "ACTIVE_ACTIONS": - layout.prop(operator, 'export_nla_strips_merged_animation_name') - - row = layout.row() - row.active = operator.export_force_sampling and operator.export_animation_mode in ['ACTIONS', 'ACTIVE_ACTIONS'] - row.prop(operator, 'export_bake_animation') - if operator.export_animation_mode == "SCENE": - layout.prop(operator, 'export_anim_scene_split_object') - -class GLTF_PT_export_animation_notes(bpy.types.Panel): - bl_space_type = 'FILE_BROWSER' - bl_region_type = 'TOOL_PROPS' - bl_label = "Notes" - bl_parent_id = "GLTF_PT_export_animation" - bl_options = {'DEFAULT_CLOSED'} - - @classmethod - def poll(cls, context): - sfile = context.space_data - operator = sfile.active_operator - - return operator.bl_idname == "EXPORT_SCENE_OT_gltf" and \ - operator.export_animation_mode in ["NLA_TRACKS", "SCENE"] - - def draw(self, context): - operator = context.space_data.active_operator - layout = self.layout - if operator.export_animation_mode == "SCENE": - layout.label(text="Scene mode uses full bake mode:") - layout.label(text="- sampling is active") - layout.label(text="- baking all objects is active") - layout.label(text="- Using scene frame range") - elif operator.export_animation_mode == "NLA_TRACKS": - layout.label(text="Track mode uses full bake mode:") - layout.label(text="- sampling is active") - layout.label(text="- baking all objects is active") - -classes = [ - AutoExportGLTF2, - AutoExportGltfAddonPreferences, - - # - # GLTF_PT_export_main, - # GLTF_PT_export_include, - # GLTF_PT_export_transform, - - # GLTF_PT_export_animation, - # GLTF_PT_export_animation_notes, - - - #panel1 - -] - -def register(): - for cls in classes: - bpy.utils.register_class(cls) - - #bpy.types.Scene.my_tool = bpy.props.PointerProperty(type=My_Settings) - #CollectionProperty - - bpy.types.TOPBAR_MT_file_export.append(menu_func_import) - - bpy.app.handlers.depsgraph_update_post.append(deps_update_handler) - bpy.app.handlers.save_post.append(save_handler) - - bpy.types.Scene.changedScene = bpy.props.StringProperty(get=get_changedScene, set=set_ChangedScene) - - -def unregister(): - for cls in classes: - bpy.utils.unregister_class(cls) - - bpy.types.TOPBAR_MT_file_export.remove(menu_func_import) - - bpy.app.handlers.depsgraph_update_post.remove(deps_update_handler) - bpy.app.handlers.save_post.remove(save_handler) - #bpy.types.TOPBAR_MT_file_export.remove(menu_func_import) - del bpy.types.Scene.changedScene - #del bpy.types.Scene.my_tool - -if __name__ == "__main__": - register() \ No newline at end of file