Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into 280-enable-mypy
Browse files Browse the repository at this point in the history
  • Loading branch information
PhilippeCrassous committed Apr 23, 2021
2 parents e385fdd + 3460a07 commit 32f380e
Show file tree
Hide file tree
Showing 14 changed files with 158 additions and 39 deletions.
31 changes: 31 additions & 0 deletions .gitlab/issue_templates/Bug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
## Summary

(Use the [issue ckecklist](https://ubisoft-mixer.readthedocs.io/en/latest/troubleshoot/issue.html) to find out if your problem is known.)

(Summarize the bug encountered concisely)

## Versions

Blender version:

Mixer version:

Operating systems:

## Steps to reproduce

(How one can reproduce the issue)

## What is the current bug behavior?

(What actually happens)

## What is the expected correct behavior?

(What you expect to see instead)

## Relevant logs and/or screenshots

(Attach the log files as documented in [reporting an issue](https://mixer-github.readthedocs.io/en/latest/troubleshoot/issue.html)

/label ~bug
10 changes: 10 additions & 0 deletions .gitlab/issue_templates/Documentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

## Summary

(Is the issue about an error, an enhancement or an addition)

## Details

(include links to online pages or sections)

/label ~documentation
14 changes: 14 additions & 0 deletions .gitlab/issue_templates/Feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## Summary

(Short description)

## Use case

(Describe in what situation you need this feature)


## Details

(Detailed description of the feature you would to consider for addition)

/label ~feature
Empty file.
10 changes: 8 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
# 0.23.0 (Wip)
# 1.0.0 (2021-04-21)

## Documentation

- Online user [documentation](https://ubisoft-mixer.readthedocs.io/en/latest/)
- Video [tutorials](https://www.youtube.com/channel/UCVfQBSBBvo8GMndYy2TzQHw)

## Features

- Online user documentation
- Armatures: synchronization
- Geometry node tres: synchronization
- Synchronization: ignore scene camera
- UI: add a prefix to default room name based on user name
- UI: add the list of users per room
- UI: improved visibility of Connect and Disconnect buttons for existing rooms
- UI: removed unused "Join" progress value
- UI: improve warning feedback when Blender or Mixer versions are not the same as the room ones

## Fixes

- Synchronization: ignore "select" attribute everywhere
- UI: color for other users is now accurate
- Node trees: fix missing connections
- Readme fixes (thanks [bangseongbeom](https://github.com/bangseongbeom))

# 0.22.0 (19-03-2021)

Expand Down
19 changes: 13 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
# Mixer

Mixer is a Blender addon developed at Ubisoft for Real Time Collaboration in 3D edition. It allows multiple Blender users to work on the same scene at the same time.
Mixer is a Blender addon for real time collaboration in Blender. It allows multiple Blender users to work on the same scene at the same time and is developed by the R&D department of Ubisoft Animation Studio.

**Disclaimer**: This project is in alpha state and actively developed. Do not use it to edit your production assets without a backup or you might break them.
![Mixer screenshot](docs/img/home_mixer.png)

**Disclaimer**: Although designed to be used in a production context it is still an experimental tool and,
In spite of all our efforts to make it reliable, it may in some circumstances corrupt you Blender scenes data.
Be aware that neither Ubisoft nor Ubisoft employees can be taken as responsible in such cases. Use it at your own risks.

**This said, we will do our best to improve Mixer thanks to your feedback in order to provide a memorable creative collaborative experience.
Have fun !**

## Features

Refer to the online documentation for details about current [features and limitations](https://ubisoft-mixer.readthedocs.io/en/latest/getting-started/features.html).

## Documentation and Usage

Documentation is available at the web site https://ubisoft-mixer.readthedocs.io/ :
Documentation is available at the web site https://ubisoft-mixer.readthedocs.io/ to :

- [Download and install](https://ubisoft-mixer.readthedocs.io/en/latest/getting-started/install.html) Mixer
- Perform [local tests](https://ubisoft-mixer.readthedocs.io/en/latest/getting-started/first-steps.html)
- [Get connected](https://ubisoft-mixer.readthedocs.io/en/latest/collaborate/get-connected.html) and [work together](https://ubisoft-mixer.readthedocs.io/en/latest/collaborate/work-together.html)
- [download and install](https://ubisoft-mixer.readthedocs.io/en/latest/getting-started/install.html),
- [test](https://ubisoft-mixer.readthedocs.io/en/latest/getting-started/first-steps.html) locally,
- then [get connected](https://ubisoft-mixer.readthedocs.io/en/latest/.collaborate/get-connected.html) and [work together](https://ubisoft-mixer.readthedocs.io/en/latest/collaborate/work-together.html)

## Updates

Expand Down
1 change: 1 addition & 0 deletions docs/img/chat-mixer--addon-brightgreen.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/home_mixer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 11 additions & 5 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ Mixer: a Blender Addon for Collaborative Editing

With Mixer, several Blender users can work together on the same data and collaborate in real time.


.. image:: /img/home_mixer.png
:align: center


Disclaimer
----------

Expand All @@ -23,13 +28,14 @@ Getting started
<div style="position: relative; padding-bottom: 45%; height: 0; overflow: hidden; max-width: 80%; border:solid 0.1em; border-color:#4d4d4d; align=center; margin: auto;">
<iframe width="560" height="315" src="https://www.youtube.com/embed/6N-XPnvF74Y" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>

|
<br />
<br />

Watch the video tutorial or dive into this step-by-step process:
* :ref:`Download <download>` the Mixer zip file
* :ref:`Install <installing>` Mixer as a Blender addon
* Then :ref:`try out<first-steps>` your installation

* :ref:`download <download>` the Mixer zip file,
* :ref:`install <installing>` Mixer as a Blender addon,
* then :ref:`try out<first-steps>` your installation

.. toctree::
:maxdepth: 2
Expand Down
14 changes: 6 additions & 8 deletions docs/troubleshoot/faq.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,6 @@ Frequently asked questions
General
-------

Why is Mixer still in a 0. version?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Mixer is still in active development. Using it may cause data loss. Save your work regularly and make sure that you have backups.

Can I control access to the server or a room?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand All @@ -20,6 +15,7 @@ Can I control access to parts os a scene?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

No. All room users can edit all the Blender data without restriction.
If two users edit simultaneously the very same elements data corruption will occur.


.. _saves-not-identical:
Expand All @@ -43,9 +39,11 @@ Mixer handles these simultaneous and conflicting modifications:
- renaming datablocks with different names
- linking different objects to the same collection

The following conflicting modifications are not handled:
The following conflicting modifications are not handled, and in these cases, the participants will end up with
different attribute values:

- modification of an attribute with different values. Participants will end up with different attribute values.
- setting an attribute with different values.
- adding or removing array elements, like in object modifier or grease pencil layers


How many users can collaborate in a session?
Expand Down Expand Up @@ -104,7 +102,7 @@ Why does my update fail to appear on other participant Blender?

Check the following :

- are you and the other participants actually connected to the server? The Mixer panel should display the **Disconnect** button in blue.
- are you and the other participants actually connected to the server? When you are connected, the Mixer panel should display the **Disconnect** button in blue.
- are you attempting to synchronize data that is not or partially supported? See the list of :ref:`synchronized data <synchronized>` and their restrictions.

If you think you have found a bug, please :doc:`report an issue <issue>`.
Expand Down
15 changes: 11 additions & 4 deletions mixer/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,23 @@
import logging
import os
from pathlib import Path
import time

__version__ = "v1.0.0" # Generated by inject_version.py
display_version = "1.0.0" # Generated by inject_version.py
version_date = "2021-04-21:16:17:00 UTC" # Generated by inject_version.py


def about_date():
date = time.strptime(version_date[0:10], "%Y-%m-%d")
return time.strftime("%d %B %Y", date)

__version__ = "v0.22.0" # Generated by inject_version.py
display_version = "0.22.0" # Generated by inject_version.py
version_date = "2021-03-19:10:56:00 UTC" # Generated by inject_version.py

bl_info = {
"name": "Mixer",
"author": "Ubisoft Animation Studio",
"description": "Collaborative 3D edition accross 3D software",
"version": (0, 22, 0), # Generated by inject_version.py
"version": (1, 0, 0), # Generated by inject_version.py
"blender": (2, 91, 0),
"location": "View3D > Mixer",
"warning": "Experimental addon, can break your scenes",
Expand Down
62 changes: 50 additions & 12 deletions mixer/bl_panels.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
"PAINT_TEXTURE": ("Texture", "TPAINT_HLT"),
"PARTICLE": ("Particle", "PARTICLEMODE"),
"OBJECT": ("Object", "OBJECT_DATAMODE"),
"PAINT_GPENCIL": ("GP Paint", "USER"),
"PAINT_GPENCIL": ("GP Paint", "GREASEPENCIL"),
"EDIT_GPENCIL": ("GP Edit", "EDITMODE_HLT"),
"SCULPT_GPENCIL": ("GP Sculpt", "SCULPTMODE_HLT"),
"WEIGHT_GPENCIL": ("GP Weight", "WPAINT_HLT"),
Expand Down Expand Up @@ -163,6 +163,7 @@ def collapsable_panel(
)
if alert:
row.alert = True
row.label(text="", icon="ERROR")
row.label(**kwargs)
return getattr(data, property)

Expand All @@ -171,24 +172,25 @@ class ROOM_UL_ItemRenderer(bpy.types.UIList): # noqa
@classmethod
def draw_header(cls, layout):
box = layout.box()
box.scale_y = 0.7
split = box.split()
split.alignment = "LEFT"

row = split.row()
row.scale_x = 0.9
row.label(text="", icon="BLANK1") # BLANK1
row.label(text="Room Name")
row.label(text="Room:")

split.label(text="Users")
split.label(text="Users:")
if get_mixer_props().display_rooms_details:
split.label(text="Blender Version")
split.label(text="Mixer Version")
split.label(text="Keep Open")
split.label(text="No Version Check")
split.label(text="Protocol")
split.label(text="Command Count")
split.label(text="Size (MB)")
split.label(text="Joinable")
split.label(text="Blender Version:")
split.label(text="Mixer Version:")
split.label(text="Keep Open:")
split.label(text="No Version Check:")
split.label(text="Protocol:")
split.label(text="Command Count:")
split.label(text="Size (MB):")
split.label(text="Joinable:")

def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
split = layout.split()
Expand Down Expand Up @@ -506,6 +508,12 @@ def draw_rooms(self, layout):
mixer_props = get_mixer_props()

if collapsable_panel(layout, mixer_props, "display_rooms", text="Server Rooms"):

# main box should probably be removed
# layout = layout.row()
# layout.separator(factor=1.2)
# layout = layout.column()

layout = layout.box().column()
ROOM_UL_ItemRenderer.draw_header(layout)
layout.template_list("ROOM_UL_ItemRenderer", "", mixer_props, "rooms", mixer_props, "room_index", rows=2)
Expand Down Expand Up @@ -573,6 +581,26 @@ def user_belongs_to_selected_room(user: UserItem):

collapsable_panel(layout, mixer_prefs, "users_list_panel_opened", text="Selected Room Users")
if mixer_prefs.users_list_panel_opened:
# header
box = layout.box()
box.scale_y = 0.7
col = box.column()

user_split = col.split()
sub_row = user_split.row()
user_sub_split = sub_row.split(factor=0.5)
user_sub_split.label(text="User:", icon="BLANK1")

color_row = user_sub_split.row()
color_sub_row = color_row.row()
color_sub_row.scale_x = 0.34
color_sub_row.label(text=" ")

mode_row = color_row.split(factor=0.6)
mode_row.label(text="Edit Mode:")
mode_row.label(text="IP:")

# users list
box = layout.box()
col = box.column()

Expand All @@ -598,7 +626,17 @@ def user_belongs_to_selected_room(user: UserItem):
mode_row.label(text=f"{user.ip_port}")

layout.separator(factor=0.5)
collapsable_panel(layout, mixer_prefs, "display_selected_room_properties", text="Selected Room Properties")

has_warnings = False
if len(mixer_props.rooms):
current_room = mixer_props.rooms[mixer_props.room_index]
blender_warning = bpy.app.version_string != current_room.blender_version
mixer_warning = display_version != current_room.mixer_version
has_warnings = blender_warning or mixer_warning

collapsable_panel(
layout, mixer_prefs, "display_selected_room_properties", text="Selected Room Properties", alert=has_warnings
)
if mixer_prefs.display_selected_room_properties:
box = layout.box()
if not len(mixer_props.rooms):
Expand Down
4 changes: 2 additions & 2 deletions mixer/ui/about.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import bpy
from bpy.types import Operator

from mixer import display_version
from mixer import display_version, about_date


class Mixer_OT_About(Operator): # noqa 801
Expand All @@ -43,7 +43,7 @@ def draw(self, context):
row = box.row()
row.separator()
row.label(
text=f"Version: {display_version or '(Unknown version)'} - ({'March 2021'}) - Ubisoft Animation Studio"
text=f"Version: {display_version or '(Unknown version)'} - {about_date()} - Ubisoft Animation Studio"
)

# Authors
Expand Down
1 change: 1 addition & 0 deletions tests/blender/test_nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,7 @@ def test_create(self):
self.send_string(hack, to=1, sleep=2.0)
self.end_test()

@unittest.skip("Randomly fails")
def test_input_int(self):
# Input float has a bug before 2.93 https://developer.blender.org/T86876
self.send_string(self.create)
Expand Down

0 comments on commit 32f380e

Please sign in to comment.