 
                 m = myobj.material[mk]
 
-                material =  new THREE.MeshPhongMaterial
-                    shininess   : "1"
-                    wireframe   : false
-                    transparent : m.opacity < 1
-
-                material.color.setRGB(m.color[0],    m.color[1],    m.color[2])
+                if has_local_colors
+                    material =  new THREE.MeshPhongMaterial
+                        shininess   : "1"
+                        wireframe   : false
+                        transparent : m.opacity < 1
+                    material.color.setRGB(m.color[0],    m.color[1],    m.color[2])
+                else
+                    material =  new THREE.MeshPhongMaterial
+                        shininess   : "1"
+                        wireframe   : false
+                        transparent : m.opacity < 1
+                        vertexColors: THREE.FaceColors
+
                 material.specular.setRGB(m.specular[0], m.specular[1], m.specular[2])
                 material.opacity = m.opacity
 

            for v in faces
                switch v.length
                    when 3
                        push_face3(v...)
                    when 4
                        push_face4(v...)
                    when 5

                for k in [0...face5.length] by 6   # yep, 6 :-()
                    faces.push(face5.slice(k,k+6))

            geometry = new THREE.Geometry()

            for k in [0...vertices.length] by 3
