
blocklyEveryone wants their scenes to look good and materials play essential role in achieving that. We allow real time change of material properties. Check this simple example script to get an idea how this can be done by using our interactive components. You can tune 3D object materials through various properties or assign different ready made materials during various preprogrammed conditions.
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="^sx`fCpePa^g]:0SMrfk">color</variable>
<variable id="*hxGnz8(@k,!3ln?HSAY">step</variable>
<variable id="=h(?B%B+q.48XLF|sqx;">dir</variable>
<variable id="N:XUc!d+SL(we3MzY@N;">monkey</variable>
<variable id="fRTa`)g!XHagxQTHd?T,">countRed</variable>
<variable id="9]H26OSB?i;/[xv~C4sj">countGreen</variable>
<variable id="IoRQwR[2qMq#Q,*Ji*{i">countBlue</variable>
<variable id="R10).^Y*S6+v44`G/0rZ">redStep</variable>
<variable id="!TV^TT5-/LR=m4`L[Fz,">greenStep</variable>
<variable id="DcbMOKIfdL%Z$;q*6yj}">blueStep</variable>
<variable id=":$ldjJxiFpC5|R](e4=0">monkeys</variable>
<variable id="ivnkCI*u/S9K9Ooevs1!">stepsRed</variable>
<variable id="sdT+7Aer/l!(Jz@C0gtw">stepsGreen</variable>
<variable id="6vGSfMzT0j4nj.z_X`G$">stepsBlue</variable>
<variable id="MBiA#BoS^oV`U)xj)r0Y">i</variable>
<variable id="IOfgWKIo7zKr:AWIuCM;">j</variable>
<variable id="3R5jK+cngmD2P?aWA39[">k</variable>
<variable id="3:Yp2|h:6S,u8jFbkpb(">timeElapsedFromPreviousFrame</variable>
<variable id="!+0z]4_=)]t$elw:o}t=">monkeyClone</variable>
<variable id="e;,o$-jw12wK(T@4uiV|">n</variable>
<variable id="GQf0KiQ#itT7d7M.M!/l">createColour</variable>
<variable id="gSV0H,5QD^bhXKhaq7(=">currentBox</variable>
<variable id="K:y1c6jlaY*=L|MaV8bo">currentStepRed</variable>
<variable id="mh79`67vZsm8K#s6=IY*">currentStepGreen</variable>
<variable id="@!UD|yHEg+0heRGw{Ds4">currentStepBlue</variable>
<variable id="%uKB,,xI$./.OU%nhs.P">material1</variable>
<variable id="UK(L!q~TWdgmwppaGFgJ">col</variable>
<variable id="/~kF%jZ2x~SUPd(p#o2X">paramRed</variable>
<variable id="[A%[aEC9$`E104(-S|IM">paramGreen</variable>
<variable id="eG3t-c4*NYaJU}v5et,S">paramBlue</variable>
</variables>
<block type="bitbybit.babylon.scene.enableSkybox" id="p]=f+Nzm0^tWCS1Qo[C$" x="469" y="192">
<value name="Skybox">
<block type="bitbybit.babylon.enums.skyboxEnum" id="0/u62MGp-#-3m.82S?0k">
<field name="bitbybit.babylon.enums.skyboxEnum">'city'</field>
</block>
</value>
<value name="Size">
<block type="math_number" id="H~3w/`pr^@rqSSnO3(O0">
<field name="NUM">1000</field>
</block>
</value>
<value name="Blur">
<block type="math_number" id=";WF-{7C;$NX4lDl(ccO_">
<field name="NUM">0.3</field>
</block>
</value>
<value name="EnvironmentIntensity">
<block type="math_number" id="#5ibutWHz^EG@x=vt^4u">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.drawDirectionalLightNoReturn" id=")K4uiMx;!`/c6#4%@vD|">
<value name="Direction">
<block type="bitbybit.point.pointXYZ" id="Gu;Lj4[ibm~$]/fF-$0M">
<value name="X">
<block type="math_number" id=".[H:VXojF,tkSf4}5D)=">
<field name="NUM">-100</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="B*?T)?{(}AE`Kx;^,i.9">
<field name="NUM">-40</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="s/td!lO7@?;1R*6OSPq,">
<field name="NUM">-100</field>
</block>
</value>
</block>
</value>
<value name="Intensity">
<block type="math_number" id="EQ}sRzelfFrcKyPy`[dC">
<field name="NUM">1</field>
</block>
</value>
<value name="Diffuse">
<block type="colour_picker" id="`D_Il5-vX0|uKi:X1a@*">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Specular">
<block type="colour_picker" id="M;E.M]]r_xkP?]Mevxqd">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="ShadowGeneratorMapSize">
<block type="math_number" id="}i6;Ei+oFf84pXlqZ6kt">
<field name="NUM">2056</field>
</block>
</value>
<value name="EnableShadows">
<block type="logic_boolean" id=")qdEzVV(8j$)NfJ%a+8y">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ShadowDarkness">
<block type="math_number" id="Fg#rI~B*$p~r.:UFE?HB">
<field name="NUM">0</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.scene.adjustActiveArcRotateCamera" id="6SR24F*3tjIZKyPL[BbU">
<value name="Position">
<block type="bitbybit.point.pointXYZ" id="JFW{SKy)_=`yef;9,X;{">
<value name="X">
<block type="math_number" id="1!fZp7:YzU1n$hL:he;P">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id=",HC%rvTf}7?C;x9BtilO">
<field name="NUM">10</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="QJg=NYtB8O9K(`RpQIc/">
<field name="NUM">30</field>
</block>
</value>
</block>
</value>
<value name="LookAt">
<block type="bitbybit.point.pointXYZ" id="!)%[tJ,jn2QL-RPC;Pou">
<value name="X">
<block type="math_number" id="TFh7VHm|`qDm*K6B67vy">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="d6K8M)U^~-(BL?]Ij;t2">
<field name="NUM">0</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="hmnZm9r4e|E}Cb-DA0UO">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="MaxZ">
<block type="math_number" id="(f_Xo^fjwd=l{wftn$K;">
<field name="NUM">10000</field>
</block>
</value>
<value name="PanningSensibility">
<block type="math_number" id="p|%f?yBa#$ymrGE?uy%u">
<field name="NUM">1000</field>
</block>
</value>
<value name="WheelPrecision">
<block type="math_number" id="*iw]zhb^}~XLp*,xz1P2">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="bitbybit.draw.drawAnyAsyncNoReturn" id="O%=sL~lnj[{QV2E~t},4">
<value name="Entity">
<block type="bitbybit.jscad.shapes.cuboid" id="u`K1bmr}k3EzX5*$WdbV">
<value name="Center">
<block type="bitbybit.point.pointXYZ" id="QfwQYRR`(9HRFb|v5.f7">
<value name="X">
<block type="math_number" id="zI454nr1:F40iI1:`Ye.">
<field name="NUM">0</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="mPrD_|IcmnG6~VVq9W#?">
<field name="NUM">-25</field>
</block>
</value>
<value name="Z">
<block type="math_number" id="o8:(9:|GjI4{ZRvby!o6">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="Width">
<block type="math_number" id="vfZ8n^;8v;=b0EEa/mMW">
<field name="NUM">100</field>
</block>
</value>
<value name="Length">
<block type="math_number" id="fw8C;SA^4N:5YD]24Cc|">
<field name="NUM">100</field>
</block>
</value>
<value name="Height">
<block type="math_number" id="3kI#l)_?5B]HPIj`AE@F">
<field name="NUM">0.2</field>
</block>
</value>
</block>
</value>
<value name="Options">
<block type="bitbybit.draw.optionsSimple" id="8$*X*6s@T[oKuf!C^(30">
<value name="Colours">
<block type="colour_picker" id="U^AGBXioK%}Lis$v3s*x">
<field name="COLOUR">#ffffff</field>
</block>
</value>
<value name="Size">
<block type="math_number" id="=u-[SBogTfRXFs[/|^Y{">
<field name="NUM">3</field>
</block>
</value>
<value name="Opacity">
<block type="math_number" id="LP@fT18r7.X!Vl4XBs2f">
<field name="NUM">1</field>
</block>
</value>
<value name="Updatable">
<block type="logic_boolean" id="GqXupymcj{b:{9S%.M*@">
<field name="BOOL">FALSE</field>
</block>
</value>
<value name="Hidden">
<block type="logic_boolean" id="%~swdj/1F_{`6,$Z:i,}">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<next>
<block type="base_time_then" id="6O),_l!Fw`b?hcGj*$SU">
<field name="Result" id="N:XUc!d+SL(we3MzY@N;">monkey</field>
<value name="Promise">
<block type="bitbybit.babylon.io.loadAssetIntoScene" id="{eR]K./7vo`1mtTr,|zw">
<value name="AssetFile">
<block type="bitbybit.asset.getFile" id="Mut5F@%+#+BDA+dPI/[~">
<value name="FileName">
<block type="text" id="Q/L*ra1@tQ6m7hSvfu?K">
<field name="TEXT">monkey.glb</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="Then">
<block type="bitbybit.babylon.mesh.setScale" id="[mpx*|AD*6J#HDFzYgKO">
<value name="BabylonMesh">
<block type="variables_get" id="$r;$rap)8B@0$+2FfL_2">
<field name="VAR" id="N:XUc!d+SL(we3MzY@N;">monkey</field>
</block>
</value>
<value name="Scale">
<block type="bitbybit.point.pointXYZ" id="{6=kbJq/$q=4d[Dqpp}[">
<value name="X">
<block type="math_number" id="s:J%ed6-FB9D]ipRc/I7">
<field name="NUM">2.6</field>
</block>
</value>
<value name="Y">
<block type="math_number" id="vo7n;DgkiF^Iizdu@Ip8">
<field name="NUM">2.6</field>
</block>
</value>
<value name="Z">
<block type="math_number" id=",*3CmN{`2TA?81NQPH!*">
<field name="NUM">2.6</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="f1nrYX{]}Z9*1r2yhy~o">
<field name="VAR" id="fRTa`)g!XHagxQTHd?T,">countRed</field>
<value name="VALUE">
<block type="math_number" id="0Q+6De;8TCy_TKP%=M!_">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="p^jvJXvVyv%b9dY;5[j9">
<field name="VAR" id="9]H26OSB?i;/[xv~C4sj">countGreen</field>
<value name="VALUE">
<block type="math_number" id="_r.wzu,U/o!*qL=.5H([">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="L)]79Guv*7ZCt9J%Xd7H">
<field name="VAR" id="IoRQwR[2qMq#Q,*Ji*{i">countBlue</field>
<value name="VALUE">
<block type="math_number" id="Mw7{]1=;)Fhe?.sIFR}l">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="OC4_sGqmpJ.os`P3xAhd">
<field name="VAR" id="R10).^Y*S6+v44`G/0rZ">redStep</field>
<value name="VALUE">
<block type="math_number" id="*9#72)vjlI1g[`zamY[9">
<field name="NUM">1</field>
</block>
</value>
<next>
<block type="variables_set" id="n`@Lm$5zt3[oF,kD(x(k">
<field name="VAR" id="!TV^TT5-/LR=m4`L[Fz,">greenStep</field>
<value name="VALUE">
<block type="math_number" id="[hpyWdM@bEzJ7oopnzYX">
<field name="NUM">2</field>
</block>
</value>
<next>
<block type="variables_set" id="]k)ce96]0NtQYO/X3)/X">
<field name="VAR" id="DcbMOKIfdL%Z$;q*6yj}">blueStep</field>
<value name="VALUE">
<block type="math_number" id="bJ9s346T0M?J~qJBK~S9">
<field name="NUM">3</field>
</block>
</value>
<next>
<block type="variables_set" id="yIv3@(cs9u[@l~6+6T#D">
<field name="VAR" id=":$ldjJxiFpC5|R](e4=0">monkeys</field>
<value name="VALUE">
<block type="lists_create_with" id="c($W,AARAq(z?@1d|{8_">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="{PC4{~dtLc=dM+$HJ|*N">
<field name="VAR" id="ivnkCI*u/S9K9Ooevs1!">stepsRed</field>
<value name="VALUE">
<block type="lists_create_with" id="@(68L,YCMCvw0,u/-Hvc">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="ot|E}=Hq=AEY+ufCT^Lc">
<field name="VAR" id="sdT+7Aer/l!(Jz@C0gtw">stepsGreen</field>
<value name="VALUE">
<block type="lists_create_with" id="ve^:vBz*GINyRst^f+(g">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="variables_set" id="(E9kwBGeHlznQ0P[SCMW">
<field name="VAR" id="6vGSfMzT0j4nj.z_X`G$">stepsBlue</field>
<value name="VALUE">
<block type="lists_create_with" id="_#1[SSgv82,@8sj.b,mi">
<mutation items="0">
</mutation>
</block>
</value>
<next>
<block type="controls_for" id="c+;4sRUCykeo8y7G#~0i">
<field name="VAR" id="MBiA#BoS^oV`U)xj)r0Y">i</field>
<value name="FROM">
<block type="math_number" id="ky:N^fc;#7]pnkG]_=M{">
<field name="NUM">-16</field>
</block>
</value>
<value name="TO">
<block type="math_number" id="92*%z]iw`T@1ONb|9E}u">
<field name="NUM">16</field>
</block>
</value>
<value name="BY">
<block type="math_number" id="o.u{(t.yT+iB^n`X8n%W">
<field name="NUM">8</field>
</block>
</value>
<statement name="DO">
<block type="controls_for" id="5sM::P)08yh(t+}TYVo{">
<field name="VAR" id="IOfgWKIo7zKr:AWIuCM;">j</field>
<value name="FROM">
<block type="math_number" id="ih0]UEBG!m#|)kzw|p}:">
<field name="NUM">-16</field>
</block>
</value>
<value name="TO">
<block type="math_number" id="DeQ|j[U($vA,Pju-y|}a">
<field name="NUM">16</field>
</block>
</value>
<value name="BY">
<block type="math_number" id="Wix|0gQdv$+G)fzubDPT">
<field name="NUM">8</field>
</block>
</value>
<statement name="DO">
<block type="controls_for" id="TC51/79Hr{j1%Bms|vYG">
<field name="VAR" id="3R5jK+cngmD2P?aWA39[">k</field>
<value name="FROM">
<block type="math_number" id="%yO/ev.(uAH~0e}N?}tq">
<field name="NUM">-16</field>
</block>
</value>
<value name="TO">
<block type="math_number" id="~yaZ=Y+2RX0VECo3KmA?">
<field name="NUM">16</field>
</block>
</value>
<value name="BY">
<block type="math_number" id="7!2.@B;PIx+=S*5ah:yG">
<field name="NUM">8</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="P1SBhD/52G)a1PBH#^7V">
<field name="VAR" id="!+0z]4_=)]t$elw:o}t=">monkeyClone</field>
<value name="VALUE">
<block type="variables_get" id="c}trY^Gdu-~uH,`TC8Wv">
<field name="VAR" id="N:XUc!d+SL(we3MzY@N;">monkey</field>
</block>
</value>
<next>
<block type="variables_set" id="l8zyCMKBd^pU~sey$SX2">
<field name="VAR" id="GQf0KiQ#itT7d7M.M!/l">createColour</field>
<value name="VALUE">
<block type="bitbybit.color.rgbToHex" id="S)En]|clnJ)wAH-JD)~?">
<value name="R">
<block type="math_round" id="ZI[rX/;tVIq8-ot2_xN7">
<field name="OP">ROUND</field>
<value name="NUM">
<block type="bitbybit.math.remap" id="C!Q.1?@,Ij1m;wY|SuL_">
<value name="Number">
<block type="bitbybit.math.random" id="xPxf_k)6sUb2@ra@8dD{">
</block>
</value>
<value name="FromLow">
<block type="math_number" id="`Xq4M]t90y@Fh@3``J*$">
<field name="NUM">0</field>
</block>
</value>
<value name="FromHigh">
<block type="math_number" id="|WDK)`h4e9(h3S%.RpCr">
<field name="NUM">1</field>
</block>
</value>
<value name="ToLow">
<block type="math_number" id=")*bg*lSPPYb))?pgAeBq">
<field name="NUM">1</field>
</block>
</value>
<value name="ToHigh">
<block type="math_number" id="[.~qK:lVZ^rjCwG8v5Nr">
<field name="NUM">233</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="G">
<block type="math_round" id="0g]Qy2{U1kHFH^uz+_{y">
<field name="OP">ROUND</field>
<value name="NUM">
<block type="bitbybit.math.remap" id="UBv@PC+1JYEG?_iOlCe|">
<value name="Number">
<block type="bitbybit.math.random" id="2Uu4y.Zmqe.G-zL2tpM)">
</block>
</value>
<value name="FromLow">
<block type="math_number" id="gj|)|bX4wsG-1X)Y$jgD">
<field name="NUM">0</field>
</block>
</value>
<value name="FromHigh">
<block type="math_number" id="Qh,`.[9V|[TbfN(17j(.">
<field name="NUM">1</field>
</block>
</value>
<value name="ToLow">
<block type="math_number" id="U%id7cw?D37`b}W:zW?{">
<field name="NUM">1</field>
</block>
</value>
<value name="ToHigh">
<block type="math_number" id="t-B@laHc2Y;Pg.^aS5(w">
<field name="NUM">233</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block type="math_round" id="s3ogSEE]s-;uSwh}{|PO">
<field name="OP">ROUND</field>
<value name="NUM">
<block type="bitbybit.math.remap" id="S#a[++{vq-o;|a~M}=%1">
<value name="Number">
<block type="bitbybit.math.random" id="`narrG{w=;m`%.:n;3P]">
</block>
</value>
<value name="FromLow">
<block type="math_number" id="Dg+[]eA/KrV:I}YPZR(1">
<field name="NUM">0</field>
</block>
</value>
<value name="FromHigh">
<block type="math_number" id="PSNx%WH~_-B_W:w5GXD%">
<field name="NUM">1</field>
</block>
</value>
<value name="ToLow">
<block type="math_number" id="n[8HuaAM-%Tl_Z*%(S?T">
<field name="NUM">1</field>
</block>
</value>
<value name="ToHigh">
<block type="math_number" id="UYGZ$eY$SL5|D6(OBB;g">
<field name="NUM">233</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setMaterial" id="r)INblvE00/!ANG`WVBY">
<value name="BabylonMesh">
<block type="variables_get" id="OuH?//Cn-G])VEToaeW;">
<field name="VAR" id="!+0z]4_=)]t$elw:o}t=">monkeyClone</field>
</block>
</value>
<value name="Material">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id=".Pemyz[2T|:rf]D#|wKJ">
<value name="Name">
<block type="text" id="*(//(z3aG%a@vT3BWP,G">
<field name="TEXT">MaterialForBox</field>
</block>
</value>
<value name="BaseColor">
<block type="variables_get" id="rJ]V3@?{iTB0gO([t3r=">
<field name="VAR" id="GQf0KiQ#itT7d7M.M!/l">createColour</field>
</block>
</value>
<value name="Metallic">
<block type="bitbybit.math.random" id="A8(yGjs==^qPPhep0Skt">
</block>
</value>
<value name="Roughness">
<block type="bitbybit.math.random" id="I~b9VkD8N6%.XfWDLGv+">
</block>
</value>
<value name="Alpha">
<block type="math_number" id="i49lGWO#HzL+N!^60Qk3">
<field name="NUM">1</field>
</block>
</value>
<value name="BackFaceCulling">
<block type="logic_boolean" id="@z|Fe`^6*],`rZ5ez@ED">
<field name="BOOL">TRUE</field>
</block>
</value>
<value name="ZOffset">
<block type="math_number" id="WZS6^V5C6X)Ne=?~H8o{">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<value name="IncludeChildren">
<block type="logic_boolean" id="XYF?2x]WIbLO-(f7@$Yw">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.mesh.setPosition" id="DAr``:K_0LAS4Kd6q!]?">
<value name="BabylonMesh">
<block type="variables_get" id="5v*eXtb*H#SQDwU)/h/s">
<field name="VAR" id="!+0z]4_=)]t$elw:o}t=">monkeyClone</field>
</block>
</value>
<value name="Position">
<block type="bitbybit.point.pointXYZ" id="ev|fEGI8v/|%I`.R}`:|">
<value name="X">
<block type="variables_get" id="wsd6!F`R_E8QS|ms=Ulr">
<field name="VAR" id="MBiA#BoS^oV`U)xj)r0Y">i</field>
</block>
</value>
<value name="Y">
<block type="variables_get" id="4L@ByIZ)}/`$Wtd=7T6O">
<field name="VAR" id="IOfgWKIo7zKr:AWIuCM;">j</field>
</block>
</value>
<value name="Z">
<block type="variables_get" id="]^+S#j0IX)LjH}_$ee{3">
<field name="VAR" id="3R5jK+cngmD2P?aWA39[">k</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="39*a_cCJF9p:@m[[v[of">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="!4ycj1|A-en:pv`($7CS">
<field name="VAR" id=":$ldjJxiFpC5|R](e4=0">monkeys</field>
</block>
</value>
<value name="TO">
<block type="variables_get" id="{?t*d(cp##X#]`w;Lb.3">
<field name="VAR" id="!+0z]4_=)]t$elw:o}t=">monkeyClone</field>
</block>
</value>
<next>
<block type="lists_setIndex" id="I[tY$sKXJNK9(bt@cHX#">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="0}JBDLHRG8_BhY8yf-su">
<field name="VAR" id="ivnkCI*u/S9K9Ooevs1!">stepsRed</field>
</block>
</value>
<value name="TO">
<block type="procedures_callreturn" id="j!5$z/%7xG.vD}^_gpww">
<mutation name="getRandomDirStep">
</mutation>
</block>
</value>
<next>
<block type="lists_setIndex" id="W,}PZZqbGlm{Tq4aR@WU">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="aY1[f#Yh:XB5Wo$lzF(+">
<field name="VAR" id="sdT+7Aer/l!(Jz@C0gtw">stepsGreen</field>
</block>
</value>
<value name="TO">
<block type="procedures_callreturn" id="y`?,5$9D*R2Tvd`c-S/D">
<mutation name="getRandomDirStep">
</mutation>
</block>
</value>
<next>
<block type="lists_setIndex" id="nQBO;wDy7q`t).{s1vV%">
<mutation at="false">
</mutation>
<field name="MODE">INSERT</field>
<field name="WHERE">LAST</field>
<value name="LIST">
<block type="variables_get" id="^un|$2[jiwJs9+%]hk7k">
<field name="VAR" id="6vGSfMzT0j4nj.z_X`G$">stepsBlue</field>
</block>
</value>
<value name="TO">
<block type="procedures_callreturn" id=";+#^gQ1iUO4E(KB)O02g">
<mutation name="getRandomDirStep">
</mutation>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</statement>
<next>
<block type="bitbybit.babylon.mesh.hide" id="4QWpj3Dd!r`_%#93g,uO">
<value name="BabylonMesh">
<block type="variables_get" id="SvGNgtVnk9I--f1x94+{">
<field name="VAR" id="N:XUc!d+SL(we3MzY@N;">monkey</field>
</block>
</value>
<value name="IncludeChildren">
<block type="logic_boolean" id=")U6W5H$E?yOzx8c8,J3_">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="base_time_update" id="1#d`;^a7!HMBo9e|p]^]">
<field name="TimePassedMs" id="3:Yp2|h:6S,u8jFbkpb(">timeElapsedFromPreviousFrame</field>
<statement name="Update">
<block type="controls_for" id="3V}!Try!}CAXnFLlG-e!">
<field name="VAR" id="e;,o$-jw12wK(T@4uiV|">n</field>
<value name="FROM">
<block type="math_number" id="~#qCT4[hLwMy1(24TIW9">
<field name="NUM">1</field>
</block>
</value>
<value name="TO">
<block type="lists_length" id="K(P~z02LLH]^B@X@EP/)">
<value name="VALUE">
<block type="variables_get" id="7@#amHOuZ|SyqcU7E|Wr">
<field name="VAR" id=":$ldjJxiFpC5|R](e4=0">monkeys</field>
</block>
</value>
</block>
</value>
<value name="BY">
<block type="math_number" id="|B/bzUV:^[]AASaWUKwE">
<field name="NUM">1</field>
</block>
</value>
<statement name="DO">
<block type="variables_set" id="+W~SNJQ2=J`5EvMx|!O-">
<field name="VAR" id="gSV0H,5QD^bhXKhaq7(=">currentBox</field>
<value name="VALUE">
<block type="lists_getIndex" id="6#sRI7qEKWMgJ*`@uMg+">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="0l`(jM#MaBB]mePXKgUa">
<field name="VAR" id=":$ldjJxiFpC5|R](e4=0">monkeys</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="zg0ni%5Ej.7#$-FyKAfF">
<field name="VAR" id="e;,o$-jw12wK(T@4uiV|">n</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="TWXF4sl_#D7z%~+|M,8a">
<field name="VAR" id="K:y1c6jlaY*=L|MaV8bo">currentStepRed</field>
<value name="VALUE">
<block type="lists_getIndex" id="Q430!EWx;2.doxlxh1b8">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="RlxJ0|1:.F5bp~knCO_z">
<field name="VAR" id="ivnkCI*u/S9K9Ooevs1!">stepsRed</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="pYMgkj~E#ud#|EX7BrZQ">
<field name="VAR" id="e;,o$-jw12wK(T@4uiV|">n</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="F@;G@2?hIODV2,OY48wN">
<field name="VAR" id="mh79`67vZsm8K#s6=IY*">currentStepGreen</field>
<value name="VALUE">
<block type="lists_getIndex" id="SVpL8(AY?TpYR=4T%h0$">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="3Uu[yDICv#T35r{|Kv#2">
<field name="VAR" id="sdT+7Aer/l!(Jz@C0gtw">stepsGreen</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="hPK*L`LHhnh!tbqla|Q/">
<field name="VAR" id="e;,o$-jw12wK(T@4uiV|">n</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="cmPK4Rux..S9BN(,v?*8">
<field name="VAR" id="@!UD|yHEg+0heRGw{Ds4">currentStepBlue</field>
<value name="VALUE">
<block type="lists_getIndex" id="~I@exP**mY|5dh2g$^aE">
<mutation statement="false" at="true">
</mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="4Iq/e|{ReEL6V$vKpRX4">
<field name="VAR" id="6vGSfMzT0j4nj.z_X`G$">stepsBlue</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="$]4=WP)IAkh:qfA,ChVL">
<field name="VAR" id="e;,o$-jw12wK(T@4uiV|">n</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="HC_0@Sz5~i_-kF.oNLyH">
<field name="VAR" id="%uKB,,xI$./.OU%nhs.P">material1</field>
<value name="VALUE">
<block type="variables_get" id="^nf!a%0Jk~Jsf{wRh2zc">
<field name="VAR" id="gSV0H,5QD^bhXKhaq7(=">currentBox</field>
</block>
</value>
<next>
<block type="variables_set" id="}PEsqH-4F;6/Q=:*t_--">
<field name="VAR" id="UK(L!q~TWdgmwppaGFgJ">col</field>
<value name="VALUE">
<block type="bitbybit.babylon.material.pbrMetallicRoughness.getBaseColor" id="b:{P/rnd!g22Q@-z4ck]">
<value name="Material">
<block type="variables_get" id="By5^)%-xVze7_Y(FncI5">
<field name="VAR" id="%uKB,,xI$./.OU%nhs.P">material1</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="zI}EfA#|$Sq~/XRVh!W!">
<field name="VAR" id="/~kF%jZ2x~SUPd(p#o2X">paramRed</field>
<value name="VALUE">
<block type="bitbybit.color.getRedParam" id="Gc{Sp2f{M^l]?)LzvW.#">
<value name="Color">
<block type="variables_get" id="o?1{Z@FSwPOqrqO{G)aS">
<field name="VAR" id="UK(L!q~TWdgmwppaGFgJ">col</field>
</block>
</value>
<value name="From">
<block type="math_number" id="(gfY;V9gwx9ZAGa;p4!5">
<field name="NUM">0</field>
</block>
</value>
<value name="To">
<block type="math_number" id="Mv#O4d+VM(AKM1?wk9Z}">
<field name="NUM">255</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="h@T_s[PC+|pGZHu-.d8#">
<field name="VAR" id="[A%[aEC9$`E104(-S|IM">paramGreen</field>
<value name="VALUE">
<block type="bitbybit.color.getGreenParam" id="(`Fw7]dLo@7?PwM[NqBC">
<value name="Color">
<block type="variables_get" id="6KucMVLt#U6HB%`#c~S4">
<field name="VAR" id="UK(L!q~TWdgmwppaGFgJ">col</field>
</block>
</value>
<value name="From">
<block type="math_number" id="PP3V^G/V^3y^5(lhsl_R">
<field name="NUM">0</field>
</block>
</value>
<value name="To">
<block type="math_number" id="Bms+m*KP9m9]|vH,kg*o">
<field name="NUM">255</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="x:.k-n;6cmE,~|]Y[K|j">
<field name="VAR" id="eG3t-c4*NYaJU}v5et,S">paramBlue</field>
<value name="VALUE">
<block type="bitbybit.color.getBlueParam" id="y)hTrGr=aoMS;GSPQ+I:">
<value name="Color">
<block type="variables_get" id="v,x`)7,@]vN)oO%$/~|W">
<field name="VAR" id="UK(L!q~TWdgmwppaGFgJ">col</field>
</block>
</value>
<value name="From">
<block type="math_number" id="#S~@}vCq/MXmzR$$p$H4">
<field name="NUM">0</field>
</block>
</value>
<value name="To">
<block type="math_number" id="8sl$,KHDtZ$?l$2?6%hG">
<field name="NUM">255</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="OqY[sytAh}e~gSXa]jcP">
<field name="VAR" id="K:y1c6jlaY*=L|MaV8bo">currentStepRed</field>
<value name="VALUE">
<block type="procedures_callreturn" id="Nl.FkdC!^^px|1mfak2h">
<mutation name="changeColorStep2">
<arg name="color">
</arg>
<arg name="step">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="r]lNSge3iwu#}Cz$1GrI">
<field name="VAR" id="/~kF%jZ2x~SUPd(p#o2X">paramRed</field>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id="zw!dg*vYs0gsJOYc7t)[">
<field name="VAR" id="K:y1c6jlaY*=L|MaV8bo">currentStepRed</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="li{y:(|z[92xo6QpRZ^B">
<field name="VAR" id="mh79`67vZsm8K#s6=IY*">currentStepGreen</field>
<value name="VALUE">
<block type="procedures_callreturn" id="BPAlD*C$-#CPdxx90^v%">
<mutation name="changeColorStep2">
<arg name="color">
</arg>
<arg name="step">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="0bZW=W,=fAnP#5H#GSVz">
<field name="VAR" id="[A%[aEC9$`E104(-S|IM">paramGreen</field>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id=")KoDzv^,f!3*0mxnFNTF">
<field name="VAR" id="mh79`67vZsm8K#s6=IY*">currentStepGreen</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="Pk3]X[DXO#`0pt[qF`+P">
<field name="VAR" id="@!UD|yHEg+0heRGw{Ds4">currentStepBlue</field>
<value name="VALUE">
<block type="procedures_callreturn" id="|*wez|Ql6~sSr0Rk1tY}">
<mutation name="changeColorStep2">
<arg name="color">
</arg>
<arg name="step">
</arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="jUWH2h4Idn0FPRrkO[:D">
<field name="VAR" id="eG3t-c4*NYaJU}v5et,S">paramBlue</field>
</block>
</value>
<value name="ARG1">
<block type="variables_get" id="t`YyIC~l}^iQN?n);F:o">
<field name="VAR" id="@!UD|yHEg+0heRGw{Ds4">currentStepBlue</field>
</block>
</value>
</block>
</value>
<next>
<block type="math_change" id="!I$%!{Le:FJN@vE^6+mt">
<field name="VAR" id="/~kF%jZ2x~SUPd(p#o2X">paramRed</field>
<value name="DELTA">
<shadow type="math_number" id="qaRXwwwezX;|BdyTeq*p">
<field name="NUM">1</field>
</shadow>
<block type="variables_get" id="cqe7duX)A9d#+I~a#tQs">
<field name="VAR" id="K:y1c6jlaY*=L|MaV8bo">currentStepRed</field>
</block>
</value>
<next>
<block type="math_change" id="0_k1g1gUKh(Eg^v4848/">
<field name="VAR" id="[A%[aEC9$`E104(-S|IM">paramGreen</field>
<value name="DELTA">
<shadow type="math_number" id="qaRXwwwezX;|BdyTeq*p">
<field name="NUM">1</field>
</shadow>
<block type="variables_get" id="Ji|oSIO/{(A(w:Abjo(6">
<field name="VAR" id="mh79`67vZsm8K#s6=IY*">currentStepGreen</field>
</block>
</value>
<next>
<block type="math_change" id="9L}$sPhY`_xH6Su@s$EC">
<field name="VAR" id="eG3t-c4*NYaJU}v5et,S">paramBlue</field>
<value name="DELTA">
<shadow type="math_number" id="qaRXwwwezX;|BdyTeq*p">
<field name="NUM">1</field>
</shadow>
<block type="variables_get" id="}g:Vyru}rTL2*f^A8/_?">
<field name="VAR" id="@!UD|yHEg+0heRGw{Ds4">currentStepBlue</field>
</block>
</value>
<next>
<block type="bitbybit.babylon.material.pbrMetallicRoughness.setBaseColor" id="BkToWAJ`xtPIjNohuuIX">
<value name="Material">
<block type="variables_get" id="n.MZiQ,3;F|O+YMD,7`^">
<field name="VAR" id="%uKB,,xI$./.OU%nhs.P">material1</field>
</block>
</value>
<value name="BaseColor">
<block type="bitbybit.color.rgbToHex" id="|ilt?M{}c*}7As^ai%|a">
<value name="R">
<block type="variables_get" id="DP/_T}xoSm8K$3zIXarO">
<field name="VAR" id="K:y1c6jlaY*=L|MaV8bo">currentStepRed</field>
</block>
</value>
<value name="G">
<block type="variables_get" id="t)RV;vmq8o36vG2ct;h7">
<field name="VAR" id="mh79`67vZsm8K#s6=IY*">currentStepGreen</field>
</block>
</value>
<value name="B">
<block type="variables_get" id="ZV1)$~`?13`V{g/(u~QA">
<field name="VAR" id="@!UD|yHEg+0heRGw{Ds4">currentStepBlue</field>
</block>
</value>
</block>
</value>
<next>
<block type="lists_setIndex" id="]}t/;l%^TdIYz%y~ms:P">
<mutation at="true">
</mutation>
<field name="MODE">SET</field>
<field name="WHERE">FROM_START</field>
<value name="LIST">
<block type="variables_get" id="jHJ=1{)3N%mN47I2yc/~">
<field name="VAR" id="ivnkCI*u/S9K9Ooevs1!">stepsRed</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="ewTh7Mo}#dE_sO{F?r*p">
<field name="VAR" id="e;,o$-jw12wK(T@4uiV|">n</field>
</block>
</value>
<value name="TO">
<block type="variables_get" id="Zmcz.qv@?sakT$|$6L[x">
<field name="VAR" id="K:y1c6jlaY*=L|MaV8bo">currentStepRed</field>
</block>
</value>
<next>
<block type="lists_setIndex" id="FM!ij[bAZ{Pf@$Iy:2JT">
<mutation at="true">
</mutation>
<field name="MODE">SET</field>
<field name="WHERE">FROM_START</field>
<value name="LIST">
<block type="variables_get" id="E}`PnK+DG;Z1V8aB6afe">
<field name="VAR" id="sdT+7Aer/l!(Jz@C0gtw">stepsGreen</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="mXRS7a2aj_odpWT._:br">
<field name="VAR" id="e;,o$-jw12wK(T@4uiV|">n</field>
</block>
</value>
<value name="TO">
<block type="variables_get" id="g`EqMbnty|#:~s`EFzk~">
<field name="VAR" id="mh79`67vZsm8K#s6=IY*">currentStepGreen</field>
</block>
</value>
<next>
<block type="lists_setIndex" id="|ej0QcP`Z|0bybte.^x9">
<mutation at="true">
</mutation>
<field name="MODE">SET</field>
<field name="WHERE">FROM_START</field>
<value name="LIST">
<block type="variables_get" id="_-;}H8R)~*=F#mC4r_)J">
<field name="VAR" id="6vGSfMzT0j4nj.z_X`G$">stepsBlue</field>
</block>
</value>
<value name="AT">
<block type="variables_get" id="`9N*cpqMb]NO}tgIHuf[">
<field name="VAR" id="e;,o$-jw12wK(T@4uiV|">n</field>
</block>
</value>
<value name="TO">
<block type="variables_get" id="Hiev#`HNL^s0-{C+5)G0">
<field name="VAR" id="@!UD|yHEg+0heRGw{Ds4">currentStepBlue</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
<block type="procedures_defreturn" id="zdfCyKykusK=CWeGx?30" x="1589" y="1675">
<field name="NAME">getRandomDirStep</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="controls_if" id="H*IJN7;GDhz-~LBy%Ju^">
<mutation else="1">
</mutation>
<value name="IF0">
<block type="logic_compare" id="g8MP;DZ#=E0kbQY+;D%l">
<field name="OP">GT</field>
<value name="A">
<block type="bitbybit.math.random" id="y)=J`W+dg$l?r+lDt_fh">
</block>
</value>
<value name="B">
<block type="math_number" id="*B5DST$Kt(##V%Y?|pCJ">
<field name="NUM">0.5</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="JaRTPVuUs2oD.:13QPKI">
<field name="VAR" id="=h(?B%B+q.48XLF|sqx;">dir</field>
<value name="VALUE">
<block type="math_number" id="5C]!#3~*Cqm0q63}hhyR">
<field name="NUM">1</field>
</block>
</value>
</block>
</statement>
<statement name="ELSE">
<block type="variables_set" id=".|M-4!G5=!-i=_pyuZ[3">
<field name="VAR" id="=h(?B%B+q.48XLF|sqx;">dir</field>
<value name="VALUE">
<block type="math_number" id=":j|IcV7/c@!;@nb*|yo3">
<field name="NUM">-1</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id="j-.XtI(Kyvj@2-Y~c;|p">
<field name="VAR" id="=h(?B%B+q.48XLF|sqx;">dir</field>
</block>
</value>
</block>
<block type="procedures_defreturn" id="3yXDD1wd8umHyOJKt!{y" x="1580" y="2102">
<mutation>
<arg name="color" varid="^sx`fCpePa^g]:0SMrfk">
</arg>
<arg name="step" varid="*hxGnz8(@k,!3ln?HSAY">
</arg>
</mutation>
<field name="NAME">changeColorStep2</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
<statement name="STACK">
<block type="controls_if" id="L+R[;w|]4`lEtP%2Pb5B">
<value name="IF0">
<block type="logic_compare" id="@D03~P//s#%p;dH*yv4t">
<field name="OP">GTE</field>
<value name="A">
<block type="variables_get" id="B5Q#Q^w$DL^=je?c}pTl">
<field name="VAR" id="^sx`fCpePa^g]:0SMrfk">color</field>
</block>
</value>
<value name="B">
<block type="math_number" id="}V6*,Si}`nm-tG(^e|Hd">
<field name="NUM">255</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id=",|zs=_%/}{p^G5J~IaY9">
<field name="VAR" id="*hxGnz8(@k,!3ln?HSAY">step</field>
<value name="VALUE">
<block type="math_arithmetic" id="Tt8jq%aI*%N{EBwlcJGp">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="NuhV975SA.sH[+9VxxI9">
<field name="VAR" id="*hxGnz8(@k,!3ln?HSAY">step</field>
</block>
</value>
<value name="B">
<block type="math_number" id="1i=IAW2yJUGDA:-PO6!P">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="M/Gf29BosxB%hcmt5z55">
<value name="IF0">
<block type="logic_compare" id="!fgow#ct-+sDO#d8/%$l">
<field name="OP">LTE</field>
<value name="A">
<block type="variables_get" id="U0TPCu]bIdnbb3~x**p~">
<field name="VAR" id="^sx`fCpePa^g]:0SMrfk">color</field>
</block>
</value>
<value name="B">
<block type="math_number" id="~]|SkGW60-XN#AuO$/fY">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="variables_set" id="]WLK|L)|)2Q[`]Q,I15Q">
<field name="VAR" id="*hxGnz8(@k,!3ln?HSAY">step</field>
<value name="VALUE">
<block type="math_arithmetic" id="|;[*HQyLg:n-e@(1JGV(">
<field name="OP">MULTIPLY</field>
<value name="A">
<block type="variables_get" id="dm_6nCT{^^`fa_YL#7pS">
<field name="VAR" id="*hxGnz8(@k,!3ln?HSAY">step</field>
</block>
</value>
<value name="B">
<block type="math_number" id="G@b_Y?/kv`BvcgAMjtQF">
<field name="NUM">-1</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
<value name="RETURN">
<block type="variables_get" id="9ClJAN0PudQ1}!uhpWE/">
<field name="VAR" id="*hxGnz8(@k,!3ln?HSAY">step</field>
</block>
</value>
</block>
</xml>
Editor plans for 3D development, API keys for server-side CAD algorithms
Cloud storage, private projects & 3D algorithms for Bitbybit editors
Run CAD algorithms on managed cloud servers from your own backend applications
Custom software development, dedicated servers & CAD automation at scale.