@@ -2716,7 +2716,17 @@ namespace fbx
27162716 n->lastvert = epositions.length ();
27172717 n->numverts = verts.length ()/3 ;
27182718
2719- if (uvidxs.empty ()) for (int i = 0 ; i + 1 < uvs.length (); i += 2 ) etexcoords.add (Vec4 (uvs[i], uvs[i+1 ], 0 , 0 ));
2719+ if (uvidxs.empty ())
2720+ {
2721+ if (polyidxs.length () && uvs.length ()/2 == verts.length ()/3 ) loopv (polyidxs)
2722+ {
2723+ int idx = polyidxs[i];
2724+ if (idx < 0 ) idx = -(idx+1 );
2725+ idx *= 2 ;
2726+ etexcoords.add (Vec4 (uvs[idx], 1 -uvs[idx+1 ], 0 , 0 ));
2727+ }
2728+ else for (int i = 0 ; i + 1 < uvs.length (); i += 2 ) etexcoords.add (Vec4 (uvs[i], 1 -uvs[i+1 ], 0 , 0 ));
2729+ }
27202730 else loopv (uvidxs)
27212731 {
27222732 int idx = 2 *uvidxs[i];
@@ -2732,7 +2742,17 @@ namespace fbx
27322742 }
27332743 else for (int i = 0 ; i + 2 < norms.length (); i += 3 ) enormals.add (Vec3 (norms[i], norms[i+1 ], norms[i+2 ]));
27342744
2735- if (coloridxs.empty ()) for (int i = 0 ; i + 3 < colors.length (); i += 4 ) ecolors.add (Vec4 (colors[i], colors[i+1 ], colors[i+2 ], colors[i+3 ]));
2745+ if (coloridxs.empty ())
2746+ {
2747+ if (polyidxs.length () && colors.length ()/4 == verts.length ()/3 ) loopv (polyidxs)
2748+ {
2749+ int idx = polyidxs[i];
2750+ if (idx < 0 ) idx = -(idx+1 );
2751+ idx *= 4 ;
2752+ ecolors.add (Vec4 (colors[idx], colors[idx+1 ], colors[idx+2 ], colors[idx+3 ]));
2753+ }
2754+ else for (int i = 0 ; i + 3 < colors.length (); i += 4 ) ecolors.add (Vec4 (colors[i], colors[i+1 ], colors[i+2 ], colors[i+3 ]));
2755+ }
27362756 else loopv (coloridxs)
27372757 {
27382758 int idx = 4 *coloridxs[i];
0 commit comments