godotengine / godot-blender-exporter

Addon for Blender to directly export to a Godot Scene
GNU General Public License v2.0
1.15k stars 132 forks source link

Export fails on utils.py -> mesh.update(calc_loop_triangles=True) in Blender 2.81 #295

Open LaBodilsen opened 4 years ago

LaBodilsen commented 4 years ago

OS: Windows 10 Home 1903

Godot version: 3.1.1.stable.Official

Blender version: 2.81

Issue description: The exporter fails in Blender 2.81 with the following error:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\__init__.py", line 215, in execute
    return export_godot.save(self, context, **keywords)
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\export_godot.py", line 318, in save
    exp.export()
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\export_godot.py", line 267, in export
    self.export_scene()
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\export_godot.py", line 211, in export_scene
    self.export_object(obj, root_gd_node)
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\export_godot.py", line 123, in export_object
    parent_gd_node)
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\converters\mesh.py", line 45, in export_mesh_node
    mesh_id = mesh_exporter.export_mesh(escn_file, export_settings)
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\converters\mesh.py", line 165, in export_mesh
    mesh = mesh_converter.to_mesh()
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\converters\utils.py", line 154, in to_mesh
    triangulate_mesh(mesh)
  File "C:\Program Files (x86)\Steam\steamapps\common\Blender\2.81\scripts\addons\io_scene_godot\converters\utils.py", line 43, in triangulate_mesh
    # mesh.update(calc_loop_triangles=True)
TypeError: Mesh.update(): was called with invalid keyword argument(s) (calc_loop_triangles), expected (calc_edges, calc_edges_loose)

location: <unknown location>:-1

It worked fine with Blender 2.8.

Minimal reproduction project: Just open Blender 2.81 and export the default cube project with the Godot engine .ecsn exporter.

vini-guerrero commented 4 years ago

Same issue happening here, 2.81

image

vini-guerrero commented 4 years ago

I was able to fix this issue and export properly now. In case anyone else is facing the same issue with Blender 2.81, I'll leave my fork version here https://github.com/vini-guerrero/godot-blender-exporter/tree/blender2.81 I noticed there's still no 2.81 branch here, let me know if you want a PR on this @akien-mga Best regards.

LaBodilsen commented 4 years ago

Hi @vini-guerrero : So what did you do to fix it?.. was it only the failing line: mesh.update(calc_loop_triangles=True), that you changed to mesh.update(calc_edges=True, calc_edges_loose=True)? or was there anything else needed?..

Just asking out of interest

LaBodilsen commented 4 years ago

It seems there already is a PR on this issue.

https://github.com/godotengine/godot-blender-exporter/pull/284

LaBodilsen commented 4 years ago

Small update: I tested vini-querrero's fix by replacing line 43 in Converters/utils.py Mesh.update(calc_loop_triangles=True) with: mesh.update(calc_edges=True, calc_edges_loose=True).

And this works in both Blender 2.80 and Blender 2.81, and exports the scene correctly