Compare commits

..

6 Commits

198 changed files with 2841 additions and 5122 deletions
+1 -2
View File
@@ -13,5 +13,4 @@ multi_user_updater/
_build _build
# ignore generated zip generated from blender_addon_tester # ignore generated zip generated from blender_addon_tester
*.zip *.zip
libs
-1
View File
@@ -5,7 +5,6 @@ stages:
- doc - doc
include: include:
- local: .gitlab/ci/test.gitlab-ci.yml - local: .gitlab/ci/test.gitlab-ci.yml
- local: .gitlab/ci/build.gitlab-ci.yml - local: .gitlab/ci/build.gitlab-ci.yml
+5 -3
View File
@@ -1,6 +1,5 @@
build: build:
stage: build stage: build
needs: ["test"]
image: debian:stable-slim image: debian:stable-slim
script: script:
- rm -rf tests .git .gitignore script - rm -rf tests .git .gitignore script
@@ -8,5 +7,8 @@ build:
name: multi_user name: multi_user
paths: paths:
- multi_user - multi_user
variables: only:
GIT_SUBMODULE_STRATEGY: recursive refs:
- master
+4 -2
View File
@@ -1,11 +1,9 @@
deploy: deploy:
stage: deploy stage: deploy
needs: ["build"]
image: slumber/docker-python image: slumber/docker-python
variables: variables:
DOCKER_DRIVER: overlay2 DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_CERTDIR: "/certs"
GIT_SUBMODULE_STRATEGY: recursive
services: services:
- docker:19.03.12-dind - docker:19.03.12-dind
@@ -19,3 +17,7 @@ deploy:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker tag registry.gitlab.com/slumber/multi-user/multi-user-server:${VERSION} registry.gitlab.com/slumber/multi-user/multi-user-server:${CI_COMMIT_REF_NAME} - docker tag registry.gitlab.com/slumber/multi-user/multi-user-server:${VERSION} registry.gitlab.com/slumber/multi-user/multi-user-server:${CI_COMMIT_REF_NAME}
- docker push registry.gitlab.com/slumber/multi-user/multi-user-server - docker push registry.gitlab.com/slumber/multi-user/multi-user-server
only:
refs:
- master
+2 -7
View File
@@ -1,16 +1,11 @@
pages: pages:
stage: doc stage: doc
needs: ["deploy"] image: python:3.7-alpine
image: python
script: script:
- pip install -U sphinx sphinx_rtd_theme sphinx-material - pip install -U sphinx sphinx_rtd_theme
- sphinx-build -b html ./docs public - sphinx-build -b html ./docs public
artifacts: artifacts:
paths: paths:
- public - public
only:
refs:
- master
- develop
+3 -2
View File
@@ -3,5 +3,6 @@ test:
image: slumber/blender-addon-testing:latest image: slumber/blender-addon-testing:latest
script: script:
- python3 scripts/test_addon.py - python3 scripts/test_addon.py
variables: only:
GIT_SUBMODULE_STRATEGY: recursive refs:
- master
-3
View File
@@ -1,3 +0,0 @@
[submodule "multi_user/libs/replication"]
path = multi_user/libs/replication
url = https://gitlab.com/slumber/replication.git
+1 -83
View File
@@ -157,86 +157,4 @@ All notable changes to this project will be documented in this file.
- Empty and Light object selection highlights - Empty and Light object selection highlights
- Material renaming - Material renaming
- Default material nodes input parameters - Default material nodes input parameters
- blender 2.91 python api compatibility - blender 2.91 python api compatibility
## [0.3.0] - 2021-04-14
### Added
- Curve material support
- Cycle visibility settings
- Session save/load operator
- Add new scene support
- Physic initial support
- Geometry node initial support
- Blender 2.93 compatibility
### Changed
- Host documentation on Gitlab Page
- Event driven update (from the blender deps graph)
### Fixed
- Vertex group assignation
- Parent relation can't be removed
- Separate object
- Delete animation
- Sync missing holdout option for grease pencil material
- Sync missing `skin_vertices`
- Exception access violation during Undo/Redo
- Sync missing armature bone Roll
- Sync missing driver data_path
- Constraint replication
## [0.4.0] - 2021-07-20
### Added
- Connection preset system (@Kysios)
- Display connected users active mode (users pannel and viewport) (@Kysios)
- Delta-based replication
- Sync timeline marker
- Sync images settings (@Kysios)
- Sync parent relation type (@Kysios)
- Sync uv project modifier
- Sync FCurves modifiers
### Changed
- User selection optimizations (draw and sync) (@Kysios)
- Improved shapekey syncing performances
- Improved gpencil syncing performances
- Integrate replication as a submodule
- The dependencies are now installed in a folder(blender addon folder) that no longer requires administrative rights
- Presence overlay UI optimization (@Kysios)
### Fixed
- User selection bounding box glitches for non-mesh objects (@Kysios)
- Transforms replication for animated objects
- GPencil fill stroke
- Sculpt and GPencil brushes deleted when joining a session (@Kysios)
- Auto-updater doesn't work for master and develop builds
## [0.5.0] - 2022-02-10
### Added
- New overall UI and UX (@Kysios)
- Documentation overall update (@Kysios)
- Server presets (@Kysios)
- Server online status (@Kysios)
- Draw connected user color in the user list
- Private session (access protected with a password) (@Kysios)
### Changed
- Dependencies are now installed in the addon folder and correctly cleaned during the addon removal process
### Fixed
- Python 3.10 compatibility (@notfood)
- Blender 3.x compatibility
- Skin vertex radius synchronization (@kromar)
- Sequencer audio strip synchronization
- Crash with empty after a reconnection
+34 -35
View File
@@ -11,53 +11,52 @@ This tool aims to allow multiple users to work on the same scene over the networ
## Quick installation ## Quick installation
1. Download [latest build](https://gitlab.com/slumber/multi-user/-/jobs/artifacts/develop/download?job=build) or [stable build](https://gitlab.com/slumber/multi-user/-/jobs/artifacts/master/download?job=build). 1. Download latest release [multi_user.zip](https://gitlab.com/slumber/multi-user/-/jobs/artifacts/master/download?job=build).
2. Install last_version.zip from your addon preferences. 2. Run blender as administrator (dependencies installation).
3. Install last_version.zip from your addon preferences.
[Dependencies](#dependencies) will be automatically added to your blender python during installation. [Dependencies](#dependencies) will be automatically added to your blender python during installation.
## Usage ## Usage
See the [documentation](https://slumber.gitlab.io/multi-user/index.html) for details. See the [documentation](https://multi-user.readthedocs.io/en/latest/) for details.
## Troubleshooting ## Troubleshooting
See the [troubleshooting guide](https://slumber.gitlab.io/multi-user/getting_started/troubleshooting.html) for tips on the most common issues. See the [troubleshooting guide](https://multi-user.readthedocs.io/en/latest/getting_started/troubleshooting.html) for tips on the most common issues.
## Current development status ## Current development status
Currently, not all data-block are supported for replication over the wire. The following list summarizes the status for each ones. Currently, not all data-block are supported for replication over the wire. The following list summarizes the status for each ones.
| Name | Status | Comment | | Name | Status | Comment |
| -------------- | :----: | :---------------------------------------------------------------------: | | ----------- | :----: | :--------------------------------------------------------------------------: |
| action | ✔️ | | | action | ✔️ | |
| camera | ✔️ | | | armature | ❗ | Not stable |
| collection | ✔️ | | | camera | ✔️ | |
| gpencil | ✔️ | | | collection | ✔️ | |
| image | ✔️ | | | curve | ❗ | Nurbs not supported |
| mesh | ✔️ | | | gpencil | ✔️ | [Airbrush not supported](https://gitlab.com/slumber/multi-user/-/issues/123) |
| material | ✔️ | | | image | ✔️ | |
| node_groups | ✔️ | Material & Geometry only | | mesh | ✔️ | |
| geometry nodes | ✔️ | | | material | ✔️ | |
| metaball | ✔️ | | | node_groups | ❗ | Material only |
| object | ✔️ | | | metaball | ✔️ | |
| texts | ✔️ | | | object | ✔️ | |
| scene | ✔️ | | | textures | ❗ | Supported for modifiers only |
| world | ✔️ | | | texts | ✔️ | |
| volumes | ✔️ | | | scene | ✔️ | |
| lightprobes | ✔️ | | | world | ✔️ | |
| physics | ✔️ | | | lightprobes | ✔️ | |
| textures | ✔️ | | | compositing | ❌ | [Planned](https://gitlab.com/slumber/multi-user/-/issues/46) |
| curve | ❗ | Nurbs surfaces not supported | | texts | ❌ | [Planned](https://gitlab.com/slumber/multi-user/-/issues/81) |
| armature | ❗ | Only for Mesh. [Planned for GPencil](https://gitlab.com/slumber/multi-user/-/issues/161). Not stable yet | | nla | ❌ | |
| particles | ❗ | The cache isn't syncing. | | volumes | ✔️ | |
| speakers | ❗ | [Partial](https://gitlab.com/slumber/multi-user/-/issues/65) | | particles | ❌ | [On-going](https://gitlab.com/slumber/multi-user/-/issues/24) |
| vse | ❗ | Mask and Clip not supported yet | | speakers | ❗ | [Partial](https://gitlab.com/slumber/multi-user/-/issues/65) |
| libraries | ❌ | | | vse | ❗ | Mask and Clip not supported yet |
| nla | ❌ | | | physics | ❌ | [Planned](https://gitlab.com/slumber/multi-user/-/issues/45) |
| texts | ❌ | [Planned for v0.5.0](https://gitlab.com/slumber/multi-user/-/issues/81) | | libraries | ❗ | Partial |
| compositing | ❌ | [Planned for v0.5.0](https://gitlab.com/slumber/multi-user/-/issues/46) |
### Performance issues ### Performance issues
@@ -75,7 +74,7 @@ I'm working on it.
## Contributing ## Contributing
See [contributing section](https://slumber.gitlab.io/multi-user/ways_to_contribute.html) of the documentation. See [contributing section](https://multi-user.readthedocs.io/en/latest/ways_to_contribute.html) of the documentation.
Feel free to [join the discord server](https://discord.gg/aBPvGws) to chat, seek help and contribute. Feel free to [join the discord server](https://discord.gg/aBPvGws) to chat, seek help and contribute.
-17
View File
@@ -1,17 +0,0 @@
=========
Community
=========
Discord
=======
Feel free to join our `discord server <https://discord.gg/aBPvGws>`_ !
You will find help, a way to take part in the project, public collaborative sessions, people to create with, information about the addon's progress and much more.
.. TODO: Make a call on discord get a link / image for evry contributor ?
Contributors
============
Swann, Fabian, NotFood, Poochyc, Valentin, Adrien, Tanguy, Bruno, Gorgio, Axel, Ultr-X, Wuaieyo, Softyoda, Staz, Ikxi, Kysios.
-32
View File
@@ -1,32 +0,0 @@
============
Key Features
============
Multi-User is a free and open source blender addon.
It aims to allow multiple users to work on the same scene over the network. Based on a Clients / Server architecture, the data-oriented replication schema replicate blender data-blocks across the wire.
.. warning::
The addon is still in development Be carefull when using it.
On rare occasions, it can happen that your blender scenes become corrupted, think of making backups to avoid losing your projects.
Collaboration
=============
Multi-User allows a strong collaborative workflow between users. Being able to collaborate in this way has opened up new opportunities:
- Being able to create together and in real time on the same 3D scene, with instant feedback.
- Being able to teach directly in the same 3D environment in real time, facilitating communication between the teacher and these students.
- To be able to experiment with several people, to make challenges or simply to have fun.
- And much more !
Easier communication
====================
Thanks to *presence*, the overlay system that Multi-User provides, it is possible to see other users in the 3D space. The *presence* overlay is customizable to match your preferences (visibility, names, options).
Session management
==================
The addon works on a session system. The creator of the session and the administrators have rights that allow them to easily manage the session (backups, user management). In addition, there is a management of datablock rights so that each user can collaborate as they wish.
+4 -6
View File
@@ -1,10 +1,8 @@
================ About
About Multi-User =====
================
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 1
:name: toc-about
introduction introduction
features
community
+5 -4
View File
@@ -1,6 +1,7 @@
======== ============
The idea Introduction
======== ============
A film is an idea carved along the whole production process by many different peoples. A traditional animation pipeline involve a linear succession of tasks. From storyboard to compositing by passing upon different step, its fundamental work flow is similar to an industrial assembly line. Since each step is almost a department, its common that one person on department B doesn't know what another person did on a previous step in a department A. This lack of visibility/communication could be a source of problems which could produce a bad impact on the final production result. A film is an idea carved along the whole production process by many different peoples. A traditional animation pipeline involve a linear succession of tasks. From storyboard to compositing by passing upon different step, its fundamental work flow is similar to an industrial assembly line. Since each step is almost a department, its common that one person on department B doesn't know what another person did on a previous step in a department A. This lack of visibility/communication could be a source of problems which could produce a bad impact on the final production result.
@@ -11,4 +12,4 @@ A film is an idea carved along the whole production process by many different pe
Nowadays it's a known fact that real-time rendering technologies allows to speedup traditional linear production by reducing drastically the iteration time across different steps. All majors industrial CG solutions are moving toward real-time horizons to bring innovative interactive workflows. But this is a microscopic, per-task/solution vision of real-time rendering benefits for the animation production. What if we step-back, get a macroscopic picture of an animation movie pipeline and ask ourself how real-time could change our global workflow ? Could-it bring better ways of working together by giving more visibility between departments during the whole production ? Nowadays it's a known fact that real-time rendering technologies allows to speedup traditional linear production by reducing drastically the iteration time across different steps. All majors industrial CG solutions are moving toward real-time horizons to bring innovative interactive workflows. But this is a microscopic, per-task/solution vision of real-time rendering benefits for the animation production. What if we step-back, get a macroscopic picture of an animation movie pipeline and ask ourself how real-time could change our global workflow ? Could-it bring better ways of working together by giving more visibility between departments during the whole production ?
The multi-user addon is an attempt to experiment real-time parallelism between different production stage. By replicating blender data blocks over the networks, it allows different artists to collaborate on a same scene in real-time. The multi-user addon is an attempt to experiment real-time parallelism between different production stage. By replicating blender data blocks over the networks, it allows different artists to collaborate on a same scene in real-time.
+17 -50
View File
@@ -12,16 +12,17 @@
# #
import os import os
import sys import sys
# sys.path.insert(0, os.path.abspath('.'))
# -- Project information ----------------------------------------------------- # -- Project information -----------------------------------------------------
project = 'Multi-User 0.5.0 Documentation' project = 'multi-user'
copyright = '2020, Swann Martinez' copyright = '2020, Swann Martinez'
author = 'Swann Martinez, Poochy, Fabian' author = 'Swann Martinez, with contributions from Poochy'
# The full version, including alpha/beta/rc tags # The full version, including alpha/beta/rc tags
version_release = '0.5.1-develop' release = '0.2.0'
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------
@@ -41,15 +42,12 @@ source_suffix = ".rst"
# The master toctree document. # The master toctree document.
master_doc = "index" master_doc = "index"
# General information about the projet
projet = 'Multi-User %s Doc' % version_release
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs. # This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases. # Usually you set "language" from the command line for these cases.
language = 'en' language = 'python'
# List of patterns, relative to source directory, that match files and # List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files. # directories to ignore when looking for source files.
@@ -62,59 +60,28 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# on_rtd is whether we are on readthedocs.org, this line of code grabbed from docs.readthedocs.org # on_rtd is whether we are on readthedocs.org, this line of code grabbed from docs.readthedocs.org
on_rtd = os.environ.get('READTHEDOCS', None) == 'True' on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
html_theme = "default" import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
try: html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
del sphinx_rtd_theme
except ModuleNotFoundError:
pass
if on_rtd: if on_rtd:
using_rtd_theme = True using_rtd_theme = True
# Theme options
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
html_theme_options = { html_theme_options = {
# 'typekit_id': 'hiw1hhg',
# 'analytics_id': '',
# 'sticky_navigation': True # Set to False to disable the sticky nav while scrolling.
# 'logo_only': True, # if we have a html_logo below, this shows /only/ the logo with no title text
'collapse_navigation': False, # Collapse navigation (False makes it tree-like) 'collapse_navigation': False, # Collapse navigation (False makes it tree-like)
# 'display_version': True, # Display the docs version
# 'navigation_depth': 4, # Depth of the headers shown in the navigation bar
} }
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = []
if html_theme == "sphinx_rtd_theme":
html_theme_options = {
"analytics_id": "UA-1418081-1",
# included in the title
"display_version": False,
"collapse_navigation": True,
"navigation_depth": -1,
}
extensions.append('sphinx_rtd_theme')
# The name for this set of Sphinx documents.
# "<project> v<release> documentation" by default.
html_title = "Multi-User Doc"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_logo = "resources/logo.png"
html_favicon = "ressources/favicon.ico"
html_static_path = ["resources"]
if html_theme == "sphinx_rtd_theme":
html_css_files = ["css/theme_overrides.css"]
# -- Options for HTMLHelp output ------------------------------------------ # -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder. # Output file base name for HTML help builder.
htmlhelp_basename = 'Multi-User Manual' htmlhelp_basename = 'multiusrdoc'
# sphinx-notfound-page # sphinx-notfound-page
# https://github.com/readthedocs/sphinx-notfound-page # https://github.com/readthedocs/sphinx-notfound-page
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Some files were not shown because too many files have changed in this diff Show More