Appears to be recognize textures based effects only, not phong parameterized effects.
/usr/local/env/graphics/meshlab/vcglib/wrap/dae/util_dae.h:
090     class UtilDAE
091     {
...
569         struct WedgeAttribute
570         {
571             QDomNode wnsrc;    //  input/sematic/NORMAL
572             QStringList wn;
573             int offnm;
574
575             QDomNode wtsrc;    // input/semantic/TEXCOORD
576             QStringList wt;
577             int stride;
578             int offtx;
579
580             QDomNode wcsrc;    // input/semantic/COLOR
581             QStringList wc;
582             int offcl;
583         };
584     };
g4pb:wrap blyth$ find . -name '*.h' -exec grep -H WedgeAttribute {} \;
./dae/util_dae.h:                       void usePerWedgeAttributes(PERWEDGEATTRIBUTETYPE att,const unsigned int multitexture = 1,const unsigned int multicolor = 1)
./dae/util_dae.h:               struct WedgeAttribute
./io_trimesh/import_dae.h:              static void FindStandardWedgeAttributes(WedgeAttribute& wed,const QDomNode nd,const QDomDocument doc)
./io_trimesh/import_dae.h:                                      WedgeAttribute wa;
./io_trimesh/import_dae.h:                    FindStandardWedgeAttributes(wa,polylist.at(tript),*(info.doc));
./io_trimesh/import_dae.h:                              WedgeAttribute wa;
./io_trimesh/import_dae.h:                FindStandardWedgeAttributes(wa,polylist.at(pl),*(info.doc));
./io_trimesh/import_dae.h:                                      WedgeAttribute wa;
./io_trimesh/import_dae.h:                    FindStandardWedgeAttributes(wa,triNodeList.at(tript),*(info.doc));
g4pb:wrap blyth$
142         static void FindStandardWedgeAttributes(WedgeAttribute& wed,const QDomNode nd,const QDomDocument doc)
143         {
144             wed.wnsrc = findNodeBySpecificAttributeValue(nd,"input","semantic","NORMAL");
145             wed.offnm = findStringListAttribute(wed.wn,wed.wnsrc,nd,doc,"NORMAL");
146
147             wed.wtsrc = findNodeBySpecificAttributeValue(nd,"input","semantic","TEXCOORD");
148             if (!wed.wtsrc.isNull())
149             {
150                 QDomNode src = attributeSourcePerSimplex(nd,doc,"TEXCOORD");
151                 if (isThereTag(src,"accessor"))
152                 {
153                     QDomNodeList wedatts = src.toElement().elementsByTagName("accessor");
154                     wed.stride = wedatts.at(0).toElement().attribute("stride").toInt();
155                 }
156                 else
157                     wed.stride = 2;
158             }
159             else
160                 wed.stride = 2;
161
162             wed.offtx = findStringListAttribute(wed.wt,wed.wtsrc,nd,doc,"TEXCOORD");  // fills wed.wt
163
164             wed.wcsrc = findNodeBySpecificAttributeValue(nd,"input","semantic","COLOR");
165             wed.offcl = findStringListAttribute(wed.wc,wed.wcsrc,nd,doc,"COLOR");     // fill wed.wc
166         }
482         inline static int findStringListAttribute(QStringList& list,const QDomNode node,const QDomNode poly,const QDomDocument startpoint,const char* token)
483         {
484             int offset = 0;
485             if (!node.isNull())
486             {
487                 offset = node.toElement().attribute("offset").toInt();
488                 QDomNode st = attributeSourcePerSimplex(poly,startpoint,token);  // lookup input elem with matched token (semantic) use the source reference to access the data
489                 valueStringList(list,st,"float_array");
490             }
491             return offset;
492         }
493
494
173         static DAEError LoadPolygonalListMesh(QDomNodeList& polylist,ColladaMesh& m,const size_t offset,InfoDAE& info,QMap<QString,QString> &materialBinding)
174         {
175             if(polylist.isEmpty()) return E_NOERROR;
176             QDEBUG("****** LoadPolygonalListMesh (initial mesh size %i %i)",m.vert.size(),m.fn);
177             for(int tript = 0; tript < polylist.size();++tript)
178             {
...
218                     WedgeAttribute wa;
219                     FindStandardWedgeAttributes(wa,polylist.at(tript),*(info.doc));
220                     QDEBUG("*******                 Start Reading faces. Attributes Offsets: offtx %i - offnm %i - offcl %i",wa.offtx,wa.offnm,wa.offcl);
221
222           int faceIndexCnt=0;
223                     int jj = 0;
224                     for(int ff = 0; ff < (int) faceSizeList.size();++ff) // for each polygon
///  from "vcount" eg 3 3 3 3 3 4 4 4 4 4
225                     {
226                         int curFaceVertNum = faceSizeList.at(ff).toInt();
227
228                         MyPolygon<typename ColladaMesh::VertexType>  polyTemp(curFaceVertNum);
229                         for(int tt = 0;tt < curFaceVertNum ;++tt)  // for each vertex of the polygon
230                         {
231                             int indvt = faceIndexList.at(faceIndexCnt).toInt();
///  from "p"
232                             if(faceSizeList.size()<100) QDEBUG("*******                 Reading face[%3i].V(%i) = %4i  (%i-th of the index list) (face has %i vertices)",ff,tt,indvt,faceIndexCnt,curFaceVertNum);
233                             assert(indvt + offset < m.vert.size());
234                             polyTemp._pv[tt] = &(m.vert[indvt + offset]);
235                             faceIndexCnt +=faceAttributeNum;
236
237                             WedgeTextureAttribute(polyTemp._txc[tt],faceIndexList,ind_txt, wa.wt ,wa.wtsrc, jj + wa.offtx,wa.stride);
///
///      associates a vertex, with texture index
///               jj + wa.offtx ==>  faceind     points to indtx from faceIndexList
///
///      giving association with texture
///              U(), V()    coordinates within the image
///              N()         image number
///
///
249
250                             jj += faceAttributeNum;
251                         }
252
253                         AddPolygonToMesh(polyTemp,m);
254                     }
255                 }
110         // this one is used for the polylist nodes
111         static int WedgeTextureAttribute(typename ColladaMesh::FaceType::TexCoordType & WT, const QStringList faceIndexList, int ind_txt, const QStringList wt, const QDomNode wtsrc,const int faceind,const int stride = 2)
112         {
113             int indtx = -1;
114             if (!wtsrc.isNull())
115             {
116                 indtx = faceIndexList.at(faceind).toInt();
117                 //int num = wt.size();
118                 assert(indtx * stride < wt.size());
119                 WT = vcg::TexCoord2<float>();
120                 WT.U() = wt.at(indtx * stride).toFloat();
121                 WT.V() = wt.at(indtx * stride + 1).toFloat();
122                 WT.N() = ind_txt;
123             }
124             return indtx;
125         }
Untextured Polylist:
127         <polylist count="30" material="WHITE">
128           <input offset="0" semantic="VERTEX" source="#near_hall_top_dwarf0xbbd1a68-Vtx" />
129           <input offset="1" semantic="NORMAL" source="#near_hall_top_dwarf0xbbd1a68-Norm" />
130           <vcount>4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 </vcount>
131           <p>0 0
                 3 0
                 2 0
                 1 0
                 6 1
                 5 1
                 1 1
                 2 1
                 5 2  4 2  0 2  1 2   4 3  5 3  6 3  7 3   11 4  13 4  10 4  8 4   13 5  12 5  9 5  10 5   15 6  14 6  3 6   4 7  7 7  17 7   15 8  3 8  0 8   4 9  17 9  16 9   16 10  15 10  0 10   0     11  4 11  16 11   19 12  17 12  7 12   7 13  6 13  2 13   3 14  14 14  18 14   19 15  7 15  2 15   2 16  3 16  18 16   18 17  19 17  2 17   14 18  15 18  8 18   9 19  18 19  14 19   14 20  8 20  10 20   10 21  9 21  14 21   19 22  18 22      9 22   9 23  12 23  19 23   15 24  16 24  11 24   11 25  8 25  15 25   17 26  19 26  12 26   13 27  11 27  16 27   17 28  12 28  13 28   13 29  16 29  17 29
               </p>
132         </polylist>
<input semantic="TEXCOORD" source="#rectangle_object-mesh-map-channel1" offset="2" set="1"/>
One texture image per material (only ~30 materials) leads to meshlab loading 4522 texture images and being unusably slow.:
LOG: 0 Loading textures
LOG: 0  Texture[ 4515 ] =  './textures/OpaqueVacuum.png' (    100 x    100 ) -> (    128 x    128 )
        will be loaded as GL texture id 0  ( 128 x 128 )
LOG: 0 Loading textures
LOG: 0  Texture[ 4516 ] =  './textures/Pyrex.png' (    100 x    100 ) -> (    128 x    128 )
        will be loaded as GL texture id 0  ( 128 x 128 )
LOG: 0 Loading textures
LOG: 0  Texture[ 4517 ] =  './textures/Bialkali.png' (    100 x    100 ) -> (    128 x    128 )
        will be loaded as GL texture id 0  ( 128 x 128 )
LOG: 0 Loading textures
LOG: 0  Texture[ 4518 ] =  './textures/OpaqueVacuum.png' (    100 x    100 ) -> (    128 x    128 )
        will be loaded as GL texture id 0  ( 128 x 128 )
LOG: 0 Loading textures
LOG: 0  Texture[ 4519 ] =  './textures/Pyrex.png' (    100 x    100 ) -> (    128 x    128 )
        will be loaded as GL texture id 0  ( 128 x 128 )
LOG: 0 Loading textures
LOG: 0  Texture[ 4520 ] =  './textures/Bialkali.png' (    100 x    100 ) -> (    128 x    128 )
        will be loaded as GL texture id 0  ( 128 x 128 )
LOG: 0 Loading textures
LOG: 0  Texture[ 4521 ] =  './textures/OpaqueVacuum.png' (    100 x    100 ) -> (    128 x    128 )
        will be loaded as GL texture id 0  ( 128 x 128 )
LOG: 0 Loading textures
LOG: 0  Texture[ 4522 ] =  './textures/RadRock.png' (    100 x    100 ) -> (    128 x    128 )
        will be loaded as GL texture id 0  ( 128 x 128 )