|
@@ -327,7 +327,7 @@ func (d *Decoder) decMesh(start xml.StartElement, geom *Geometry) error {
|
|
|
continue
|
|
continue
|
|
|
}
|
|
}
|
|
|
// Decodes polylist
|
|
// Decodes polylist
|
|
|
- if child.Name.Local == "polylist" {
|
|
|
|
|
|
|
+ if child.Name.Local == "polylist" || child.Name.Local == "triangles" {
|
|
|
err = d.decPolylist(child, mesh)
|
|
err = d.decPolylist(child, mesh)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return err
|
|
return err
|
|
@@ -409,6 +409,15 @@ func (d *Decoder) decPolylist(start xml.StartElement, mesh *Mesh) error {
|
|
|
pl.Material = findAttrib(start, "material").Value
|
|
pl.Material = findAttrib(start, "material").Value
|
|
|
mesh.PrimitiveElements = append(mesh.PrimitiveElements, pl)
|
|
mesh.PrimitiveElements = append(mesh.PrimitiveElements, pl)
|
|
|
|
|
|
|
|
|
|
+ // blender exporter now (since v2.79) exports meshes as <Triangles> when all contained polygons are tris
|
|
|
|
|
+ // https://developer.blender.org/rBc9b95c28f64e9d7421b00cbf8ed4ecddd6471ae5
|
|
|
|
|
+ if start.Name.Local == "triangles" {
|
|
|
|
|
+ pl.Vcount = make([]int, pl.Count)
|
|
|
|
|
+ for i := range pl.Vcount {
|
|
|
|
|
+ pl.Vcount[i] = 3
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
for {
|
|
for {
|
|
|
// Get next child
|
|
// Get next child
|
|
|
child, data, err := d.decNextChild(start)
|
|
child, data, err := d.decNextChild(start)
|