ubisoft / mixer

Add-on for real-time collaboration in Blender.
https://ubisoft-mixer.readthedocs.io/
GNU General Public License v3.0
1.32k stars 79 forks source link

Blender 3.0 release breaks #34

Open fire opened 2 years ago

fire commented 2 years ago

Infos on the context

Describe the bug Blender 3.0 release breaks with mixer.

To Reproduce Steps to reproduce the behavior:

  1. Download Blender 3.0 from steam (it's the fastest to download)
  2. Activate mixer addon
  3. Click on connect
  4. See error
bpy.ops.mesh.primitive_monkey_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))
Saved "untitled.blend"
bpy.data.window_managers["WinMan"].addon_search = "mixer"
Connecting to "localhost:12800" ...
mixer.connect error : AttributeError("'bpy.app' object has no attribute 'binary_path_python'")
Connecting to "localhost:12800" ...
mixer.connect error : AttributeError("'bpy.app' object has no attribute 'binary_path_python'")
bpy.ops.outliner.item_activate(extend=False, deselect_all=True)
Connecting to "localhost:12800" ...
mixer.connect error : AttributeError("'bpy.app' object has no attribute 'binary_path_python'")
Connecting to "localhost:12800" ...
mixer.connect error : AttributeError("'bpy.app' object has no attribute 'binary_path_python'")
Connecting to "localhost:12800" ...
mixer.connect error : AttributeError("'bpy.app' object has no attribute 'binary_path_python'")

Expected behavior

Mixer connects.

Screenshots If applicable, add screenshots to help explain your problem.

Additional context

Wanted to have Blender 3.0 support.

Edited:

Blender 3.0 has released.

fire commented 2 years ago

Fixed by: https://github.com/ubisoft/mixer/pull/37

fire commented 2 years ago

Having errors editing bone groups after trying to debug crash.

Error: Cannot edit bone groups for proxies or library overrides

Modified to avoid crash but there's another bug.

        if isinstance(bl_item, T.Mesh):
            bl_item.update_tag()
            update = True
        elif isinstance(bl_item, T.Curve):
    def update_soa(self, bl_item, path: Path, soa_members: List[SoaMember]) -> bool:

        r = self.find_by_path(bl_item, path)
        if r is None:
            logger.error(f"update_soa: {path} not found in {bl_item}")
            return False
        container, container_proxy = r
        for soa_member in soa_members:
            soa_proxy = container_proxy.data(soa_member[0])
            soa_proxy.save_array(container, soa_member[0], soa_member[1])

        # HACK force updates : unsure what is strictly required
        # specifying refresh is not compatible with Grease Pencil and causes a crash
        # specifying refresh is not compatible with Mesh and causes a crash
        update = False
        if isinstance(bl_item, T.Mesh):
            bl_item.update_tag()
            update = True
        elif isinstance(bl_item, T.Curve):
            bl_item.twist_mode = bl_item.twist_mode
        elif isinstance(bl_item, T.GreasePencil):
            bl_item.update_tag()
            update = True

        return update