From 54a4a12ccac1c69bae2268f68c267b3797b12d12 Mon Sep 17 00:00:00 2001 From: Xeon0X Date: Sun, 16 Jun 2024 21:56:58 +0200 Subject: [PATCH] Add smooth building terrain --- world_maker/data/building_moutain.png | Bin 128 -> 153 bytes world_maker/data/city_map.png | Bin 217 -> 113 bytes world_maker/data/district.png | Bin 432 -> 428 bytes world_maker/data/heightmap.png | Bin 3056 -> 3359 bytes world_maker/data/heightmap_smooth.png | Bin 1688 -> 1740 bytes world_maker/data/heightmap_with_building.png | Bin 2057 -> 2120 bytes world_maker/data/highwaymap.png | Bin 77 -> 126 bytes world_maker/data/mountain_map.png | Bin 602 -> 755 bytes world_maker/data/removed_treesmap.png | Bin 133 -> 873 bytes world_maker/data/skeleton_highway.png | Bin 2933 -> 3176 bytes world_maker/data/skeleton_mountain.png | Bin 3847 -> 4628 bytes world_maker/data/skeleton_mountain_area.png | Bin 462 -> 595 bytes world_maker/data/smooth_sobel_watermap.png | Bin 648 -> 590 bytes world_maker/data/smooth_terrain_delta.png | Bin 1364 -> 1127 bytes world_maker/data/sobelmap.png | Bin 3404 -> 3841 bytes world_maker/data/treemap.png | Bin 348 -> 6196 bytes world_maker/data/watermap.png | Bin 249 -> 214 bytes world_maker/data_analysis.py | 13 +++++++------ world_maker/pack_rectangle.py | 7 ++++++- world_maker/world_maker.py | 17 ++++++++++++++--- 20 files changed, 27 insertions(+), 10 deletions(-) diff --git a/world_maker/data/building_moutain.png b/world_maker/data/building_moutain.png index 25fedbb32fd1ca058d21423098e26a46080faa07..aa920aea9180328e63e5ca37fa02ebac134dafa3 100644 GIT binary patch delta 124 zcmZo*oXI#rr8L3Q#WAE}&fA*{c^eD_+Ahi;O7Uq*T=niyj)#w+ifhd0d0BpUriX0f zJd^OU|NHX_-W6+@%T_=E0}x#K@ag{~70cg`zwI@;oPB)JrtAExoiMmXt2UwwL=V!xU3D+R5Yxok30YFQHAwd| z9#_%!G7V9t%tM4JNr-eW)m7gRPi*qi+KJ63BTLCbWGQKgHt$Y$q~xs#d&$m(EXDZA qb&CA)n(YGs006-E9)6DiymkPpa}+Qgr$G+@0000Bz*y|*;uumf=k2XPze5fp4uOVs zn_Rvp-Qe~vVXT`mp-th;N~MLx=k0x~KU=B3eG~WY<>SAf*B$>~zrNqDQ9W3Hv-Mr0 z_Q(JH`*!TDE?D`~=qnKJo_+dkQS9w+w@em61h!vauVWg&EDk$-_V%LshlJ(Zk2k;1 zTsCjL=zM|Y@3ua=d;iMbX>94a-{P#2Hh+(@lKF1FJm=f<$J;;ps+_&P^YzJXH(#4q z_pUpCYuUc#b7LPqSSs81`y@xrW literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^sUXb31SD_E?V7>Bz*z3-;uumf=k0AnKW0M#w}+lC zrvo*MxxD&Lv1(*YSkz(DaooE8-s<2rcD;M2O|^}Uvp@Cj-Jai!ZA-s{TueDu%9yK7#^zFQEw-ve%ywpAQ@zo6y+9y{p7g#^<;VOys+l2PqYFllz$4dJBRm&LDyQ?KvyH$Tp zz8bS$H^TIKcDVB1GTw0BueWa4tnWP>D!lib+4=1E><8n;j+)eY|Lc(k#sq_>tDnm{ Hr-UW|VX@s; diff --git a/world_maker/data/heightmap.png b/world_maker/data/heightmap.png index 5da15f85530d3e858d2eb0f340b00eeab1fd566a..70cc3a6588131cc1ab1dbbbced3323141b06bd65 100644 GIT binary patch delta 3357 zcmV+&4dU|f7oQrCBYzC$Nklm2VJ9fR}8&VOSME4knAt829jVj9P> znF&#iyXrCCUj0xXR=?ZrwtS*avvQ6!*f0!b9LMyE;{sdm3dxHXd%B$nZ>ddfjLXht z@&Jei)f#K~Kl*!VFD1Rcd)zX9~I2btLTC=sT_aq6RnuQW^Gf}Ep5F1dCNI=V?qJvrOqro?u zGDpwX5Xs}siBjdm;SidqxOtQ;B66;lGOMy>1^3*?cv<2+&&wYjQ`+p2YAI46?Eykd zfUTvT`I%Kxv$lwJyW>)>utFIjd4y0gM*dHmm?7A0rySW2{UUyr&HOL=VBu+}AAi_(}a zZCm+#q*m0E_Tr6vy$!R}UIHl!j(X?Ob7k6{KkWC&t6QR)q{Pz`>ccC_nt?ugPZ`BYNH?^I=#e8@;PX5$ z$HW75<37zolmVwT`*BT2wp)V6x;gRFD>j-hsA4izlPME$AUf4|>XrGNB7yYA@sq{tH~rNpx- zRDb&QdR_Q-jDpdCS$9cCS{M~xN>1nPfttSy4`Nu2PZORky-&Gmei6QXu((lg8TZz;jqcB zB)KG>nLQrgFmj$`C7fq?^T?UCQt$l>rJ}SFDf8j`0?MeQ2jXtGTWaqTk>AVi=6`uE z&(F_d-`!H;w;%%Ja5yZABBgU8C6HARICSmZyLV-t=Otr8tI@3d^XJdYwVywKE^S+5 z>i-fHZXt)mVQ~%D>vgdhPV+o3)-Vji;?H^Z!}~owJ#BzFolXm{mzS5#IIpj-tM&vE z_2K*ocx_$}14<<3kZa-!;Q^FfrME@htQ^5MgWr47ahiN1XK zvO50t>(?rv^Kn0Z{J3g6ap6%pe~ToAaz)TNp4E)wSZ=r5W`~Tvd>DpuKA#th;cfYM z;!jpX{jojDE$!e-*@9$|d6TOLwfI+3HV1*PdURi(K7CTh=gK-BkEUrIV?~#87-0)2U?8h+R=S^ z{djw_zKOdbDI1AQTC)}uk_OEHpX@2aiY=1G zX-emtMLOnX_F)*x^Ye4cb&(P<0r2{23(`t*@ViCaq9(1Qrf|!Z5NSb9x-V_@=N8O) zcy3Lau%?9Q-b0fW-INrgERw8ql@e>d4=2u3Mo&;0n14#`@f=r}W=YZ>2IcmwfZQq) zD%Ao8c}W(ik;F%IUw=|#4v6O8vAq=ZJfR{kbQp#*P190K;(acc%Thj(_~6PU>*K(n ztdaQ=5ie=Jk$_){^MoV{Be@@Iz^qS|&Y|_tG1a-w=W{t8kL7eaEn`vKd3kv;$JEC6 z7LPSgeqGy}dE<*O%)w(Tet4t_Xz`I&rqrG+< znp=>RTviQ5`eppL)DKsyG^(8(A6NRUS)rcHJ%K4j zPl+Xxk|0h~1du&R3#d4LRJr_o*3H%y5TkNQ#~3q9ajL{ElSBcdZ4eMimQ|)QO{>R* zP+rfmb$6=qLHOYt?}XnZ{|h{OjcqCiCbu*9z=8!KfyG0L#`1KQDd&-ace zoG+3W8PB`s4S;QcRin?xyQEp!ET3KzU%ZS;$|ALRym?_x z4?;fC`+qdUAU}{G@y!%CJ@Sf$9zYQfpdCw#V`C|jWkg~?RB*{Myqi@LWnG1}XW-Xs zEu>aXNjA|^G+?}dEeT?|#VjB-Zl$$vt@YHgOFIp_cdcuUh6CfCbErn{p zNZ+%B^3g6{drp}5vD^{AhR1ZSX9gOMrOIz944$nz9j-s)sg)~5-mKa!PI0n_Lz%RAyvgX(EwT zRHNKzVj^ABTsOKhX>5ycgf=lHYbBO|D1U5pRb>RXctqlkM%;y=rC4_jTVo5?ZTMx; zHGUc?ln?Rpo7!^d~9T_hxQxA(ow@h&cAKGrI5J>WI z9%4!yVM2ms173}5@hrmX+d`ZtcWbScVXKc>y3ej;>0Avk+3}FC7N~28#}WFD8-Gha zMlD!qo#tb!79+2n7YCxQsdoGp(n>A#o&N?UDuZ|J>({TPlv2Kb{~mvA)uOE8Te2fh z-qzSiafDv-$${V-Ms#P~t<_{^KYsjJzPkm<$RwoWEFiU38p+ZkgtE{(Ur539E@8f3 z(f){Vqbw1&FGcxzoyExVn_hnpkbhPy$?(wlX*{Ho6N1CvABHZF^Ym`Cg#x`Muy->{ z>lXpUQ!es|^v{4UReQZ%J)aA&I&*ijJ>Y2U-tLm90&t8&fjEMceg=6PdAV6BCP_xJ6{PT4D6cw zio}~zz-$1O zfzz5H@&5ePwY7lIo4onky!rJgpD1X&p9SEO5=$MkF3gH0RzI&!lB7WEFb@L7v92a>Z5H(;(vTU+1sgsvBTG>)0 zrIg~4H>M`5Mclq%O+M%OWwCqi!HWvQ?Jr8H%47YZ100000NkvXXu0mjfE2Vk* delta 3051 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 diff --git a/world_maker/data/heightmap_smooth.png b/world_maker/data/heightmap_smooth.png index 62999a1f3d18c675b575483f0db3fef7ed14ed9a..1282d61b7c704444306f4c8a3515c293a95cf35e 100644 GIT binary patch delta 1724 zcmV;t21EIn4a^OYB!81hL_t(|oTXV?+S@7&obkuH&i+^B=>xg~c9Q?l)=e;IbeACf z568jy144iR_!D#1KeeH`bs5(-GdGhAkcu7u>9p->4Dhf%5eT3xS$R5$GV%M1ap0?H z>+7L~vf8)7SQH?eqV!Qe0su9(>bJqV4!~lKpVY61Zyc)%H-ACe2CkG&THWVHnVP!f zA_uGg0{kf70eAoaMd#}v$cc;s@|&R%TTS?FV{%^9^RRZ=74NTD&Un0U&B5o7f>bHm&}+BmOz7)m!gx^ODQ7IH;N7yY0-?!4Al^M5rT95t>^iSsXG z3y15c9P%Q@>wmaDFWG^9Uh*@_pZNF{f7R&W$5i{kkMfNKK$7eu0KjUc$0IjkzvO;>_IAy!&n$>1b~7B0HMpSJ zKec)l)~|)P;d~SD4`a5t1VLJm+`O4S>;hC6 zfZ+Eib3I8rtU)wsJlI8W;!9CvzD2QCk_JM8Bp^{_iNNe7<;lh;2Oql81!$5cd6_^{ zU(*Fr7WYAcui3t+`K2s^nW^qT&fO^B1VOPZTay zsPbIaHVN~*&yG?SRTWv5^oq5Vjr5-SqS&Q*PghGskw>inURalg+O;GQuP-H2HTp(x`E}xJ;F0q6FK)lU=Zdy1f;ng#kv8B{n%Aig(=#fxo?`BO0Ld_9?O&lJ<6oNJAVK# z@!IaqH<;pt7NH}UE{2GITBaJO&oEt>eoAVTJzIG04?AR|TA1iC&B-YMSF_}Sr$})@ zqT1>q$SNQK40?t+g0SY%gTYMiO_*}Pkh$LImQ3QwdQH{pZ=GyDH(QE;M*BTyK@3SU zSaxyMBSp(frYv+Lqp6=Dt|#r=MSph};TSu>pe1DQg^CzU`{X1K@u=RBZbCPd^Z{j; zU$a0{oK~YBha_o7F*0T1;O8|zKLT`FOf6TBg>AGP(WPxo7Ymm5lD{kI%Y>0iEACmz{_XhJKOH-CrKV};oc#*=qy^C$T+>kVEjdt zh0p}PW|G;QfY8*~Ux7}Ti&c2IQ~HwP?vpb|NY&G_n0c-I3F0s}L8!YZtYoKw-6=i; z^;G2Pgu*4eoGTzy|NZ4lkbiUjq+OW!O+zeFJtch&ah&mMABp8cV~V9GyU>-r(%$OO zitUCe8Tw=w*Jmxz3(Csa{HlH>S3YUfR8dGp7ID(;71l9NMRqbvX+mSMvE)-nsfntf zoKwZ}6o!P=fpU!S|tAAl}bpm1ZA{~Ml zih2ILOFEux>Wz#1o+y6Cu*U$FPJs1PUVfA#p3XzFF1M?`SKL*e5X`c5xLl;O7jnReE~-N S=>p;a0000g~Xq)+klX2 zpuqSa%*@RCTQ$rV+NWdBXf&g-JsM~uu0uDF?+s?7jr%V^7+ncQ@9_r0+qBm&YPMX} z_}2my%$*mCk-?^7_1%Ba((GWE9E$RPf^@GcyVv2v-Q%i=b>G}7WT2gOeD$>TB?PfiRj&!Rh3;8ILUEGVEY zp3JrHg4IoUQcO^gZV6S4+4Eq3oewm%W_nyhaoY23G}|S{!IynPLGswHXk@K$dT{v6 z&{?>yNaSf_!{;EWlQR=j=Ie^3!EP9h3yVl4948VJ^nd8+irqmvRuF+cH5wBo`#FkY z2*_En=o=O(#b`D`e2TsYjlP;2Nb~ULVGzwGiX7urfNGy1X+lIj47#fp6{ z%avY%bGMi9VYwNI$!7Xki)kz#vhDJ8)9+;;&Do^w9B1w?8O?}E+WLfK&^uI?oFKua zaB_cv7k?+z0)HZCGJI%dc9G0AqgSvI&=1Fj*u(P4bOA<8I#xLVj4%KO3}^9JXhkq% z_a4q{l^!;Ao2DsAPE}uRQs^N@kCNb#Yp66xvoy_I13-+wTw@j;fu)%uVkB0cIn4L9 zsT3n-GW}1T2MPkhBymzD_g)8LnrW^fz01+Mu77^wqb|LKfUH*RFkw8$Ou?8uM6zrH zRcy0`V5{`hwPO7Rk|>svRc?g&S@X4B2MSY$Ym~8a^}r3X)Rf4M|QDHDPqg6N2Q0?2;J4W&v^H zLl4XaV*=9Bzf#s%ag+^Y4jFz}HqQYW=H2d@ktqJIcF$bAR}M6c0GX7a-&uKVRHJdc z+{1`j!0y`}havwf;oTOJx9TWr!N)sg{(ow9a&H42rV6^qSP7FgvWk&rp|Ty#t3OKxdgQeM_r87EPsjx~8_HE{?D>XXF36zo7NGbk8ex9@;aR;aX(yoqvtX zb7N`s`^{H)!&7U&S@iBHM1LK&<@(?!cNMR{FTeiwTFx!jo*=(ph0gONibAt<&eLm_ zgIV79%3;ewT9q;1D>Mq`CvNr}D`xupOQ+O6ML~FQEq=-|pA;*T9NQ}ukNpN!#i>8Y zx=wJy#d_Z>$`Xw@Dn_Q09jLswl?&~GOR@P0$QK`5oV~b6oCcS2X@AYfU%04Zn_Q+9 zU~Vx96V`f1S#!#sn@xVaV{QBvUi^W~rdS1I!DJtr;N%wl4Mp2INLL3*H~3g%Z1J)w zW=~%9t+-eeQ}g>DIOs_|etv1awxn7k--Qgc*8B)zXS={Q#c~1ibI8AF{{Z&=LFdF3 Sy`lgB002ovPDHLkU;%=Ul{!2C diff --git a/world_maker/data/heightmap_with_building.png b/world_maker/data/heightmap_with_building.png index d6902ee68df1bca568860ddce3b8afb275b09f88..bab97c0f51dd8ff424d0dc5205845eadc7c25b24 100644 GIT binary patch delta 2108 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 a0^omDK0H8KtMv!~0000A{-- diff --git a/world_maker/data/highwaymap.png b/world_maker/data/highwaymap.png index 9de071a2a37e597580b239bdc1e62f1f3036d285..896f10bad8632012e94236ada62d0c1508963e3f 100644 GIT binary patch delta 95 zcmeaRo1hZq>gnPbQZXkvL1IPouHyA;_2cTQZXkvL4tL0f=EwOpg{ox18W-tqwAgcA_gGvboFyt=akR{06|O* ASpWb4 diff --git a/world_maker/data/mountain_map.png b/world_maker/data/mountain_map.png index 67a6fe621097b09b1b4f88d2a210577732c27616..3ef750a8738dd35ce3a37d62a9a4cfbb49c78886 100644 GIT binary patch delta 731 zcmV<10wn#~1oH)uB!9X|L_t(|ob8$0lEWYfK&6xa|7G{V#sG3tv9r@DPrEVU03s?a zZ3102`#j&4R2LURl~vf%TZr9hE% zRC9ERVie%T!=ZQ{0?OXG<Jn9~tBcKiB(XGr>Hx zDwzpqDBMq%5)GxH-yGck>(yH(1l`vIywgAl~( z!iCCytbcbxI*Q~~YG4HEw7qOC(aqE7jlDbt=-j!m4ZLNX7qoMYce0tKs8iG(0F4Lk z&|H)bNwSc=G6q>N9?Aq?d`P2g z^$#3~@O!19Df|;7g)|W&Hq~zpL3ZaQ2I;>oo}vUV1sjsrDgMbB`2#?LtJ1>kAsqk! N002ovPDHLkV1mrAR2TpN delta 577 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 Z{sX$UvE&Z53Pb<^002ovPDHLkV1l2rvr7N~ diff --git a/world_maker/data/skeleton_mountain.png b/world_maker/data/skeleton_mountain.png index 4c93e1d10c3ed1031d831911ad1b33b7fec6b39b..dcdcf2bd52e9352abe32df6418a0625801cfadee 100644 GIT binary patch literal 4628 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 KMNUMnLSTZmk`fgF literal 3847 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 DB0&h) delta 623 zcmV-#0+9XA1c(KYB!5pyL_t(|ob8&+w!x7F0B( zrTpX@r9PLm&ve~Gxb4>F+del=%(2-10Qr|46b9Kr;gFNEbXa;wrBX_HtpqT}B}*wX zVkt#Ml>F$|(WnNgrDS}m&nG-0?kzm2QG;l(`;5j+Fx5OwtCdQ0u-%$%X7L5bp zt>{rqM4O;S)PGu^8B-Xti897@%Nd3Z-VO?%A!r^8=ZLO>?+a1WHV5%3G<;?tE`@}v zFvO#favg&>6f(XAAU0(*>tIw!Pa*2;aHA$hhjbL`?MNmKi~(V1{zpwQs4Y(mB8Cz)$0rVphQSFOww>Y+PpR zC=g}3SZIS#<|{$~WkK1=r??PchPo8r6Sx9DWdaa~0zi-@ZByVk1rrn~b3wa?@osWq z;Z*enOu^U&sQ9wD0Q{cw*!2`9{~W68`xH)Me-hYLtN+R8U6-RE42DB@_J05Wf1PG8tQ5$HR01N+bLR9| zOBG*|5U?@;j^jA@BwSsA3qZuz2EZeHqXNg&t1?u-6?*B^&r*f{#3I_49DO>7J{dg0tTgdqlcA=!9; zw48|<=oQFD%70>#*~I%hVOSbA2Lb%t^rxD})etGRI zvZ1a1D;*IF92?jwc+Ba|+FM+^r7r z`9cjkHR5_{pwCA;cOZTACEY{IEQay#ndmbe*Q$2nk$)roD;=L7njtp{b5vtlP<u@b5VCGTL>;^K`9p=YOmAL^f*6Mf*+w;Ae(&R1VpW2>o@u?C?uM_qaAIu+_${5yP z#Mal?skqCtzj^h#BbGtqD$}^!B&#^_+qS7j3sa*ghuNFztPcTrU9F!UyM2DN&u+ zdWBdYU2Wlv&`qopzNv+gXe^HqQeUIBXYS4t`+rgh$t#S~tB7m#(;6vB{Muhrl|J>3 zbQLW<%mXLZxsx8E%TZ}}j6VXGF@; zWq-CKe~~FXhZ`0-6VQAjvx}n^E-dK1o?R+gk!{Nd$!ao(UKDY?j)UHpY*Q=KolfjG zl(PR?;ut6@rxGZQ93! zI<=6#MvYjpYK$w6($m)(hS_7L7b{k}r+-NCi~a1p8WY{PdSEU(kZq+h{rD%JUEL)> zGl1f1rQoFm`*@tj86gvBbUKq0O8wn?_^B2HP6c-VBvD_?zgl2Jm{d$>2FsGTY|J4= zF{$vJ@)@8F3CGo<7vnC0=E`g(CbuK|^~pc=ovnQOUo-wBv*BadZdugKh@AhuiA*#< z_35Q<(f#k9`u)^R<6Pz1=k4pn{8Y_Xei0$R;lhIZYzl6_GtUpLO-$vTcp!PA<2cTm Z{0CXKpthVPsA2#B002ovPDHLkV1hRiCxZY0 delta 1346 zcmV-I1-<&`2-FIYBYy=ONkl$0;t2nE~o{ttY1<@=GElB<}6Tw2$3_GlY( zSpp#h-2gXk+_-Tg3cOO_w6Gp_qJgbnKxe+ZCSF7@BK>CDL65IXqFq*C4Djd~cI=|0 zp(*%E2^6w}DLNX%_>Lg}#f~A-Ig0(nYv8BWHa+ljh1bd&(0>*pWS>7G{!L}Iy0$3{+^pKx5LRN*Fpo*`Ch5!R`K!E*X zyUnF3Y^#v3Vx~L^^6DWXM8rV!3~?K~Hl&7J^OWMcCA5{(^B9VotK} z6`*4h+==w~LVxe1cuMLCVkq?Kkoqf~Xaa5$Jx`D0W&k&rSvTrIC! zC4xMN+PGxA%5)QC1LkB6VXaUfPhrPnPvgxWWkM4!tbg-T4fRl|myW(~h#6%}AwODs z3q8L2K#Q+;?P*CltwczKCv>ZV4isGI9eCh@jZCriu%{`@P$?Y$D2dW-*Sg&&oru|N z^L^gI#(!6*$XW_`ghn%%jk3Xb$7hI$8MtXhY!=U$+cTw5UlYvLGm}(A<0$*H0uJzB z!ta|AhPciPL!Q`_iqKBVSAV=%zFbDS2hWegVP=@OI13`(QZ&itja_EJ#o4eEaHgO_E6Iu=RnY@r19-?PDcI@KyV3i>PG+;} z63%D#&F&}5{D4ocrFe5&Nfhm(-9AfIuY=C@Pex59TRAm6ZmlGi3xhQBhPz}hq6eap zsDD;uK`1evuk^`DVt+Hu+F+?fxOko5h79Xr0y1sMg1me|Hf`Jc>2)meYdY6<7xvOZ zS_ntJJhD=d4C!3B!i>PCWbxo%L)XEHPk6ObYz(bh4#&`ttUn#HAhchV!d0AHS9IMu zntLjK{EKH(BD0ranS8os=C1ODw`l#9_YG_(xCen)i`^q-3&MXD}7K8UMJtVnq^%sgYQqgVud80 zk?@Av1QT?>X$9>FlB17NvOq8%%lc_gGt1H@&^C)LcOHbHIC8y~we+#&-MI7s0e`1# zAvEBNzp1B89Y!TP7oe#=R@e?~E9z>f?PSfCCpY}7sAm;lt@ekNLaZ7n*GHwC_?gLq zdGd2s(Z@ph(s(D^}<`C3H>Ioj}57EtDM;u6jmczlg|3~ZrQWQly0 zi9;&1y%x&#v1YWYAstmXe4#)kpMNdJxgt{r!KUf)HlGamTP5Txp~)9ILb&@w!GqQw zaI##u{)o$$=*oHW89O3A=H$CF(l0oWwDbjH*x;$e8d5az0z=UMU*U-Kk=#@7*E=3>PG1gD z5!-%G2QTLyS=LtB0UHbqJ{j;w4oUXz#~U|p+_<5Ff23Q92FncbvH$=807*qoM6N<$ Ef}0?d^#A|> diff --git a/world_maker/data/sobelmap.png b/world_maker/data/sobelmap.png index 7b3b89b728f24d2638dd82621452c57e60c634eb..1d9ca7abb4c2ab65ddcb87133c585f88d0f33892 100644 GIT binary patch literal 3841 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 D{9pWg delta 3402 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 diff --git a/world_maker/data/treemap.png b/world_maker/data/treemap.png index 3875abbafa6a164a5af4687b7d230e9c533e705d..7bd52e00b57229f107b2aa067b8b8c38d82d1eb6 100644 GIT binary patch literal 6196 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 SUixzY0000geT4$8C|vj3e7 zJ}1dU^X-<>-*qpR3s0NJ_*62jd!^UQt;erFowVJEZ>rMu+Ub+t86UXZC9k)4oBi?c lvs8Zey{wb7a%6yk%tB!9q3L_t(|ob8rD4!|G?1hMJ=zidxE7#qNdq)T>=J#?}xMnwoA zgb+dqA%tYp4*j|-6@XtPdsWh=1OZ0h}I}xchF|1y``*^7|F|1xhv~B{k zC<_p0(Y7qiqONk3rO Image: for x in range(width): for y in range(height): - pixel1 = base.getpixel((x, y)) - pixel2 = top.getpixel((x, y)) + base_pixel = base.getpixel((x, y)) + top_pixel = top.getpixel((x, y)) - if pixel1 != 0: - result_image.putpixel((x, y), pixel1) + if top_pixel != 0: + result_image.putpixel((x, y), top_pixel) else: - result_image.putpixel((x, y), pixel2) + result_image.putpixel((x, y), base_pixel) return result_image @@ -247,7 +247,8 @@ def create_volume(surface: np.ndarray, heightmap: np.ndarray, make_it_flat: bool def convert_2D_to_3D(image: Union[str, Image], make_it_flat: bool = False) -> np.ndarray: image = handle_import_image(image) - heightmap = Image.open('./world_maker/data/heightmap.png').convert('L') + heightmap = Image.open( + './world_maker/data/heightmap_smooth.png').convert('L') heightmap = np.array(heightmap) surface = np.array(image) volume = create_volume(surface, heightmap, make_it_flat) diff --git a/world_maker/pack_rectangle.py b/world_maker/pack_rectangle.py index 79afe60..c279d94 100644 --- a/world_maker/pack_rectangle.py +++ b/world_maker/pack_rectangle.py @@ -97,9 +97,14 @@ def draw_rectangles(rectangles, grid, heightmap): image = Image.new('L', (len(grid[0]), len(grid)), (0)) for rectangle in rectangles: start, end = rectangle + height = [] for x in range(start[0], end[0]): for y in range(start[1], end[1]): - image.putpixel((x, y), heightmap.getpixel((x, y))) + height.append(heightmap.getpixel((x, y))) + height_average = sum(height)/len(height) + for x in range(start[0], end[0]): + for y in range(start[1], end[1]): + image.putpixel((x, y), round(height_average)) return image diff --git a/world_maker/world_maker.py b/world_maker/world_maker.py index 2210234..e393c3e 100644 --- a/world_maker/world_maker.py +++ b/world_maker/world_maker.py @@ -12,9 +12,6 @@ def world_maker(): world = World() heightmap, watermap, treemap = get_data(world) - filter_smooth( - './world_maker/data/heightmap.png', 4).save('./world_maker/data/heightmap_smooth.png') - filter_sobel( "./world_maker/data/heightmap.png").save('./world_maker/data/sobelmap.png') @@ -53,4 +50,18 @@ def world_maker(): './world_maker/data/building_moutain.png').save('./world_maker/data/heightmap_with_building.png') overide_map('./world_maker/data/heightmap_with_building.png', './world_maker/data/building.png').save('./world_maker/data/heightmap_with_building.png') + filter_smooth( + './world_maker/data/heightmap_with_building.png', 2).save('./world_maker/data/heightmap_smooth.png') + overide_map('./world_maker/data/heightmap_with_building.png', + './world_maker/data/building_moutain.png').save('./world_maker/data/heightmap_with_building.png') + overide_map('./world_maker/data/heightmap_with_building.png', + './world_maker/data/building.png').save('./world_maker/data/heightmap_with_building.png') + filter_smooth( + './world_maker/data/heightmap_with_building.png', 2).save('./world_maker/data/heightmap_smooth.png') + overide_map('./world_maker/data/heightmap_with_building.png', + './world_maker/data/building_moutain.png').save('./world_maker/data/heightmap_with_building.png') + overide_map('./world_maker/data/heightmap_with_building.png', + './world_maker/data/building.png').save('./world_maker/data/heightmap_with_building.png') + filter_smooth( + './world_maker/data/heightmap_with_building.png', 2).save('./world_maker/data/heightmap_smooth.png') return rectangle_mountain, rectangle_building, skeleton_highway, skeleton_mountain, road_grid