From 89aa74c0565fdf0ee00749653353dd69af918d94 Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Wed, 29 Jul 2026 10:46:30 +0200 Subject: [PATCH] Tree Generator v1.3.0: Sub-Aeste ohne Nadelspitzen Mindestdicke (Tip Blunt) wirkt jetzt auf Verjuengung*Kuppel statt nur auf die Kuppel. Duennster Querschnitt 0.8 mm -> 7.5 mm (gemessen). Co-Authored-By: Claude Opus 4.8 --- blender_manifest_tree.toml | 2 +- dist/index.json | 8 ++-- dist/stylized_tree_generator-1.2.0.zip | Bin 10862 -> 0 bytes dist/stylized_tree_generator-1.3.0.zip | Bin 0 -> 10852 bytes stylized_tree_generator.py | 50 ++++++++++++------------- 5 files changed, 28 insertions(+), 32 deletions(-) delete mode 100644 dist/stylized_tree_generator-1.2.0.zip create mode 100644 dist/stylized_tree_generator-1.3.0.zip diff --git a/blender_manifest_tree.toml b/blender_manifest_tree.toml index 9b7a147..5b5be0b 100644 --- a/blender_manifest_tree.toml +++ b/blender_manifest_tree.toml @@ -1,7 +1,7 @@ schema_version = "1.0.0" id = "stylized_tree_generator" -version = "1.2.0" +version = "1.3.0" name = "Stylized Tree Generator" tagline = "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen" maintainer = "D4rkst3r" diff --git a/dist/index.json b/dist/index.json index bbb73f9..479b63d 100644 --- a/dist/index.json +++ b/dist/index.json @@ -32,7 +32,7 @@ "id": "stylized_tree_generator", "name": "Stylized Tree Generator", "tagline": "Parametrische Baeume, Palmen, Bueschen mit Wachstums-Stufen", - "version": "1.2.0", + "version": "1.3.0", "type": "add-on", "maintainer": "D4rkst3r", "license": [ @@ -48,9 +48,9 @@ "Mesh", "Modeling" ], - "archive_url": "./stylized_tree_generator-1.2.0.zip", - "archive_size": 10862, - "archive_hash": "sha256:8297d75cf7b8d73189471b480f65e98861ee73840f0ab387fb9f2141fa80a083" + "archive_url": "./stylized_tree_generator-1.3.0.zip", + "archive_size": 10852, + "archive_hash": "sha256:31c7a72133a6c28d24f95d661cabf0be56dc00c3102ad57a4a3c1e1c5a30bcd4" } ] } \ No newline at end of file diff --git a/dist/stylized_tree_generator-1.2.0.zip b/dist/stylized_tree_generator-1.2.0.zip deleted file mode 100644 index 1947b972955da6d677dd98fba4d42e11f04511de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10862 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 N%7l0G&6N}VQ{gxwNX_N zvKnGS>c;(oENnI{mpUV!lYu%~P!fTm4>2;awytg@Yu0N2U0+{ALCgo$I5~AS^;QN- zTFod}pKFR3vwIxvGq6Y|+mdB2uUzjhs2T#K3X7qTG!*bAp(U1-3UTu8K+%{kX!MDT zGTyez5hNW6ELY*nG|+}34vI}{YTs{W!#mjBK4oE4-*gU$9gPN!B{T?5NZe5J2xwlh zi=~vW_AtaL>Q<5F!cF!Oxn>`+m0)|5Rcy&}a-}$iiHa6<9H*UQr*zEb%z70%`jdYt zZxLZ0BM^9daElgVK<}R)=!&QYtmjo56UScrc-*n6$7%3=b(TRvho*M3!}0l`7(x&# zGA{#iq?sk!F$#}*(N;|B*P*e~Y<(uM#i;QAh4gctbwrH{2xuk-2nhCHNcHtC?JQmN z^%)#ITYWE`Hh(AG{Z%=}cSy-%VJD?dvN=8Q$)n*-!?(xdCf8?4XOs|=YM5dcyFe;o z%*?9wjquI+ZntleZ`y_r0FzWunsM*VQBIDqVZ)6TFSZAw*yoC{Gisat@%f1v$QM6i z^e~QRXILm_dK)#rV%g8hy^Emq!=a2#3wmsR!tet*nwN8;T(~}1=93pilDM0>Y+ZAU zcFq1+COevsF=n+dANe?`X3G1hv|0I$@HX^<{F$i>#>#(>`j$>X`gbBG+7gA%HF?$# zB&A%6sH`1e81C0*(f4%~4olFgPhfV}lItGiNeK|&qvVJImQSV+O7XofZzq|?DDq7- z;~Y&7VBn8Wru>>3uo>ldbc|;F>-BT>-i%rEWIFwuBdPyOf$6)E!?(sa$z+n;d`Ikp z5#x%|tzT>+8(-8F>jNO``S4(jB9TKMP?Q4Px5gyXH=rLBj+)rSkqxfnFc6T%Wn|cI z?*S6P?>7nQ5&?Jb%Z2ZUouhZvNIDFxZ%=5#i7H^Mneq?;9srAlS1QSKZ@?5QU%*Ni zd#KQ@Qp_$F_9urArB%jNFXSW1c(Mokp($}g54v;6BtP2 zB$hynYHD7*1m?xVi$Q=aPY>QFz!lantcK-~?7fF$7Hq#`6oBK#z4wIDy~Dgx2Ef{Z zytyBmaETXMG;ol>VZfD|MV9!&zR|~P4RdqDxLclt2SO#tk_0eDzCjT2as>?p;m9^P zU+f-89sP|12g!|@sppRmhs=jyQomdD%7_d(ot;7aOYg7k6}og?|28BZoZLJR;VJPo zIy;Cq?1=vMXf6?a7+l>v32VHf=fDqoe`S^U-5>mJ3nTBw``#>rmC4KTU@k;~)V3I0 z8R@Ubg!MBQeB5|uR zd|DuQ1AMS@N)^nCOYA}~71?>MyY1*dNMM9U%Z*KLh1_ovow0iD;w6haCg}QpZ5O$b zgUt)WNmQO0_!0R%uns)MUJpAwEd)8u<(DAu0sXCrGA1LuINkWQmHI7Zs((E7EZNMi zef8I6T{r1|goIvWpgW%Gt|;W|0YjYaKp5eNgK8I3QuPyxz&Y(M;rA=O@)Q;OO!$lJ zOm}#|A{yx(A4Df@m(=>*(|5Sci8*J@ZIQSrzo+xzvh7(eN zDdCq*=0}#j-#oEsf(*hReSWMr;qhs?AGjq%xA#;(2iIwaGQU62HJdB~0x*JsVt*1h zQ~He6S3yFEvjStt_G{?Ve$bv?gp(by>4c0Y{rYXZ7FobrCk@cM#ax&iD_)H%M__nF z1hmK)?j{N96q%6I;Lt3<<8M&nhJ~`J4h+*QVw|yhTi)gNjsE_$^+Rme~J(Jc}^Kz-j-6RB@x zMSy>*O1(_fD_><%mE^Bt;9C$`YeG18*K4(TRtzqk1G8_}F74Q!L@#spdUe-MUEjFW zAY>ltvW|YmLZbj?u{8dmPG9a0xp>+HtfwDh@o91sQ;7@9sYBi9EeZ-$v;hfvN8DI7{MsRtJWnbvIi7LEl*MW6$ zb#hggXOIfuTcVZN5KAU_aO+!~T^%;6lz74XMb4j3h!Do@ovj-4!t;jH*qh*C=g^4! z@7#)6o(?QEFcrcy1g_@pFQlL&2|cG<=A*0KZJLu59aCeL_Hvw_zZ}s{ z3QFqqw~lz#zl58={R*D^^JvcMH#AC;x8sTYhDrZI%9BvkQBKxA&qV>++djqs6hX^s zdUoirJxZK)e&&G}!qiHFr*el}kZOZqMj1U9NmSwu4jF{|jMuvkU1XY;Wq&U}xJcIs za1p0EMwX81Lba1pfm1c-BlGX#!IB07uA{Ek1il=j!Ie zI#KwHvw$ut)OD!)YArNJ20OU!kvF`)u-G!Z4`&AR#+jR$|AB8qODt+Wqg?M`yJP~4 zQWzq{JTlTysK;?9bE-qEy9a9-T5EhV;j|s%{n(MagJBe4$7_bra9|*^q)t|8(eUbXNWlsxsZZwW9;+5WD5te%`zPuHfWFdRK!OuDrv<~?eelWohQ2>)KU z!4qW@C?IbW8cqC!dF0-ZVA&&#e?m-t1_`SbP8Thv=D}BkE|SNxLBW4+z3(A3qk_F? zXP?KwItb`ULeZACLCXdAQRLJYb(h;a|7dN&z4WO_CZWnGr#;n z3z>{swd%gNZo`3{;HmDO>r$I90b@1dAUWjex(jtgOU}?X`Ark^;QG&WX$pd~J%kQX zw00nM=-8`6UzOtsyhccr>D|ToKw)OcOBANzY}?L`Xlejw19Gw~kVxq9*tcQ+Ai`L*(v1-kz@2yQ{m2nP)Yi_7lHN|+cDZ3QWz^A>GN#Tyj@ zoFcoX-DUm&3hgBd&;6N=&RWwa0?2=)%5I)DP%g2+{x~}*%=?L`tWOARWFFcY{Pi08 zMJ3i*RBq}o&p+i&mgc8)y)c5}SP_Cp#dC%R!sE3(V;f+4wFeJLEy(j{w1Uz=M@?~DZn2C7+tT?HCg zC_k-B)=NW;GsK>6WYlgcozJ0Q`-gE9NE9T+wz3{&k&^HUt4-BIsr>w-Xhjox>Dj@!7vwkFadQ`z&(@XGfFT}!YFnEUIR{hlzC zo1b&AqGQ`I6WxfpYs(2lUd;`Y@EZP(ud#auQ4NAWNT}Dx`_(G_vX5A}x79dBthP&r zhXq_+~UX*lp$itwkoTMjg_u_iT^9N=^a%%&}yg_I5U ztkinW8AB3^6A=!0DXkEUvx`*7LhE$M=PDU0ecxN`)%fi3VqOF)+eu4rBlL$9N?T`_ zFbCeL>G%vsLP9Iw(z>tmGh%G|= zCr{c;&qszOeFVYR*QEGVQ(cp z--V8nvT+~+9C+3n$K#=jlGRIrsNa#Q9oI@!$+B%&bPC%;Pbc1$Gl*$rYU?j|kWI9e zoYVXM>GpVAfbYm7k3z7g1wdpTZ@(L8?|%Ykzif~%fMt4am^v zN@jJk{q-%ITq@<@OuG7nOm~toH3%@O-!|W;c}X^9 z6g-{hpKGzC3kL{7GISimk_!{8xUsF%>471ux(&A@_rX*7NQ7nOJGj-da0(iZMIZ^2 z%8@Xo&2Nrjc(WX;Oon$N>+@@X%E6ykvajUN_Q8p3Q}m)&`D(|z7H*EJg{&gYf+*H0 zy68+x)zu;s1g@I=2FzEh9#E6&;zCt4F%!@cqoX5}^Rm^FvP#jqB&mLp?baUIHd(EM z-M4#KD`u9+nN?|6C1HF_A(6VV0~W%r#`hNYTs$1_pfU2e>2h`}uAq$3u++=QF|4x? ze32tUS_;H}1CfAg`1Z{QZ5rxVEI^>jW5QYzv&6FX7EHOSSL%4au@fmI{z%{jI$YM(U6UOAJ}Rp=X1Ys>G69vGkxdOV*4e zgxqGeC|&a3pL(b?#|31j=|kwu+Z!&(n)PU_cE){60uVtY-qE1ohVA;7)r%Agf^7B9 zk05-}LHWMKrXrGA(NXJH6UUR@7Fj{YNVa|KKWOOfhU1uAbV1YKXSnF{E-su?K3Pu~ z()V`JIPWd%F71lMw$-5sd069Ix%3>eVERXjWtRS$s6w4F0%JlcNdVxKk*y!x=nl6r zBoAN>2b^AkJ{&!}%v8~Z%*{3n7jiiA#L>BRkrG}6Lg$DxS9Wisz)38Ho&XxN{*B}P zg^(f`nMG_Z>***Lxn4>*&dT9^NdK{>sZj^IU=Umiqjo3G$G(EI*X0d{5} zG`gcsmf%*h5^zXSR$>49-L72Q+^6gUbmd7tAIrvDRrO~1K3zgDDr}M_&5-tDtnwdYqO7Cxo#A}| z_#;y+Cco|D`24t~8ba+*7iOJ&?iQKYO@bkBFjHow1ABblTbAk?mwVwCc>-D?Cv` zvI}8vQi&Z=%}}5kzfn_OYqJ0P#e$YI5%u$Mj_V^QpSic~_WFKWY2!MVHnxAMStGp7 zIE?rn#M#6PA}KYI-{2GI>$_H%H-ZtN+CU_zc!u_XVm=%BFagFzwnt0a!m5dn@hM+@ zZ{E(o7FJKPMy=dZvI^lPmL=rox%FYAH?NXNT%S^akJnD@nB4S7< z)Z=C6fEZIy&dSoh&Z42UnnSU8!Qu(tO1xCUN9P9X3fqmRLFLU<59f$$wus`Bz#!P$ zOhoyf)PSak69l(N2nCE2M`dY7?&@+#-qr|tYA2}cQ_*A>a*PeUPh(}VvloSKQjQ^e zo@mHI_vM1DbU-I|qS0BsQVYbxb zPD(1tsY|uk=-En>Ur|dTTTV*ad8xZTC&yh)A-jy0-m$Wj+Y%!mKT#!*)Kw#aG}Kj; zQevPvzjl+^)>TzW`cf7nm(o?0Qc_n9>heZ)a3l1I3x`Q~1ZH7;4KTtJ??mKDKh*ZN za}*Gqf-`(mXG(>O`fc(w#)u8aS4u7VOc&8a5Yd zqU^hN@u)^aF%$s^?nbG+q-;fs(=ml7^Lga`9(;#$BE@(c=m%DoZGf_XAPZsWN|**O zbC@=U!L+a+)e{ATB+dkHyP|*0R8w2SHIdE}Dww7|a2Ya&gDJbAim|j=z+#is)(>q; z#K3LJeqeHbG;xi{m5QcgsMlqHW=Lt@FYnXk1ktwrPnb#vUwC1Y?rMk<^K;sCr%yf| z{|?bQrE~{>)yQV8)JvpO-R&o;_h9ZiDtjcKHEcMvmh?sBt<+?sw3ggN|K%13hBc~l zQBFp3^QUXOHbtN0WMpScjzjrz2q`@!hs=NM;vm}23O@!fhPPg1GoD1s1Qyvxv5@~C%`x!Jz8OaiYW?PqN<2U`tDZ7K=Ypx8P4D^vf@Za zk;7U{W7Ml-rfHw5$GMHpH|>bop2xWr8wcU zm0u{T7AUp&ThANpo~#!UGRMo5GcIN3@?wUM(s-%4RzYoZ-j{6h!NUjxFxY|gZhKNA zyO&v^>VNx48;n%He)pA|Lk8DWP=c6E%Eal_HGA&tbyQ8xXXFPr*8Xpv~u z#En9EQE1gdj7BarYARqyVbs~wYG<<{jK#=ty0%@jij0~aYAWK#evmJx<0usWLde7J zxr3Q5E;`>#At9uPZm8u}X(@Z5`?T8CgIwQPm2d*X3K005JLsFxZ_s*9lx&gDsjYx6 zW1rJl3>NQJlpZ{_FAkisa0)LG1Y`UBL8LTs>Q5RK&QDrK9gvq^9;G8Yc3LH)-?z0g8q_(AQ9#TZ6XI% zvu9O9cb$VN&5P!mqU&hirMG$hAEz&u1mrL}{4YBOI zGv~2M%GAuP`R+4)yqB>!(259TC4)=-l+BzRtLp8Ynh@Kr3U*|S4l1+#RLBtW(CzB~ znxU5@$hCu{5*QSOVW*pnrJpioH)0$!p;U*G5vYo#+~-x_vJO9xdU8ue7X|vaA*$v6 zPP^U8HflD{EU?`lp?YV6C2#Z)J}sa_E2k`8E<@y86Lpk!YxS3mPsWq{ulc?_dBOAIy5cyJvi2FfX^Dq)Mbf+A0r~8@+eH zXgyl@%Z{WWq!8>A)%2uAY{kfsh;?e(9oKRR^WypO11>nk3v%F##8ZJI?Cn+*K#}6! zgt|03ppC?W3^X|!D}-F}juOw;C@DqknfAs)xBriG3A5)cI9D$T0S|6_k{hg`(0V+auIN?}PaMa{U|CWMg4?qz0 z0tQGHiB6UlBQBJ116O4IXLhBqO7Juf;F~J9E4y4)PHp#+{G6LHmKwJk^c{w*8mmz1 zZ2o)3Wlac%c7|-|&*gi>I^Qd$3mCiY++fZO{z&f84{hs$eRs((>mUsAg3FyiDAC-* zb@%2RIqV?^F)+AOw4LC;=a5#Po979_z;8?P-`#STZ&zP?PLoOOY`0dzwXY18tokIm z2r|Wq+wr%!AGFHetu(?;6lK;nRuN}Q9e=}?wD$?+C$;UDe7uw$j`w-FzV;kiWf26p zxW5|GhD^mV`200S_QIFpZM;QbS2279yw)}~rW?Y!Gu+{Z5ropSJN zW3f{DyET5%m~&^{0};yBp-jY^SeneXWZX@iV;CeljFw|| zs`rdDBCpSyS&SAVHfQ5BtaYY{7bZCDB+7YQnc#QeU@B0P{1u7!&8vETFw+Dx? zB78)zVdh#qZkT2?K#EDNnz93fd5L{!;S2y?EBDJO#uj%Zl|0#DObDy#^=ILj1H}04 z^~%{BnD&{{Uy6O-MS;ShR>PSYmdFQ?32#Q1>+0uo=f~vd&yRy3PT$%Wz7Vax`T>RI zpR>$VTV;&2hTLy$fBG0ng!gfj%RdgWV_$|2^zh>i)#Z+?_LdITnAHHksuS?5H@sn3 zZ0#maNTVsN!Q@+u+|iUaN}|c>Uh?lWE}z@QwH2fcK`ZUp?3uAlTWd2r4u>Xqwzsxs zt$tRd5}M;Ck!S8@PHMCWi{kdTao%;BYVOIW*1}D0iIn@Zp3R@hPZs~1)dUZHa^^05 z?HysF(zkLvAJWytb%YX|V&~32HZtzl>Ht4>D+2@1FM?0rF88tBy<1hSP_sOUzX3?3WC{bd&^RV@Aeg&}j-uB!SB{ZpPpv z#iffzyk|q)^gF0gLTW$bTI8>a;Q4{~U#4BA^sKtn%Uq>FhfAj(U}OZdLYD4%1wzR0 z*qOhQhiCh7#aw=`VWaU!rZ7GQdWbSA1lHAly~b@F@nGq~%^*NJ;gaeNh#*{ypM6ap zhu_zqst=(alEi)C0D0zy^+@Tk1bHGh0clAb_``Zgom#uGG}Ad5akw5xCq4vpNtDM#}GU!E9u#N*H_D5LNgv@(RO zw!~+Io29se8hq(d(`)ka0iKh&M}8xHxLbU;dPwMptHYc~MB^EsVg*RfDoSk4Wf!Q6qfLw3vKh@y3{?g|b5Wvg; zU@vJ(!2IlKv51 z(Y&3F2tN5b-6bYp@9NA)L3NN!ac$`$zuFtti{bbL5eJ4IfIPi;>X_iW1!5|Vmt;ue zYcTNv_V^u$(cG4-WIer)uz%y?5621dLNHIGQf_=bK^3AIxD-x%Cf6(dpyu*d?r)(Y z!e0*c=VX12vmWC>-nl&mfVVpuZp=Wo3x1~p&EnyhBkSQe#M{LQ3$Yzd_k(w*zQWC! zH_Qoj-b7VJMpMDVJF6LsVdbcPF<(bedvx8w0&Hot|7;Rd>jCCN48jkgSH9L9`VbDe==>C+q2(VSXY<)(84F8u{Lg);8IOiZ{Ye0u zzc`DE^JA^mO3q@qeO5rNugXT2sLlt}K<~RCNgP)*KV+EZ8yJSIrDG)*f|3frG<7ps zMkYWywb5!gnIIK7VP}hk{e_Ym%w2Pr`u#+z+`Cmk!5wx>)Vz_1+PoXdWP8~{H})R*zJ&67!zC)2~a%wc218o>gjo-2x2{) z6TFA|vUCwwB+_|2%OXtX{6%C|0&+A&g>JZ2;9IXCcK8U=Pebf*`A4p%!GF&cOUzHO zmPkl8Zj9*!mLTkGAuQcd=PC)!rb2L4`6;q7||&sx6_%HifOD(K*OIwjCt zX4k=;ZxP4@)rD0Ba_S@Yi!{=VVUkxFioL6&=noOj+yihxeFtV}`0=~>h>VbZIyd(CIk~aS zXnu{$Mo%Y?1E2ASi~DarTvW5u8v;uXTyHGBo&3CSu1reOlKcXIzotGeUOl^)_AwX# z(r_@zezk46UH+RH6RLmrWezWV#(^2}+~e<#=VJpl0Dhj$H~3{uq4&!Yy475RW(h(k z)^0}Sf-QBJ?n_ea5udjD>QpjoycjkH@EkK6;P){yfw3_UuqiiNWOd@aqafw=Rr3vu zMop#qUZjdYkA#s1Z1KRJ36QZncOFQi0iHFhc(k4$I+plZ37PAhH)v{I7MoN5T)smL zBOBG)(DL!>h_{F;X^LLC>Aw#NJwAeQkHqqu2{kc<(bV;65bIx1^P+#9t=YJ^dw%1^ z2y(R7g-M)h`)6|c-b?UL7sSg|%j5%Wy7)gj9dgV}6l$|>A6B>?S2{l~tmq?Mz)ijo z3Dbs}h1xf1Q>{TuLwyj$iyx7tD0T1481(!0+ldrhuAlKl!b}b6bG05$S3ZOHKL^&= z_be{!mwV3lc+%o9{hUtOt@V+SR>#o+ZcZ zdfBaxez8i@0yP9x6_EF6WB zoKfYWQIl&i0z!I$_+vh~ba=PbJf>MRG)X*;aK9yf z#OzqN=8K|!RBFM<&Ck`-jR!Ag^fdfXJ~$dtTUCW3I&OgbgA|ooLB2~19y7wWQq_@G zLT;nV(gJltr(#Wunx*EdBnq-3Z?zH*8)OxjdI{F!w8eY}ogbe1x*Up146BI^in*11 zGZy+!FoyU;V(%vkKdZ1&ve=gJ>gK?WEE4d{PoI{z_<|EIJC{zv?e rgy(;E@!uK7|LXt Sidebar > Tree Gen", "description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen", @@ -206,9 +206,6 @@ def build_group(): inv = N("ShaderNodeMath"); inv.location = (-420, 60); inv.operation = 'SUBTRACT' inv.inputs[0].default_value = 1.0 L(tf.outputs[0], inv.inputs[1]) - trad0 = N("ShaderNodeMath"); trad0.location = (-260, 60); trad0.operation = 'MULTIPLY' - L(V["Trunk Radius"], trad0.inputs[0]); L(inv.outputs[0], trad0.inputs[1]) - # Kuppel-Profil: (1 - f^3)^0.5 -> breite, gleichmaessige Kuppe. Mit einem # zu spaeten/steilen Profil (f^8) trifft die Rundung nur 1-2 Resample- # Punkte und wird zum KEGEL. Breit + genug Punkte = runde Kuppe. @@ -223,17 +220,23 @@ def build_group(): rt = N("ShaderNodeMath"); rt.location = (x + 300, y); rt.operation = 'POWER' rt.inputs[1].default_value = 0.5 L(s.outputs[0], rt.inputs[0]) - # Radius NIE auf 0 laufen lassen: sonst entsteht immer eine Spitze, - # egal wie fein resampled wird. Mit Mindestradius + Fill Caps endet - # der Arm stumpf/gerundet statt als Dorn. - mx = N("ShaderNodeMath"); mx.location = (x + 450, y); mx.operation = 'MAXIMUM' - L(rt.outputs[0], mx.inputs[0]) - L(V["Tip Blunt"], mx.inputs[1]) - return mx + return rt + + # Verjuengung UND Kuppel GEMEINSAM begrenzen, dann erst mit dem Basisradius + # multiplizieren. Wirkt der Mindestwert nur auf die Kuppel, bleibt der bereits + # verjuengte Radius trotzdem winzig — gemessen: Sub-Ast-Spitze 0.8 mm bei + # 31 mm Basis, also weiterhin eine Nadel. + def _shape(inv_taper_socket, dome_node, base_socket, x, y): + mul = N("ShaderNodeMath"); mul.location = (x, y); mul.operation = 'MULTIPLY' + L(inv_taper_socket, mul.inputs[0]); L(dome_node.outputs[0], mul.inputs[1]) + mx = N("ShaderNodeMath"); mx.location = (x + 150, y); mx.operation = 'MAXIMUM' + L(mul.outputs[0], mx.inputs[0]); L(V["Tip Blunt"], mx.inputs[1]) + r = N("ShaderNodeMath"); r.location = (x + 300, y); r.operation = 'MULTIPLY' + L(base_socket, r.inputs[0]); L(mx.outputs[0], r.inputs[1]) + return r tdome = _dome(spar, -900, 220) - trad = N("ShaderNodeMath"); trad.location = (-100, 60); trad.operation = 'MULTIPLY' - L(trad0.outputs[0], trad.inputs[0]); L(tdome.outputs[0], trad.inputs[1]) + trad = _shape(inv.outputs[0], tdome, V["Trunk Radius"], -260, 60) setrad = N("GeometryNodeSetCurveRadius"); setrad.location = (-80, 200) L(_out(setpos, "Geometry"), _sock(setrad, "Curve")) @@ -275,16 +278,12 @@ def build_group(): binv = N("ShaderNodeMath"); binv.location = (440, -140) binv.operation = 'SUBTRACT'; binv.inputs[0].default_value = 1.0 L(btap.outputs[0], binv.inputs[1]) - bmul = N("ShaderNodeMath"); bmul.location = (600, -140); bmul.operation = 'MULTIPLY' - L(V["Trunk Radius"], bmul.inputs[0]); L(binv.outputs[0], bmul.inputs[1]) # Ast-Dicke relativ zum Stamm. Beim Kaktus muessen die Arme fast so dick # sein wie der Stamm (0.7+), beim Baum deutlich duenner (~0.3). - bscl0 = N("ShaderNodeMath"); bscl0.location = (760, -140); bscl0.operation = 'MULTIPLY' - L(bmul.outputs[0], bscl0.inputs[0]) - L(V["Branch Thickness"], bscl0.inputs[1]) + bbase = N("ShaderNodeMath"); bbase.location = (600, -140); bbase.operation = 'MULTIPLY' + L(V["Trunk Radius"], bbase.inputs[0]); L(V["Branch Thickness"], bbase.inputs[1]) bdome = _dome(bspar, 600, -600) - bscl = N("ShaderNodeMath"); bscl.location = (1080, -140); bscl.operation = 'MULTIPLY' - L(bscl0.outputs[0], bscl.inputs[0]); L(bdome.outputs[0], bscl.inputs[1]) + bscl = _shape(binv.outputs[0], bdome, bbase.outputs[0], 780, -140) bsetr = N("GeometryNodeSetCurveRadius"); bsetr.location = (600, 40) L(_out(bres, "Curve"), _sock(bsetr, "Curve")) @@ -415,14 +414,11 @@ def build_group(): sinv = N("ShaderNodeMath"); sinv.location = (2400, 900) sinv.operation = 'SUBTRACT'; sinv.inputs[0].default_value = 1.0 L(stap.outputs[0], sinv.inputs[1]) - srad = N("ShaderNodeMath"); srad.location = (2550, 900); srad.operation = 'MULTIPLY' - L(V["Trunk Radius"], srad.inputs[0]); L(sinv.outputs[0], srad.inputs[1]) - srad1 = N("ShaderNodeMath"); srad1.location = (2700, 900); srad1.operation = 'MULTIPLY' - srad1.inputs[1].default_value = 0.24 # duenner als Hauptaeste - L(srad.outputs[0], srad1.inputs[0]) + sbase = N("ShaderNodeMath"); sbase.location = (2550, 900); sbase.operation = 'MULTIPLY' + L(V["Trunk Radius"], sbase.inputs[0]) + sbase.inputs[1].default_value = 0.32 # duenner als Hauptaeste, aber keine Nadel sdome = _dome(sspar, 2550, 1200) - srad2 = N("ShaderNodeMath"); srad2.location = (3050, 900); srad2.operation = 'MULTIPLY' - L(srad1.outputs[0], srad2.inputs[0]); L(sdome.outputs[0], srad2.inputs[1]) + srad2 = _shape(sinv.outputs[0], sdome, sbase.outputs[0], 2750, 900) ssetr = N("GeometryNodeSetCurveRadius"); ssetr.location = (2550, 760) L(_out(sres, "Curve"), _sock(ssetr, "Curve")) L(srad2.outputs[0], _sock(ssetr, "Radius"))