From 1baa861ae0c317cec6fd2651a4dfa6ebbc30346d Mon Sep 17 00:00:00 2001 From: Romain Guesdon <r.guesdon@hotmail.fr> Date: Mon, 13 Feb 2023 11:50:40 +0100 Subject: [PATCH] Clean repo --- .gitignore | 3 +- global_script.py | 4 -- mh_models/blender.thumb | Bin 11433 -> 0 bytes scripts/camera_proj_old.py | 118 ------------------------------------- scripts/human.py | 33 +---------- scripts/random_pose.py | 24 -------- scripts/utils.py | 1 - 7 files changed, 3 insertions(+), 180 deletions(-) delete mode 100644 mh_models/blender.thumb delete mode 100644 scripts/camera_proj_old.py diff --git a/.gitignore b/.gitignore index d53886c..4b28ea2 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ backgrounds/* *.bmp *png *.jpg -*.jpeg \ No newline at end of file +*.jpeg +*.thumb \ No newline at end of file diff --git a/global_script.py b/global_script.py index e48d7e8..d5bb452 100644 --- a/global_script.py +++ b/global_script.py @@ -5,7 +5,6 @@ import os import sys import shutil from collections import OrderedDict -from math import prod import time import bpy @@ -113,9 +112,7 @@ def main(): C.scene.collection.objects.link(camera_object) camera_object.rotation_mode = 'XYZ' - # camera_object.location = [-.97, -0.24, 0.68] camera_object.location = [-.97, -0.1, 0.68] - # camera_rotation_0 = utils.r(Vector([72, 8, -75])) camera_rotation_0 = utils.r(Vector([73, 8, -82])) camera_object.rotation_euler = camera_rotation_0 @@ -301,7 +298,6 @@ def main(): lbl for bone in bone_lbls for lbl in [bone + k for k in ['_head', '_tail']] if '_IK' not in lbl ] face_lbls = ['nose', 'eye_l', 'eye_r', 'ear_l', 'ear_r'] - # full_lbls = [lbl for lbl in bone_lbls if lbl not in face_lbls] + face_lbls full_lbls = bone_lbls + face_lbls annot_file_2D.write( ';'.join([lbl for bone in full_lbls for lbl in [bone + k for k in ['_x', '_y']]]) + '\n') diff --git a/mh_models/blender.thumb b/mh_models/blender.thumb deleted file mode 100644 index 6f3fe1470195c3da011f49ca70844563dea838e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11433 zcmX9^2RzmP_x{-8h9vWrbwee@EwcA0Bcdof*<UN!TV~lIdlk8|D|@eOQbv*x*Ou)4 zKYssL=w;l`eUEdV^E}TvVfWOP&QdT_AP90+MOj`8{`WimBqxQhEs`eP@E@t^T_t(s z<n&)=U0xjg<cx!|-ZKQDYCZiVh`&a~0zV{kR#8(Rn?aqSp}D<sQI`)v*bo(Y8Ev;8 zE8gyI+FNxy_|)4L=6%bL1(S#c{V{&>(%D+?D(N1_T)SKMJ-mLP;(66W?@umM*G*Yh zuRXtFt@j$IA75{G{nJkV-L3kOB^_x?tFf4y{upA~*dA5E1E;>!l_NQy1~I1dbT*BR zUKx0C6>~w0zS|A`Yc>4RVRy8%Y2)X`FVA_^E<Ei{xG`osjHU`98vp#?d2aPo%dI^x zgC=7E&q?o{h0924&gSnx>SVoyG}DT4DF@NC+6lXmT&v$ARAaXEdtUWoNvejWmV?>D zv`F8L>aF3&9Y!7t?>xmXQQMb~HJ0(Ja-BySjRn|JdSx}~%*ypzXV$$84APGFmx}u{ zmimLlSm}M+!Y}aEOw@NQZT*YIuro)%U%rrKpRcBhoS`8nZgfP$Llj>znk+9YbYihs zU23$5gL<H!#0Z1$*5Y^G7J<hTcEYSt9gc^)j&HTD@Pr3Ai=Nd>$iiLql4RA&r;9}2 z4p8MHlA);-TdkZa#_w<3#uH@ngty^0B2@B*<`)-bMbL`w?za(X9i0;1m$tVk)rNj= z>_w|`ojwxrn_RO$Y~%O2QAF%Fr6%N_uEa|(hoP0>ijy%iI(-8(z2KH9KO8Q!V@8=P zZu3YPL#Q@%@8Lt?a$-Ld)dvO7t1v2|ZKhxF8#D^%7Mz)rR7u7ATNa#U6P`M|y2|P3 zPz1<x5GZKUM0FJNUGZ;u^Gfl_JB-SgS*Lq+Byc22svMW1IBCfJbcvOsE|GMXMPts0 z_Ya*2r}PfpK^rsP=Zd=l$EBl_#Y6FLPrP|bKrjhaYsmlM!8O}kEFPYoj?=AY=J&aM z*n&+mt(diSKJgjWR^nO-g0Cd0av6*~R~*73(xPdKSmvPa*?@k0V5eCC8+oW=4r~Xm z`a!`31YYNsF8qCXI6<UQfSv&M0>5(*LH~BY6pLw^a>y(zqka1HDbKZQfrFMWik1Wz zQSdi#BGFHoV6!VO-Io!R&}oEtzhvN#e2?qe+}g^@%Ol(Kx^yXu>`D78|H-uwp71Z` z<?u)y9UVFv-fj-sFt)^QnIY`T->DXRsl7jO>9ORDirD9i->#*kq<F8pp-~%Q9VsR5 z>G&oA)b`3aS<OUbdite5PPZ{}D!PRa7B8CV(U<DJQp3<Pu%LpMkVCjc6WIVZMtMzn z!6f-xDI_fdGzu|YUOGDG!sOpCbU30@)wxlmL~w*ywH&GY`E)G;ue7I;meB3xvGUHP zExRdqpQ|kbC65Y~F|-2A5z2W(u-O6Z*=!!IynB)vAs7{7M$!N_>5=EUy!7vJ`)I$y z%NLCq2N%B=$l-8?ePz68Dl&+fY##X{&cyB}{6^EPQ<Ggqpa~;n2u)lJ-u+Flxk#G2 zwvNukl2g?mS|pgsDmmCqoGNFKTqQPhNz^Spgtz;BQBnJs7|yAUJ>ybco&)YRn`Bb8 zp=kBICIQtR>rc4T1Me~~=WjJFJ>rTxlg-m?EZ{dIf}uS#y5iD0<A@e>LABn0(~oZ| z<Go2nAWhd+m#@9(c{hP~;W~lw8%+`P@$LQ%Av3*UeLjXBb0HiK2T>4tNrFO?PE$uG zNc(CKAO<`Uw&_-9IL)D+qM9pq$@g&GSL$I#%#=Q9W0qV<834;&gXiCMguj&Ovv&)g zCE<=!`BL`ESu_G3V0-KCb3z5p-&-Cgw^EFZYTed_@c)EFS(}@_m<dW%=<*7r^v<uW zz$L*+Lu|ld!-uh6LfJ{&+7kWCryEtrwtbYydt7y!X{j0Hrf6DluX!L22Y2F7rEjc9 z4?%+NV25+It7x&r-ZJvu`d%E5I8fb#a2;N7zV!Ft2>uGyl37$l6^k+HPPh(%`@Xn1 z1d;%w0?#PX<z0!0h^TsYG?vPslEppitr&}WotVf;M<Ju5qwljfYiVbfYi@cqK44_& zGW*oGy}zeRny>B?M4g8<L(;3~oi{IMijR+n%q0!<pCjOkQ+cDx^&a=bK~g+rLzZ~= z$OqOkJiFlz*R#2~nOR<b-oU`%Jq{PZ6OJ{(CaK1n#+)m7P+0c*bm<t{Jv+$^;pkUv zv8)5b!=%9`G!csI;T&`d{x}@Q;3qqIb2BWLu`h5-xF=o0(^CX({-l(#5aD=EP^yc{ zx<_7i7*>$+RF5%2Q3Op@!t42tjlBPsu&~8lgfYEr6439fw>RvQl1+tHd+U5fJ#TlY zJclu3@Q)MT?tmE)0TfZqL|-I}@G3VfQzJ+=>zN?hOMRHM{&;^$r?9Z_*<}?EE;QBB zf^#xE6>HhSO*NwKGKg43S65+-O127H>*Zw!5xDmoK8J4P0e^cTl&}(i8;Q8@AiLp% zkL~N8-pLyZw!KxOs`>h0e}8{qWF!P)#`YHA^Gkqp9i0V;TWy^-*M<Xw!}Ta%039s3 zy!3BpQ4=h)N%`142vK7Jas^Gc@M+wd@5#YSL$7s(IVGw67;VBvz3fCokA)^L$p+;i z>|G@#vc&FL*sIRwml*ZDgX{G;8~`7{&>JaVNqRp0(0~7&c)|%2o?3m2=9TO&gRrC_ zCV*>gGNw__yN`D_>@_dH>gRj-Yo~ta<c^P@kbH67_K%q{+wG#ypKmF#Kjscf|09x5 zb}0Nqqsz@;1TsM}f|&&QyXO`CG^w3PH{l%xdy4?PDGtX0m`A6uxxEbs9sE=;@~K{* zdHK;n@=crAGTsJ9sLV&1tpxRE9(%KiNm54(8lPG0YaLfgpLEzQuB<5V(&y+&%KKl_ zLb9xwy$y79LbF4?B&l_DV*2qnTvzqAA3T^2q?VL^{Fp@~GO)?mZ_G9~Eawl~+6@$( zYW^3t$^QfxjmyX2ayCAF`jqmpNPkaC>UekN{AH@Ym!mN%QuTAmHVO6<)fZxviNoXx z%XoLjClF)7r1zx#0w^emy?Yv5ao9yNudj5?GwTDd|3*eqQ6yVpDP(BwX==*cZ#_eH z1*4a6g$)7pXf?g@1j}4E*C)2N>@1olWl&<=6dud8OR{h<c_LX3<bu0->hD+YgKc&? z3ieA;_pcicee`*!AD+z?e+QUKBYtD5oyETO6_e1t`}YIe+Z7?R<a0EE3cSaK+Z5L& z@R>b(CIp2MFwCxUinJ$1m|DDl#>VJ?`OrtI@Jf$)`NtmBk>@<&vbWW<-auUgtPwKr zPoLQR<+*lL4@ZqeTol_5%TbErv$e94!7{(I`tf2bHt3<w1yoDpl!Ni=&#J#3b$}#L z5l73OQvMhppK_{-?lk-DQZqO)aW<uwRE7qS*~(7Zz~CZZ-KLg2$2r^45&~2UTU@8{ z;qLnT4<A~?&U2qeIj2%&CKSfEKR+;rLi&8WkX>Kzv;C64e)sQ1*Po?tTM5(yhYKGI zD`~#|9zu07o8+Q=6=zL`*_wKW<i+YDPDWI~Q@wA)!(S)n*WK9231Qn*Xc52R;Rg=r zknnH{eW%XLSOVvx{ViY^me$tI^Mg5>1_ozUV(%FlX}F5@Z&+Gc`H$HK<8bfu^9jxf zoTG`(_){B;xgnXc)>Z6#w8UC$)KH(_N+8MVUOu)wez3C!lxV497p{akB0D>q@cZ}g zr@+0u{9?i`FTHN(muJ+fYT3)jj~_$aLveLB=y<Q0v!CQ;SCLY-PA$2MKq}=ZM#y@4 zika!<Qr`L6bv}$3h>V^Y92DGVr9R(ZacYB+m^<$pH^fi3bLD=nIQ8#BT11kp(6G*< zW2z-2Mi~PX3Sdw-q3v>_K9DN^++40NWvYR<TlG14-=Nzb5IF8FR;vs7!y4eD*3e$6 z!a@8}N90AZ{j>~pb<zE2u@1q~Y=|bE<5FQoc0~n)eeF6a&{@+`MxddO9zX6jgaUG+ z3qjfgT;xRpuU>Os^3A1()kXcb|NW<6VZjZ|tEhh8THj^tDPY9o&$d~D4Z1?CmQ!Rx z)GRD4H=O<`SJ%j8(a2`qYuKQ1pjl%pWg{o2P#MB9qDY}KLNcE-I@uoqHkX`|vT#!* zt?viy7QHv06SeKFlfL)xD*Etm3$;xE+u<J|08n2j>3JK|Tz`d~<5V2rh_b})Um>I3 ztGRcZ_fYRJ8Ha-kcJ#CUt;KI?ZLcE#)Vr-p4!;`-{%p7dL(+%s=zg|kYLC45(h?gE z!6yJo&+iov??Zv~OYG=>tgADi4w5}ZLfG2%VIZaB74~_(Ea7^-H)tq)x$kh^{%I#H zula%}9FZPx`m?d;L&2pfLK$CUx@rng0&sjQ#Y8X(h>OeGFNibCet$~-S{kX{CTf~6 zd57J<Cf%put#t-baK^(v&|&gFB_t$zHW!AboJHBm32#olQsk_zu7*d!cU@gw5Z2F+ z>ADyEMTl;Ps$A(7bXoa90^tE<#_?y~aUzoK*1<p@17-Ew_wOcfN|2tTAFa;o+!D6` z^$N;D`PeIapN$j<QF)G--Cx&=YqcI|5uQ9=5Yj6geh8=E&}>?2{PnHM$FLa^27SM? zEVtM)`hh?+ueh|#tp5(6<dX&s0N0&8$P+=78h#Wvsh7|;Zr^Y=qo1r|JR%{19xE*D zYaPPSy(=3X)2x}&8?2e5*fg_ly!NXO=ptYzX&?dQPRG`WQ529n9UWj*B<XlZIFEMg zPr)qA%spff>IH+X#R0UI)lgZ*c2>qM>}_mX)PyJGXFqnDohA&iOk=KE3LuT9p<(3W z;-awlrT%4OfnB-j+{^KGLCe*nR`Nd9$%=Jhz_pbk(J~_FRg3E=j21aJ6m<I6qG{^i zMn*X4U#gif=4vF&TH$cnH8m_lxoUEf8A^J3OeD?%jIDiXVi1t#y~)oP#MWvzez>3Y z3t{!yovp90?-mskbDWKTm<<{rn+J-P^YiEI@pq>BeUF8Z#+mhbAU<TQ?tfwmyd^V4 zt-ih`15LuDNtci2M}4DvOc?aCTL5+8%Ju8lGs-ZeT7r}(9j2v?vrZ<P^MgRME0>CD zj`M43JmsD|nGxRD^V(XU>2O>gz440qCPj4-2q}&<bs_{{?#GWGK!q3QdQ(QWPRofX z|8qYjR&VD>Hu961-SrvZlz?b5;+Mz}P#;sHrBB=-+-P350cn`pIf#<npU*ju{EmNU zsItAiEhw20wTJ|X)jKqOSqkz&OuOyJKd;=+xb}xJuuf@{8bDo>E`{JXq+l{eg%YAt zyLjX!6p86Qe1?*S1~p^^=t7LjDT~A5fFvsNC3+t3G@N)lfN<?`C-FOTo@<nszI)tr zXH@}SU{^Iu54vT(I#QQ6I7;f6(RZ)g2=R0INBGwu*krzoIime!#-#@M%|R*N^l@D@ z5nZ`+`Iva-*u&j1e`lh|8Ou=-=7@R~Lw<gK`<;U$$&eQI#Q1pjl-}tviwp%Dn`^)j zhZZ1FE4P2xoQqIgU+-Y$j8Q&Zu|10uu|X>F>7Lu(hwB~WL9&d(c4)194GPEDP7KvW z(H9LzEB283AlCR2@4~a2xHG(*ET(RMwwu7k?n-nx2J$(X{3&s8?Jj$joSZDfP<79W zSF!?!bEugBK?EhC;EM%4zu^ad{YrtpvJVpr&R<XT0C_}3MKf_%L9CvY+}hkU?oXFE z{$w+<Drt|Dn6`x%dTuZ0vlos7KHc5_XFAg!aav%X_gCxlP1sd<GVmLE)$WS-OCBue zAjY2_<#Pt(_k606v9=%?3@s-Ba2%JKEMMXQT?%(!nk>yiwfaRxDB26ogh=+_do8d3 z8jiP$-*v`u`wq>lLoLs&twlHNe=jbv8sgfQIxS?(5%cr&#-RS54Q}*HorFBQga8ru zs4p!1uL~ma95@fXH%A6)>v~g!bL#5S+BYOFQTLc{T-1=<Gh5c4(_^FYYnjT7WGZuO z^}g#T^QbX;IUR?)3MCqto+g!+rA+jMMxO%xFF+SF!E=7|=#I0NT@&6r6RZjG@xA{J zj{drd!^bXweyPuq2k0%pZq;;gCgAcbD=VW7z9(u?65FFkcwWS=;b^<GBZ{@5ys+>r zXdh0+S71#*<nKcH7#JKR$Qe{#d6w{W&37)z!sl5Ri}4t?bCta}GZbGU@UUb+9<y8v z6&y4_RQvOB^B8FgwYF)jlY%Ck?gC+Quet3+_49$|7^CBVi6^VhqImZ@!(A^)C?(6I zr9=$}6Klp5<5^3hrv>HLFT+$XzJg0`zx}Q7Xk@i|i7x}(6l)++95G0XfTg9SG+$y% z@L3ihK4j%%sEYBkiQOcDO@Dtwf%v;=@uQSfPBf*r*}S|7aM!%tAMaj0Ln#p$)DU+_ zK-+ok!QW8sC<lVb8DItAb%0Q143+_V2Fv_(xX7TuJNS#|gn9XO=PLb8W?&S*ymt&h z@_={)M*@`Ock835ieDbxpPd)9=2DSHK#o0Q0XH*1XlKiow<>X`d~9oJgfpf0E1hk{ zxElRQVg~*vNFHw-?yGrpP|;MA*KX^ewxJ<aIv%9Vu11~F8yVF~qV<FGB(XChplqrH zz0-a67iOVahkbk}#2f)u&~6LsF_Q4~hR3EQkn{R_N!!W#iO)|uA`Rm@%~-8zQqLi_ zKPzwi8&qPg0<46xc8;7llZWD#?WlCeXQl{6;6tOfpC67C860%?d#;)ZRwd7fbS<h3 zbu>$>mmX<2?SWc{A_=9y?*`GoDp|+q?%DU<NqF}UMh(YO8l0myN7i<H=N&|hZ>4~a za!c><T&p7sHW4uIVT2_qV*(^Rx8DdRseZBk#2kDR0iHv9)NOP;{Yo(hdwCo<FX(#U zc-pHTb%wgU2}h?HxTB6gJdMMK*o$h}Zf%j7{-LcGLWM#wu2k|w?j%gX{=Mei4Tt}_ z$2IUCEmMC#l$8liENy8i#F{W3j`$ui5X<<nk%RmO$=|j*QPUeH&mqZ6;Lv@&f*2D0 z!`fuSWSTO@k~XA!wiyUtez5xf2H;y(QITC2!yaGx7%%<70U0G}%o8a2*cVG1d%!P9 zUlG%Ll5FgWlOP?Ac@kQyfbZwh)bqa2I_0-|J=LS9e@Rl~x)$7KO3>kWYFa7gh`9aD ze7^AYUDry*<SzkRM8I|R=c2K|=&x_zUO0%T-Yo_(t(C9cV9Sz@*VNSX2X%-CNwpi~ z@sBa0UD7ny+Ykp10vkD<-&^mW7Uu|BRU{y68<Z}&V}w06=YxTUcael%6QiRT%uN8! zj;5Mv^d|~77O3>qMSkN7ikRI&+_BpH_g~w${QEbaw4+XahSNgQk6*&4PPrQv7ZjXN z<kd4ZsCKsc_tGaX*DAQ*bgWIRCO4N9yoM<UM#Y?S{?f+M{L|8@FL;7bEnZVLKEM6R zl7WNfJ$U#qa7H9;_u7|Sa$>?$sLxeR3J4A+{rK_Y?=bFk<%Q}#iOm5yqh!<FcXLGG zWqdd#+2F9P4`m$FO-xLHOaj{kSemw@XqC;@V2)Crq1#l@zlMqnHQ%jQ&Jkx#YriyP zoQCr)Za5YNr3Lv3uMg?#Q(r_e^IQ_}J0Xb0Bps(O+1c0}jNj$2YwgL9YN+}2>3i{# zs9bFVK)sxt9MRRQSJ}cj%zNJW=Vkc(*dBcn^_10Po_*$FERi^@a6L`THK9LAi0rL` zCto5_|AuyY880OWO(P@zi()Q4Cr>x0)>c+@l&??XpUwd30$+nXqy@{etF3)_+<C6N z|5#$A&TG%<=xvml8Dw^>E-3=O^F2MiuzNf&e*Aa@W}N=B-kVUr=N^C*?kGkh3D+NQ z7lT_~GQQ#hE*(4lOZFIL(6U#D$d^#0fe^l1c0VgM4+ZPTO-q;06Z@<0U!^A^3UVfq zX#{H{NG^oR1oG$TYc1J*LP}Su?lKXlKcPF_mB&^?xmO+(Yy~7IGj|1bb$5d)Dd0FQ zFS_P%DiVu|%s~>^yDjGD`5eU)G}`+fjEl)-4M<rfxBqnNzV5u<si8?X`0bm#&A$R1 zj_(*QYxCXKgq6L$lqHs#Y@#$!VIO#OiQ|kS_zP6H<qLTk=h+_f(jU$%NmU<oSBKoR z8FsGGFS?`Ev;XbB24q&`gG-%dufTMHrLm`}3thZ;@x*4TIq2@muQiG5+^3}Ml{6a- zikMKxUpf;~`s+d3nirl`UQ>Vk*RRO@`*{I)cM#*?IKtP{_<~G<H0R;x4}n^sU*$BL z$h`lv)_o%(NytL-+t5&;JjV@7QQaFX7JBq`b#>07U!+ClvnZ3W(Pd+{5U#uMgan_Y zoznltKX3LV3DpQD^(?~zuRs25{Ik*#oWE#Hm}m_U!qa$@W^)M2wORt|x%DUc6}-G@ zb#=8bYZ`fg&?DxEtYk(pcycGzu4{%+k+Z9-nW1VzVXe}qI@n%mfk&8>>YfI~<Hw$} z&-x{VF^=}8)>N2oN(H%fi*~Rbep`eyG*lu%_&s)&xzqhnf|T7?fsO+BRwW)=*2|L( ztgRDi-Lt=U4o*q>+?=_~@CUsV*Oeca2}_6^(!_%miRY_VF<^i<OPy>;6<b+b3&wsf zfLH~S8R*9;!#_3p;yNKBf258q9d+mwJUFYj^ItliGtm8n^v4k~GL)ymIzXw5dSg0t zFJYE_V^C_NN9Y<be)sRdQN;iqeGbMarwc27W$WKeQ_soDB7klLn02S|v`z4Lv3m9U z^9kYCqK$0`*HX2l<6KYDNzJ==?-s!!sGJIBnQ!}4QIV6Me+EbgXv#N&PrLS?FAeK~ zkeaN${hCirFX0){-UcN@i2$!^w*T3)XQ2U*(Y4KFxvqkm`ZKwgRht0}({3omzW#RZ z=g-@9aqJd{;|)hFk*rcw!6u+#ZakY)MN9dhA<Bk9^n$_noWk#l+!^Ge-<(U00kE0f z2RwAyH$CBo#9UWfLAei%jfH`-%719+KAR1vV(^TMP`!+|Tpop@r{tL<1V#>)uv{tO z?KfX_bsy#OguB0A3p081bIoU`CW*nwYh4H)D~)AtgJp$*V<3PE1bhZfbgCIFZEaH@ zXlmXd%p2RrJ1aC|H0k(LK}1qhvr4{#R)cD)$T?W7+sV;Rsm%x<==W~E8WhNA^v*`c z$>Et)_B-#iIF-+TnMOA@O%s4$SY7l4giWA13H6_gJ<vyar)9zW&S$nOe&-ezJK7P! zk|&C$^4gsW(XI2iiBXY#@`Us20@h{qXBY^f)tWI|m*#tf(hbw$*Z9taw2any3IlC9 zWhpZe!oQ?JMg%mmajCxfE32j!v5=paZhbqDdY(Hdf|>Lm30+(^4_HkvvUy-%hpOkx zL|%WuT@|t!{y<`}cqzkeI?UPIyKW`>C7&oAIdOD9zSMS1aCy9f8q{D*45t!Ec%f%= zJuicME-X7${k)&2e%*6t!u8ZvJoRAZp@Y<GJ_LK{a6r5Ef@3*6gZc{oPd76vn3cx2 zMf#sFo0iT6u-<=*M7~X>#);6c`hcriz5wV_2#nX&NaFrZwOJ?axyD`3)hfJI-jKUJ z*t6v(Eu`R7Yiny8Z_M?cs+Tmmb^?&2H^JIBnQjdmt#RcClg8TG+F{{c;w8fxmqKv- z?OU00PrZ~!SL1PPNsUDAN2K?u>J0g@YJtH0w3jNH4UFFK+z|~(#dh@F`ERxyXiSUy z##}_QfJuO=DGB5Uy2Iq;c!-j@EU%Mb;Oo}_gBq76OKf&gk$S`5X39z5f1TVNH&8j( zjq3HqSg0{+>IbCZqiJ_g#DOwDF13R=O;YtSKg=As1LA4QVfVw9-r;sdgSRa#y&Xty zNjV^nOO5xyW(EIQ1pGW%C8ZEifP6I_oez&IA}8v-59m`BC`bdTzV1|rEbVAxU6yr| z=T&~RP@C^xsL!=xUSZhO%e;O5+t?UWm|_m}GocTmU}Q8oK#&P3PDXvn%y<2z5u>5! z%1v`<wpQm_ZS>6%?M_kq?nd*3AN^=Y4PSoy7g~2YTZ9<y_3{sXvN6(?jZwabGfylw zjxQ)wSvJ2o1Jxc_QaiZJ!Bhx13E*5<bi88X6bEN`-=B!AapSOHa(}quc->Y4QHiy? zEaoH-H7WfON{#KWTBa0X`*tXsq|O(7sS3zJlxg)1*Y&4~?NBLb+KJ^y6Cx`ff*7Ro zV6`R*J~h&%e2+ED$Gi&q@kA{GQR?a9dw7c_c2F7x7!{&zV#Y5l%8`)T&9hEfaDrTM zVII4rl$Z+{Q6`LnPClDs)jQ6jb*M&N@Lh_%S8OKhAz?fgmzF}P5U|SzUMbE@oc!ZI z(Q<^$Eq=l{ho9+)8c9h`R!l7nVe1wY8eNsp=@59?761qb5pXnG{e0<))Wcm5lM_To z2OO;%zQ<nuN%d>6+BIBydipphmgWq#baD5d)Z5Q~8CE$xWn)CuOPL`hW406BiTu7X zhX#g*$GhPdt_4_(UtmBX2<qzTEI|2&4o6H0{r2h+@AY~b-rnBc(OP$*_!Ncu<Ni&~ zFJ&mOBPX7Z-0s`-E;g*&&lxMX@Lh>fx^&~G%lLmvUzXt68IF%u%~8)hmP<P}TSBOF z3JNIK-BO1yrCwF56{v^qI2dVC@8nS5e52{Y|A}j`$f~^&fL@Sod+g=AzgQ#t?RBFf zYWC(*8k8PYQ2jY#;bqf)Goz6zLv$rNh_|7#K04G7JSrKQk5l`okei6MP91MtXY_5! zyjc=V(FD*x>Nm#{Z<th68_fh&UJ8Q}yMu^OLaSCg{-ej`Ex){Q61p{qyrD1%AdZyY zbS+n&VRq#qOTjp>WERL;wwS1P#+u3%G~ddhNd>3WKfMP~ZVWxgX&KVr|70hw_Q*?8 zqemLb?OZY~nMe!Pq7MxO`+F>AFvcN6m{yryh!GVl|6N8#Fq)iA>1sTOexng#BU5gQ zU3D1Pm#Y8k%;q`IP{}9f0y2Q#<&BeRm8O@U!jsb|*XZdbl$v$M-iDb6nIEu5DFu#m zqMPoSyqQghyJjZ$f$je~A&N-3_G>FBob4P5^gZ|zmwv=jIgsY#aEqS<$*7@APd#6K zo%iQugC?w6i_Sv>g}hg_5FTt}YB-!}QveCr5%vv7E)DwuveI<7QrM0nz~ctv$d1gx z{tRN_SHF?A_DYlPojRQY-5ddZ9|fiu;)!X*!1dxq$|s*5m3r>jVQ<}n!2#PJAJ3e+ zzVIeNL}XN_Ed)jh5A5{12yGbgqeqWQ>?b9`ee#jZJ;MML0z8-jY_B*vW42_IxCl6k zx~J#CIMglR7SbT}M-KJq6du*hth>#>A}IJy0ZFsH?Gk<K`CGXTus@M>{1kLDfX+d~ z)`BL+3#_K-Uh{>LGwFCRc4<(gj!h&Cjdm3cA04KeSzn7Z4v6{9#avC2tt#T7puhg; z1td`xn2Mkm=2usbwdsmW=rd~TeNTKu#ooLwS*ljIAcxTl5=#03zT6<S_t32YFo%<= zKWnT@V61!9zq)8r*2P2S9Tkug=siY4aj<BNoNC+frC?EsO(^Gz%b(QuYv#@D>bj%v zwcdse`{*FAe=8*@o2RAkvdA)0;=J&6E&56phEjJ3`|6??Jru8Z1`Xi_p5fkm=#D`j zKa6lRnkXnRtiRFr))P3;BeVwKe=H^@KWCDkz?i(#5^D%OhI?;Fc)JDd>i5jM>U+(F z>bDB*x0WdNd(J3xcADDV`*MMzkW$brmKRGv;7EBbJOI2rd#@Q5DLw*Yo_PAm1Jc36 zGc1NB#stt%SiyEVqWP-+#QI!prOfdFL-;{KybIlBcYm`T28Kjv2%LHq)}O#sg{FP< zaB)x@2SgrhwwBnB9TU}&1Ksp$F)+_ffxODn5Q8@~YJ02e%%RUo-fJl*@Ck?s39Omm zXE-|gRhV+P;l1w+-vOvJOlmMc0=`>qRQJ2{j71-e8AN9f&SRR7)ws?VRZdfgeuk!| zOe`jOQNnwF)5n`gS@yIk4iiA|(T|q{f=lR+Ku=(n<^}BK>a}YopB{lf|NrwaFiFxf zCGG7kL2^eljkJH`(HTTe*^K*YcmTjxi<zLNXR7ld=3m;3h?{u24+Wda6bM$JM~1}= zH*enDya_(lbL6XLYA8d^1ehz(Pvb$z8Nb|A$kDWcN68CMdTnqBdfS|u`)=X_Nve=s z@Pr2ipIFJD)cQ;NEmFQXiVFfZDbA&y%E-P?sCOvK4BwIXb((RUSA9RvW}r^_^8Ou! zk)s;etu3%^&<+4cS!$_gD9!Z}%y*s8WH8DD?hdR*0bUjW!z~kbN?dVc4r_Hg330iU z@~&)M*&|CqO~#o*gv%~sy~peu0ilE{THP=@vf6NRJehz95JPRg9cXq;^I5~JoQ)jj zs46$V-aSVVR05O{E$&7GkOX$<goelZqyNo}Tt(pC`#(Y71_8<iCu>z}3}z2xD*|ow zf`UMpaR48;%`|JpP$hIX_AXy%BD{@RsqRlRX^bOj%tv0qt~N`oDVz?YkU0w40+~E_ z8u*M`hb&5U9RN^{jF8cC3yqf`C0<`qPS(>%6TQG-;Cv4L@;$Ax#{q4O=4hcf{mUcZ z-g45}Jk^v-|CGnEf?TA#W;D(mG19=oheV%M={IQp<({Y~`{MragRW!r=mAvXfc%1j zmmcWOZ%#0<l8#@fOq7jcbG!paVJ<{1TS&_wKU1LPFR&?~V+cZ|z8;2%2HzV)y8$p2 zPX@O@qfnYZ8E8Bvb$&!(iV!BIFf-7ohvA6m;T`b&O-l#*8Mu-|vn{VeV#06yOCC3q zg!T+$&%%gQ5bz(tq_<h)`g~-12@8!DWsNR1b(5i=i;9YT5VkaFa)g{azp(Hf5g%n6 z$vSg-Dz`B&JclQ-Tki{B945?q2Ezby{_T*}ixv|ctC?Vu53}StQKf#7PazhZwRF6D z`Xh=~S`o)-;uW$}@3Lk>ojW3qJ-U^d9h<7!WD-w(Z`WAm9#@)ri|sABA?(LbpEUJU zds<Yv<SvQ@u-$7o?&fd!spGu*q8~q$GsyGgR>~F2&@mMe#L7=i{v3fWJAxvWQz2u# zW6DUHuN|Ho5Tue}Hr)<A;(a~x7j<#NTWbv`J`H-}FX^v`g9n!;@*<QGhOGdxV7vpw zE7%j#_V)b$Da)YcgU(*1FzAGVpmPYost#f2>Js#3VJfX-1_oSyyVpC^Q^&6<<~Vjp z<Kv(15ebI8nWx9$wCv<65zXUJKG|&lKR+bx<HBi?`o`w-Fje%CBUFAGiu}s&_)fEd zp&_|3sW2w+fJ=DAj31}KIbR?~<f-8zEukqYnwG0pqQXGMVW+Ha+BBUg-*}I}&o9$q zCvKiik4-Njrqe818N-8wl7K*dt`hr|DD4Cq6DJxWEm^cTr0a{J9S-|~O~qm~8>9#j zlasgjdk~k;OSu{1M7)$u$vfNEJ?c(}$3&>!TE8jroxTj7?_zThrCgwQ$jDN>@&nDR zt>`=NV1nu5?|bva9OhhA?NeqXsFAn#%mkTmD{;DqD%>ciDl}B&S>_i<lmUM79HmD> zUT4KZKS@hB3ZMWfE&t^;86zrp*wLAm#NJ^<sCQKN-jJ$0Beb00hk=rV;+C7ix$y$( zg3oq&hML58*X5s8&w>C6*%=T&sHyN~Fy#fc&P;HupL0*|eme}j(0-X&ccyn;;HZ|C zVXzmKdQ<76GCvHnl3eyaTi+i}e%9rs=)A&aDov*VHVQlf$wa?*(_iVte4`~}q=<d0 z$IY8WZ1{x_lPqQRNA=H*m=kV-zg6`evrcUkL~?(`!AAMWQ8|F(RppRy{|^FzB<8cN zS>QPs=Lm$Pf;s~|J53~d_oUM{E3*I0$4jv{ZEvM4G`l!E53p%YHJ>lKm-);RUPz!4 z`!?>8WHu4ac1EWejLdu*Idj0hU<xCo;PdUfO7-ucB|J8F_!23hsE&fQ<xJ(oOAm7< z^9&Sx%b0e7SB8X*13dm(H;_=;b^(;ZVRNKWYw3)G$R-##wnyTV<sMs$9TYaC%0&d- zWv6lmM9Lx=MM1P~f&yRSwJ<++Ey5_e#fLB);pF$fnV`FY!a;4U+$$$TcZSMzd6}kZ zxzK)icbKjmBH`~L<j4+yrVvLKu^)d7FeJGEY%43YoWPy2G!p;|mV`5290m|b1E)T6 zCGmuR{jYp%9v^ldmzNjfa^c!HB8t21HrCd+PJ#Tb6|<c6k&1LE*5*~4DfCaZ@dK5T z`3#jSpU2g&X{<p{QEJ<x?wh|na_YF>*0nsoFwF6~r!i}YV6^$%nmn-s8ZZf3Z&r*W zwzr_6OdIvf>e^FK;O>doAT~0li!5RCG!#MacL}5$UP3R`#U+xNuYdD|C~&@HOK9$q RGz=9ZDhlfIMY6^L{|60Q?D+ry diff --git a/scripts/camera_proj_old.py b/scripts/camera_proj_old.py deleted file mode 100644 index 9fd0b76..0000000 --- a/scripts/camera_proj_old.py +++ /dev/null @@ -1,118 +0,0 @@ -import bpy -import bpy_extras -from mathutils import Matrix -from mathutils import Vector - - -# --------------------------------------------------------------- -# 3x4 P matrix from Blender camera -# --------------------------------------------------------------- - -# Build intrinsic camera parameters from Blender camera data -# From https://blender.stackexchange.com/a/38210/153600 -# See notes on this in -# blender.stackexchange.com/questions/15102/what-is-blenders-camera-projection-matrix-model -def get_calibration_matrix_K_from_blender(camd): - f_in_mm = camd.lens - scene = bpy.context.scene - resolution_x_in_px = scene.render.resolution_x - resolution_y_in_px = scene.render.resolution_y - scale = scene.render.resolution_percentage / 100 - sensor_width_in_mm = camd.sensor_width - sensor_height_in_mm = camd.sensor_height - pixel_aspect_ratio = scene.render.pixel_aspect_x / scene.render.pixel_aspect_y - if (camd.sensor_fit == 'VERTICAL'): - # the sensor height is fixed (sensor fit is horizontal), - # the sensor width is effectively changed with the pixel aspect ratio - s_u = resolution_x_in_px * scale / sensor_width_in_mm / pixel_aspect_ratio - s_v = resolution_y_in_px * scale / sensor_height_in_mm - else: # 'HORIZONTAL' and 'AUTO' - # the sensor width is fixed (sensor fit is horizontal), - # the sensor height is effectively changed with the pixel aspect ratio - pixel_aspect_ratio = scene.render.pixel_aspect_x / scene.render.pixel_aspect_y - s_u = resolution_x_in_px * scale / sensor_width_in_mm - s_v = resolution_y_in_px * scale * pixel_aspect_ratio / sensor_height_in_mm - - # Parameters of intrinsic calibration matrix K - alpha_u = f_in_mm * s_u - alpha_v = f_in_mm * s_v - u_0 = resolution_x_in_px * scale / 2 - v_0 = resolution_y_in_px * scale / 2 - skew = 0 # only use rectangular pixels - - K = Matrix( - ((alpha_u, skew, u_0), - (0, alpha_v, v_0), - (0, 0, 1))) - return K - - -# Returns camera rotation and translation matrices from Blender. -# -# There are 3 coordinate systems involved: -# 1. The World coordinates: "world" -# - right-handed -# 2. The Blender camera coordinates: "bcam" -# - x is horizontal -# - y is up -# - right-handed: negative z look-at direction -# 3. The desired computer vision camera coordinates: "cv" -# - x is horizontal -# - y is down (to align to the actual pixel coordinates -# used in digital images) -# - right-handed: positive z look-at direction -def get_3x4_RT_matrix_from_blender(cam): - # bcam stands for blender camera - R_bcam2cv = Matrix( - ((1, 0, 0), - (0, -1, 0), - (0, 0, -1))) - - # Transpose since the rotation is object rotation, - # and we want coordinate rotation - # R_world2bcam = cam.rotation_euler.to_matrix().transposed() - # T_world2bcam = -1*R_world2bcam * location - # - # Use matrix_world instead to account for all constraints - # location, rotation = cam.matrix_world.decompose()[0:2] - location, rotation = cam.matrix_basis.decompose()[0:2] - R_world2bcam = rotation.to_matrix().transposed() - - # Convert camera location to translation vector used in coordinate changes - # T_world2bcam = -1*R_world2bcam*cam.location - # Use location from matrix_world to account for constraints: - T_world2bcam = -1 * R_world2bcam @ location - - # Build the coordinate transform matrix from world to computer vision camera - # NOTE: Use * instead of @ here for older versions of Blender - R_world2cv = R_bcam2cv @ R_world2bcam - T_world2cv = R_bcam2cv @ T_world2bcam - - # put into 3x4 matrix - RT = Matrix(( - R_world2cv[0][:] + (T_world2cv[0],), - R_world2cv[1][:] + (T_world2cv[1],), - R_world2cv[2][:] + (T_world2cv[2],) - )) - return RT - - -def get_3x4_P_matrix_from_blender(cam): - K = get_calibration_matrix_K_from_blender(cam.data) - RT = get_3x4_RT_matrix_from_blender(cam) - return K @ RT, K, RT - - -# ---------------------------------------------------------- -# Alternate 3D coordinates to 2D pixel coordinate projection code -# adapted from https://blender.stackexchange.com/questions/882/how-to-find-image-coordinates-of-the-rendered-vertex?lq=1 -# to have the y axes pointing up and origin at the top-left corner -def project_by_object_utils(cam, point): - scene = bpy.context.scene - co_2d = bpy_extras.object_utils.world_to_camera_view(scene, cam, point) - render_scale = scene.render.resolution_percentage / 100 - render_size = ( - int(scene.render.resolution_x * render_scale), - int(scene.render.resolution_y * render_scale), - ) - return Vector((co_2d.x * render_size[0], render_size[1] - co_2d.y * render_size[1])) diff --git a/scripts/human.py b/scripts/human.py index 821698b..0513901 100644 --- a/scripts/human.py +++ b/scripts/human.py @@ -1,11 +1,7 @@ -import sys -from math import cos, sin, pi, acos -import random import json import glob import os -import numpy as np from mathutils import Vector, Matrix import colorsys @@ -166,9 +162,7 @@ class Human: setattr(bone, f'ik_min_{axe}', utils.r(const[0])) setattr(bone, f'ik_max_{axe}', utils.r(const[1])) - # self.model.pose.bones[f'hand_{s}_IK'].location = Vector((-15, 10, 0)) - # self.model.pose.bones[f'hand_{s}_IK'].location = Vector((0, 5, -10)) - self.model.pose.bones[f'hand_{s}_IK'].location = Vector((0, 1.2, 0.25)) + self.model.pose.bones[f'hand_{s}_IK'].location = Vector((0, 1.2, 0.25)) for i in '123': self.model.pose.bones[f'spine_0{i}'].lock_ik_x = False @@ -256,34 +250,9 @@ def switch_constraints(model, enable=False): def set_bounds(model, car=None): - # set_floors(model, car) set_shrinkwraps(model, car) -def set_floors(model, car=None): - original_mode = bpy.context.mode - utils.select_only(model) - bpy.ops.object.mode_set(mode='POSE') - - planes = None - if car is not None: - planes = [ch for ch in car.children_recursive if ch.name[:5] == 'Plane'] - - for s in 'lr': - bone = model.pose.bones[f'hand_{s}_IK'] - [bone.constraints.remove(constr) for constr in bone.constraints if 'Floor' in constr.name] - if car is None: - continue - for obj in planes: - constr = bone.constraints.new('FLOOR') - constr.target = obj - constr.floor_location = 'FLOOR_Z' - constr.use_rotation = True - constr.offset = 1 - - bpy.ops.object.mode_set(mode=original_mode) - - def set_shrinkwraps(model, car=None): original_mode = bpy.context.mode utils.select_only(model) diff --git a/scripts/random_pose.py b/scripts/random_pose.py index 8d85aa0..4c27112 100644 --- a/scripts/random_pose.py +++ b/scripts/random_pose.py @@ -1,9 +1,6 @@ -import sys from math import cos, sin, pi, acos -import random from mathutils import Vector -import numpy as np from scripts import utils @@ -74,14 +71,6 @@ def reset_subject(subject): bone.rotation_euler = (0, 0, 0) bpy.ops.object.mode_set(mode='OBJECT') - scale = round(subject.scale[0] * (1.6 + 0.3 * random.random()) / (subject.dimensions.y), 3) - # subject.scale = [scale] * 3 - - # subject.scale = [0.1] * 3 - # height = subject.dimensions.y - # subject.location = [0, -0.16, -0.5 * 1.66] - # subject.location = [0, -0.16, -0.5 * height] - # subject.rotation_euler = r([65, 0, 0]) subject.scale = [0.9] * 3 sit_height = utils.get_head_pose('pelvis', subject).z * 0.88 subject.location = [0, -0.04, - sit_height] @@ -160,12 +149,6 @@ def random_pose_ik(subject, auto_ik=False, targets=None, id_targets=None): pose.use_auto_ik = auto_ik - targets_test = { - 'l': Vector((0.3, -0.1, 0.4)), - 'r': Vector((-0.4, -0.1, 0.2)) - } - - back_rota_fact = sin(rota('spine_03').y) / sin(r(30)) for s in ['l', 'r']: # Disconnect clavicle armature = bpy.data.armatures[subject.name] @@ -181,7 +164,6 @@ def random_pose_ik(subject, auto_ik=False, targets=None, id_targets=None): if targets is None: target = Vector() shoulder_pose = get_head_pose(f'upperarm_{s}', subject) - min_arm_factor = 0.2 back_forward_angle = rota('spine_03').x + rota('spine_01').x - r(30) # 0 = straight @@ -196,7 +178,6 @@ def random_pose_ik(subject, auto_ik=False, targets=None, id_targets=None): theta = acos(costheta) min_arm_factor = 0.2 + max(sin(back_forward_angle), 0) - # print(min_arm_factor, d(phi), d(theta)) u = random.uniform(min_arm_factor, 1) * arm_length target.x = u * sin(theta) * cos(phi) @@ -206,9 +187,6 @@ def random_pose_ik(subject, auto_ik=False, targets=None, id_targets=None): target += shoulder_pose hand_pose(pose, side=s) - - temp_rota = rota(f'upperarm_{s}') + rota(f'lowerarm_{s}') - # target = targets_test[s] else: if id_targets is None: target = random.choice(targets[s]) @@ -226,8 +204,6 @@ def random_pose_ik(subject, auto_ik=False, targets=None, id_targets=None): target = target.location location = get_head_pose(bone.name, subject) - # print(location) - # print(target) bpy.ops.transform.translate(value=target - location) if targets is not None: diff --git a/scripts/utils.py b/scripts/utils.py index d135644..0c4bcb4 100644 --- a/scripts/utils.py +++ b/scripts/utils.py @@ -3,7 +3,6 @@ from math import pi import bpy import numpy as np -from mathutils import Matrix, Vector, Euler # Maths utils -- GitLab