Replace this part :
# get the start index of current primitive at geom's vertex data
s = collFaceData.getPrimitiveStart(prim)
for i in range(numface):
# refer to the vertex data length list created earlier
vtx1=vDataBegin+collFaceData.getVertex(s+i*3)
vtx2=vDataBegin+collFaceData.getVertex(s+i*3+1)
vtx3=vDataBegin+collFaceData.getVertex(s+i*3+2)
collFaces.append((vtx1,vtx2,vtx3))
with this:
for i in range(0,numface*3,3):
# refer to the vertex data length list created earlier
vtx1=vDataBegin+collFaceData.getVertex(i)
vtx2=vDataBegin+collFaceData.getVertex(i+1)
vtx3=vDataBegin+collFaceData.getVertex(i+2)
collFaces.append((vtx1,vtx2,vtx3))
Though I still don’t know what the return value of getPrimitiveStart() is useful for. Obviously it works well without it. It looks like a little liar to me.