Shader from triangulated leaf - kind of a big issue

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);

}```

Hi Michele,

I had the same problem with my leaves generated from points. As far as I can remember it was important to start drawing the second triangle at the last coordinates of the first triangle.

Just a thought, don’t you need to go around all triangles in the same direction, either clockwise or counter clockwise from the the up side perspective when specifying the points?

Yes, exactly, however it was a bit problematic to find out about this later. I do realize that for more experienced users this might be intuitive, however, I think it is not for medium weight like me. Also considering that there is no way to visually check if the user has done mistakes. And I also find a bit counterintuitive that when you unify all these triangles in one unique object, they preserve the orientation of the original individual triangles