I was playing with the AlgorithmSwitchShader on my leaves (that I generate point by point to have an accurate description of the leaf and I noticed that the differentiation of the shader over the 2 sides doesn’t work properly.
Let me explain.
Simple case with one light source and one Parallelogram.
I have a rectangle facing a source of light. I have 2 shader: top shader that just absorb and bottom shader that just reflect. If I put the top shader on the side facing the light I get aborbance 100. On the contary, if I put the bottom shader on the side facing the light I get 0. And that is how it should be
Simple case with one light source and one Leaf.
I tryed to do the same with a leaf generated point by point (see code below) and actually swapping the shader doesn’t give much of a difference. So my interpretation is that some of the triangles are considered up and other down so my leaf has pathces of top and bottom shader on both sides.
How to fix this? it is quite urgent.
Also: a feature that I already mentioned and that in this case would have been very useful for debugging is to introduce the possibility of giving differential shaders non just for the absorbance calculation but also for the visualization and/or rendering: at the moment when you render a leaf it can be just monocolour on both side and that is inconvenient
static void First_leaves(float LW_ratio) {
ArrayList data = new ArrayList();
// Populate the list with the values from the arrays
for (int i = 0; i <= 30; i++) {
float[] lnorm = anyArray(0, get_lnorm_curvature(baseSpacing, i,LW_ratio), get_z_axis(baseSpacing, i,LW_ratio));
data.add(lnorm);
}
lnorm1 = (float[]) data.get( 0 ) ;
lnorm2 = (float[]) data.get( 1 ) ;
lnorm3 = (float[]) data.get( 2 ) ;
lnorm4 = (float[]) data.get( 3 ) ;
lnorm5 = (float[]) data.get( 4 ) ;
lnorm6 = (float[]) data.get( 5 ) ;
lnorm7 = (float[]) data.get( 6 ) ;
lnorm8 = (float[]) data.get( 7 ) ;
lnorm9 = (float[]) data.get( 8 ) ;
lnorm10 = (float[]) data.get( 9 ) ;
lnorm11 = (float[]) data.get( 10 ) ;
lnorm12 = (float[]) data.get( 11 ) ;
lnorm13 = (float[]) data.get( 12 ) ;
lnorm14 = (float[]) data.get( 13 ) ;
lnorm15 = (float[]) data.get( 14 ) ;
lnorm16 = (float[]) data.get( 15 ) ;
lnorm17 = (float[]) data.get( 16 ) ;
lnorm18 = (float[]) data.get( 17 ) ;
lnorm19 = (float[]) data.get( 18 ) ;
lnorm20 = (float[]) data.get( 19 ) ;
lnorm21 = (float[]) data.get( 20 ) ;
lnorm22 = (float[]) data.get( 21 ) ;
lnorm23 = (float[]) data.get( 22 ) ;
lnorm24 = (float[]) data.get( 23 ) ;
lnorm25 = (float[]) data.get( 24 ) ;
lnorm26 = (float[]) data.get( 25 ) ;
lnorm27 = (float[]) data.get( 26 ) ;
lnorm28 = (float[]) data.get( 27 ) ;
lnorm29 = (float[]) data.get( 28 ) ;
lnorm30 = (float[]) data.get( 29 ) ;
lnorm31 = (float[]) data.get( 30 ) ;
ArrayList data_left = new ArrayList();
float position_x_temporary;
float position_y_temporary;
// Populate the list with the values from the arrays
for (int i = 0; i <= 30; i++) {
float xDist = get_xj(baseSpacing* i); // your irregular X
float z = getCurvedZ(xDist,LW_ratio); // apply same arc curvature
float x = getCurvedX(xDist,LW_ratio); // apply same arc curvature
// fixed_value might be your Y or something else:
float[] p = anyArray(get_yj(i*baseSpacing+baseSpacing/2)/LW_ratio, x, z);
data_left.add(p);
}
p1 = (float[]) data_left.get( 0 ) ;
p2 = (float[]) data_left.get( 1 ) ;
p3 = (float[]) data_left.get( 2 ) ;
p4 = (float[]) data_left.get( 3 ) ;
p5 = (float[]) data_left.get( 4 ) ;
p6 = (float[]) data_left.get( 5 ) ;
p7 = (float[]) data_left.get( 6 ) ;
p8 = (float[]) data_left.get( 7 ) ;
p9 = (float[]) data_left.get( 8 ) ;
p10 = (float[]) data_left.get( 9 ) ;
p11 = (float[]) data_left.get( 10 ) ;
p12 = (float[]) data_left.get( 11 ) ;
p13 = (float[]) data_left.get( 12 ) ;
p14 = (float[]) data_left.get( 13 ) ;
p15 = (float[]) data_left.get( 14 ) ;
p16 = (float[]) data_left.get( 15 ) ;
p17 = (float[]) data_left.get( 16 ) ;
p18 = (float[]) data_left.get( 17 ) ;
p19 = (float[]) data_left.get( 18 ) ;
p20 = (float[]) data_left.get( 19 ) ;
p21 = (float[]) data_left.get( 20 ) ;
p22 = (float[]) data_left.get( 21 ) ;
p23 = (float[]) data_left.get( 22 ) ;
p24 = (float[]) data_left.get( 23 ) ;
p25 = (float[]) data_left.get( 24 ) ;
p26 = (float[]) data_left.get( 25 ) ;
p27 = (float[]) data_left.get( 26 ) ;
p28 = (float[]) data_left.get( 27 ) ;
p29 = (float[]) data_left.get( 28 ) ;
p30 = (float[]) data_left.get( 29 ) ;
p31 = (float[]) data_left.get( 30 ) ;
ArrayList data_right = new ArrayList();
position_x_temporary=0;
position_y_temporary=0;
for (int i = 0; i <= 30; i++) {
float xDist = get_xj(baseSpacing* i); // your irregular X
float z = getCurvedZ(xDist,LW_ratio); // apply same arc curvature
float x = getCurvedX(xDist,LW_ratio); // apply same arc curvature
// fixed_value might be your Y or something else:
float[] p = anyArray(-get_yj(i*baseSpacing+baseSpacing/2)/LW_ratio, x, z);
data_right.add(p);
}
p1R=(float[])data_right.get(0);
p2R=(float[])data_right.get(1);
p3R=(float[])data_right.get(2);
p4R=(float[])data_right.get(3);
p5R=(float[])data_right.get(4);
p6R=(float[])data_right.get(5);
p7R=(float[])data_right.get(6);
p8R=(float[])data_right.get(7);
p9R=(float[])data_right.get(8);
p10R=(float[])data_right.get(9);
p11R=(float[])data_right.get(10);
p12R=(float[])data_right.get(11);
p13R=(float[])data_right.get(12);
p14R=(float[])data_right.get(13);
p15R=(float[])data_right.get(14);
p16R=(float[])data_right.get(15);
p17R=(float[])data_right.get(16);
p18R=(float[])data_right.get(17);
p19R=(float[])data_right.get(18);
p20R=(float[])data_right.get(19);
p21R=(float[])data_right.get(20);
p22R=(float[])data_right.get(21);
p23R=(float[])data_right.get(22);
p24R=(float[])data_right.get(23);
p25R=(float[])data_right.get(24);
p26R=(float[])data_right.get(25);
p27R=(float[])data_right.get(26);
p28R=(float[])data_right.get(27);
p29R=(float[])data_right.get(28);
p30R=(float[])data_right.get(29);
p31R=(float[])data_right.get(30);
//vertexDataLeaflet = new FloatList(anyArray(pi[0],pi[1],pi[2],p0[0],p0[1],p0[2],p1[0],p1[1],p1[2],p2[0],p2[1],p2[2],p3[0],p3[1],p3[2],p4[0],p4[1],p4[2],p5[0],p5[1],p5[2],p6[0],p6[1],p6[2],p7[0],p7[1],p7[2],p8[0],p8[1],p8[2],p9[0],p9[1],p9[2],p10[0],p10[1],p10[2],p11[0],p11[1],p11[2],p12[0],p12[1],p12[2],p13[0],p13[1],p13[2],p14[0],p14[1],p14[2],p15[0],p15[1],p15[2],p16[0],p16[1],p16[2],p17[0],p17[1],p17[2],p18[0],p18[1],p18[2],p19[0],p19[1],p19[2],p20[0],p20[1],p20[2],p21[0],p21[1],p21[2],p22[0],p22[1],p22[2],p23[0],p23[1],p23[2],p24[0],p24[1],p24[2],p25[0],p25[1],p25[2],p26[0],p26[1],p26[2],p27[0],p27[1],p27[2],p28[0],p28[1],p28[2],p29[0],p29[1],p29[2],p30[0],p30[1],p30[2],p31[0],p31[1],p31[2],p32[0],p32[1],p32[2],p33[0],p33[1],p33[2],p34[0],p34[1],p34[2],p35[0],p35[1],p35[2],p36[0],p36[1],p36[2],p37[0],p37[1],p37[2],p38[0],p38[1],p38[2],p39[0],p39[1],p39[2],p40[0],p40[1],p40[2],p41[0],p41[1],p41[2],p42[0],p42[1],p42[2],p43[0],p43[1],p43[2],p44[0],p44[1],p44[2],p45[0],p45[1],p45[2],p46[0],p46[1],p46[2],p47[0],p47[1],p47[2],p48[0],p48[1],p48[2],p49[0],p49[1],p49[2],p50[0],p50[1],p50[2],p51[0],p51[1],p51[2],p52[0],p52[1],p52[2],p53[0],p53[1],p53[2],p54[0],p54[1],p54[2],p55[0],p55[1],p55[2]));
vertexDataLeaflet = new FloatList(anyArray(
lnorm1[0],lnorm1[1],lnorm1[2],p1[0],p1[1],p1[2],lnorm2[0],lnorm2[1],lnorm2[2],p1[0],p1[1],p1[2],lnorm2[0],lnorm2[1],lnorm2[2],p2[0],p2[1],p2[2],
lnorm2[0],lnorm2[1],lnorm2[2],p2[0],p2[1],p2[2],lnorm3[0],lnorm3[1],lnorm3[2],p2[0],p2[1],p2[2],lnorm3[0],lnorm3[1],lnorm3[2],p3[0],p3[1],p3[2],
lnorm3[0],lnorm3[1],lnorm3[2],p3[0],p3[1],p3[2],lnorm4[0],lnorm4[1],lnorm4[2],p3[0],p3[1],p3[2],lnorm4[0],lnorm4[1],lnorm4[2],p4[0],p4[1],p4[2],
lnorm4[0],lnorm4[1],lnorm4[2],p4[0],p4[1],p4[2],lnorm5[0],lnorm5[1],lnorm5[2],p4[0],p4[1],p4[2],lnorm5[0],lnorm5[1],lnorm5[2],p5[0],p5[1],p5[2],
lnorm5[0],lnorm5[1],lnorm5[2],p5[0],p5[1],p5[2],lnorm6[0],lnorm6[1],lnorm6[2],p5[0],p5[1],p5[2],lnorm6[0],lnorm6[1],lnorm6[2],p6[0],p6[1],p6[2],
lnorm6[0],lnorm6[1],lnorm6[2],p6[0],p6[1],p6[2],lnorm7[0],lnorm7[1],lnorm7[2],p6[0],p6[1],p6[2],lnorm7[0],lnorm7[1],lnorm7[2],p7[0],p7[1],p7[2],
lnorm7[0],lnorm7[1],lnorm7[2],p7[0],p7[1],p7[2],lnorm8[0],lnorm8[1],lnorm8[2],p7[0],p7[1],p7[2],lnorm8[0],lnorm8[1],lnorm8[2],p8[0],p8[1],p8[2],
lnorm8[0],lnorm8[1],lnorm8[2],p8[0],p8[1],p8[2],lnorm9[0],lnorm9[1],lnorm9[2],p8[0],p8[1],p8[2],lnorm9[0],lnorm9[1],lnorm9[2],p9[0],p9[1],p9[2],
lnorm9[0],lnorm9[1],lnorm9[2],p9[0],p9[1],p9[2],lnorm10[0],lnorm10[1],lnorm10[2],p9[0],p9[1],p9[2],lnorm10[0],lnorm10[1],lnorm10[2],p10[0],p10[1],p10[2],
lnorm10[0],lnorm10[1],lnorm10[2],p10[0],p10[1],p10[2],lnorm11[0],lnorm11[1],lnorm11[2],p10[0],p10[1],p10[2],lnorm11[0],lnorm11[1],lnorm11[2],p11[0],p11[1],p11[2],
lnorm11[0],lnorm11[1],lnorm11[2],p11[0],p11[1],p11[2],lnorm12[0],lnorm12[1],lnorm12[2],p11[0],p11[1],p11[2],lnorm12[0],lnorm12[1],lnorm12[2],p12[0],p12[1],p12[2],
lnorm12[0],lnorm12[1],lnorm12[2],p12[0],p12[1],p12[2],lnorm13[0],lnorm13[1],lnorm13[2],p12[0],p12[1],p12[2],lnorm13[0],lnorm13[1],lnorm13[2],p13[0],p13[1],p13[2],
lnorm13[0],lnorm13[1],lnorm13[2],p13[0],p13[1],p13[2],lnorm14[0],lnorm14[1],lnorm14[2],p13[0],p13[1],p13[2],lnorm14[0],lnorm14[1],lnorm14[2],p14[0],p14[1],p14[2],
lnorm14[0],lnorm14[1],lnorm14[2],p14[0],p14[1],p14[2],lnorm15[0],lnorm15[1],lnorm15[2],p14[0],p14[1],p14[2],lnorm15[0],lnorm15[1],lnorm15[2],p15[0],p15[1],p15[2],
lnorm15[0],lnorm15[1],lnorm15[2],p15[0],p15[1],p15[2],lnorm16[0],lnorm16[1],lnorm16[2],p15[0],p15[1],p15[2],lnorm16[0],lnorm16[1],lnorm16[2],p16[0],p16[1],p16[2],
lnorm16[0],lnorm16[1],lnorm16[2],p16[0],p16[1],p16[2],lnorm17[0],lnorm17[1],lnorm17[2],p16[0],p16[1],p16[2],lnorm17[0],lnorm17[1],lnorm17[2],p17[0],p17[1],p17[2],
lnorm17[0],lnorm17[1],lnorm17[2],p17[0],p17[1],p17[2],lnorm18[0],lnorm18[1],lnorm18[2],p17[0],p17[1],p17[2],lnorm18[0],lnorm18[1],lnorm18[2],p18[0],p18[1],p18[2],
lnorm18[0],lnorm18[1],lnorm18[2],p18[0],p18[1],p18[2],lnorm19[0],lnorm19[1],lnorm19[2],p18[0],p18[1],p18[2],lnorm19[0],lnorm19[1],lnorm19[2],p19[0],p19[1],p19[2],
lnorm19[0],lnorm19[1],lnorm19[2],p19[0],p19[1],p19[2],lnorm20[0],lnorm20[1],lnorm20[2],p19[0],p19[1],p19[2],lnorm20[0],lnorm20[1],lnorm20[2],p20[0],p20[1],p20[2],
lnorm20[0],lnorm20[1],lnorm20[2],p20[0],p20[1],p20[2],lnorm21[0],lnorm21[1],lnorm21[2],p20[0],p20[1],p20[2],lnorm21[0],lnorm21[1],lnorm21[2],p21[0],p21[1],p21[2],
lnorm21[0],lnorm21[1],lnorm21[2],p21[0],p21[1],p21[2],lnorm22[0],lnorm22[1],lnorm22[2],p21[0],p21[1],p21[2],lnorm22[0],lnorm22[1],lnorm22[2],p22[0],p22[1],p22[2],
lnorm22[0],lnorm22[1],lnorm22[2],p22[0],p22[1],p22[2],lnorm23[0],lnorm23[1],lnorm23[2],p22[0],p22[1],p22[2],lnorm23[0],lnorm23[1],lnorm23[2],p23[0],p23[1],p23[2],
lnorm23[0],lnorm23[1],lnorm23[2],p23[0],p23[1],p23[2],lnorm24[0],lnorm24[1],lnorm24[2],p23[0],p23[1],p23[2],lnorm24[0],lnorm24[1],lnorm24[2],p24[0],p24[1],p24[2],
lnorm24[0],lnorm24[1],lnorm24[2],p24[0],p24[1],p24[2],lnorm25[0],lnorm25[1],lnorm25[2],p24[0],p24[1],p24[2],lnorm25[0],lnorm25[1],lnorm25[2],p25[0],p25[1],p25[2],
lnorm25[0],lnorm25[1],lnorm25[2],p25[0],p25[1],p25[2],lnorm26[0],lnorm26[1],lnorm26[2],p25[0],p25[1],p25[2],lnorm26[0],lnorm26[1],lnorm26[2],p26[0],p26[1],p26[2],
lnorm26[0],lnorm26[1],lnorm26[2],p26[0],p26[1],p26[2],lnorm27[0],lnorm27[1],lnorm27[2],p26[0],p26[1],p26[2],lnorm27[0],lnorm27[1],lnorm27[2],p27[0],p27[1],p27[2],
lnorm27[0],lnorm27[1],lnorm27[2],p27[0],p27[1],p27[2],lnorm28[0],lnorm28[1],lnorm28[2],p27[0],p27[1],p27[2],lnorm28[0],lnorm28[1],lnorm28[2],p28[0],p28[1],p28[2],
lnorm28[0],lnorm28[1],lnorm28[2],p28[0],p28[1],p28[2],lnorm29[0],lnorm29[1],lnorm29[2],p28[0],p28[1],p28[2],lnorm29[0],lnorm29[1],lnorm29[2],p29[0],p29[1],p29[2],
lnorm29[0],lnorm29[1],lnorm29[2],p29[0],p29[1],p29[2],lnorm30[0],lnorm30[1],lnorm30[2],p29[0],p29[1],p29[2],lnorm30[0],lnorm30[1],lnorm30[2],p30[0],p30[1],p30[2],
lnorm30[0],lnorm30[1],lnorm30[2],p30[0],p30[1],p30[2],lnorm31[0],lnorm31[1],lnorm31[2],p30[0],p30[1],p30[2],lnorm31[0],lnorm31[1],lnorm31[2],p31[0],p31[1],p31[2],
lnorm1[0],lnorm1[1],lnorm1[2],p1R[0],p1R[1],p1R[2],lnorm2[0],lnorm2[1],lnorm2[2],p1R[0],p1R[1],p1R[2],lnorm2[0],lnorm2[1],lnorm2[2],p2R[0],p2R[1],p2R[2],
lnorm2[0],lnorm2[1],lnorm2[2],p2R[0],p2R[1],p2R[2],lnorm3[0],lnorm3[1],lnorm3[2],p2R[0],p2R[1],p2R[2],lnorm3[0],lnorm3[1],lnorm3[2],p3R[0],p3R[1],p3R[2],
lnorm3[0],lnorm3[1],lnorm3[2],p3R[0],p3R[1],p3R[2],lnorm4[0],lnorm4[1],lnorm4[2],p3R[0],p3R[1],p3R[2],lnorm4[0],lnorm4[1],lnorm4[2],p4R[0],p4R[1],p4R[2],
lnorm4[0],lnorm4[1],lnorm4[2],p4R[0],p4R[1],p4R[2],lnorm5[0],lnorm5[1],lnorm5[2],p4R[0],p4R[1],p4R[2],lnorm5[0],lnorm5[1],lnorm5[2],p5R[0],p5R[1],p5R[2],
lnorm5[0],lnorm5[1],lnorm5[2],p5R[0],p5R[1],p5R[2],lnorm6[0],lnorm6[1],lnorm6[2],p5R[0],p5R[1],p5R[2],lnorm6[0],lnorm6[1],lnorm6[2],p6R[0],p6R[1],p6R[2],
lnorm6[0],lnorm6[1],lnorm6[2],p6R[0],p6R[1],p6R[2],lnorm7[0],lnorm7[1],lnorm7[2],p6R[0],p6R[1],p6R[2],lnorm7[0],lnorm7[1],lnorm7[2],p7R[0],p7R[1],p7R[2],
lnorm7[0],lnorm7[1],lnorm7[2],p7R[0],p7R[1],p7R[2],lnorm8[0],lnorm8[1],lnorm8[2],p7R[0],p7R[1],p7R[2],lnorm8[0],lnorm8[1],lnorm8[2],p8R[0],p8R[1],p8R[2],
lnorm8[0],lnorm8[1],lnorm8[2],p8R[0],p8R[1],p8R[2],lnorm9[0],lnorm9[1],lnorm9[2],p8R[0],p8R[1],p8R[2],lnorm9[0],lnorm9[1],lnorm9[2],p9R[0],p9R[1],p9R[2],
lnorm9[0],lnorm9[1],lnorm9[2],p9R[0],p9R[1],p9R[2],lnorm10[0],lnorm10[1],lnorm10[2],p9R[0],p9R[1],p9R[2],lnorm10[0],lnorm10[1],lnorm10[2],p10R[0],p10R[1],p10R[2],
lnorm10[0],lnorm10[1],lnorm10[2],p10R[0],p10R[1],p10R[2],lnorm11[0],lnorm11[1],lnorm11[2],p10R[0],p10R[1],p10R[2],lnorm11[0],lnorm11[1],lnorm11[2],p11R[0],p11R[1],p11R[2],
lnorm11[0],lnorm11[1],lnorm11[2],p11R[0],p11R[1],p11R[2],lnorm12[0],lnorm12[1],lnorm12[2],p11R[0],p11R[1],p11R[2],lnorm12[0],lnorm12[1],lnorm12[2],p12R[0],p12R[1],p12R[2],
lnorm12[0],lnorm12[1],lnorm12[2],p12R[0],p12R[1],p12R[2],lnorm13[0],lnorm13[1],lnorm13[2],p12R[0],p12R[1],p12R[2],lnorm13[0],lnorm13[1],lnorm13[2],p13R[0],p13R[1],p13R[2],
lnorm13[0],lnorm13[1],lnorm13[2],p13R[0],p13R[1],p13R[2],lnorm14[0],lnorm14[1],lnorm14[2],p13R[0],p13R[1],p13R[2],lnorm14[0],lnorm14[1],lnorm14[2],p14R[0],p14R[1],p14R[2],
lnorm14[0],lnorm14[1],lnorm14[2],p14R[0],p14R[1],p14R[2],lnorm15[0],lnorm15[1],lnorm15[2],p14R[0],p14R[1],p14R[2],lnorm15[0],lnorm15[1],lnorm15[2],p15R[0],p15R[1],p15R[2],
lnorm15[0],lnorm15[1],lnorm15[2],p15R[0],p15R[1],p15R[2],lnorm16[0],lnorm16[1],lnorm16[2],p15R[0],p15R[1],p15R[2],lnorm16[0],lnorm16[1],lnorm16[2],p16R[0],p16R[1],p16R[2],
lnorm16[0],lnorm16[1],lnorm16[2],p16R[0],p16R[1],p16R[2],lnorm17[0],lnorm17[1],lnorm17[2],p16R[0],p16R[1],p16R[2],lnorm17[0],lnorm17[1],lnorm17[2],p17R[0],p17R[1],p17R[2],
lnorm17[0],lnorm17[1],lnorm17[2],p17R[0],p17R[1],p17R[2],lnorm18[0],lnorm18[1],lnorm18[2],p17R[0],p17R[1],p17R[2],lnorm18[0],lnorm18[1],lnorm18[2],p18R[0],p18R[1],p18R[2],
lnorm18[0],lnorm18[1],lnorm18[2],p18R[0],p18R[1],p18R[2],lnorm19[0],lnorm19[1],lnorm19[2],p18R[0],p18R[1],p18R[2],lnorm19[0],lnorm19[1],lnorm19[2],p19R[0],p19R[1],p19R[2],
lnorm19[0],lnorm19[1],lnorm19[2],p19R[0],p19R[1],p19R[2],lnorm20[0],lnorm20[1],lnorm20[2],p19R[0],p19R[1],p19R[2],lnorm20[0],lnorm20[1],lnorm20[2],p20R[0],p20R[1],p20R[2],
lnorm20[0],lnorm20[1],lnorm20[2],p20R[0],p20R[1],p20R[2],lnorm21[0],lnorm21[1],lnorm21[2],p20R[0],p20R[1],p20R[2],lnorm21[0],lnorm21[1],lnorm21[2],p21R[0],p21R[1],p21R[2],
lnorm21[0],lnorm21[1],lnorm21[2],p21R[0],p21R[1],p21R[2],lnorm22[0],lnorm22[1],lnorm22[2],p21R[0],p21R[1],p21R[2],lnorm22[0],lnorm22[1],lnorm22[2],p22R[0],p22R[1],p22R[2],
lnorm22[0],lnorm22[1],lnorm22[2],p22R[0],p22R[1],p22R[2],lnorm23[0],lnorm23[1],lnorm23[2],p22R[0],p22R[1],p22R[2],lnorm23[0],lnorm23[1],lnorm23[2],p23R[0],p23R[1],p23R[2],
lnorm23[0],lnorm23[1],lnorm23[2],p23R[0],p23R[1],p23R[2],lnorm24[0],lnorm24[1],lnorm24[2],p23R[0],p23R[1],p23R[2],lnorm24[0],lnorm24[1],lnorm24[2],p24R[0],p24R[1],p24R[2],
lnorm24[0],lnorm24[1],lnorm24[2],p24R[0],p24R[1],p24R[2],lnorm25[0],lnorm25[1],lnorm25[2],p24R[0],p24R[1],p24R[2],lnorm25[0],lnorm25[1],lnorm25[2],p25R[0],p25R[1],p25R[2],
lnorm25[0],lnorm25[1],lnorm25[2],p25R[0],p25R[1],p25R[2],lnorm26[0],lnorm26[1],lnorm26[2],p25R[0],p25R[1],p25R[2],lnorm26[0],lnorm26[1],lnorm26[2],p26R[0],p26R[1],p26R[2],
lnorm26[0],lnorm26[1],lnorm26[2],p26R[0],p26R[1],p26R[2],lnorm27[0],lnorm27[1],lnorm27[2],p26R[0],p26R[1],p26R[2],lnorm27[0],lnorm27[1],lnorm27[2],p27R[0],p27R[1],p27R[2],
lnorm27[0],lnorm27[1],lnorm27[2],p27R[0],p27R[1],p27R[2],lnorm28[0],lnorm28[1],lnorm28[2],p27R[0],p27R[1],p27R[2],lnorm28[0],lnorm28[1],lnorm28[2],p28R[0],p28R[1],p28R[2],
lnorm28[0],lnorm28[1],lnorm28[2],p28R[0],p28R[1],p28R[2],lnorm29[0],lnorm29[1],lnorm29[2],p28R[0],p28R[1],p28R[2],lnorm29[0],lnorm29[1],lnorm29[2],p29R[0],p29R[1],p29R[2],
lnorm29[0],lnorm29[1],lnorm29[2],p29R[0],p29R[1],p29R[2],lnorm30[0],lnorm30[1],lnorm30[2],p29R[0],p29R[1],p29R[2],lnorm30[0],lnorm30[1],lnorm30[2],p30R[0],p30R[1],p30R[2],
lnorm30[0],lnorm30[1],lnorm30[2],p30R[0],p30R[1],p30R[2],lnorm31[0],lnorm31[1],lnorm31[2],p30R[0],p30R[1],p30R[2],lnorm31[0],lnorm31[1],lnorm31[2],p31R[0],p31R[1],p31R[2]
));
firt_leaves_mesh = getMesh(vertexDataLeaflet);
}```