Script: 3DGS Shadows in Gaussian Splat

3DGS Shadows in Gaussian Splat picture
Type
Blockly logo indicatorblockly
Date Created
Jan 7, 2026, 5:01:53 PM
Last Edit Date
Apr 5, 2026, 7:31:40 PM

Project Information

Define Points of Interest on Gaussian Splatting 3D Scan

View Full Project

Script Code

<xml xmlns="https://developers.google.com/blockly/xml">
 <variables>
  <variable id="~5)c3P3:@=fRAWO-zs$}">gaussianMesh</variable>
  <variable id="Rfh^ZAU.zxzr!TJR,KFP">directionaLight</variable>
  <variable id="jH$JX8Ti}1.lQ,uJq}H?">directionalLight2</variable>
  <variable id="7=s$~5A[M_T3lv:.nO_*">sphereFirst</variable>
  <variable id=".YtJ*`U;#j/HjnTWtK0-">cylinderMeshLarge</variable>
  <variable id="ggXlYV?5X@QV|4!cDcnL">sphereSecond</variable>
  <variable id="#(!1|nmz{GG|G(k,shKy">cylinderMeshSmall</variable>
  <variable id="W#{H2DTN}D}8KXoyqy;Y">sphereMaterial</variable>
  <variable id="1K4rXvd$N^X2#l=hRgOi">materialLarge</variable>
  <variable id="%T_4Y:z+af:7Rk#]%^mE">materialSmall</variable>
  <variable id="6QF.w7dreVp:^8e*:dDG">worldNode</variable>
  <variable id="/VA@iJ}:K-;jsTZk~d:^">worldNode2</variable>
  <variable id="p3=8ZU;Qj%pW!)8SbMo;">timeElapsedFromPreviousFrame</variable>
 </variables>
 <block type="bitbybit.babylon.scene.adjustActiveArcRotateCamera" id="(On2.Q(z_Oa=Pa`ScR_L" x="-308" y="-522">
  <value name="Position">
   <block type="bitbybit.point.pointXYZ" id=";1C8QmQQ0z-{-@YEx^1l">
    <value name="X">
     <block type="math_number" id="0sV}},k!9[aU@83#duUQ">
      <field name="NUM">6</field>
     </block>
    </value>
    <value name="Y">
     <block type="math_number" id="jT+p6wEt}DF#{6E/$]Gj">
      <field name="NUM">6</field>
     </block>
    </value>
    <value name="Z">
     <block type="math_number" id=".aieIi{Gc%xegEf1OUp/">
      <field name="NUM">6</field>
     </block>
    </value>
   </block>
  </value>
  <value name="LookAt">
   <block type="bitbybit.point.pointXYZ" id="]U6Mh/TZV*j$-:?*ypI*">
    <value name="X">
     <block type="math_number" id="1Vl#4vZX~R!Pah`~I*8D">
      <field name="NUM">0</field>
     </block>
    </value>
    <value name="Y">
     <block type="math_number" id="-E1WT0Hw`!Wv2*YVD`%+">
      <field name="NUM">2</field>
     </block>
    </value>
    <value name="Z">
     <block type="math_number" id="}O}M^)%ZsF56D?;%M8IS">
      <field name="NUM">0</field>
     </block>
    </value>
   </block>
  </value>
  <value name="LowerBetaLimit">
   <block type="math_number" id="{qta4F:C.Y2SwPYT~;qi">
    <field name="NUM">1</field>
   </block>
  </value>
  <value name="UpperBetaLimit">
   <block type="math_number" id="tjA9hgw;~;$:IRH^yIMR">
    <field name="NUM">179</field>
   </block>
  </value>
  <value name="AngularSensibilityX">
   <block type="math_number" id="_U0rIoab(fH;bYn@SdqR">
    <field name="NUM">1000</field>
   </block>
  </value>
  <value name="AngularSensibilityY">
   <block type="math_number" id="0b5dc?7S}0~UP?uTQP7S">
    <field name="NUM">1000</field>
   </block>
  </value>
  <value name="MaxZ">
   <block type="math_number" id="%#EXi/x/1TibJIIj#qgw">
    <field name="NUM">1000</field>
   </block>
  </value>
  <value name="PanningSensibility">
   <block type="math_number" id="d._*}%4Bg_NIqJg)pMa%">
    <field name="NUM">1000</field>
   </block>
  </value>
  <value name="WheelPrecision">
   <block type="math_number" id="Az5ai;*7ogHd}$Dgf9kA">
    <field name="NUM">3</field>
   </block>
  </value>
  <next>
   <block type="variables_set" id="Otd|l[VfGfQ0#usil*c3">
    <field name="VAR" id="~5)c3P3:@=fRAWO-zs$}">gaussianMesh</field>
    <value name="VALUE">
     <block type="base_time_await_return" id="Mt).:4N|YpT_6HsLrGe/">
      <value name="Promise">
       <block type="bitbybit.babylon.gaussianSplatting.create" id="TC~C4wp6V)v.5spU`mnK">
        <value name="Url">
         <block type="text" id="9wUD5pBr6mNCZYM0^8ue">
          <field name="TEXT">https://bitbybit.dev/files/users%2FyVqNAFXmieX0iAkdP6wAz5BJ4X82%2Fprojects%2Ft9kyqb73QLW2s7fCasUI%2Fassets%2Fflora.splat?alt=media&amp;token=1510987c-b5d8-4509-9cd8-21e98ab5f964</field>
         </block>
        </value>
       </block>
      </value>
     </block>
    </value>
    <next>
     <block type="bitbybit.babylon.mesh.setLocalScale" id="480(qN=T-=r^*#h_b}7q">
      <value name="BabylonMesh">
       <block type="variables_get" id="x9Carh4fIXf#m-uhCC/+">
        <field name="VAR" id="~5)c3P3:@=fRAWO-zs$}">gaussianMesh</field>
       </block>
      </value>
      <value name="Scale">
       <block type="math_number" id="-y`(_GiHmC{./YR/L(;(">
        <field name="NUM">10</field>
       </block>
      </value>
      <next>
       <block type="bitbybit.babylon.mesh.setPosition" id="#FkG3dnXqJ=j*x)ia43g">
        <value name="BabylonMesh">
         <block type="variables_get" id="U~^=RLn~(Nfa{3Gy~k8%">
          <field name="VAR" id="~5)c3P3:@=fRAWO-zs$}">gaussianMesh</field>
         </block>
        </value>
        <value name="Position">
         <block type="bitbybit.point.pointXYZ" id="PZh}Q38x~O0wJ9cmp;AY">
          <value name="X">
           <block type="math_number" id="YQ9(Iu.;iT:,xc`3dp|;">
            <field name="NUM">0</field>
           </block>
          </value>
          <value name="Y">
           <block type="math_number" id="ORE.YSm(.Qo?9_PdJE2b">
            <field name="NUM">0.4</field>
           </block>
          </value>
          <value name="Z">
           <block type="math_number" id="pKy1ZJUNm[@Q-Yr6/u+=">
            <field name="NUM">0</field>
           </block>
          </value>
         </block>
        </value>
        <next>
         <block type="variables_set" id="E-[^oBd2KGoxD*`!:6k-">
          <field name="VAR" id=".YtJ*`U;#j/HjnTWtK0-">cylinderMeshLarge</field>
          <value name="VALUE">
           <block type="bitbybit.babylon.meshBuilder.createCylinder" id="`?CqWa2|@C:b]Z8E@Svl">
            <value name="Height">
             <block type="math_number" id="FUBrOP+Y)fS7-q56jB`D">
              <field name="NUM">0.2</field>
             </block>
            </value>
            <value name="DiameterTop">
             <block type="math_number" id="@aZ{Q^FIK=T)XKR?+vP;">
              <field name="NUM">15</field>
             </block>
            </value>
            <value name="DiameterBottom">
             <block type="math_number" id=";PFkJ|j6~]q[Tq/NJr,W">
              <field name="NUM">15</field>
             </block>
            </value>
            <value name="Tessellation">
             <block type="math_number" id=";4M-U]E`;vMh;%dOXU6N">
              <field name="NUM">64</field>
             </block>
            </value>
            <value name="Subdivisions">
             <block type="math_number" id="(5PzHAXu)ZhVmI3l.v%v">
              <field name="NUM">1</field>
             </block>
            </value>
            <value name="SideOrientation">
             <block type="bitbybit.babylon.mesh.enums.sideOrientationEnum" id="8=IOyma]Di[r*_s@wdmt">
              <field name="bitbybit.babylon.mesh.enums.sideOrientationEnum">'frontside'</field>
             </block>
            </value>
            <value name="EnableShadows">
             <block type="logic_boolean" id="}FOTD+o,Aju*]GVBb5XX">
              <field name="BOOL">TRUE</field>
             </block>
            </value>
           </block>
          </value>
          <next>
           <block type="variables_set" id="v6dDL}KKLP=z49;0i%;H">
            <field name="VAR" id="#(!1|nmz{GG|G(k,shKy">cylinderMeshSmall</field>
            <value name="VALUE">
             <block type="bitbybit.babylon.meshBuilder.createCylinder" id="cp36[`2}RBgM6J077V4#">
              <value name="Height">
               <block type="math_number" id="o)KvyWP`+1OB^MZBy~w(">
                <field name="NUM">0.4</field>
               </block>
              </value>
              <value name="DiameterTop">
               <block type="math_number" id="WG`w^-kr@$_SRViAIx6*">
                <field name="NUM">2</field>
               </block>
              </value>
              <value name="DiameterBottom">
               <block type="math_number" id="agw1^eR34$Z/0]hW5c],">
                <field name="NUM">2</field>
               </block>
              </value>
              <value name="Tessellation">
               <block type="math_number" id="dd|[TW{=/ZFLjFb6.Fdl">
                <field name="NUM">64</field>
               </block>
              </value>
              <value name="Subdivisions">
               <block type="math_number" id="7wqy8,K?@UC!fabwN-1*">
                <field name="NUM">1</field>
               </block>
              </value>
              <value name="SideOrientation">
               <block type="bitbybit.babylon.mesh.enums.sideOrientationEnum" id=",bOgKgbD0vHf~6A:SMvX">
                <field name="bitbybit.babylon.mesh.enums.sideOrientationEnum">'frontside'</field>
               </block>
              </value>
              <value name="EnableShadows">
               <block type="logic_boolean" id="Ds-2_;a;4P*q+s%+w?`C">
                <field name="BOOL">TRUE</field>
               </block>
              </value>
             </block>
            </value>
            <next>
             <block type="variables_set" id="3S,jAuE3%|iw/L.!Ece;">
              <field name="VAR" id="1K4rXvd$N^X2#l=hRgOi">materialLarge</field>
              <value name="VALUE">
               <block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="a{9QZY)M8%q#U$mkDUte">
                <value name="Name">
                 <block type="text" id="i/UW7URQ4D=~FOk4^8J0">
                  <field name="TEXT">large</field>
                 </block>
                </value>
                <value name="BaseColor">
                 <block type="text" id="~YijqEuVNikziy33TwVQ">
                  <field name="TEXT">#242424</field>
                 </block>
                </value>
                <value name="EmissiveColor">
                 <block type="colour_picker" id="8u`bxntbQQqI%6p/c=B%">
                  <field name="COLOUR">#000000</field>
                 </block>
                </value>
                <value name="Metallic">
                 <block type="math_number" id="u9gk|ZAtinRjM7hn(9A}">
                  <field name="NUM">0.3</field>
                 </block>
                </value>
                <value name="Roughness">
                 <block type="math_number" id="uIAh091?4Ga-@g:W}qC1">
                  <field name="NUM">0.6</field>
                 </block>
                </value>
                <value name="Alpha">
                 <block type="math_number" id="st:$U}uPpF`A=}ZEJS:7">
                  <field name="NUM">1</field>
                 </block>
                </value>
                <value name="BackFaceCulling">
                 <block type="logic_boolean" id="D`$:q~~L;C=v;7khEj!7">
                  <field name="BOOL">FALSE</field>
                 </block>
                </value>
                <value name="ZOffset">
                 <block type="math_number" id="%RvK=FS=-(BNtI`6)JAM">
                  <field name="NUM">0</field>
                 </block>
                </value>
               </block>
              </value>
              <next>
               <block type="variables_set" id="~(yMc+{F#Np_m4Iwv@HY">
                <field name="VAR" id="%T_4Y:z+af:7Rk#]%^mE">materialSmall</field>
                <value name="VALUE">
                 <block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="91Eo0*3~|G^l0A+Avk1(">
                  <value name="Name">
                   <block type="text" id="M]XiqbTjjPfob]2*E_~D">
                    <field name="TEXT">small</field>
                   </block>
                  </value>
                  <value name="BaseColor">
                   <block type="text" id="AVE/U_Z*l2UYy7h;!g3-">
                    <field name="TEXT">#000000</field>
                   </block>
                  </value>
                  <value name="EmissiveColor">
                   <block type="colour_picker" id="5d~Kip5cw?-?l]{|dxf.">
                    <field name="COLOUR">#000000</field>
                   </block>
                  </value>
                  <value name="Metallic">
                   <block type="math_number" id="xWBvqL,$BsHF+94fCftO">
                    <field name="NUM">0.3</field>
                   </block>
                  </value>
                  <value name="Roughness">
                   <block type="math_number" id="X2E1-aeJ56$wNAw^S8e+">
                    <field name="NUM">0.6</field>
                   </block>
                  </value>
                  <value name="Alpha">
                   <block type="math_number" id="Y^*[0)`j?(96v(2z^#Rf">
                    <field name="NUM">1</field>
                   </block>
                  </value>
                  <value name="BackFaceCulling">
                   <block type="logic_boolean" id="MCR3,O[Vg]y39YI96IoD">
                    <field name="BOOL">FALSE</field>
                   </block>
                  </value>
                  <value name="ZOffset">
                   <block type="math_number" id="AV-bX!R[LiIjs/Dv-d}v">
                    <field name="NUM">0</field>
                   </block>
                  </value>
                 </block>
                </value>
                <next>
                 <block type="bitbybit.babylon.mesh.setPosition" id="3%H)R6[Gp8_y*=C30]2G">
                  <value name="BabylonMesh">
                   <block type="variables_get" id="RXBGLxnqz$CNX}p0=3l/">
                    <field name="VAR" id="#(!1|nmz{GG|G(k,shKy">cylinderMeshSmall</field>
                   </block>
                  </value>
                  <value name="Position">
                   <block type="bitbybit.point.pointXYZ" id="Rpt*|3midirEqvWd`hG[">
                    <value name="X">
                     <block type="math_number" id="r)iIG2VL]f_pCks=k8.6">
                      <field name="NUM">0</field>
                     </block>
                    </value>
                    <value name="Y">
                     <block type="math_number" id="hX2~v~%7l/qpSBUo~]3G">
                      <field name="NUM">0.2</field>
                     </block>
                    </value>
                    <value name="Z">
                     <block type="math_number" id="XxKO3#E5S.%flF?cv$j~">
                      <field name="NUM">0</field>
                     </block>
                    </value>
                   </block>
                  </value>
                  <next>
                   <block type="bitbybit.babylon.mesh.setMaterial" id="0fy1ywuf9.%lRDgGNb[y">
                    <value name="BabylonMesh">
                     <block type="variables_get" id=".wn|~Zfoo%7k}qMEWUq~">
                      <field name="VAR" id=".YtJ*`U;#j/HjnTWtK0-">cylinderMeshLarge</field>
                     </block>
                    </value>
                    <value name="Material">
                     <block type="variables_get" id="$D:4ce8=o@f9.N,=4IVW">
                      <field name="VAR" id="1K4rXvd$N^X2#l=hRgOi">materialLarge</field>
                     </block>
                    </value>
                    <value name="IncludeChildren">
                     <block type="logic_boolean" id="Z{By%l.p`L~9YT-Y}HHQ">
                      <field name="BOOL">FALSE</field>
                     </block>
                    </value>
                    <next>
                     <block type="bitbybit.babylon.mesh.setMaterial" id="wGt,wudGtM`dZSkTzeh.">
                      <value name="BabylonMesh">
                       <block type="variables_get" id="cR@q9d4doWD,V@kZW5%O">
                        <field name="VAR" id="#(!1|nmz{GG|G(k,shKy">cylinderMeshSmall</field>
                       </block>
                      </value>
                      <value name="Material">
                       <block type="variables_get" id="FI/~~zQuz2{Ir2;Ae5_n">
                        <field name="VAR" id="%T_4Y:z+af:7Rk#]%^mE">materialSmall</field>
                       </block>
                      </value>
                      <value name="IncludeChildren">
                       <block type="logic_boolean" id="R!~=/9L^*)M5p2+#d6a?">
                        <field name="BOOL">FALSE</field>
                       </block>
                      </value>
                      <next>
                       <block type="procedures_callnoreturn" id="siY=(t#(ED#lLc9e08/,">
                        <mutation name="animate">
                         <arg name="gaussianMesh">
                         </arg>
                        </mutation>
                        <value name="ARG0">
                         <block type="variables_get" id="FlTESf;Ns;6]=iXatdZ^">
                          <field name="VAR" id="~5)c3P3:@=fRAWO-zs$}">gaussianMesh</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>
 <block type="procedures_defnoreturn" id="Bh*Hpl~-{JhNxUkb|Y@2" x="865" y="-561">
  <mutation>
   <arg name="gaussianMesh" varid="~5)c3P3:@=fRAWO-zs$}">
   </arg>
  </mutation>
  <field name="NAME">animate</field>
  <comment pinned="false" h="80" w="160">Describe this function...</comment>
  <statement name="STACK">
   <block type="variables_set" id="}ozXC/d~9s)q$s0]gmkN">
    <field name="VAR" id="Rfh^ZAU.zxzr!TJR,KFP">directionaLight</field>
    <value name="VALUE">
     <block type="bitbybit.babylon.scene.drawDirectionalLight" id="@n!=W,IBYDS|pA(i_EQY">
      <value name="Direction">
       <block type="bitbybit.vector.vectorXYZ" id="#(Or[o@wN7E)+nxF5st:">
        <value name="X">
         <block type="math_number" id="$Om6auVT-6f`w`b(KJ9,">
          <field name="NUM">-10</field>
         </block>
        </value>
        <value name="Y">
         <block type="math_number" id="%XDX|X}erb7)wg)bd#.X">
          <field name="NUM">-8</field>
         </block>
        </value>
        <value name="Z">
         <block type="math_number" id="hFTpZ$9.4V$bbU8(Nzuq">
          <field name="NUM">-10</field>
         </block>
        </value>
       </block>
      </value>
      <value name="Intensity">
       <block type="math_number" id="`q2;delG42Z9_OV}?Sf~">
        <field name="NUM">3</field>
       </block>
      </value>
      <value name="Diffuse">
       <block type="colour_picker" id="/@__#JjZj;k}CzG2M;sV">
        <field name="COLOUR">#3366ff</field>
       </block>
      </value>
      <value name="Specular">
       <block type="colour_picker" id="bVwA=v@I7io$T-omR;|9">
        <field name="COLOUR">#ffffff</field>
       </block>
      </value>
      <value name="ShadowGeneratorMapSize">
       <block type="math_number" id="t,BKNa{B(*lrzOTpdHQ!">
        <field name="NUM">5000</field>
       </block>
      </value>
      <value name="EnableShadows">
       <block type="logic_boolean" id="M||y(!m,ZVFt%;oDmuVS">
        <field name="BOOL">TRUE</field>
       </block>
      </value>
      <value name="ShadowDarkness">
       <block type="math_number" id="(l~6Tbu0Fl/#|5d@dBx:">
        <field name="NUM">0</field>
       </block>
      </value>
      <value name="ShadowUsePercentageCloserFiltering">
       <block type="logic_boolean" id="iRlom+0pXBH4FQ[q~~zW">
        <field name="BOOL">TRUE</field>
       </block>
      </value>
      <value name="TransparencyShadow">
       <block type="logic_boolean" id="]W!w70Jqnef_C*u:e`]e">
        <field name="BOOL">TRUE</field>
       </block>
      </value>
      <value name="ShadowContactHardeningLightSizeUVRatio">
       <block type="math_number" id="ANTyGnqAX+(iAdh:S$i5">
        <field name="NUM">0.2</field>
       </block>
      </value>
      <value name="ShadowBias">
       <block type="math_number" id="fG2vbni%nnJBz)=pv4Hs">
        <field name="NUM">0.0005</field>
       </block>
      </value>
      <value name="ShadowNormalBias">
       <block type="math_number" id="jR$+~$jMvj*Q@n0[n-H0">
        <field name="NUM">0.002</field>
       </block>
      </value>
      <value name="ShadowMaxZ">
       <block type="math_number" id="8QlYCUE:,?D3QFY;bu{$">
        <field name="NUM">50</field>
       </block>
      </value>
      <value name="ShadowMinZ">
       <block type="math_number" id="U?iI|D?YW)Ig~$Sv7S^2">
        <field name="NUM">0.01</field>
       </block>
      </value>
      <value name="ShadowRefreshRate">
       <block type="math_number" id="wk}4AaR5?S/TS)x_HuR0">
        <field name="NUM">1</field>
       </block>
      </value>
     </block>
    </value>
    <next>
     <block type="variables_set" id=".F6Y[j:vZ4i3rgZ$!YB4">
      <field name="VAR" id="jH$JX8Ti}1.lQ,uJq}H?">directionalLight2</field>
      <value name="VALUE">
       <block type="bitbybit.babylon.scene.drawDirectionalLight" id="SmEQCnwv5KmHb|~vMQ]i">
        <value name="Direction">
         <block type="bitbybit.vector.vectorXYZ" id="weOM)jj8n4DHrK7YGWIg">
          <value name="X">
           <block type="math_number" id="9pC3M[^Rhf:hJht;l?sI">
            <field name="NUM">10</field>
           </block>
          </value>
          <value name="Y">
           <block type="math_number" id="X~QX5_}I/-GVcHCdO_?~">
            <field name="NUM">-10</field>
           </block>
          </value>
          <value name="Z">
           <block type="math_number" id="b|e.+o6#lSyW_[gnNzVe">
            <field name="NUM">10</field>
           </block>
          </value>
         </block>
        </value>
        <value name="Intensity">
         <block type="math_number" id="*s9KBByd[F^d`o6+6c/V">
          <field name="NUM">3</field>
         </block>
        </value>
        <value name="Diffuse">
         <block type="colour_picker" id=":JNHtF/^+n]D)l}X0c(=">
          <field name="COLOUR">#ff0000</field>
         </block>
        </value>
        <value name="Specular">
         <block type="colour_picker" id="wRe5GUV~(-+Yn;84tMSr">
          <field name="COLOUR">#ffffff</field>
         </block>
        </value>
        <value name="ShadowGeneratorMapSize">
         <block type="math_number" id="aO_yAuSs@m[Tz^7Vg+Se">
          <field name="NUM">5000</field>
         </block>
        </value>
        <value name="EnableShadows">
         <block type="logic_boolean" id="ldO2dF#!MfxgK})tDF[t">
          <field name="BOOL">TRUE</field>
         </block>
        </value>
        <value name="ShadowDarkness">
         <block type="math_number" id="%YsCe}tlHPJjx[Cx0}=*">
          <field name="NUM">0</field>
         </block>
        </value>
        <value name="ShadowUsePercentageCloserFiltering">
         <block type="logic_boolean" id="T-XSCA#)k;JXP~{WZ:Q=">
          <field name="BOOL">TRUE</field>
         </block>
        </value>
        <value name="TransparencyShadow">
         <block type="logic_boolean" id="MVOb%%H3*]Y[2Am*A,!y">
          <field name="BOOL">TRUE</field>
         </block>
        </value>
        <value name="ShadowContactHardeningLightSizeUVRatio">
         <block type="math_number" id="M)jbq9k1qwfn`*(Y=e^v">
          <field name="NUM">0.2</field>
         </block>
        </value>
        <value name="ShadowBias">
         <block type="math_number" id="6d~f~@1j1Yp{wO?N~o,m">
          <field name="NUM">0.0005</field>
         </block>
        </value>
        <value name="ShadowNormalBias">
         <block type="math_number" id="6*MWX0|l109R125(r^B+">
          <field name="NUM">0.002</field>
         </block>
        </value>
        <value name="ShadowMaxZ">
         <block type="math_number" id="guN5*NTr/cAr5sXE$P7t">
          <field name="NUM">50</field>
         </block>
        </value>
        <value name="ShadowMinZ">
         <block type="math_number" id="+4In;(~R{8lJ[~Mm57Ya">
          <field name="NUM">0.01</field>
         </block>
        </value>
        <value name="ShadowRefreshRate">
         <block type="math_number" id="E?=FhfwO;?t^n(SLlO%4">
          <field name="NUM">1</field>
         </block>
        </value>
       </block>
      </value>
      <next>
       <block type="variables_set" id="zou4`V4Gia]KsjiLGr(]">
        <field name="VAR" id="7=s$~5A[M_T3lv:.nO_*">sphereFirst</field>
        <value name="VALUE">
         <block type="bitbybit.babylon.meshBuilder.createSphere" id="D1}:v9Nm.h0Bb=g-V)Bx">
          <value name="Diameter">
           <block type="math_number" id="KI,;.WXX445U1=3H`pRE">
            <field name="NUM">0.1</field>
           </block>
          </value>
          <value name="Segments">
           <block type="math_number" id="SZwD$(1I/t2jg):AvGu6">
            <field name="NUM">32</field>
           </block>
          </value>
          <value name="SideOrientation">
           <block type="bitbybit.babylon.mesh.enums.sideOrientationEnum" id="m#]BZDa66,sYyi}QZf^i">
            <field name="bitbybit.babylon.mesh.enums.sideOrientationEnum">'frontside'</field>
           </block>
          </value>
          <value name="EnableShadows">
           <block type="logic_boolean" id="w=UO)LIkrR}HZ{`ooQ.f">
            <field name="BOOL">FALSE</field>
           </block>
          </value>
         </block>
        </value>
        <next>
         <block type="variables_set" id="bC:EYY863uKD@A{[`P)(">
          <field name="VAR" id="ggXlYV?5X@QV|4!cDcnL">sphereSecond</field>
          <value name="VALUE">
           <block type="bitbybit.babylon.meshBuilder.createSphere" id="#*w1Jt8pgnsie*.aAVe0">
            <value name="Diameter">
             <block type="math_number" id="2S3(NGxJ0S)]qA}|(dxK">
              <field name="NUM">0.1</field>
             </block>
            </value>
            <value name="Segments">
             <block type="math_number" id="[8/FY#a?2b7*Nz@(flxv">
              <field name="NUM">32</field>
             </block>
            </value>
            <value name="SideOrientation">
             <block type="bitbybit.babylon.mesh.enums.sideOrientationEnum" id="+=sz__]#2j:0-lm5qVug">
              <field name="bitbybit.babylon.mesh.enums.sideOrientationEnum">'frontside'</field>
             </block>
            </value>
            <value name="EnableShadows">
             <block type="logic_boolean" id="Ll)#vg;Pa+*]4L|46NRJ">
              <field name="BOOL">FALSE</field>
             </block>
            </value>
           </block>
          </value>
          <next>
           <block type="variables_set" id="ZV;?[#Ar@3)wu7U$.#(Z">
            <field name="VAR" id="W#{H2DTN}D}8KXoyqy;Y">sphereMaterial</field>
            <value name="VALUE">
             <block type="bitbybit.babylon.material.pbrMetallicRoughness.create" id="$Tx!Esq9IO2]nA*yfpk=">
              <value name="Name">
               <block type="text" id="):,1pIe`cWx$/{N4Xp[0">
                <field name="TEXT">sphere material</field>
               </block>
              </value>
              <value name="BaseColor">
               <block type="colour_picker" id="AOi(zXsqq/$^pPhmO:mh">
                <field name="COLOUR">#ffffff</field>
               </block>
              </value>
              <value name="EmissiveColor">
               <block type="colour_picker" id="Iv*t:MCRFRza%lU5i}:-">
                <field name="COLOUR">#ffffff</field>
               </block>
              </value>
              <value name="Metallic">
               <block type="math_number" id="_OKro7$kg}X!y]$h}Qf?">
                <field name="NUM">0.6</field>
               </block>
              </value>
              <value name="Roughness">
               <block type="math_number" id="g(/O!#UxxQGyWi#jzEVf">
                <field name="NUM">0.5</field>
               </block>
              </value>
              <value name="Alpha">
               <block type="math_number" id="OJWK!ZCp;~]WNlTV#+fB">
                <field name="NUM">1</field>
               </block>
              </value>
              <value name="BackFaceCulling">
               <block type="logic_boolean" id="b+t%)+T:]b@pV!]fTQQT">
                <field name="BOOL">FALSE</field>
               </block>
              </value>
              <value name="ZOffset">
               <block type="math_number" id="ORb::MZ$t;;pDh9(#lLg">
                <field name="NUM">0</field>
               </block>
              </value>
             </block>
            </value>
            <next>
             <block type="bitbybit.babylon.mesh.setMaterial" id="WCQeo!#[_Ei}=irM.s,d">
              <value name="BabylonMesh">
               <block type="variables_get" id="RC+,-@tN!MLxf*:$n$jA">
                <field name="VAR" id="7=s$~5A[M_T3lv:.nO_*">sphereFirst</field>
               </block>
              </value>
              <value name="Material">
               <block type="variables_get" id="QaR8WQN2VWFZkeav{q8l">
                <field name="VAR" id="W#{H2DTN}D}8KXoyqy;Y">sphereMaterial</field>
               </block>
              </value>
              <value name="IncludeChildren">
               <block type="logic_boolean" id="qnvij/ee@E*xN*9Jy5v?">
                <field name="BOOL">FALSE</field>
               </block>
              </value>
              <next>
               <block type="bitbybit.babylon.mesh.setMaterial" id="2{i40k}me]XqLI$BMN@b">
                <value name="BabylonMesh">
                 <block type="variables_get" id="REj;[gY,0KTLSn$/7%$=">
                  <field name="VAR" id="ggXlYV?5X@QV|4!cDcnL">sphereSecond</field>
                 </block>
                </value>
                <value name="Material">
                 <block type="variables_get" id=",b%y@GVv}![;=$,n2Dij">
                  <field name="VAR" id="W#{H2DTN}D}8KXoyqy;Y">sphereMaterial</field>
                 </block>
                </value>
                <value name="IncludeChildren">
                 <block type="logic_boolean" id="RAB,c5uQ_o#60z](()GZ">
                  <field name="BOOL">FALSE</field>
                 </block>
                </value>
                <next>
                 <block type="bitbybit.babylon.mesh.setPosition" id="S|kG#sa?,zZ;H(Rz^a=U">
                  <value name="BabylonMesh">
                   <block type="variables_get" id="Vz;iH|N3IbV+V2XaX(iM">
                    <field name="VAR" id="7=s$~5A[M_T3lv:.nO_*">sphereFirst</field>
                   </block>
                  </value>
                  <value name="Position">
                   <block type="bitbybit.vector.vectorXYZ" id="V5UH(H,D{4@^sO/?I~la">
                    <value name="X">
                     <block type="math_number" id="@4:a12F1fqbI!2PS!)hP">
                      <field name="NUM">3</field>
                     </block>
                    </value>
                    <value name="Y">
                     <block type="math_number" id="yg1X$AQ4OveYW{m-p;HR">
                      <field name="NUM">4</field>
                     </block>
                    </value>
                    <value name="Z">
                     <block type="math_number" id="%#r9=ILOd0HD9{~wQ)tW">
                      <field name="NUM">3</field>
                     </block>
                    </value>
                   </block>
                  </value>
                  <next>
                   <block type="bitbybit.babylon.mesh.setPosition" id="7f^Iec!@w)zPlF!@,rW;">
                    <value name="BabylonMesh">
                     <block type="variables_get" id="Q_Rm$^P7JGwpOZ)rLhK#">
                      <field name="VAR" id="ggXlYV?5X@QV|4!cDcnL">sphereSecond</field>
                     </block>
                    </value>
                    <value name="Position">
                     <block type="bitbybit.vector.vectorXYZ" id="/-S{Ok@jMc2bfOaEAF!.">
                      <value name="X">
                       <block type="math_number" id="LuTN_elO:2vIlwl9j_K1">
                        <field name="NUM">-3</field>
                       </block>
                      </value>
                      <value name="Y">
                       <block type="math_number" id="znXB8yJ%t;/]2u7cTv(?">
                        <field name="NUM">5</field>
                       </block>
                      </value>
                      <value name="Z">
                       <block type="math_number" id="tnhibcBII}4?r!MzV/ZE">
                        <field name="NUM">-3</field>
                       </block>
                      </value>
                     </block>
                    </value>
                    <next>
                     <block type="variables_set" id="K/H,nVw--ukH+vI?1tP0">
                      <field name="VAR" id="6QF.w7dreVp:^8e*:dDG">worldNode</field>
                      <value name="VALUE">
                       <block type="bitbybit.babylon.node.createWorldNode" id="T.?oOJ`4a.!eG2Kad$Pb">
                       </block>
                      </value>
                      <next>
                       <block type="variables_set" id=")pP}u1(mKFMM8CXUOxlG">
                        <field name="VAR" id="/VA@iJ}:K-;jsTZk~d:^">worldNode2</field>
                        <value name="VALUE">
                         <block type="bitbybit.babylon.node.createWorldNode" id=".,c8Kwmwmo3LX7wkgk0W">
                         </block>
                        </value>
                        <next>
                         <block type="bitbybit.babylon.mesh.setParent" id="lY7Dce[$sDyz.).0RL-w">
                          <value name="BabylonMesh">
                           <block type="variables_get" id="RVbhXuz%B)pT/gIitTPg">
                            <field name="VAR" id="Rfh^ZAU.zxzr!TJR,KFP">directionaLight</field>
                           </block>
                          </value>
                          <value name="ParentMesh">
                           <block type="variables_get" id="Je6m^wG%zur0|?]z[MaX">
                            <field name="VAR" id="6QF.w7dreVp:^8e*:dDG">worldNode</field>
                           </block>
                          </value>
                          <next>
                           <block type="bitbybit.babylon.mesh.setParent" id="~=8i7k/_*S#~fZwXn*r4">
                            <value name="BabylonMesh">
                             <block type="variables_get" id="@e=B96^AcY)V/*at=ZwD">
                              <field name="VAR" id="7=s$~5A[M_T3lv:.nO_*">sphereFirst</field>
                             </block>
                            </value>
                            <value name="ParentMesh">
                             <block type="variables_get" id="vE2yVK}c_S[9;=Q5.a$x">
                              <field name="VAR" id="6QF.w7dreVp:^8e*:dDG">worldNode</field>
                             </block>
                            </value>
                            <next>
                             <block type="bitbybit.babylon.mesh.setParent" id="g!,u-LP]$Lh6Mc1[g-Wb">
                              <value name="BabylonMesh">
                               <block type="variables_get" id="!7^)he%`ZFVf.iC1L8Jt">
                                <field name="VAR" id="jH$JX8Ti}1.lQ,uJq}H?">directionalLight2</field>
                               </block>
                              </value>
                              <value name="ParentMesh">
                               <block type="variables_get" id="Agv[9Pi,[[r5JoG{}(kj">
                                <field name="VAR" id="/VA@iJ}:K-;jsTZk~d:^">worldNode2</field>
                               </block>
                              </value>
                              <next>
                               <block type="bitbybit.babylon.mesh.setParent" id="Mhh@MH0QkhJwiZ[EDBWE">
                                <value name="BabylonMesh">
                                 <block type="variables_get" id=".y7Ji;hRhK):@6-C{QpV">
                                  <field name="VAR" id="ggXlYV?5X@QV|4!cDcnL">sphereSecond</field>
                                 </block>
                                </value>
                                <value name="ParentMesh">
                                 <block type="variables_get" id="2PArDz?(b5E}#%kE]}TK">
                                  <field name="VAR" id="/VA@iJ}:K-;jsTZk~d:^">worldNode2</field>
                                 </block>
                                </value>
                                <next>
                                 <block type="base_time_update" id="~%zqC+zMr07R5|UK!x:c">
                                  <field name="TimePassedMs" id="p3=8ZU;Qj%pW!)8SbMo;">timeElapsedFromPreviousFrame</field>
                                  <statement name="Update">
                                   <block type="bitbybit.babylon.mesh.yaw" id="q?[`4D=(QBi|iE3EJ4SI">
                                    <value name="BabylonMesh">
                                     <block type="variables_get" id="idd3cEv$F@YC56,Rw0|]">
                                      <field name="VAR" id="6QF.w7dreVp:^8e*:dDG">worldNode</field>
                                     </block>
                                    </value>
                                    <value name="Rotate">
                                     <block type="math_number" id="6sOQ5DGUqeO3kJXcK{xF">
                                      <field name="NUM">0.3</field>
                                     </block>
                                    </value>
                                    <next>
                                     <block type="bitbybit.babylon.mesh.yaw" id="izzGQ^!w9s%Fy=6zK^fm">
                                      <value name="BabylonMesh">
                                       <block type="variables_get" id="`=cKkQ1QIG@69z*qXkW1">
                                        <field name="VAR" id="/VA@iJ}:K-;jsTZk~d:^">worldNode2</field>
                                       </block>
                                      </value>
                                      <value name="Rotate">
                                       <block type="math_number" id="z=qWCh0pW-Eqaw=0zhSq">
                                        <field name="NUM">0.15</field>
                                       </block>
                                      </value>
                                      <next>
                                       <block type="bitbybit.babylon.mesh.yaw" id="2|R4S+|lgyq_6x:OGUM]">
                                        <value name="BabylonMesh">
                                         <block type="variables_get" id="HlvarEO(MN$f~]STSQ/s">
                                          <field name="VAR" id="~5)c3P3:@=fRAWO-zs$}">gaussianMesh</field>
                                         </block>
                                        </value>
                                        <value name="Rotate">
                                         <block type="math_number" id="#ps@+_jiLYVk$Lc]:kKt">
                                          <field name="NUM">-0.05</field>
                                         </block>
                                        </value>
                                       </block>
                                      </next>
                                     </block>
                                    </next>
                                   </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>
      </next>
     </block>
    </next>
   </block>
  </statement>
 </block>
</xml>