Compare commits

...

837 Commits

Author SHA1 Message Date
Swann Martinez
12355b6457 Merge branch 'develop' into 'master'
fix: blender 3.5 compatibility

See merge request slumber/multi-user!179
2023-04-11 12:48:36 +00:00
Swann Martinez
74ad4e5e1f fix: bump add-on version to 0.5.8 2023-04-11 12:43:52 +00:00
Swann
2a88c3e5ac feat: use requirement to install dependencies
fix: _bool numpy not found
2023-04-06 09:26:29 +02:00
Swann Martinez
4c42a5be92 fix: freeze deepdiff version in replication 2022-08-18 21:40:07 +02:00
Swann Martinez
757ee7015a Merge branch 'develop' into 'master'
fix: cross-platform serialization errors

See merge request slumber/multi-user!177
2022-08-07 12:39:06 +00:00
Swann Martinez
15d66579c6 fix: deepdiff dependency error, freezing it to 5.7.0. 2022-08-07 14:36:36 +02:00
Swann Martinez
4128a47b88 fix: put back numpy types 2022-07-31 14:57:32 +02:00
Swann Martinez
689a565c75 fix: bump version 2022-07-07 14:34:33 +02:00
Swann Martinez
c5f1bf1176 fix: cross-platform serialization errors 2022-07-07 14:29:32 +02:00
Swann Martinez
4dc6781c94 Merge branch 'develop' into 'master'
v0.5.5

See merge request slumber/multi-user!176
2022-06-12 19:23:41 +00:00
Swann Martinez
5311e55208 fix: doc version number 2022-06-12 21:16:11 +02:00
Swann Martinez
4cb64e5e77 doc: update changelog and version 2022-06-12 21:10:38 +02:00
Swann Martinez
ff67b581b1 Merge branch '256-numpy-mesh-serialization-error' into 'develop'
Resolve "Numpy mesh serialization error"

See merge request slumber/multi-user!175
2022-06-12 19:04:56 +00:00
Swann Martinez
f7bec3fc08 fix: try to use other numpy types to store data collection 2022-06-11 14:00:36 +02:00
Swann Martinez
5e929db3ee Merge branch 'develop' into 'master'
v0.5.3

See merge request slumber/multi-user!174
2022-03-11 17:59:27 +00:00
Swann Martinez
629f2e1cdb feat: update changelog 2022-03-11 18:52:30 +01:00
Swann Martinez
b8fed806ed feat: update version 2022-03-11 18:38:38 +01:00
Swann Martinez
8190846b59 fix: blender 3.1 numpy loading compatibility 2022-03-11 18:38:09 +01:00
Swann Martinez
c228b6ad7f refactpr: snapshot logs 2022-03-09 11:19:09 +01:00
Swann Martinez
48651ce890 fix: uuid error when joining a server 2022-03-09 10:42:44 +01:00
Swann Martinez
26847cf459 fix: server crashing during snapshots 2022-03-08 18:06:54 +01:00
Swann Martinez
bfa6991c00 fix: server docker file 2022-03-02 14:26:01 +01:00
Swann Martinez
0c60c86775 Merge branch 'develop' into 'master'
v0.5.2

See merge request slumber/multi-user!173
2022-02-18 15:12:56 +00:00
Swann Martinez
70b6f9bcfa feat: update changelog for 0.5.2 2022-02-18 11:28:56 +01:00
Swann Martinez
8d176b55e4 Merge branch '250-geometry-nodes-attribue-toogle-doesn-t-sync' into 'develop'
Resolve "Geometry nodes attribue toogle doesn't sync"

See merge request slumber/multi-user!172
2022-02-17 09:51:41 +00:00
Swann Martinez
4c0356e724 fix: geometry node boolean parameter loading
related to #250
2022-02-17 10:43:47 +01:00
Swann Martinez
6b04d1d8d6 Merge branch '248-objects-not-selectable-after-user-leaves-session' into 'develop'
Resolve "objects not selectable after user leaves session"

See merge request slumber/multi-user!171
2022-02-15 10:03:58 +00:00
Swann Martinez
edfcdd8867 feat: bump version 2022-02-15 11:00:18 +01:00
Swann Martinez
bdd6599614 fix: objects not selectable after user leaves session (or kicked)
Related to #248
2022-02-15 10:55:26 +01:00
Swann Martinez
6efd1321ce Merge branch 'develop' into 'master'
v0.5.1

See merge request slumber/multi-user!169
2022-02-10 15:25:02 +00:00
Swann Martinez
047bd47048 Merge branch '247-auto-updater-breaks-dependency-auto-installer' into 'develop'
feat: bump addon version

See merge request slumber/multi-user!170
2022-02-10 15:20:58 +00:00
Swann Martinez
d32cbb7b30 feat: bump addon version 2022-02-10 16:20:22 +01:00
Swann Martinez
adabce3822 Merge branch '247-auto-updater-breaks-dependency-auto-installer' into 'develop'
Resolve "Auto updater breaks dependency auto installer"

See merge request slumber/multi-user!168
2022-02-10 15:10:37 +00:00
Swann Martinez
62f52db5b2 fix: auto updater with tags 2022-02-10 16:06:53 +01:00
Swann Martinez
745f45b682 fix: addon directory not cleared during an update 2022-02-10 15:44:46 +01:00
Swann Martinez
4b7573234a Merge branch 'develop' into 'master'
v0.5.0

See merge request slumber/multi-user!164
2022-02-10 13:15:45 +00:00
Swann Martinez
f84860f520 feat: update changelog 2022-02-10 12:06:29 +01:00
Swann Martinez
c7ee67d4dd fix: replication typo (@kromar) 2022-02-10 11:58:09 +01:00
Swann Martinez
7ed4644b75 feat: added 0.5.0 update to the changelog 2022-02-10 11:55:14 +01:00
Swann Martinez
e0c4a17be9 feat: update version 2022-02-10 11:23:46 +01:00
Swann Martinez
2a6181b832 fix: replication typo 2022-02-10 11:23:01 +01:00
Swann Martinez
0f7c9adec5 fix: Panel calss prefix warning 2022-02-10 11:20:11 +01:00
Swann Martinez
f094ec097c doc: remove replication version 2022-02-10 11:15:08 +01:00
Swann Martinez
2495b5b0e7 Merge branch '245-skin-modifier-vertex-radius-not-synchronized' into 'develop'
Resolve "skin modifier vertex radius not synchronized"

See merge request slumber/multi-user!165
2022-02-07 14:08:22 +00:00
Swann Martinez
cc829b66d1 fix: skin loading
related to #245
2022-02-07 15:04:36 +01:00
Swann Martinez
97cec4f9af Merge branch '224-doc-update-new-ui-0-5-0' into 'develop'
Doc update new UI 0.5.0

See merge request slumber/multi-user!150
2022-02-07 12:40:21 +00:00
Swann Martinez
102eb3ded0 fix: missing image 2022-02-07 13:36:44 +01:00
Swann Martinez
bea6373f03 fix: images lication 2022-02-07 13:31:49 +01:00
Swann Martinez
8c3845349a clean: remove the old glossary 2022-02-07 13:19:58 +01:00
Swann Martinez
9256d78d3c feat: disable workflow 2022-02-07 13:08:33 +01:00
Swann Martinez
bb952a507f feat: add contributor raw list
we may need more info from each contributor
2022-02-07 11:34:57 +01:00
Swann Martinez
3669aafcff Merge branch '244-text-material-not-replicating-for-online-sessions' into 'develop'
Resolve "Text Material not Replicating(for online sessions)"

See merge request slumber/multi-user!163
2021-12-17 15:20:05 +00:00
Swann
dfcfb84c20 fix: text curve material loading 2021-12-17 16:14:42 +01:00
Swann Martinez
5390e1a60c Merge branch '235-show-color-in-connected-user-pannel' into 'develop'
Resolve "Show color in connected user pannel"

See merge request slumber/multi-user!154
2021-12-13 21:35:33 +00:00
Swann
2910ea654b clean: row factor 2021-12-13 22:29:55 +01:00
Swann Martinez
ff2ecec18b Merge branch '243-server-crash-during-public-sessions' into 'develop'
Resolve "Server crash during public sessions"

See merge request slumber/multi-user!162
2021-12-10 15:00:06 +00:00
Swann
7555b1332a feat: update version 2021-12-10 15:56:47 +01:00
Swann
690e450349 fix: avoid to store Commit in the replication graph 2021-12-10 15:55:59 +01:00
Fabian
3e7e3a9b19 feat: user interface 2021-11-23 17:28:52 +01:00
Fabian
e27a16975c fix: hosting on internet links + keys features 2021-11-23 16:01:57 +01:00
Fabian
44f1dc1aa8 fix: general settings image link 2021-11-20 23:44:01 +01:00
Fabian
c62ed63de3 feat: add discord link 2021-11-20 23:20:12 +01:00
Swann Martinez
de32bd89e3 Merge branch '237-add-draw-user-option-for-the-session-snapshot-importer' into 'develop'
Resolve "Add draw user option for the session snapshot importer"

See merge request slumber/multi-user!156
2021-11-18 15:21:36 +00:00
Swann
50e86aea15 fix user drawing options 2021-11-18 16:05:24 +01:00
Swann
c05a12343c feat: selection drawing 2021-11-18 15:22:07 +01:00
Swann
a09193fba2 feat: expose user radius and intensity 2021-11-18 11:53:24 +01:00
Swann
60e21f2b8e fix: load user 2021-11-18 11:43:01 +01:00
Swann
421f00879f feat draw users 2021-11-18 11:40:56 +01:00
Swann
5ac61b5348 Merge branch 'develop' into 235-show-color-in-connected-user-pannel 2021-11-17 16:23:03 +01:00
Swann
189e5c6cf1 Merge branch 'develop' into 235-show-color-in-connected-user-pannel 2021-11-17 16:19:03 +01:00
Swann
964e6a8c63 feat: uesr meshes 2021-11-16 09:55:13 +01:00
Swann Martinez
80c81dc934 Merge branch '240-adding-music-to-the-sequencer-isn-t-replicating' into 'develop'
Resolve "Adding music to the sequencer isn't replicating"

See merge request slumber/multi-user!159
2021-11-09 09:29:58 +00:00
Swann
563fdb693d fix: sound not loading
Related to #240
2021-11-09 10:26:47 +01:00
Swann Martinez
a64eea3cea Merge branch '239-blender-3-x-compatibility' into 'develop'
Ensure blender 3.x compatibility : Fix geometry node outputs replication

See merge request slumber/multi-user!158
2021-11-09 08:48:30 +00:00
Swann
03ad7c0066 fix: geometry nodes input / output 2021-11-08 17:34:02 +01:00
Swann Martinez
d685573834 Merge branch '239-blender-3-x-compatibility' into 'develop'
Ensure blender 3.x version check

See merge request slumber/multi-user!157
2021-11-05 15:20:35 +00:00
Swann
0681b53141 fix: version check 2021-11-05 15:39:46 +01:00
Swann
6f02b38b0e fix(replication): missing version update 2021-11-03 16:37:12 +01:00
Swann
92c773dae9 Merge branch 'develop' of gitlab.com:slumber/multi-user into develop 2021-11-03 16:34:43 +01:00
Swann
f48ade6390 fix python 3.10 compatibility (@NotFood) 2021-11-03 16:32:40 +01:00
Swann Martinez
63c4501b88 Merge branch '236-crash-with-empty-after-a-reconnection' into 'develop'
Resolve "Crash with empty after a reconnection"

See merge request slumber/multi-user!155
2021-10-29 09:40:04 +00:00
Swann
06e21c86ce fix none attribute error 2021-10-21 12:19:46 +02:00
Swann
e28d3860da user color property 2021-10-21 12:00:12 +02:00
Swann
7b247372fb test: add user color 2021-10-21 12:00:00 +02:00
Fabian
bc47ef951a feat: getting started 2021-08-31 10:53:04 +02:00
Fabian
de7417f0da feat: firstlaunch + join/host 2021-08-27 09:46:17 +02:00
Swann Martinez
9d484b00e9 Merge branch '234-user-info-in-side-panel' into 'develop'
User Info in side panel

See merge request slumber/multi-user!153
2021-08-19 16:09:24 +00:00
Fabian
de9255f71c feat: presence overlay button+UInfo in side panel 2021-08-19 18:04:07 +02:00
Fabian
61cdfd7eca feat: begining of quick start host 2021-08-19 17:45:30 +02:00
Swann Martinez
99528ea3e0 Merge branch '232-fix-ui-host-and-lobby' into 'develop'
Resolve "fix ui host and lobby"

See merge request slumber/multi-user!152
2021-08-16 14:03:16 +00:00
Fabian
bb342951a5 fix: lobby init 2021-08-16 15:59:19 +02:00
Fabian
438a79177b fix: host solo 2021-08-16 12:02:10 +02:00
Fabian
947e9044c6 feat: add css/manual index/install/update 2021-08-16 10:35:17 +02:00
Swann
08fc49c40f fix: session private by default 2021-07-30 14:09:40 +02:00
Swann
d7e25b1192 fix: clean docker file 2021-07-30 13:47:31 +02:00
Swann
1671422143 Merge branch 'develop' of gitlab.com:slumber/multi-user into develop 2021-07-30 13:17:29 +02:00
Swann
a9620c0752 fix: docker server command 2021-07-30 13:16:43 +02:00
Swann Martinez
583beaf6fe Merge branch '231-server-public-session-private-issue' into 'develop'
Server "public session" private issue

See merge request slumber/multi-user!151
2021-07-28 15:34:24 +00:00
Fabian
126d2338f2 fix: server psrwd issue 2021-07-28 17:33:07 +02:00
Swann
24b0c0ed8a fix: get active server preset 2021-07-27 17:03:44 +02:00
Swann
07fc1cf000 fix: enable tests back 2021-07-27 11:08:57 +02:00
Swann
8e0131b3a8 feat: temporary disable test before fixing blender addon_tester 2021-07-26 18:29:06 +02:00
Swann
912a2d524c feat: try disable operator tests 2021-07-26 18:19:24 +02:00
Swann
82a5124d64 fix: unit tests 2021-07-26 18:16:21 +02:00
Swann
cca5bf903b fix: replication deployment 2021-07-26 18:05:36 +02:00
Swann Martinez
4c0d4cb1c7 Merge branch '218-new-ui-ux-implementation' into 'develop'
New UI/UX implementation

See merge request slumber/multi-user!140
2021-07-26 15:52:19 +00:00
Fabian
ca64797641 Merge branch 'develop' into 218-new-ui-ux-implementation 2021-07-26 17:51:01 +02:00
Fabian
a49d9ee437 feat: server ping timeout preferences 2021-07-26 17:42:13 +02:00
Fabian
4c1cd6b8f8 fix: review 2021-07-26 17:30:56 +02:00
Fabian
d6cda709a6 fix: replication conflict 2021-07-26 15:46:29 +02:00
Swann
4bc0feb3a5 fix: ReferenceError in update_external dependency by removing orphan nodes. 2021-07-23 19:35:56 +02:00
Fabian
59aab7159a fix: remove logging.info 2021-07-23 17:10:10 +02:00
Fabian
0a798bb21b feat: clean files+add repository sync icons 2021-07-23 12:51:16 +02:00
Swann
beaafce4fa Merge branch 'develop' into 218-new-ui-ux-implementation 2021-07-22 11:01:59 +02:00
Fabian
6f77337832 feat: request (with bug) 2021-07-22 10:55:18 +02:00
Fabian
07252d62df feat: fonctional UI, no server pswd/ping 2021-07-22 09:38:01 +02:00
Fabian
ac615cd134 feat: first+server list UI, ping/pswd unfonctional 2021-07-21 11:12:17 +02:00
Swann Martinez
ac84509b83 Merge branch 'develop' into 'master'
fix: old replication installation conflicts

See merge request slumber/multi-user!145
2021-07-20 14:28:04 +00:00
Swann
a4f9f6e051 fix: replication dependencies conflicts 2021-07-20 16:19:53 +02:00
Swann
10de88cdc9 fix: old replication installation conflicts 2021-07-20 16:06:24 +02:00
Swann Martinez
69565b3852 Merge branch 'develop' into 'master'
v0.4.0

See merge request slumber/multi-user!144
2021-07-20 13:41:29 +00:00
Swann
e4fa34c984 fix: addon version number 2021-07-20 15:37:11 +02:00
Swann
0dd685d009 doc: add missing presence flags 2021-07-20 15:11:38 +02:00
Swann
3e8c30c0ab fix: supported datablocks in readme 2021-07-20 14:59:30 +02:00
Swann
21cc3cd917 fix: update readme to reflect changes 2021-07-20 14:57:52 +02:00
Swann
81e620ee3d fix: documentations capture for 0.4.0 2021-07-20 14:50:33 +02:00
Swann
fb9bd108bd feat: update changelog to reflect v0.4.0 version 2021-07-20 14:19:33 +02:00
Fabian
4846fbb589 fix: server list working (no ping/lock/pop-up) 2021-07-19 16:03:12 +02:00
Swann Martinez
cab6625399 Merge branch '219-lock-annotation-doesn-t-sync' into 'develop'
Resolve "Lock annotation doesn't sync"

See merge request slumber/multi-user!143
2021-07-14 10:41:32 +00:00
Swann
1b81251a11 fix: annotation lock 2021-07-14 12:38:30 +02:00
Fabian
cf44e547a2 fix: presence_text_distance rename 2021-07-13 17:15:34 +02:00
Fabian
0269363c63 fix: overlay UI 2021-07-13 17:14:32 +02:00
Fabian
4ffca17c54 fix: edit>prefs UI/UX 2021-07-13 16:40:26 +02:00
Swann Martinez
77bf269fb5 Merge branch '221-optimize-user-selection-draw-code' into 'develop'
Resolve "Optimize user selection draw code"

See merge request slumber/multi-user!142
2021-07-13 14:37:09 +00:00
Swann
1e675132d4 fix: collection instances index offset 2021-07-13 16:33:46 +02:00
Swann
781287c390 refactor: use one drawcall for all selection bbox 2021-07-13 15:45:08 +02:00
Fabian
fc91b252f4 feat: edit>preferences + serverpassword ui 2021-07-12 18:01:35 +02:00
Fabian
41c7c569ca fix: link session status icons to session header 2021-07-12 14:55:41 +02:00
Fabian
a82d263f05 feat: add "icons" folder + init 2021-07-12 14:53:18 +02:00
Swann Martinez
d4476baa1b Merge branch '220-batch-right-selection-update' into 'develop'
Resolve "Batch right selection update"

See merge request slumber/multi-user!141
2021-07-12 10:20:23 +00:00
Swann
467e98906e feat: Batch right selection update
Related to https://gitlab.com/slumber/multi-user/-/issues/220
2021-07-12 12:06:45 +02:00
Swann
64a25f94a3 fix: gpencil material loading error
Now loading gpencil materials from uuid
2021-07-09 16:59:59 +02:00
Swann Martinez
e6996316be Merge branch '215-annotations-doesn-t-sync-correctly' into 'develop'
Resolve "Annotations doesn't sync correctly"

See merge request slumber/multi-user!138
2021-07-07 08:18:49 +00:00
Swann
cf4cd94096
refactor: remove gpencil dump stroke legacy
Related to #166 and #215
2021-07-07 10:15:23 +02:00
Swann
e9ab633aac
fix: annotations updates
Related to #215
2021-07-06 16:06:14 +02:00
Swann
297639e80f
fix: crash on changing workspace change 2021-07-06 15:39:19 +02:00
Swann Martinez
f0cc63b6f0 Merge branch '214-animated-object-transform-not-correctly-sync' into 'develop'
Resolve "Animated object transform not correctly sync"

See merge request slumber/multi-user!137
2021-07-06 12:32:39 +00:00
Swann
d433e8f241
fix: transform offset for object animated with a curve constraint
Related to #214
2021-07-06 14:29:20 +02:00
Swann Martinez
963a551a1e Merge branch '206-draw-active-mode-in-the-object-presence-overlay-2' into 'develop'
Draw active mode in the object presence overlay

See merge request slumber/multi-user!131
2021-07-01 12:57:01 +00:00
Fabian
d01a434fb7 fix: Review 2021-07-01 14:53:14 +02:00
Fabian
3a5a5fc633 fix : draw active mode UI side pannel 2021-07-01 11:58:52 +02:00
Swann Martinez
8926ab44e1 Merge branch '201-improved-image-support' into 'develop'
Resolve "Improved image support"

See merge request slumber/multi-user!136
2021-07-01 09:55:47 +00:00
Fabian
a8f96581c5 fix: new mode display 2021-06-30 15:34:03 +02:00
Fabian
440a4cc1cd feat: add mode visibily 2021-06-29 17:10:59 +02:00
Swann
a207c51973
fix: image renamin support
fix: sync Color Space Settings

related to #201
2021-06-29 15:59:26 +02:00
Swann Martinez
e706c8e0bf Merge branch '209-adding-a-scene-create-node-duplicates' into 'develop'
Resolve "Adding a scene create node duplicates"

See merge request slumber/multi-user!135
2021-06-28 08:30:22 +00:00
Swann
e590e896da
fix: scene duplicates by using data instead of the update id
Related to #209
2021-06-28 10:27:04 +02:00
Swann Martinez
4140b62a8e Merge branch '119-add-timeline-marker-sync' into 'develop'
Resolve "Add timeline marker sync"

See merge request slumber/multi-user!133
2021-06-24 15:52:12 +00:00
Swann
6d9c9c4532
fix: timeline marker selection
feat: basic test
2021-06-24 17:45:34 +02:00
Swann Martinez
e9e1911840 Merge branch '208-late-update-logging-error' into 'develop'
Resolve "Late update logging error"

See merge request slumber/multi-user!134
2021-06-24 15:28:56 +00:00
Swann
ab350ca7bc
fix: late update logging error
Related to #208
2021-06-24 17:24:08 +02:00
Fabian
0a8f0b5f88 feat: add mode overlay 2021-06-24 16:01:14 +02:00
Swann
2238a15c11
feat: initial markers support 2021-06-24 15:51:01 +02:00
Swann
de73f022e6
merge 2021-06-24 14:52:07 +02:00
Swann
f517205647
fix: doc authors 2021-06-24 14:51:00 +02:00
Swann
f33c3d8481
fix: doc version 2021-06-24 14:50:12 +02:00
Swann Martinez
71c69000ec Merge branch '207-repository-panel-filtering-is-boken' into 'develop'
Resolve "Repository panel filtering is boken"

See merge request slumber/multi-user!132
2021-06-24 12:49:06 +00:00
Swann
de1e684b3c
fix: name filtering 2021-06-24 14:35:59 +02:00
Swann Martinez
d87730cffb Merge branch '197-user-selection-bounding-box-glitches-for-non-mesh-objects' into 'develop'
User selection bounding box glitches for non-mesh objects

See merge request slumber/multi-user!129
2021-06-23 16:02:50 +00:00
Fabian
3f005b86ab fix : add enumerate / remove nb_object 2021-06-23 17:45:01 +02:00
Fabian
5098e5135d fix: bbox work for non-mesh objects+ins.collection 2021-06-23 17:00:05 +02:00
Swann Martinez
37cfed489c Merge branch '204-animation-doesn-t-sync-for-gpencil-materials' into 'develop'
Resolve "Animation doesn't sync for materials"

See merge request slumber/multi-user!128
2021-06-22 12:10:23 +00:00
Swann
9003abcd18
feat: notes for furtur improvements 2021-06-22 14:06:19 +02:00
Swann
a199e0df00
feat: apply bl_apply_child member to force dependencies reloading
fix: node_tree animation dependencies
2021-06-22 11:36:51 +02:00
Swann
3774419b7e
fix: force push is now pushing the whole node data instead of delta 2021-06-22 10:41:36 +02:00
Swann
3e552cb406
feat: gpencil materials animation support 2021-06-22 10:39:40 +02:00
Swann
9f381b44c8
fix: material animation support 2021-06-21 18:58:16 +02:00
Swann
ad795caed5
fix: only apply repository heads on connection 2021-06-21 18:38:43 +02:00
Swann
504dd77405
fix: scene cleaning 2021-06-21 17:10:05 +02:00
Swann
82022c9e4d
clean: only log ignored update in debug logging level 2021-06-18 15:45:51 +02:00
Swann
d81b4dc014
feat: enable delta back for all datablocks execpt gpencil, files and images 2021-06-18 15:30:39 +02:00
Swann Martinez
63affa079f Merge branch '199-filter-correctly-distant-updates-in-the-depsgraph-handler' into 'develop'
Resolve "Filter correctly distant updates in the depsgraph handler"

See merge request slumber/multi-user!126
2021-06-18 13:12:15 +00:00
Swann
fcf5a12dd0
fix: log verbosity level 2021-06-18 15:03:14 +02:00
Swann
b0529e4444
refactor: move handlers to hendlers.py 2021-06-18 14:59:56 +02:00
Swann
bdfd89c085
feat: temporary store applied update to ignore them. 2021-06-18 14:34:11 +02:00
Swann Martinez
ff1630f9cc Merge branch '194-smooth-brush-size-reset' into 'develop'
Resolve "Brush deleted on join"

See merge request slumber/multi-user!124
2021-06-16 12:30:31 +00:00
Fabian
5830fe1abb fix: add items_to_remove 2021-06-16 14:28:26 +02:00
Fabian
c609f72080 fix: All brushes 2021-06-16 12:29:56 +02:00
Swann
a28a6f91bd
feat: move testing to blender 2.93 2021-06-15 16:27:49 +02:00
Swann Martinez
a996f39d3b Merge branch '195-auto-updater-install-a-broken-version-of-the-addon' into 'develop'
Resolve "Auto updater install a broken version of the addon"

See merge request slumber/multi-user!123
2021-06-15 12:54:49 +00:00
Swann
7790a16034
fix: download the build artifact instead of the repository default zip
Related to #195
2021-06-15 14:51:37 +02:00
Swann Martinez
836fdd02b8 Merge branch '192-parent-type-isn-t-synced' into 'develop'
Resolve "Parent type isn't synced"

See merge request slumber/multi-user!122
2021-06-15 09:22:13 +00:00
Fabian
7cb3482353 fix: parent type and parent bone 2021-06-15 11:20:31 +02:00
Swann
041022056c
Merge branch 'develop' of gitlab.com:slumber/multi-user into develop 2021-06-14 17:32:50 +02:00
Swann
05f3eb1445
fix: update readme 2021-06-14 17:32:05 +02:00
Swann Martinez
17193bde3a fix: doc server .png names 2021-06-14 14:29:45 +00:00
Swann
a14b4313f5
feat: update to develop 2021-06-14 16:12:47 +02:00
Swann
b203d9dffd
Merge branch '188-intgrate-replication-as-a-submodule' into develop 2021-06-14 16:10:15 +02:00
Swann Martinez
f64db2155e Merge branch '49-connection-preset-system' into 'develop'
Connection-preset-system

See merge request slumber/multi-user!121
2021-06-14 13:50:58 +00:00
Fabian
e07ebdeff5 fix: remove ui overwrite class 2021-06-14 15:46:57 +02:00
Fabian
3d6453f7a2 feat: doc 2021-06-14 15:17:30 +02:00
Fabian
7421511079 fix: override operator 2021-06-14 15:17:07 +02:00
Fabian
bc24525cec fix: new UI/UX 2021-06-11 16:57:02 +02:00
Swann
699cf578e2
feat: prevent updates in sclupt mode 2021-06-11 16:42:23 +02:00
Swann
e9b4afb440
refactor: enable partial delta based replication 2021-06-11 15:28:37 +02:00
Fabian
0c6491590e fix: admin password root 2021-06-11 12:18:51 +02:00
Fabian
b87e733ddc fix: name conflict + responsive enum 2021-06-11 12:13:23 +02:00
Fabian
cb0962b484 feat: server preset working with bad ui/ux 2021-06-10 15:39:12 +02:00
Swann
1fc25412ac
fix: constraint differential update support 2021-06-10 15:21:25 +02:00
Swann
b5405553dc
refactor: install replication dependencies in libs 2021-06-09 18:16:43 +02:00
Fabian
a1b6fb0533 feat: server preset 2021-06-08 17:03:43 +02:00
Fabian
b6a8a2ec01 Revert "doc: comment ui draw()"
This reverts commit f7c4f5d1fe.
2021-06-08 15:02:53 +02:00
Fabian
3e41b18af1 Merge branch '49-connection-preset-system' of https://gitlab.com/slumber/multi-user into 49-connection-preset-system 2021-06-08 15:00:50 +02:00
Fabian
f7c4f5d1fe doc: comment ui draw() 2021-06-08 14:58:57 +02:00
Swann
c616054878
tour du python blender 2021-06-07 17:06:41 +02:00
Swann
5c08493774
fix 'GraphObjectStore' object has no attribute 'object_store' 2021-06-04 18:30:54 +02:00
Swann
af8a138b4f
fix: modifier order 2021-06-04 17:17:30 +02:00
Swann
6d9216f14a
refactor: cleanup repository 2021-06-04 16:07:02 +02:00
Swann
fc4fb088bb
refactor: repository api clean 2021-06-04 14:02:09 +02:00
Swann
98553ba00c
refactor: remove get_nodes 2021-06-04 12:13:53 +02:00
Swann
1e15a12b10
refactor: remove list 2021-06-04 12:07:54 +02:00
Swann
569543650f
feat: skip external updates 2021-06-03 15:43:47 +02:00
Swann
07358802f7
refactor: fix scene item removal 2021-06-03 15:03:09 +02:00
Swann
a059fafe12
feat: add mutate to scene delta 2021-06-03 11:43:24 +02:00
Swann
297f68ccfe
refactor: only apply node when it is necessary (skip for host) 2021-06-03 11:41:25 +02:00
Swann
c9c70d1e08
refactor: stamp datablock during apply 2021-06-03 11:20:54 +02:00
Swann
a34f58ef3f
fix: cherrypick TCP idle bug 2021-06-02 23:10:13 +02:00
Swann
e7b7f38991
fix: change rights 2021-06-02 17:49:22 +02:00
Swann
392e0aaaa3
refactor: remove missing parameter 2021-06-02 15:45:11 +02:00
Swann
4c774d5d53
refactor: move update user metadata to porcelain 2021-06-02 12:59:53 +02:00
Swann
4c4cf8a970
refactor: move rm to porcelain 2021-06-02 11:47:41 +02:00
Swann
211d0848c2
fix: replication version 2021-06-02 11:39:37 +02:00
Swann
c9665c4719
refactor: move unlock/lock/kick to porcelain 2021-06-02 11:31:23 +02:00
Swann
431fe0d840
refactor: move lock/unock to porcelain 2021-06-02 10:22:37 +02:00
Swann
df7ca66ad8
fix: repo dumps api 2021-06-02 09:35:55 +02:00
Swann
c2d2db78e6
refactor: temporary remove name resolution 2021-06-01 15:47:05 +02:00
Swann
ad89a4e389
fix: disable mutable delta for scene 2021-06-01 14:53:17 +02:00
Swann
6ca6d4443d
refactor: move load/dumps to repository 2021-05-31 11:39:54 +02:00
Swann
81c9b5fc06
fix: animation loading 2021-05-21 23:02:42 +02:00
Swann
9fddfe084c
fix: annotation 2021-05-21 17:29:22 +02:00
Swann
ca40523393
fix: apply and resolve 2021-05-21 17:14:28 +02:00
Swann
76e28ced21
refactor: remove legacy data 2021-05-21 15:40:45 +02:00
Swann
55c6002b28
feat: update version 2021-05-20 17:22:00 +02:00
Swann
8d5c8aded3
refacor: code formating 2021-05-20 09:57:44 +02:00
Swann
8ebba80b97
refactor: add diff back 2021-05-19 17:44:42 +02:00
Swann
50d6c6b3c8
fix: filter 2021-05-19 15:59:36 +02:00
Swann
f0b03c50f2
refactor: fix tests 2021-05-19 15:12:11 +02:00
Swann
28e83a38e6
refactor: add back armature lightprobes, sound and speaker 2021-05-19 15:05:54 +02:00
Swann
2e261cd66b
refactor: add particle and lattive back 2021-05-19 14:40:13 +02:00
Swann
3f6e4f7333
refactor: add texts back 2021-05-19 14:23:56 +02:00
Swann
49fadf084a
refactor: add gpencil back 2021-05-19 13:56:42 +02:00
Swann
e2e0dc31c1
refactor: add volume and world support 2021-05-19 13:42:34 +02:00
Swann
389bbd97d5
refactor: add image and file back 2021-05-19 13:31:57 +02:00
Swann
19602691d3
feat: texture 2021-05-19 11:43:01 +02:00
Swann
2e2ff5d4bf
refactor: add material nodegroup back 2021-05-19 11:25:56 +02:00
Swann
fef6559ce0
refactor: add light and camera support back 2021-05-19 10:52:04 +02:00
Swann
5f669fd49a
refactor: add camera back 2021-05-19 09:55:07 +02:00
Swann
330ff08fd3
refactor: add collection back 2021-05-19 09:47:01 +02:00
Swann
f3be8f9623
feat: bring back icons 2021-05-19 09:37:50 +02:00
Swann
ffb70ab74c
refactor: protocol refactoring part 1 (mesh, object, action, scene) 2021-05-18 23:14:09 +02:00
Swann
26140eefb2
refactor: clear replicated datablock init states 2021-05-18 18:23:28 +02:00
Swann
cdf0433e8a
refactor: move fetch to repository 2021-05-18 17:17:10 +02:00
Swann
acd70f73bf
refactor: add remote
refactor: move push to porcelain
2021-05-18 16:54:07 +02:00
Swann
36c3a9ab0b
refactor: remove sanitize 2021-05-18 11:01:55 +02:00
Swann
cfb1afdd72
Revert "feat: node sanitize on collection and scene update"
This reverts commit fb1c985f31.
2021-05-18 11:00:05 +02:00
Swann
4eeb80350e
fix: layer info missing 2021-05-18 10:54:13 +02:00
Swann
fb1c985f31
feat: node sanitize on collection and scene update 2021-05-17 17:35:34 +02:00
Swann
689c2473d6
fix: commit 2021-05-17 17:18:17 +02:00
Swann
41620fce90
fix: commit 2021-05-17 17:04:43 +02:00
Swann
249bcf827b
fix: collection instance bounding box selection 2021-05-17 16:03:01 +02:00
Swann
d47eab4f26
refactor: move commit to porcelain 2021-05-17 11:12:18 +02:00
Swann
f011089d82
refactor: removed apply from replicated datablock 2021-05-17 10:52:28 +02:00
Swann
acc58a1c9f
fix: tcp keepalive IDLE time 2021-05-16 22:26:53 +02:00
Swann
24d850de9f
refactor: get metadata updates optimization back 2021-05-11 11:41:43 +02:00
Swann
b045911a59
refactor: get diff back for testing 2021-05-10 12:04:45 +02:00
Swann
a67be76422
feat: delta commit 2021-05-09 17:42:56 +02:00
Swann
32033c743c
feat: update repllication version 2021-05-07 17:10:23 +02:00
Swann
5da8650611
fix: get replication version 2021-05-07 16:56:00 +02:00
Swann
aec5096f87
feat: update submodule url 2021-05-07 16:12:04 +02:00
Swann
fba39b9980
fix: ci with submodules 2021-05-07 15:47:53 +02:00
Swann
6af3e4b777
refactor: add threaded data handling back on server side 2021-05-04 16:25:36 +02:00
Swann
58d639e9d8
feat: add replication as a submoduke 2021-05-04 14:56:50 +02:00
Swann Martinez
0efe5d5a10 Merge branch 'remove-services' into 'develop'
refactor: differential revision Stage 1

See merge request slumber/multi-user!119
2021-05-04 12:24:05 +00:00
Swann
2ad93cf304
Merge branch 'develop' into remove-services 2021-04-30 16:53:02 +02:00
Swann
771d76a98b
fix: missing shapekeys attr 2021-04-30 16:51:11 +02:00
Swann
1e83241494
feat: remove pull socket 2021-04-30 16:26:20 +02:00
Swann
1bcbff3ed4
Merge branch 'develop' into remove-services 2021-04-29 14:41:55 +02:00
Swann
9a45fe7125
fix: shapekey animation data 2021-04-29 14:41:11 +02:00
Swann Martinez
207901afdd Merge branch '184-uv-project-modifier-target-object-doesn-t-sync' into 'develop'
Resolve "UV project modifier target object doesn't sync"

See merge request slumber/multi-user!118
2021-04-29 09:11:47 +00:00
Swann
c6eb1ba22f
fix: shapekey performances
Related to #187
2021-04-29 11:06:46 +02:00
Swann
ba4168d0fd
Merge branch 'develop' into remove-services 2021-04-28 16:56:20 +02:00
Swann
00e7adf022
fix: Image Empty is not loading.
Related to #186
2021-04-28 10:01:04 +02:00
Swann
d9d8ca7ca0
revert: image source replication until a proper fix is done 2021-04-23 15:35:19 +02:00
Swann
e8cd271bd8
fix: renable gitlab-ci file 2021-04-23 11:48:01 +02:00
Swann
e71af6402c
feat: increment addon version 2021-04-23 11:46:29 +02:00
Swann
dd1c6a4fc7
feat: enable back ci 2021-04-23 11:45:47 +02:00
Swann
7fe1ae83b1
feat: update replication version to the right one 2021-04-23 11:25:15 +02:00
Swann
a7ad9d30c3
Merge branch 'develop' into remove-services 2021-04-23 11:21:16 +02:00
Swann
14779be1ed
feat: support video file as camera background images 2021-04-22 15:52:06 +02:00
Swann
a36c3740cc
fix: load driver variable without id 2021-04-22 15:00:08 +02:00
Swann
d2108facab
feat: fcurve modifiers support 2021-04-22 14:52:43 +02:00
Swann
e5651151d9
fix: having both animation and drivers on the same object 2021-04-22 14:00:26 +02:00
Swann
fb61b380b6
fix: uv_projector modifier
refactor: move modifier related code to dump_modifiers and load_modifier_custom_data
2021-04-22 11:05:34 +02:00
Swann Martinez
57fdd492ef Merge branch 'develop' into 'master'
fix: auto-updater operators registration to ensure blender 2.93 compatibility

See merge request slumber/multi-user!117
2021-04-15 13:39:47 +00:00
Swann
e538752fbc
Merge branch 'master' of gitlab.com:slumber/multi-user into develop 2021-04-15 15:31:59 +02:00
Swann
53eaaa2fcd
fix: auto-updater operator registration for blender 2.93 compatibility 2021-04-15 15:28:59 +02:00
Swann Martinez
a7e9108bff Merge branch 'develop' into 'master'
v0.3.0

See merge request slumber/multi-user!106
2021-04-14 14:32:24 +00:00
Swann
570909a7c4
fix: prevent field from being dumped if unused
fix: bl_object tests
2021-04-14 16:25:21 +02:00
Swann
736c3df7c4
feat: remove new particle systems
clean: remove logs
2021-04-14 15:50:53 +02:00
Swann
8e606068f3
fix: particle system duplication
feat: update Readme
2021-04-14 15:29:02 +02:00
Swann
eb631e2d4b
feat: update changelog 0.3.0 release 2021-04-14 14:36:06 +02:00
Swann
70641435cc
feat: initial rigid body supports 2021-04-14 12:25:16 +02:00
Swann
552c649d34
feat: physics forcefield and collision support 2021-04-14 11:49:34 +02:00
Swann
d9d5a34653
clean: remove libs 2021-04-14 09:56:07 +02:00
Swann
12acd22660
feat: ignore some attributes 2021-04-14 09:54:34 +02:00
Swann
826a59085e
feat: particle texture slot support 2021-04-14 09:45:18 +02:00
Swann
5ee4988aca
Merge branch '24-particle-support' into develop 2021-04-13 22:45:27 +02:00
Swann
cb85a1db4c
feat: dual identification for object parents 2021-04-13 14:37:43 +02:00
Swann
5e30e215ab
fix: empty node 2021-04-02 16:37:47 +02:00
Swann
9f167256d0
fix: node frame trasform 2021-04-02 16:12:51 +02:00
Swann
4e19c169b2
fix: node_groups unordered socket loading
fix: geometry_node sample texture handling
fix: geometry node dependencies
2021-04-02 15:51:31 +02:00
Swann
9c633c35ec
fix: geometry node socket for blender 2.93 2021-04-02 10:01:45 +02:00
Swann Martinez
9610b50a49 Merge branch '181-geometry-nodes-int-float-inputs-doesn-t-sync' into 'develop'
Resolve "Geometry nodes int/float inputs doesn't sync"

See merge request slumber/multi-user!116
2021-03-31 13:42:26 +00:00
Swann
67d18f08e2
fix: Timer not unregistered error
fix: handle correctly unsupported float parameter for geometry nodes
fix: Material loading
2021-03-31 15:38:35 +02:00
Swann
9d0d684589
fix: geometry nodes str, float, int loading 2021-03-31 11:19:03 +02:00
Swann
2446df4fe3
feat: raise the default timeout to 5 second 2021-03-21 09:28:54 +01:00
Swann
07862f1cf0
fix: missing hue_interpolation 2021-03-19 11:07:04 +01:00
Swann
3a02711baa
feat: faster root management 2021-03-14 20:58:25 +01:00
Swann
c7e8002fed
fix: apply api
clean: ipc port propertie
2021-03-14 18:32:04 +01:00
Swann
f4e7ec6be8
Merge branch 'develop' into 173-differential-revision-milestone-2-replication-refactoring 2021-03-14 17:46:23 +01:00
Swann Martinez
480818fe85 Merge branch '180-parent-relation-have-doesn-t-keeps-transform' into 'develop'
Resolve "Parenting objects doesn't keeps transform"

See merge request slumber/multi-user!115
2021-03-13 17:35:42 +00:00
Swann
b965c80ba5
fix: parent transform
fix: race  condition for COMMON objects

related to #180
2021-03-13 18:32:20 +01:00
Swann
235db712fd
fix: api 2021-03-11 15:45:48 +01:00
Swann
647ac46c01
feat: move apply to porcelain
feat: move data access to repository
feat: object_store layer to repository (with GraphObjectStore)
revert: missing network services
2021-03-09 14:07:59 +01:00
Swann
8e3c86561f
refactor: move add to porcelain 2021-03-09 10:19:51 +01:00
Swann
dba19e831d
Merge branch 'develop' into 173-differential-revision-milestone-2-replication-refactoring 2021-03-08 22:16:14 +01:00
Swann
93df5ca5fa
fix: disconnect callback 2021-03-06 10:20:57 +01:00
Swann
b17104c67e
fix: naming 2021-03-05 10:35:35 +01:00
Swann
b66d0dd4ce
Merge branch 'develop' of gitlab.com:slumber/multi-user into develop 2021-03-04 15:49:00 +01:00
Swann
9487753307
feat: fix object and collection support for geometry nodes 2021-03-04 15:48:36 +01:00
Swann Martinez
df1257ca4c Merge branch '179-parent-relation-can-t-be-removed' into 'develop'
Resolve "Parent relation can't be removed"

See merge request slumber/multi-user!113
2021-03-04 13:25:39 +00:00
Swann
875b9ce934
feat: temporary disable CI jobs for this branch because of breaking changes 2021-03-04 14:24:03 +01:00
Swann
2d638ef76f
refactor: interface api changes 2021-03-04 14:22:54 +01:00
Swann
cc5a87adb8
fix: prevent matrix_parent_inverse from being reset by loading parents only if its necessary 2021-03-03 11:00:47 +01:00
Swann
19c56e590b
feat: remove parent as node dependency 2021-03-03 10:03:57 +01:00
Swann
d0e80da945
fix: object parenting can't be removed
Related to #179
2021-03-03 09:55:48 +01:00
Swann Martinez
0ccd0563ea feat: testing doc building with python 3.8 2021-03-02 12:56:12 +00:00
Swann Martinez
1c3394ce56 feat: sphinx-material theme 2021-03-02 12:46:26 +00:00
Swann Martinez
d2b63df68e Merge branch '178-move-documentation-hosting-to-gitlab-page' into 'develop'
Resolve "Move documentation hosting to gitlab page"

See merge request slumber/multi-user!112
2021-03-02 09:21:57 +00:00
Swann
3d9c78c2f9
doc: only build for master/develop 2021-03-02 10:18:11 +01:00
Swann
4726a90a4a
doc: reflect doc hosting changes to the Readme.md 2021-03-02 10:16:59 +01:00
Swann Martinez
73b763d85f fix: job ordering error 2021-03-02 09:09:50 +00:00
Swann Martinez
5e29c6fe26 Update .gitlab/ci/doc.gitlab-ci.yml 2021-03-02 09:08:39 +00:00
Swann Martinez
113ab81cbf Update .gitlab/ci/doc.gitlab-ci.yml 2021-03-02 09:07:50 +00:00
Swann Martinez
d2215b662c feat: update jobs dependencies 2021-03-02 09:06:32 +00:00
Swann Martinez
238a34d023 feat: needs test to success 2021-03-02 09:05:21 +00:00
Swann Martinez
55ca8a7b84 Update .gitlab/ci/doc.gitlab-ci.yml 2021-03-02 09:03:19 +00:00
Swann
7049c1723d
feat: initial CI job for building the documentation for gitlab page 2021-03-02 09:58:06 +01:00
Swann Martinez
6586647eac Merge branch '177-support-geometry-nodes' into 'develop'
feat: initial support for Geometry Nodes

See merge request slumber/multi-user!110
2021-02-26 16:01:26 +00:00
Swann
fb6f170d60
clean: remove prints
doc: add new def docstrings
2021-02-26 14:31:05 +01:00
Swann
c1c39438e3
feat: input value support 2021-02-26 12:27:56 +01:00
Swann
317fc03f87
feat: geometry node initial support
refactor: resolve datablocks by uuid by devault
fix: modifier texture dependencies
2021-02-26 10:38:50 +01:00
Swann
505f3ab770
fix: external depencies removed during undo 2021-02-23 13:20:01 +01:00
Swann Martinez
209062af4f Merge branch '175-new-object-generated-during-separate-object-operator-doesn-t-sync' into 'develop'
Resolve "New object generated during separate object operator doesn't sync"

See merge request slumber/multi-user!108
2021-02-19 09:05:41 +00:00
Swann
88bab2a4c6
fix: separate objects
Related to #175
2021-02-19 10:00:00 +01:00
Swann
a91bae3506
fix: reload object after mesh loading to prevent it from loosing vertex_group and shape_keys 2021-02-16 21:58:26 +01:00
Swann
0a96643a9f
feat: missing attr (seam, sharp) 2021-02-16 15:36:44 +01:00
Swann Martinez
261d4d9610 Merge branch '172-vertex-group-assignation-doesn-t-sync-correctly' into 'develop'
Resolve "Vertex group assignation doesn't sync correctly"

See merge request slumber/multi-user!107
2021-02-16 10:01:41 +00:00
Swann
3293741969
fix: vertex group assignation
Related to #172
2021-02-16 10:58:08 +01:00
Swann
3eee8db1ae
fix: wrong version number 2021-02-12 17:40:07 +01:00
Swann
031b143843
fix: attempt to fix tcp timeout on linux with ZMQ_TCP_KEEPALIVE_IDLE 2021-02-12 17:30:46 +01:00
Swann Martinez
7dd6e38e3f Merge branch '132-fix-undo-edit-last-operation-redo-handling-2' into 'develop'
Resolve "Fix undo & edit last operation & redo handling"

See merge request slumber/multi-user!87
2021-02-12 13:13:18 +00:00
Swann
1dd0235061
clean: timer related settings 2021-02-12 10:49:04 +01:00
Swann
cdcb2de786
clean: remove apply related settings
fix: image reloading after modifications
2021-02-12 10:48:29 +01:00
Swann
0b88631250
refactor: move session dump_db to replication as session.save 2021-02-09 18:09:39 +01:00
Swann
c00b2a2d7d
feat: explicit state loading error 2021-02-09 14:20:08 +01:00
Swann
1f0f44fdbf
clean: materials dump 2021-02-09 14:14:53 +01:00
Swann
8262fb9d4e
feat: time stamped logs files 2021-02-05 11:50:58 +01:00
Swann
c2114b593e
Merge branch 'develop' into 132-fix-undo-edit-last-operation-redo-handling-2 2021-02-05 11:35:56 +01:00
Swann Martinez
7e28ca3fa1 Merge branch '171-add-nurbs-support-only-curve' into 'develop'
Resolve "Add nurbs support (only curve)"

See merge request slumber/multi-user!105
2021-02-05 10:31:21 +00:00
Swann
d0bd4193d9
fix: nurbs curve
feat: curve material support
2021-02-05 11:22:11 +01:00
Swann Martinez
d09479fd47 Merge branch '166-improve-grease-pencil-replication-performances' into '132-fix-undo-edit-last-operation-redo-handling-2'
Resolve "Improve Grease Pencil replication performances"

See merge request slumber/multi-user!100
2021-02-05 09:45:54 +00:00
Swann Martinez
07cfb85561 Merge branch '170-gpencil-fill-strokes-aren-t-always-working' into '166-improve-grease-pencil-replication-performances'
Resolve "Gpencil fill strokes aren't always working"

See merge request slumber/multi-user!104
2021-02-05 09:30:13 +00:00
Swann
cf0d7a1122
fix: temporary for stroke geometry update to fix triangulation with fill materials
Related to 170
2021-02-05 10:25:50 +01:00
Swann Martinez
3f335c7031 Merge branch 'feature/docupdate_serverlogs' into 'develop'
document how to retrieve cloud-hosted server logs

See merge request slumber/multi-user!103
2021-02-02 19:51:12 +00:00
brybalicious
2180db5206 document how to retrieve cloud-hosted server logs 2021-02-02 19:40:47 +01:00
Swann
e6110b4cea
Merge branch '132-fix-undo-edit-last-operation-redo-handling-2' into 166-improve-grease-pencil-replication-performances 2021-02-02 11:09:54 +01:00
Swann
819598ebd9
Merge branch 'develop' into 132-fix-undo-edit-last-operation-redo-handling-2 2021-02-02 11:09:11 +01:00
Swann Martinez
1be43f0336 Merge branch '168-holdout-option-for-grease-pencil-materials-isn-t-replicating' into 'develop'
fix: grease pencil material holdout is not synced

See merge request slumber/multi-user!102
2021-02-02 10:08:24 +00:00
Swann
6a5ff9a097
fix: grease pencil material holdout is not synced 2021-02-02 11:04:46 +01:00
Swann
86cb3d29fb
fix: wrong grease pencil frame after layer update 2021-01-29 16:29:27 +01:00
Swann
589702dab7
feat: continous update support by toggling the sync_in_editmode flag
Related to #166
2021-01-29 11:54:13 +01:00
Swann
ed76210270
Merge branch '132-fix-undo-edit-last-operation-redo-handling-2' into 166-improve-grease-pencil-replication-performances 2021-01-29 11:46:45 +01:00
Swann
75c4f42796
Merge branch 'develop' into 132-fix-undo-edit-last-operation-redo-handling-2 2021-01-29 11:46:05 +01:00
Swann
1fd54769b9
feat: enable build and deploy for all branch 2021-01-29 11:45:14 +01:00
Swann
c4484b4b51
Merge branch '132-fix-undo-edit-last-operation-redo-handling-2' into 166-improve-grease-pencil-replication-performances 2021-01-29 11:43:33 +01:00
Swann Martinez
4eb787cc0f Merge branch '167-sequencer-strips-does-not-sync-in-132-fix-undo-edit-last-operation-redo-handling-2-branch' into '132-fix-undo-edit-last-operation-redo-handling-2'
Resolve "Sequencer strips does not sync in `132-fix-undo-edit-last-operation-redo-handling-2 branch`"

See merge request slumber/multi-user!101
2021-01-29 10:43:06 +00:00
Swann
c855b5a424
clean: removed logs 2021-01-29 11:39:00 +01:00
Swann
ee4083c134
feat: evaluate gpencil on layer change/ frame change/ mode change
Related to #166
2021-01-29 11:28:50 +01:00
Swann
0325e9d0bd
feat: move sequencer to scene 2021-01-29 00:06:41 +01:00
Swann
21dc95b5a7
Merge branch 'develop' into 132-fix-undo-edit-last-operation-redo-handling-2 2021-01-28 09:58:27 +01:00
Swann
d8161f22f3
fix: syntax error 2021-01-28 09:54:19 +01:00
Swann
94f8bff231
fix: envvar synthax error 2021-01-28 09:53:57 +01:00
Swann
d3a1094cc2
feat: gitlab CI tag by branch name 2021-01-28 09:48:36 +01:00
Swann
d08e0a80a4
Merge branch 'develop' into 132-fix-undo-edit-last-operation-redo-handling-2 2021-01-27 11:15:02 +01:00
Swann Martinez
26148e9934 Merge branch '165-delete-animations-is-not-synced' into 'develop'
Resolve "Delete animations is not synced"

See merge request slumber/multi-user!97
2021-01-27 10:12:48 +00:00
Swann
0a7be03c6f
fix: animation data attribute check 2021-01-27 11:06:46 +01:00
Swann
b6449a7da2
fix: animation deletion synchronization
Related to #165
2021-01-27 11:01:03 +01:00
Swann
36038effdf
Merge branch 'develop' into 132-fix-undo-edit-last-operation-redo-handling-2 2021-01-26 15:46:09 +01:00
Swann Martinez
cb90c196a5 Merge branch '164-duplicating-objects-broke-they-parent-relation' into 'develop'
Resolve "Duplicating objects broke they parent relation"

See merge request slumber/multi-user!96
2021-01-26 14:44:26 +00:00
Swann
ae3c9fe43e
clean: remove hardcoded parent assignation 2021-01-26 15:42:37 +01:00
Swann
2983195af4
fix: objects parenting error 2021-01-26 15:40:00 +01:00
Swann
4d69faf186
clan: remove diff_method 2021-01-22 14:24:19 +01:00
Swann Martinez
2304563b6e Merge branch '163-support-adding-scene-during-the-session' into '132-fix-undo-edit-last-operation-redo-handling-2'
Resolve "Support adding scene during the session"

See merge request slumber/multi-user!95
2021-01-22 10:22:14 +00:00
Swann
1cfb4e797e
fix: handle none uuid 2021-01-22 11:18:28 +01:00
Swann
8f95158f08
feat: initial support for new scenes 2021-01-21 14:48:07 +01:00
Swann
5949e3c5cc
Merge branch 'develop' of gitlab.com:slumber/multi-user into 132-fix-undo-edit-last-operation-redo-handling-2 2021-01-21 11:06:54 +01:00
Swann Martinez
790f145022 Merge branch '162-sync-cycles_visibility-settings' into 'develop'
feat: sync cycle visibility settings

See merge request slumber/multi-user!94
2021-01-21 10:05:42 +00:00
Swann
ec40862dd0
feat: sync cycle visibility settings 2021-01-21 10:51:28 +01:00
Swann
9cc1c92e0e
clean: remove unused var 2021-01-20 16:02:15 +01:00
Swann
7a716b4c37
feat: auto remove nodes on undo/redo
feat: purge operator
2021-01-15 23:43:35 +01:00
Swann
a4ef8a6344
feat: skip update in sculpt mode by default 2021-01-15 23:14:45 +01:00
Swann
c5e20085f0
clean: move flush history to the debug logs 2021-01-15 17:02:29 +01:00
Swann
f4463f9cfe
fix: greace pencil object vertexgroup dump crash by adding a warning 2021-01-15 16:54:36 +01:00
Swann
a212445927
clean: remove push timer 2021-01-15 16:41:32 +01:00
Swann
89a8891073
fix: RNA removed error by disabling the push timer 2021-01-13 15:49:07 +01:00
Swann
52ebb874b0
fix: edit-mode error while pushing 2021-01-13 15:36:41 +01:00
Swann
2913e6d5a7
fix: file push 2021-01-13 15:09:10 +01:00
Swann
6a00b58600
fix: timeout error on connection 2021-01-13 14:45:23 +01:00
Swann
2bde136bb6
fix: annotation tool 2021-01-13 14:24:16 +01:00
Swann
f5c77fec3a
fix: fail to push collectionsby reverting the commit caching policy 2021-01-12 21:29:36 +01:00
Swann
d3211199c4
fix: handler not correctly removed 2021-01-12 13:36:21 +01:00
Swann Martinez
2d90ea7679 Merge branch '160-undo-performance-improvement' into '132-fix-undo-edit-last-operation-redo-handling-2'
Resolve "Undo performance improvement"

See merge request slumber/multi-user!93
2021-01-12 10:37:10 +00:00
Swann
abd846fc8d
clean: push timer
feat: purge stagging on pre--redo/undo
2021-01-12 11:33:48 +01:00
Swann
e3bd7ea445
feat: improve commit times by using cache from the diff 2021-01-12 10:29:27 +01:00
Swann
12bd4a603b
feat: added a push timer to control the push frequency 2021-01-11 19:54:57 +01:00
Swann Martinez
3c31fb5118 Merge branch '158-exception-access-violation-during-undo-redo' into '132-fix-undo-edit-last-operation-redo-handling-2'
Resolve "Exception access violation during Undo/Redo"

See merge request slumber/multi-user!92
2021-01-09 21:38:25 +00:00
Swann
c24f70fad5
feat: force to use depsgraph update mode 2021-01-09 22:36:00 +01:00
Swann
ca2d8e49b5
feat: update replication 2021-01-06 13:58:58 +01:00
Swann
4b1499f6ae
fix: construct error 2020-12-29 17:38:21 +01:00
Swann
f0c1fe9c87
Merge branch 'develop' into 132-fix-undo-edit-last-operation-redo-handling-2 2020-12-29 14:30:01 +01:00
Swann Martinez
dfaf1be4ff Merge branch '106-skin-weight-isn-t-properly-replicated' into 'develop'
Resolve "Skin weight isn't properly replicated"

See merge request slumber/multi-user!91
2020-12-24 15:42:46 +00:00
Swann
51cb099c4c
feat: skin vertices data replication
fix: empty modifiers stask
2020-12-24 16:37:53 +01:00
Swann Martinez
64731a9198 Merge branch '157-drivers-data-path-index-isn-t-replicated' into 'develop'
fix: multiple drivers with same data_path on different index

See merge request slumber/multi-user!90
2020-12-24 14:01:07 +00:00
Swann Martinez
213523c8d6 Merge branch '156-constraint-replication-is-broken' into 'develop'
Resolve "Constraint replication is broken"

See merge request slumber/multi-user!89
2020-12-24 14:01:01 +00:00
Swann
4fdb72f874
fix: constraints destructor 2020-12-24 14:56:59 +01:00
Swann
1412fc638c
fix: object constraint dump 2020-12-24 14:56:40 +01:00
Swann
7920f67aea
fix: multiple drivers with same data_path on different index 2020-12-24 14:46:18 +01:00
Swann
a0c0f781e2
feat: update addon version to reflect the future release 2020-12-24 11:07:10 +01:00
Swann Martinez
ec74ea0038 Merge branch '155-bone-roll-is-not-sync' into 'develop'
Resolve "Bone roll is not sync"

See merge request slumber/multi-user!88
2020-12-24 10:03:50 +00:00
Swann
2c016833fd
fix: bone roll replication
More info about the issue:
https://devtalk.blender.org/t/how-to-query-determine-the-roll-of-a-bone-in-pose-object-mode/14251/2

Related to #155
2020-12-24 10:53:16 +01:00
Swann
3d9da73ab0
feat: flush history on collection and scene update only
feat: enable deploy for undo branch
2020-12-23 18:46:29 +01:00
Swann
2f4e30f432
fix: catch runtime error
feat: enable build for undo branch
2020-12-23 17:57:36 +01:00
Swann
cd1e535a56
feat: initial undo tests 2020-12-23 17:27:43 +01:00
Swann Martinez
8a8cc0b322 Merge branch '154-object-display-data-loading-error' into 'develop'
Resolve "Object display data  loading error"

See merge request slumber/multi-user!86
2020-12-22 23:23:26 +00:00
Swann
1e64e17ff4
fix: display key error
Related to #154
2020-12-23 00:21:31 +01:00
Swann Martinez
66b6c06a2c Merge branch 'export_replication_graph' into 'develop'
Export replication graph

See merge request slumber/multi-user!85
2020-12-22 22:31:27 +00:00
Swann
45fbc46d8d
doc: added initial documentation for auto save 2020-12-22 16:58:00 +01:00
Swann
39e3c1dbd5
refactor: change bl_label
Related to https://gitlab.com/slumber/multi-user/-/issues/153
2020-12-22 16:16:06 +01:00
Swann
f043b03128
clean: timers interface
feat: cancel autosave operator
2020-12-22 16:04:50 +01:00
Swann Martinez
ffe419a46e Merge branch 'develop' into 'master'
v0.2.0

See merge request slumber/multi-user!73
2020-12-17 13:34:41 +00:00
Swann
d4a0f782aa
fix: update CHANGELOG.md to reflect the release note 2020-12-17 14:31:32 +01:00
Swann
9273adbd01
doc: change dowload link order (@activemotionpictures) 2020-12-17 14:24:48 +01:00
Swann
03b92eb5e7
fix: export menu label name 2020-12-17 14:04:00 +01:00
Swann
d0dc61bf66
feat: initial import operator 2020-12-16 11:05:58 +01:00
Swann
056b3524e5
feat: gzip to compress graph 2020-12-11 23:02:20 +01:00
Swann
16fc4b8c54
feat: added record as a timer 2020-12-10 15:50:43 +01:00
Swann
e62f0682a2
feat: initial export test 2020-12-10 13:31:43 +01:00
Swann Martinez
f463cb82e7 Merge branch '151-volumes-materials-are-not-working' into 'develop'
Resolve "Volumes materials are not working"

See merge request slumber/multi-user!84
2020-12-09 18:08:34 +00:00
Swann
54f416e8c3
fead: added materials support for volumes 2020-12-09 19:06:30 +01:00
Swann Martinez
682c983a64 Merge branch '152-generated-images-are-not-synced' into 'develop'
Resolve "Generated images are not synced"

See merge request slumber/multi-user!83
2020-12-09 17:53:28 +00:00
Swann
8015881e29
feat: update replication to fix image file dependencies owners 2020-12-09 18:38:08 +01:00
Swann
6e2d36cd00
feat: image autosave 2020-12-09 18:35:29 +01:00
Swann
affab2414c
feat: exit the session as soon as a Timer crash 2020-12-09 18:34:56 +01:00
Swann
af6d54296a
feat: parent reloading support for file dependent nodes 2020-12-09 14:49:26 +01:00
Swann
2ab0a75608
feat: update CHANGELOG.md to reflect new features 2020-12-03 19:03:40 +01:00
Swann
ccb9e55920
doc: Pierre Schiller's video tutorial in hosting section 2020-12-03 16:42:48 +01:00
Swann Martinez
31254d13c0 Merge branch '147-support-grease-pencil-modifiers' into 'develop'
feat: added initial gpencil modifer support

See merge request slumber/multi-user!81
2020-12-03 14:00:05 +00:00
Swann
6fddbb6f5e
feat: add gp modifers to the object test 2020-12-03 14:58:10 +01:00
Swann Martinez
9ee3f26b80 Merge branch '143-add-a-popup-dialog-when-a-timeout-disconnection-occures-fixes' into 'develop'
Resolve "Add a popup dialog when a Timeout disconnection occures"

See merge request slumber/multi-user!80
2020-12-03 13:51:03 +00:00
Swann
19c5ca0928
feat: added initial gpencil modifer support
Related to https://gitlab.com/slumber/multi-user/-/issues/147
2020-12-03 14:23:10 +01:00
Swann
4bc35d7da4
fix: message unkown 2020-12-03 13:30:54 +01:00
Swann
8d19ffd52f
feat: use invoke_props_dialog instead of iinvoke_popup 2020-12-03 13:28:45 +01:00
Swann Martinez
4f506c461a Merge branch '145-support-volume-objects' into 'develop'
Resolve "Support volume objects"

See merge request slumber/multi-user!79
2020-12-02 21:40:51 +00:00
Swann
49fcc40db9
feat: add a bsic volume test 2020-12-02 22:36:30 +01:00
Swann
8492b537a8
feat: update README 2020-12-02 22:33:12 +01:00
Swann
e6e4f6ab7a
feat: initial volume support 2020-12-02 18:13:11 +01:00
Swann
e073182028
fix: missing replication update 2020-12-02 16:38:57 +01:00
Swann Martinez
78eb5d948c Merge branch '146-add-support-for-internal-textures' into 'develop'
Resolve "Add support for internal textures"

See merge request slumber/multi-user!78
2020-12-02 15:36:01 +00:00
Swann
ac9a0f3733
feat: ignore useless attributes 2020-12-02 16:25:40 +01:00
Swann
4e7ade8f38
feat: update the readme 2020-12-02 14:22:56 +01:00
Swann
0b25264375
feat: added a basic test texture 2020-12-02 14:21:49 +01:00
Swann
1d03fe4975
feat: add initial texture support 2020-12-02 11:24:26 +01:00
Swann
1273ab2371
fix: missing troubleshouting section 2020-11-26 18:47:28 +01:00
Swann Martinez
7dd2ee5e70 Merge branch '143-add-a-popup-dialog-when-a-timeout-disconnection-occures' into 'develop'
Resolve "Add a popup dialog when a Timeout disconnection occures"

See merge request slumber/multi-user!77
2020-11-26 12:37:47 +00:00
Swann
c72bb21f20
Merge branch 'develop' into 143-add-a-popup-dialog-when-a-timeout-disconnection-occures 2020-11-26 13:25:46 +01:00
Swann
5b43520353
fix: does graph update flag 2020-11-26 12:17:35 +01:00
Swann
7e25ca4c84
feat: show exit reason in the disconnection popup 2020-11-26 11:37:51 +01:00
Swann
4a4cd5db50
feat: initial notification popup 2020-11-25 22:53:38 +01:00
Swann
7f19d45b71
fix: gpencil draw_cyclic missing in 2.91.0 2020-11-25 19:21:22 +01:00
Swann
37b3d6d094
fix: replication flag button aligment for blender 2.91.0 2020-11-25 18:36:02 +01:00
Swann
64bb715aff
fix: python_binary_path deprecation in 2.91.0
More infos here:
https://wiki.blender.org/wiki/Reference/Release_Notes/2.91/Python_API
2020-11-25 18:20:28 +01:00
Swann
3024b479d3
Merge branch 'develop' of gitlab.com:slumber/multi-user into develop 2020-11-25 18:09:00 +01:00
Swann Martinez
abf4462da6 Merge branch 'feature/docupdate_gcloudhost' into 'develop'
Feature/docupdate gcloudhost

See merge request slumber/multi-user!76
2020-11-25 14:10:56 +00:00
brybalicious
aa6827303f doc update & clean - cloud host & updating addon
docs clean images
2020-11-25 14:34:58 +01:00
Swann
254e8e8ca1
feat: ignore material output node default values 2020-11-25 14:00:27 +01:00
Swann
a63bf66023
feat: push docker image with latest tag 2020-11-25 10:55:52 +01:00
brybalicious
983c5f9020 Minor doc update 2020-11-25 01:22:03 +01:00
brybalicious
9f61335a85 Minor doc update (ways_to_contribute) 2020-11-24 23:11:51 +01:00
brybalicious
ed0c5d9431 Add cloud hosting instructions, updated Dockerfile 2020-11-24 23:00:44 +01:00
Swann
46414aef13
fix: version check 2020-11-20 22:06:08 +01:00
Swann Martinez
3841ed3330 Merge branch '117-handle-correctly-annotation-sync' into 'develop'
Resolve "Handle correctly annotation sync"

See merge request slumber/multi-user!75
2020-11-19 08:05:22 +00:00
Swann
47a281faff
feat: initial annotation support 2020-11-18 19:13:22 +01:00
Swann Martinez
f0442861a8 Merge branch '142-improve-grease-pencil-replication-peformances' into 'develop'
Resolve "Improve grease pencil replication peformances"

See merge request slumber/multi-user!74
2020-11-18 16:28:18 +00:00
Swann
039225a41c
feat: ignore context errors with info logging level 2020-11-18 17:05:41 +01:00
Swann
f1ffe37ac7
feat: initial gpencil perf improvement 2020-11-18 16:43:12 +01:00
Swann
6ca7b42ab4
feat: handle material inputs lenght errors 2020-11-18 14:49:27 +01:00
Swann
fbb32147b9
feat: use pickle Cython implementation when its available 2020-11-14 09:51:17 +01:00
Swann
d85db295a5
feat: use pickle protocol 4 2020-11-14 09:30:54 +01:00
Swann
0f1850bf2c
feat: support color ramps interpolation and color_mode 2020-11-13 14:15:59 +01:00
Swann
8f4de7adbf
feat(replication): handle error outside the data protocol
refactor(replication): remove background worker
2020-11-13 14:15:11 +01:00
Swann Martinez
320745aab3 Merge branch '45-vse-support' into 'develop'
Resolve "VSE Support"

See merge request slumber/multi-user!72
2020-11-11 19:38:03 +00:00
Swann
40cec39d27
feat: update readme 2020-11-11 18:54:07 +01:00
Swann
498616147b
feat: support image sequence 2020-11-11 18:52:20 +01:00
Swann
30b2f5d32e
feat: clear scene sequence on connection 2020-11-11 18:36:00 +01:00
Swann
f7e98abb59
Merge branch 'develop' into 45-vse-support 2020-11-11 18:01:34 +01:00
Swann Martinez
4022f300b3 Merge branch '141-support-shader-node-groups' into 'develop'
Add initial support for shader node groups

See merge request slumber/multi-user!70
2020-11-11 16:58:37 +00:00
Swann
cef45dad3c
feat: use basic uuid to identify node inputs 2020-11-11 17:52:32 +01:00
Swann
30d734c2c1
feat: added initial nodegroup support 2020-11-11 14:09:57 +01:00
Swann
4391510d7b
refactor: move node_tree io to dedicated def in order to avoid code redundancy. 2020-11-11 10:25:35 +01:00
Swann Martinez
04a4f7668a Merge branch '138-support-dns-name' into 'develop'
Resolve "Support DNS name"

See merge request slumber/multi-user!69
2020-11-06 21:36:00 +00:00
Swann
908c0fa4af
feat: dns support 2020-11-06 22:33:33 +01:00
Swann
c718e62b33
feat: update replication version to fix server error 2020-11-06 16:52:53 +01:00
Swann
2f34bba1fd
feat: delete inexistant sequences 2020-11-04 23:37:07 +01:00
Swann
db4e495183
fix: ignore strobe default value 2020-11-04 22:55:17 +01:00
Swann
c00a7184ff
Merge branch 'develop' into 45-vse-support 2020-11-04 22:42:05 +01:00
Swann
9c83df45fc
feat: bl_sequencer separate implementation 2020-11-04 22:41:24 +01:00
Swann
17949003f7
refactor: remove reparent mecanism
fix: empty camera background image
fix: object data reassignation
2020-11-03 23:44:25 +01:00
Swann
371d793a13
fix: materials Math and Vector node sync
Related to #137
2020-11-03 23:17:08 +01:00
Swann
c710111887
feat: test to hot reload newly installed module 2020-11-03 16:44:42 +01:00
Swann
664f7635cc
feat: support empty id_root in actions 2020-11-03 16:15:34 +01:00
Swann
babecf5ae7
feat: add suport for MOVIE, IMAGE SOUND and EFFECT strips 2020-11-02 18:13:31 +01:00
Swann
0bad6895da
feat: ground work for sequence support 2020-10-30 16:58:18 +01:00
Swann
66e55a7eec
feat: improve default session widget hpos settings (@brybalicious) 2020-10-22 17:43:28 +02:00
Swann
4e2377cd7f
feat: improve default session widget settings (@brybalicious) 2020-10-22 17:41:33 +02:00
Swann
f90c12b27f
doc: added missing fields
feat: changed session widget defaults
2020-10-22 16:07:19 +02:00
Swann Martinez
3573db0969 Merge branch '134-revamp-session-status-ui-widget' into 'develop'
Resolve "Revamp session status UI widget"

See merge request slumber/multi-user!67
2020-10-22 13:52:29 +00:00
Swann
92bde00a5a
feat: store session widget settings to preferences 2020-10-22 15:48:13 +02:00
Swann
2c82560d24
fix: grease pencil material 2020-10-22 13:55:26 +02:00
Swann
6f364d2b88
feat: session widget position and scale settings
feat: ui_scale is now taken in account for session widget text size
2020-10-21 23:33:44 +02:00
Swann Martinez
760b52c02b Merge branch '135-empty-and-light-objects-user-selection-highlight-is-broken' into 'develop'
Resolve "Empty and Light objects user selection highlight is broken"

See merge request slumber/multi-user!66
2020-10-21 15:25:42 +00:00
Swann
4dd932fc56
fix: empty and light display broken 2020-10-21 17:23:59 +02:00
Swann Martinez
ba1a03cbfa Merge branch '133-material-renaming-is-unstable' into 'develop'
Resolve "Material renaming is unstable"

See merge request slumber/multi-user!65
2020-10-21 13:17:18 +00:00
Swann
18b5fa795c
feat: resolve materials from uuid by default and fallback on regular name resolving 2020-10-21 15:10:37 +02:00
Swann
1a82ec72e4
fix: change owner call in opterator 2020-10-21 14:40:15 +02:00
Swann
804747c73b
fix: owning parent when a child is already owned (ex: duplicate linked) 2020-10-21 14:15:42 +02:00
Swann
7ee705332f
feat: update replication to prevent UnpicklingError from crashing the network Thred 2020-10-20 17:25:50 +02:00
Swann Martinez
bed33ca6ba Merge branch 'develop' into 'master'
v0.1.1

See merge request slumber/multi-user!54
2020-10-16 09:11:20 +00:00
Swann
716c78e380
feat: update changelog 2020-10-16 11:06:41 +02:00
Swann
5e4ce4556f
doc: update operator descriptions 2020-10-16 10:57:45 +02:00
Swann
aa9ea08151
doc: update refresh icon 2020-10-16 10:28:29 +02:00
Swann
f56890128e
fix: material test by splitting it in a gpencil and nodal material test 2020-10-15 18:08:08 +02:00
Swann
8865556229
feat: update CHANGELOG 2020-10-15 18:02:07 +02:00
Swann
5bc9b10c12
fix: material gpencil loading 2020-10-15 18:01:54 +02:00
Swann
7db3c18213
feat: affect dependencies option in change owner 2020-10-15 17:48:04 +02:00
Swann
ff35e34032
feat: update apply ui icon
fix: material property filter
2020-10-15 17:09:50 +02:00
Swann
9f8222afa7
fix: handle apply dependencies 2020-10-15 12:11:28 +02:00
Swann
1828bfac22
feat: update changelog 2020-10-14 19:25:59 +02:00
Swann Martinez
3a1087ecb8 Merge branch '131-sync-render-settings-flag-cause-a-race-condition' into 'develop'
Resolve "Sync render settings flag cause a race condition"

See merge request slumber/multi-user!63
2020-10-14 17:16:20 +00:00
Swann
b398541787
fix: apply operator 2020-10-14 19:12:28 +02:00
Swann
f0b33d8471
fix: race condition in scene sync 2020-10-14 19:11:32 +02:00
Swann Martinez
5a282a3e22 Merge branch '130-mesh-transfert-is-broken-between-a-hybrid-linux-windows-session' into 'develop'
Resolve "Mesh transfert is broken between a hybrid linux-windows session"

See merge request slumber/multi-user!62
2020-10-14 14:07:59 +00:00
Swann
4283fc0fff
fix: crash during hybrid session
Related to #130
2020-10-14 16:06:11 +02:00
Swann
753f4d3f27
fix: prevent NonAuthorizedOperationError to kill the right managment timer 2020-10-14 00:36:59 +02:00
Swann
9dd02b2756
feat: fix binary diff 2020-10-13 17:15:31 +02:00
Swann
c74d12c843
fix: handle world empty dependencies 2020-10-13 17:10:25 +02:00
Swann
e1d9982276
fix: bl_file diff when clear memory cache is enabled 2020-10-13 17:09:43 +02:00
Swann
8861986213
fix: packed image save error 2020-10-13 16:58:48 +02:00
Swann
1cb9fb410c
feat: material node output default value support
fix: prevent material empty dependencies
2020-10-12 23:10:42 +02:00
Swann Martinez
c4a8cc4606 Merge branch 'fix_deploy' into 'develop'
Fix deploy

See merge request slumber/multi-user!61
2020-10-12 19:03:47 +00:00
Swann
187f11071c
feat: enable build and deploy for only master and develop 2020-10-12 21:01:54 +02:00
Swann
530fae8cb4
feat: active deploy 2020-10-12 20:24:12 +02:00
Swann
6771c371a1
feat: enable deploy back 2020-10-12 20:23:08 +02:00
Swann
c844c6e54f
clean: keep only active renderer settings (bl_scene.py)
fix: resolve_deps_implementation now only resolve master collection objects (bl_scene.py)
2020-10-12 20:21:08 +02:00
Swann
a4d0b1a68b
fix: client selection 2020-10-12 18:56:42 +02:00
Swann
2fdc11692d
fix: handle None bounding box position 2020-10-12 18:15:59 +02:00
Swann
dbfca4568f
fix: get_preference import syntax 2020-10-12 18:07:09 +02:00
Swann
069a528276
feat: test scene with sync render settings enabled 2020-10-12 18:04:54 +02:00
Swann
030f2661fd
fix: buffer empty for the first diff 2020-10-12 17:13:35 +02:00
Swann
e589e3eec4
fix: file not found logging
clean: remove cache for scene diff
2020-10-12 17:12:50 +02:00
Swann
04140ced1b
fix: collection instance bounding box display 2020-10-12 17:11:46 +02:00
Swann
0d9ce43e74
fix: enable binrary differentialback
feat: ignore material node bl_label
2020-10-12 13:33:49 +02:00
Swann
d3969b4fd4
Revert "feat: avoid dumping read only properties"
This reverts commit cefaef5c4b.
2020-10-12 10:23:19 +02:00
Swann
e21f64ac98
revert: bl_label 2020-10-11 19:20:53 +02:00
Swann
b25b380d21
fix: missing bl_idname 2020-10-11 19:11:51 +02:00
Swann
1146d9d304
feat: disable render settings sync by default 2020-10-11 19:08:06 +02:00
Swann
51b60521e6
feat: update relplication version 2020-10-11 19:07:48 +02:00
Swann
035f8a1dcd
feat: skipping not required parameters 2020-10-11 19:07:28 +02:00
Swann
cefaef5c4b
feat: avoid dumping read only properties 2020-10-11 19:06:58 +02:00
Swann
4714e60ff7
Merge branch 'develop' of gitlab.com:slumber/multi-user into develop 2020-10-11 15:22:05 +02:00
Swann
3eca25ae19
feat: update replication version 2020-10-11 15:10:28 +02:00
Swann
96346f8a25
refactor: clean debug logs 2020-10-11 15:06:32 +02:00
Swann Martinez
a258c2c182 Merge branch 'feature/doc-updates-2' into 'develop'
Feature/doc updates 2

See merge request slumber/multi-user!60
2020-10-09 09:28:36 +00:00
brybalicious
6862df5331 Minor doc update 2020-10-09 01:59:42 +02:00
brybalicious
f271a9d0e3 Updated contribution doc to indicate how to sync with upstream repository 2020-10-09 01:55:45 +02:00
brybalicious
bdff6eb5c9 Updated contribution documentation with how to sync upstream repo 2020-10-09 01:29:01 +02:00
Swann Martinez
b661407952 Merge branch '128-ui-gizmo-error' into 'develop'
Resolve "UI gizmo error"

See merge request slumber/multi-user!59
2020-10-08 22:50:11 +00:00
Swann
d5eb7fda02
fix: ci yaml error 2020-10-09 00:46:52 +02:00
Swann
35e8ac9c33
feat: disable deploy until fixed 2020-10-09 00:45:30 +02:00
Swann
4453d256b8
feat: update replication version, switched dependency to pyzmq 2020-10-08 23:57:39 +02:00
Swann
299e330ec6
fix: internal gizmo error by launching the modal operator from the timer 2020-10-08 23:42:14 +02:00
Swann
34b9f7ae27
Merge branch 'master' into develop 2020-10-08 23:14:58 +02:00
Swann Martinez
9d100d84ad Merge branch 'hotfix/ui-spelling-fixes' into 'master'
Hotfix/ui spelling fixes

See merge request slumber/multi-user!58
2020-10-08 20:58:13 +00:00
brybalicious
2f677c399e UI spelling fixes to preferences.py and ui.py 2020-10-08 22:52:24 +02:00
brybalicious
e967b35c38 Revert "Minor UI spelling errors"
This reverts commit 673c4e69a4.
2020-10-08 21:58:30 +02:00
Swann Martinez
7bd0a196b4 Merge branch 'feature/doc-updates' into 'develop'
Feature/doc updates

See merge request slumber/multi-user!57
2020-10-08 17:04:37 +00:00
brybalicious
7892b5e9b6 Adding log-level to server startup scripts 2020-10-08 18:35:08 +02:00
brybalicious
f779678c0e Updates to hosting guide and contribution documentation 2020-10-08 18:31:20 +02:00
Swann
629fc2d223
feat: update dockerfile 2020-10-08 15:10:32 +02:00
Swann
724c2345df
refactor: disable force apply during the reparent 2020-10-08 15:00:27 +02:00
brybalicious
673c4e69a4 Minor UI spelling errors 2020-10-08 00:31:56 +02:00
brybalicious
fbfff6c7ec Doc updates clarifying developer workflow, updating hosting instructions 2020-10-08 00:08:23 +02:00
brybalicious
f592294335 Added scripts to conveniently start server instance via docker or replication 2020-10-07 21:20:43 +02:00
Swann Martinez
8e7be5afde Merge branch '126-draw-refactoring' into 'develop'
Resolve "Draw refactoring"

See merge request slumber/multi-user!55
2020-10-06 14:12:13 +00:00
Swann
fc76b2a8e6
fix: avoid to remove inexistant user widget 2020-10-06 16:10:10 +02:00
Swann
1a8bcddb74
refactor: formatting 2020-10-06 15:53:29 +02:00
Swann
60fba5b9df
refactor: use dict to store widgets 2020-10-06 15:46:35 +02:00
Swann
be0eb1fa42
clean: remove unused import 2020-10-06 09:45:13 +02:00
Swann
93d9bea3ae
feat: display session status 2020-10-05 23:38:52 +02:00
Swann
022b7f7822
refactor: enable username display again
refactor: avoid to draw the local user
2020-10-05 22:34:43 +02:00
Swann
ae34846509
fix: ci syntax 2020-10-05 21:53:14 +02:00
Swann
d328077cb0
feat: deploy and build only for master and develop
refactor: carry on presence refactoring
2020-10-05 21:51:54 +02:00
Swann
0c4740eef8
fix: import error 2020-10-05 18:48:40 +02:00
Swann
d7b2c7e2f6
refactor: started to rewrite presence
fix: weird bounding boxes on various objects types

Related to #55
2020-10-05 18:34:41 +02:00
Swann
efbb9e7096
doc: feat changelog 0.1.0 release date 2020-10-05 16:11:04 +02:00
Swann Martinez
e0b56d8990 Merge branch 'develop' into 'master'
v0.1.0

See merge request slumber/multi-user!43
2020-10-05 13:42:16 +00:00
Swann
7a94c21187
doc: update version 2020-10-05 15:37:06 +02:00
Swann
0687090f05
feat: update changelog 2020-10-05 15:18:01 +02:00
Swann Martinez
920744334c Merge branch '125-autobuild-docker-image' into 'develop'
Resolve "Autobuild docker image"

See merge request slumber/multi-user!53
2020-10-05 09:32:57 +00:00
Swann
dfa7f98126
refactor: remove useless script 2020-10-05 11:28:45 +02:00
Swann
ea530f0f96
featL enable tast and build back 2020-10-03 00:30:37 +02:00
Swann
c3546ff74f
fix: var name 2020-10-03 00:28:11 +02:00
Swann
83aa9b57ec
feat: automatic image version 2020-10-03 00:26:44 +02:00
Swann
28a265be68
test: login in script 2020-10-03 00:12:39 +02:00
Swann
7dfabb16c7
fix: tls 2020-10-03 00:07:07 +02:00
Swann
ea5d9371ca
feat: login 2020-10-03 00:00:42 +02:00
Swann
3df73a0716
feat: find replication version 2020-10-02 23:58:08 +02:00
Swann
ae3c994ff1
feat: dind tests 2020-10-02 23:55:04 +02:00
Swann
bd73b385b6
feat: dind 2020-10-02 23:52:19 +02:00
Swann
f054b1c5f2
fix: trying to use a standard docker image 2020-10-02 23:38:09 +02:00
Swann
d083100a2a
fix: image directory path 2020-10-02 23:33:50 +02:00
Swann
b813b8df9e
feat: docker build and push 2020-10-02 23:32:06 +02:00
Swann
d0e966ff1a
fix: path 2020-10-02 23:29:48 +02:00
Swann
56cbf14fe1
refactor: use custom image 2020-10-02 23:27:45 +02:00
Swann
8bf55ebd46
feat: apk update 2020-10-02 23:19:34 +02:00
Swann
edbc5ee343
feat: apt install 2020-10-02 23:16:46 +02:00
Swann
4a92511582
feat: test install python 2020-10-02 23:14:49 +02:00
Swann
b42df2cf4a
feat: retrieve version 2020-10-02 23:07:25 +02:00
Swann
7549466824
fix: ci deploy name 2020-10-02 18:59:25 +02:00
Swann
423e71476d
feat: update ci 2020-10-02 18:57:50 +02:00
Swann
3bc4b20035
feat: CI file and docker image 2020-10-02 18:56:26 +02:00
Swann
9966a24b5e
feat: update supported types in README.md 2020-10-02 18:04:32 +02:00
Swann Martinez
577c01a594 Merge branch '124-use-a-global-session-instance-in-replication' into 'develop'
Resolve "use a global session instance in replication"

See merge request slumber/multi-user!52
2020-10-02 15:51:30 +00:00
Swann
3d72796c10
refactor: remove old client ref
feat: update changelog
2020-10-02 17:48:56 +02:00
Swann
edcbd7b02a
feat: display node in error in the repository view 2020-10-02 17:22:14 +02:00
Swann
b368c985b8
refactor: session handler encapsulation 2020-10-02 12:11:53 +02:00
Swann
cab1a71eaa
fix: version 2020-10-02 09:52:21 +02:00
Swann
33cb188509
refactor: use replication session global instance 2020-10-02 00:05:33 +02:00
Swann
0a3dd9b5b8
fix: missing get_datablock_from_uuid 2020-10-02 00:00:34 +02:00
Swann
7fbdbdcc21
feat: show flag in blender overlays panel 2020-10-01 22:55:06 +02:00
Swann
8f9d5aabf9
refactor: moved get_datablock_from_uuid to bl_datablock 2020-10-01 22:51:48 +02:00
Swann
824d4d6a83
feat: upgrade replication version to fix duplicate during REPARENT
Related to #113
2020-10-01 15:34:36 +02:00
Swann
5f4bccbcd9
feat: POLY curves support
During a mesh->curve conversion, curve type spline is changed to POLY. This is adding the support for POLY curves.

Related to #113
2020-10-01 15:33:10 +02:00
Swann Martinez
8e8e54fe7d Merge branch '122-crash-on-connection' into 'develop'
Resolve "Crash on connection"

See merge request slumber/multi-user!50
2020-10-01 09:17:59 +00:00
Swann
04b13cc0b7
refactor: moveconnection handlers to the main thread 2020-10-01 10:58:30 +02:00
Swann
ba98875560
fix: version check command format 2020-09-29 17:33:39 +02:00
Swann
a9fb84a5c6
fix: world viewport color sync 2020-09-29 11:47:48 +02:00
Swann
2f139178d3
feat: update replication version 2020-09-28 22:59:43 +02:00
Swann
e466f81600
fix: file handler not properly closed 2020-09-28 22:51:07 +02:00
Swann
cb836e30f5
fix: empty uv useless update 2020-09-28 22:50:42 +02:00
Swann
152e356dad
fix: font/sound loading 2020-09-28 10:40:07 +02:00
Swann
7b13e8978b
fix: close file handler after quitting the session 2020-09-28 10:32:41 +02:00
Swann Martinez
e0839fe1fb Merge branch '118-optionnal-active-camera-sync-flag' into 'develop'
Resolve "Optionnal active camera sync flag"

See merge request slumber/multi-user!49
2020-09-25 14:09:31 +00:00
Swann
aec3e8b8bf
doc: update replication flag section 2020-09-25 15:27:01 +02:00
Swann
a89564de6b
feat: append synchronization flags to the top
refactor: enable sync render settings by default
2020-09-25 14:26:31 +02:00
Swann
e301a10456
feat: active camera sync flag 2020-09-25 11:33:35 +02:00
Swann
cfc6ce91bc
feat: initial live syncflag support 2020-09-25 11:23:36 +02:00
Swann
4f731c6640
fix: implementation not found if a new type is added 2020-09-23 17:37:21 +02:00
Swann
9b1b8f11fd
feat: sync object hide_render 2020-09-23 16:48:17 +02:00
Swann
e742c824fc
feat: sync all object show flags except hide_viewport. 2020-09-23 16:47:51 +02:00
Swann
6757bbbd30
fix: enable DIFF_BINARY by default 2020-09-23 16:04:31 +02:00
Swann
f6a39e4290
fix: scene differential error
fix: bl_file loading error
feat: update replication version
2020-09-23 14:24:57 +02:00
Swann
410d8d2f1a
feat: display sync 2020-09-23 10:00:08 +02:00
Swann
bd64c17f05
feat: update version 2020-09-22 16:36:59 +02:00
Swann
dc063b5954
fix: handle file not found exception 2020-09-21 18:52:27 +02:00
Swann Martinez
0ae34d5702 Merge branch 'file_replication' into 'develop'
Basic file replication interface

See merge request slumber/multi-user!48
2020-09-21 16:17:58 +00:00
Swann
167b39f15e
doc: added a cache section to the quickstart 2020-09-21 18:14:30 +02:00
Swann
9adc0d7d6e
clean: remove image testing (until the file replication interface is done) 2020-09-21 17:48:07 +02:00
Swann
fb622fa098
fix: get_datablock_users attribute error 2020-09-21 17:37:06 +02:00
Swann
c533d4b86a
ci: run tests on every branch 2020-09-21 17:31:07 +02:00
Swann
6c47e095be
feat: cache managenent utility 2020-09-21 16:47:49 +02:00
Swann
f992d06b03
feat: handle packed datablock
feat: filecache settings
2020-09-21 12:12:19 +02:00
Swann
af3afc1124
feat: use bl_file in bl_image 2020-09-21 00:11:37 +02:00
Swann
b77ab2dd05
feat: use bl_file to replicate font and sound files 2020-09-20 23:31:24 +02:00
Swann
150054d19c
feat: generic file replication ground work 2020-09-20 19:53:51 +02:00
Swann Martinez
8d2b9e5580 Merge branch '65-sync-speaker-sounds' into 'develop'
Partial support for syncinf speaker sound files

See merge request slumber/multi-user!47
2020-09-19 19:37:43 +00:00
Swann
6870331c34
feat: notice 2020-09-19 18:59:03 +02:00
Swann
6f73b7fc29
feat: ground work for sound sync 2020-09-19 00:47:46 +02:00
Swann
6385830f53
fix: prevent world replication conflict with external addons 2020-09-18 23:38:21 +02:00
Swann
b705228f4a
feat: support all font file extention 2020-09-18 23:30:50 +02:00
Swann
73d2da4c47
fix: ReparentException error
feat: replication protocol version in ui header
2020-09-18 23:25:01 +02:00
Swann Martinez
b28e7c2149 Merge branch '116-bfon-is-missing' into 'develop'
Resolve "Bfont is missing"

See merge request slumber/multi-user!46
2020-09-18 21:10:13 +00:00
Swann
38f06683be
fix: bfont is missing
related to #116
2020-09-18 23:09:47 +02:00
Swann Martinez
62221c9e49 Merge branch '114-support-custom-fonts' into 'develop'
Resolve "Support custom fonts"

See merge request slumber/multi-user!45
2020-09-18 15:05:25 +00:00
Swann
e9f416f682
feat: ground work for custom font support 2020-09-18 17:04:24 +02:00
Swann
3108a06e89
fix: sync flag missing comma 2020-09-18 16:17:19 +02:00
Swann
470df50dc2
fix: bl_image test, disabling texture unload from ram. 2020-09-18 16:02:50 +02:00
Swann
d8a94e3f5e
fix: image uuid error 2020-09-18 15:58:43 +02:00
Swann Martinez
47a0efef27 Merge branch '113-support-datablock-conversion' into 'develop'
Resolve "Support datablock conversion"

See merge request slumber/multi-user!44
2020-09-18 13:33:43 +00:00
Swann
ca5aebfeff
feat: various images format support
feat: world environment image support
2020-09-18 15:25:52 +02:00
Swann
fe6ffd19b4
feat: child date renaming support 2020-09-17 23:45:09 +02:00
Swann
b9a6ddafe9
fix: object data load 2020-09-17 23:17:51 +02:00
Swann
ae71d7757e
feat: reparent ground work 2020-09-17 22:47:11 +02:00
Swann
34ed5da6f0
fix: logging 2020-09-15 16:33:49 +02:00
Swann
2c16f07ae7
doc: update Changelog 2020-09-15 15:05:09 +02:00
Swann Martinez
60f25359d1 Merge branch '111-improve-the-logging-process' into 'develop'
Resolve "Improve the logging process"

See merge request slumber/multi-user!42
2020-09-15 11:03:42 +00:00
Swann
975b50a988
doc: update log related sections 2020-09-15 13:02:50 +02:00
Swann
66417dc84a
refactor: minor ui cleanup 2020-09-15 12:40:51 +02:00
Swann
514f90d602
feat: logging to files
feat: logging level

Related to #111
2020-09-15 12:31:46 +02:00
Swann
086876ad2e
feat: update version check to handle experimental ones 2020-09-15 12:29:20 +02:00
Swann
71c179f32f
fix: python version 2020-09-09 11:58:51 +02:00
Swann
2399096b07
feat: experimenting a custom testing image 2020-09-09 11:57:34 +02:00
Swann
0c4d1aaa5f
feat: update changelog to reflect changes 2020-09-09 11:55:53 +02:00
Swann
de8fbb0629
feat: update addon updater to support installation from branches (develop and master) 2020-09-09 10:58:02 +02:00
Swann Martinez
d7396e578c Merge branch '107-optionnal-flag-to-allow-edit-mesh-updates' into 'develop'
Resolve "Optionnal flag to allow edit mesh updates"

See merge request slumber/multi-user!41
2020-09-08 21:11:09 +00:00
Swann
7f5b5866f2
feat: usage warning 2020-09-08 23:09:42 +02:00
Swann
3eb1af406b
doc: reflect advanced settings changes 2020-09-08 22:56:23 +02:00
Swann
79ccac915f
feat: experimental edit mode update
Related to #107
2020-09-08 22:37:58 +02:00
Swann
f5232ccea0
Merge branch 'master' into develop 2020-09-03 17:23:21 +02:00
Swann
c599a4e6ea
doc: update advanced section 2020-09-03 16:15:49 +02:00
Swann
b3230177d8
Merge branch 'feature/event_driven_updates' into develop 2020-09-03 15:59:19 +02:00
Swann
f2da4cb8e9
Merge branch 'develop' of gitlab.com:slumber/multi-user into develop 2020-09-02 16:45:08 +02:00
Swann
605bcc7581
refactor: bl_collection lint
feat: late update replication
2020-09-02 16:44:11 +02:00
Swann Martinez
e31d76a641 Merge branch 'fix-pip-require-virtualenv' into 'develop'
Resolve "'zmq' install (and other pip packages) fails when PIP_REQUIRE_VIRTUALENV env var is set to true"

See merge request slumber/multi-user!40
2020-08-28 17:49:27 +00:00
Celeborn2BeAlive
97c2118b7e doc: add comment to explain why unsetting PIP_REQUIRE_VIRTUALENV is required. 2020-08-28 18:12:01 +02:00
Celeborn2BeAlive
352977e442 fix: unset PIP_REQUIRE_VIRTUALENV if set to ensure multi-user can install its packages 2020-08-28 17:23:25 +02:00
Swann
a46d5fa227
fix: missing ui error, missing scene 2020-08-28 15:27:46 +02:00
Swann
ade736d8a5
refacotr: collection test 2020-08-28 15:01:50 +02:00
Swann
d7f7e86015
fix: collection dump 2020-08-28 14:52:56 +02:00
Swann
5e7d1e1dda
feat: update replication version 2020-08-28 14:20:00 +02:00
Swann
fa5f0c7296
fix: replication version 2020-08-28 14:13:20 +02:00
Swann
f14d0915c8
feat: same collection management for Scene Master collection 2020-08-28 14:10:09 +02:00
Swann
d1e088d229
feat: orhtographic_scale sync 2020-08-28 14:09:10 +02:00
Swann
aa35da9c56
refactor: move attribute skipping warnings to debug 2020-08-28 11:28:26 +02:00
Swann
f26c3b2606
refactor: use uuid for collection loading 2020-08-28 11:27:03 +02:00
Swann
00d60be75b
feat: change replication to the pre-release version 2020-08-27 11:40:26 +02:00
Swann
bb5b9fe4c8
refactor: move deepdiff dependency to replication 2020-08-27 10:45:54 +02:00
Swann
c6af49492e
Merge branch 'master' of gitlab.com:slumber/multi-user 2020-08-26 11:35:47 +02:00
Swann
6158ef5171
feat: discord link in readme 2020-08-26 11:35:06 +02:00
Swann
6475b4fc08
feat: collection insance offset support
Related to #105
2020-08-24 17:49:17 +02:00
Swann
e4e09d63ff
fix: instanced collection replication
Related to #105
2020-08-24 17:48:14 +02:00
Swann
4b07ae0cc3
fix: fix test condition 2020-08-07 15:47:05 +02:00
Swann
49a419cbe2
fix: none result while trying to access a node 2020-08-07 15:38:11 +02:00
Swann
5d52fb2460
fix: avoid build ci from running on other branch than develop and master 2020-08-07 15:08:08 +02:00
Swann
f1e09c1507
Merge branch 'develop' into feature/event_driven_updates 2020-08-07 15:07:17 +02:00
Swann
f915c52bd0
fix: loader missing 2020-08-06 15:33:08 +02:00
Swann
dee2e77552
fix: modifier assigned vertex groups 2020-08-06 15:26:55 +02:00
Swann Martinez
7953a2a177 feat: Update CHANGELOG.md 2020-07-31 09:01:01 +00:00
Swann
3f0082927e
feat: lock movement support 2020-07-29 11:10:35 +02:00
Swann
07ffe05a84
feat: enable autoupdater back 2020-07-28 17:26:14 +02:00
Swann
09ee1cf826
fix: auto updater download 2020-07-28 17:17:39 +02:00
Swann Martinez
61bcec98c3 fix: wrong debian version 2020-07-28 13:37:06 +00:00
Swann Martinez
1c85d436fd feat: missing update 2020-07-28 13:32:33 +00:00
Swann Martinez
03318026d4 feat: missing zip program 2020-07-28 13:26:54 +00:00
Swann Martinez
7a0b142d69 feat: zip build artifacts 2020-07-28 13:20:35 +00:00
Swann
eb874110f8
Merge branch 'develop' 2020-07-28 14:25:42 +02:00
Swann
6e0c7bc332
clean disable armature missing roll 2020-07-28 12:06:58 +02:00
Swann
ee83e61b09
fix: None image 2020-07-28 12:05:26 +02:00
Swann
99b2dc0539
refactor: increase use line width 2020-07-28 12:05:04 +02:00
Swann
53f1118181
refactor: update download links 2020-07-27 17:44:27 +02:00
Swann
2791264a92
feat: empty image support 2020-07-24 21:38:00 +02:00
Swann
6c2ee0cad3
refactor: lobby ui 2020-07-24 16:02:19 +02:00
Swann
20f8c25f55
refactor: timeout update 2020-07-24 14:58:07 +02:00
Swann
0224f55104
refactor: change the timeout 2020-07-24 14:57:39 +02:00
Swann
644702ebdf
feat: client state update as soon a client are in the lobby 2020-07-24 14:56:20 +02:00
Swann
9377b2be9b
fix: session pannel title 2020-07-24 14:55:14 +02:00
Swann
29cbf23142
doc: update hosting guide 2020-07-24 14:53:44 +02:00
Swann
a645f71d19
fix: material socket index
Related to #101
2020-07-22 16:41:01 +02:00
Swann
909d92a7a1
fix: broken materials links
Related to #102
2020-07-21 16:46:16 +02:00
Swann
7ee9089087
feat: use callbacks instead of timers to cleanup session states
refactor: move graph initialization to operators,py
2020-07-17 16:33:39 +02:00
Swann
6201c82392
fix: Loading the false scene by default
`get` was giving wrong result inthe  scene initialization routing during the  resolve process

Related to #100
2020-07-17 14:47:52 +02:00
Swann
0faf7d9436
fix: initial test to handle #99 2020-07-15 19:08:53 +02:00
Swann
e69e61117a
fix: Process "Quitting session" does not finish and gets stuck
Related to #101
2020-07-15 14:46:48 +02:00
Swann
25e988d423
fix: Unregistration of users
Related to #97
2020-07-15 13:50:46 +02:00
Swann Martinez
8a3ab895e0 fix: ci blender install 2020-07-14 12:56:34 +00:00
Swann
06a8e3c0ab
feat: replication update 2020-07-14 14:54:22 +02:00
Swann Martinez
c1c1628a38 Update .gitlab/ci/test.gitlab-ci.yml 2020-07-14 10:07:30 +00:00
Swann
022e3354d9
feat: psutils test 2020-07-14 11:59:45 +02:00
Swann
211cb848b9
feat: update replication version 2020-07-14 11:29:30 +02:00
Swann
25e233f328
fix: temporary disabled spline IK test until the python api is fixed 2020-07-13 15:57:19 +02:00
Swann
9bc3d9b29d
feat: dependencies version check 2020-07-13 15:12:15 +02:00
Swann
15debf339d
feat: auto-update dependencies 2020-07-10 18:00:44 +02:00
Swann
56df7d182d
clean: remove libs 2020-07-10 17:05:42 +02:00
Swann
26e1579e35
feat: update ci 2020-07-10 16:59:47 +02:00
Swann
a0e290ad6d
feat: remove submodule 2020-07-10 16:59:32 +02:00
Swann
092384b2e4
feat: use replication from pip 2020-07-10 16:50:09 +02:00
Swann
2dc3654e6c
feat: tests
feat: services heartbeats
clean: remove psutil dependency
2020-07-09 22:10:26 +02:00
Swann
f37a9efc60
feat: orthographic correction 2020-07-09 15:52:42 +02:00
Swann
0c5d323063 clean: remove old modal operator queue 2020-07-09 15:17:45 +02:00
Swann
b9f1b8a871 fix: armature operator is not running 2020-07-08 18:09:00 +02:00
Swann
2f6d8e1701
feat: initial camera background image support 2020-07-07 17:09:37 +02:00
Swann
9e64584f2d
fix: ZeroDivisionError: integer division or modulo by zero 2020-07-07 15:50:05 +02:00
Swann Martinez
154aaf71c8 fix: disable test 2020-07-07 13:32:30 +00:00
Swann Martinez
ac24ab69ff fix: revert and disable testing until a definitive fix 2020-07-07 13:29:08 +00:00
Swann Martinez
ad431378f8 fix: test with a debian based image 2020-07-07 13:18:34 +00:00
Swann Martinez
784506cd95 fix: update build file 2020-07-07 13:07:55 +00:00
Swann Martinez
eb7542b1dd fix: update test.gitlab-ic.yml 2020-07-07 12:44:58 +00:00
Swann
25c19471bb
feat: update submodule 2020-05-15 18:23:51 +02:00
Swann
9e4e646bb1
Merge branch 'develop' into feature/event_driven_updates 2020-05-15 16:19:47 +02:00
Swann
f8fa407a45
Merge branch '29-differential-revision' into feature/event_driven_updates 2020-04-13 11:48:20 +02:00
Swann
56ea93508c
Merge branch 'develop' into 24-particle-support 2020-04-03 18:23:29 +02:00
Swann Martinez
a0676f4e37 hotfix: wrong download link 2020-03-14 20:30:18 +00:00
Swann Martinez
5f95eadc1d
feat: test particle cache access 2020-03-11 18:37:43 +01:00
Swann Martinez
40ad96b0af
feat: initial particle system support
Related to #24
2020-03-11 17:45:56 +01:00
Swann
61a05dc347 fix: curve commit error
Releated to #72
2020-03-10 18:04:06 +01:00
Swann Martinez
a6e1566f89
Merge branch '40-multi-scene-workflow' of gitlab.com:slumber/multi-user into feature/event_driven_updates 2020-03-05 16:17:00 +01:00
Swann Martinez
adeb694b2d
feat: one apply timer for all 2020-03-05 15:38:20 +01:00
Swann Martinez
50d14e663e
feat: update sumbodules 2020-03-05 10:56:17 +01:00
Swann
9b8d69042d
feat: update submodule 2020-03-04 22:28:34 +01:00
Swann Martinez
b2475081b6
feat: id accessor 2020-03-04 18:28:42 +01:00
Swann Martinez
aef1d8987c
Merge branch '61-config-file-prevents-having-the-addon-on-a-shared-network-location' into feature/event_driven_updates 2020-03-04 14:54:42 +01:00
Swann Martinez
292f76aea5
feat: move diff to observer
feat: logs
2020-02-28 15:39:29 +01:00
Swann Martinez
28c4ccf1f3
Merge branch 'develop' into feature/event_driven_updates 2020-02-28 14:48:09 +01:00
Swann Martinez
549b0b3784
fix: submodule version 2020-02-25 17:40:00 +01:00
Swann Martinez
fc9ab1a7e6
feat: update submodule 2020-02-25 17:38:43 +01:00
Swann Martinez
44bffc1850
Merge remote-tracking branch 'origin/develop' into feature/event_driven_updates 2020-02-25 17:37:24 +01:00
Swann
a141e9bfe7
feat: stash on deps graph update 2020-02-23 14:08:45 +01:00
194 changed files with 10501 additions and 4652 deletions

3
.gitignore vendored
View File

@ -13,4 +13,5 @@ multi_user_updater/
_build
# ignore generated zip generated from blender_addon_tester
*.zip
*.zip
libs

View File

@ -1,8 +1,13 @@
stages:
- test
- build
- deploy
- doc
include:
- local: .gitlab/ci/test.gitlab-ci.yml
- local: .gitlab/ci/build.gitlab-ci.yml
- local: .gitlab/ci/deploy.gitlab-ci.yml
- local: .gitlab/ci/doc.gitlab-ci.yml

View File

@ -1,14 +1,12 @@
build:
stage: build
image: python:latest
needs: ["test"]
image: debian:stable-slim
script:
- git submodule init
- git submodule update
- cd multi_user/libs/replication
- rm -rf tests .git .gitignore script
artifacts:
name: multi_user
paths:
- multi_user
variables:
GIT_SUBMODULE_STRATEGY: recursive

View File

@ -0,0 +1,21 @@
deploy:
stage: deploy
needs: ["build"]
image: slumber/docker-python
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
GIT_SUBMODULE_STRATEGY: recursive
services:
- docker:19.03.12-dind
script:
- RP_VERSION="$(python scripts/get_replication_version.py)"
- VERSION="$(python scripts/get_addon_version.py)"
- echo "Building docker image with replication ${RP_VERSION}"
- docker build --build-arg replication_version=${RP_VERSION} --build-arg version={VERSION} -t registry.gitlab.com/slumber/multi-user/multi-user-server:${VERSION} ./scripts/docker_server
- echo "Pushing to gitlab registry ${VERSION}"
- 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 push registry.gitlab.com/slumber/multi-user/multi-user-server

View File

@ -0,0 +1,16 @@
pages:
stage: doc
needs: ["deploy"]
image: python
script:
- pip install -U sphinx sphinx_rtd_theme sphinx-material
- sphinx-build -b html ./docs public
artifacts:
paths:
- public
only:
refs:
- master
- develop

View File

@ -1,14 +1,7 @@
test:
stage: test
image: python:latest
image: slumber/blender-addon-testing:latest
script:
- git submodule init
- git submodule update
- apt update
# install blender to get all required dependencies
# TODO: indtall only dependencies
- apt install -f -y gcc python-dev python3.7-dev
- apt install -f -y blender
- python3 -m pip install blender-addon-tester
- python3 scripts/test_addon.py
variables:
GIT_SUBMODULE_STRATEGY: recursive

View File

@ -37,7 +37,7 @@ All notable changes to this project will be documented in this file.
- Serialization is now based on marshal (2x performance improvements).
- Let pip chose python dependencies install path.
## [0.0.3] - Upcoming
## [0.0.3] - 2020-07-29
### Added
@ -60,8 +60,214 @@ All notable changes to this project will be documented in this file.
- user localization
- repository init
### Removed
- Unused strict right management strategy
- Legacy config management system
- Legacy config management system
## [0.1.0] - 2020-10-05
### Added
- Dependency graph driven updates [experimental]
- Edit Mode updates
- Late join mechanism
- Sync Axis lock replication
- Sync collection offset
- Sync camera orthographic scale
- Sync custom fonts
- Sync sound files
- Logging configuration (file output and level)
- Object visibility type replication
- Optionnal sync for active camera
- Curve->Mesh conversion
- Mesh->gpencil conversion
### Changed
- Auto updater now handle installation from branches
- Use uuid for collection loading
- Moved session instance to replication package
### Fixed
- Prevent unsupported data types to crash the session
- Modifier vertex group assignation
- World sync
- Snapshot UUID error
- The world is not synchronized
## [0.1.1] - 2020-10-16
### Added
- Session status widget
- Affect dependencies during change owner
- Dedicated server managment scripts(@brybalicious)
### Changed
- Refactored presence.py
- Reset button UI icon
- Documentation `How to contribute` improvements (@brybalicious)
- Documentation `Hosting guide` improvements (@brybalicious)
- Show flags are now available from the viewport overlay
### Fixed
- Render sync race condition (causing scene errors)
- Binary differentials
- Hybrid session crashes between Linux/Windows
- Materials node default output value
- Right selection
- Client node rights changed to COMMON after disconnecting from the server
- Collection instances selection draw
- Packed image save error
- Material replication
- UI spelling errors (@brybalicious)
## [0.2.0] - 2020-12-17
### Added
- Documentation `Troubleshouting` section (@brybalicious)
- Documentation `Update` section (@brybalicious)
- Documentation `Cloud Hosting Walkthrough` (@brybalicious)
- Support DNS name
- Sync annotations
- Sync volume objects
- Sync material node_goups
- Sync VSE
- Sync grease pencil modifiers
- Sync textures (modifier only)
- Session status widget
- Disconnection popup
- Popup with disconnection reason
### Changed
- Improved GPencil performances
### Fixed
- Texture paint update
- Various documentation fixes section (@brybalicious)
- Empty and Light object selection highlights
- Material renaming
- Default material nodes input parameters
- 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
## [0.5.1] - 2022-02-10
### Fixed
- Auto updater breaks dependency auto installer
- Auto updater update from tag
## [0.5.2] - 2022-02-18
### Fixed
- Objects not selectable after user leaves session
- Geometry nodes attribute toogle doesn't sync
## [0.5.3] - 2022-03-11
### Changed
- Snapshots logs
### Fixed
- Server crashing during snapshots
- Blender 3.1 numpy loading error during early connection process
- Server docker arguments
## [0.5.5] - 2022-06-12
### Fixed
- Numpy mesh serialization error

View File

@ -11,41 +11,53 @@ This tool aims to allow multiple users to work on the same scene over the networ
## Quick installation
1. Download latest release [multi_user.zip](/uploads/8aef79c7cf5b1d9606dc58307fd9ad8b/multi_user.zip).
2. Run blender as administrator (dependencies installation).
3. Install last_version.zip from your addon preferences.
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).
2. Install last_version.zip from your addon preferences.
[Dependencies](#dependencies) will be automatically added to your blender python during installation.
## Usage
See the [documentation](https://multi-user.readthedocs.io/en/latest/) for details.
See the [documentation](https://slumber.gitlab.io/multi-user/index.html) for details.
## Troubleshooting
See the [troubleshooting guide](https://slumber.gitlab.io/multi-user/getting_started/troubleshooting.html) for tips on the most common issues.
## Current development status
Currently, not all data-block are supported for replication over the wire. The following list summarizes the status for each ones.
| Name | Status | Comment |
| ----------- | :----: | :-----------------------------------------------------------: |
| action | ❗ | Not stable |
| armature | ❗ | Not stable |
| camera | ✔️ | |
| collection | ✔️ | |
| curve | ✔️ | Nurbs surface don't load correctly |
| gpencil | ✔️ | |
| image | ❗ | Not stable yet |
| mesh | ✔️ | |
| material | ✔️ | |
| metaball | ✔️ | |
| object | ✔️ | |
| scene | ✔️ | |
| world | ✔️ | |
| lightprobes | ✔️ | |
| particles | ❌ | [On-going](https://gitlab.com/slumber/multi-user/-/issues/24) |
| speakers | ❌ | [Planned](https://gitlab.com/slumber/multi-user/-/issues/65) |
| vse | ❌ | [Planned](https://gitlab.com/slumber/multi-user/-/issues/45) |
| physics | ❌ | [Planned](https://gitlab.com/slumber/multi-user/-/issues/45) |
| libraries | ❗ | Partial |
| Name | Status | Comment |
| -------------- | :----: | :---------------------------------------------------------------------: |
| action | ✔️ | |
| camera | ✔️ | |
| collection | ✔️ | |
| gpencil | ✔️ | |
| image | ✔️ | |
| mesh | ✔️ | |
| material | ✔️ | |
| node_groups | ✔️ | Material & Geometry only |
| geometry nodes | ✔️ | |
| metaball | ✔️ | |
| object | ✔️ | |
| texts | ✔️ | |
| scene | ✔️ | |
| world | ✔️ | |
| volumes | ✔️ | |
| lightprobes | ✔️ | |
| physics | ✔️ | |
| textures | ✔️ | |
| curve | ❗ | Nurbs surfaces not supported |
| armature | ❗ | Only for Mesh. [Planned for GPencil](https://gitlab.com/slumber/multi-user/-/issues/161). Not stable yet |
| particles | ❗ | The cache isn't syncing. |
| speakers | ❗ | [Partial](https://gitlab.com/slumber/multi-user/-/issues/65) |
| vse | ❗ | Mask and Clip not supported yet |
| libraries | ❌ | |
| nla | ❌ | |
| texts | ❌ | [Planned for v0.5.0](https://gitlab.com/slumber/multi-user/-/issues/81) |
| compositing | ❌ | [Planned for v0.5.0](https://gitlab.com/slumber/multi-user/-/issues/46) |
### Performance issues
@ -57,13 +69,15 @@ I'm working on it.
| Dependencies | Version | Needed |
| ------------ | :-----: | -----: |
| ZeroMQ | latest | yes |
| JsonDiff | latest | yes |
| Replication | latest | yes |
## Contributing
See [contributing section](https://multi-user.readthedocs.io/en/latest/ways_to_contribute.html) of the documentation.
See [contributing section](https://slumber.gitlab.io/multi-user/ways_to_contribute.html) of the documentation.
Feel free to [join the discord server](https://discord.gg/aBPvGws) to chat, seek help and contribute.
## Licensing

17
docs/about/community.rst Normal file
View File

@ -0,0 +1,17 @@
=========
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
docs/about/features.rst Normal file
View File

@ -0,0 +1,32 @@
============
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.

View File

@ -1,8 +1,10 @@
About
=====
================
About Multi-User
================
.. toctree::
:maxdepth: 1
:name: toc-about
:maxdepth: 2
introduction
features
community

View File

@ -1,7 +1,6 @@
============
Introduction
============
========
The idea
========
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.
@ -12,4 +11,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 ?
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.

View File

@ -12,17 +12,16 @@
#
import os
import sys
# sys.path.insert(0, os.path.abspath('.'))
# -- Project information -----------------------------------------------------
project = 'multi-user'
project = 'Multi-User 0.5.x Documentation'
copyright = '2020, Swann Martinez'
author = 'Swann Martinez'
author = 'Swann Martinez, Poochy, Fabian'
# The full version, including alpha/beta/rc tags
release = '0.0.2'
version_release = '0.5.5'
# -- General configuration ---------------------------------------------------
@ -42,12 +41,15 @@ source_suffix = ".rst"
# The master toctree document.
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
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = 'python'
language = 'en'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
@ -60,28 +62,59 @@ 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 = os.environ.get('READTHEDOCS', None) == 'True'
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
html_theme = "default"
try:
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
del sphinx_rtd_theme
except ModuleNotFoundError:
pass
if on_rtd:
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 = {
# '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)
# '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 ------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'multiusrdoc'
htmlhelp_basename = 'Multi-User Manual'
# sphinx-notfound-page
# https://github.com/readthedocs/sphinx-notfound-page

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,117 @@
################
General Settings
################
This section contains optional settings to configure before a session.
.. figure:: img/sidepannel_general_settings.png
:align: center
General Settings pannel
---------
User info
---------
.. figure:: img/sidepannel_userinfo.png
:align: center
User Info settings
The **User Info** pannel is here to change your user name and use color.
-------
Network
-------
.. figure:: img/sidepannel_network.png
:align: center
Network settings
**Timeout (in milliseconds)** is the maximum ping authorized before auto-disconnecting.
You should only increase it if you have a bad connection.
-----
Cache
-----
.. figure:: img/sidepannel_cache.png
:align: center
Cache settings
Multi-user allows you to replicate external dependencies such as images (textures, hdris, etc...), movies, and sounds.
On each client, the files will be stored in the multi-user cache folder.
**Cache directory** choose where cached files (images, sound, movies) will be saved.
**Clear memory filecache** will save memory space at runtime by removing the file content from memory as soon as it has been written to the disk.
**Clear cache** will remove all files from the cache folder.
.. warning:: Clearing the cache could break your scene images/movies/sounds if they are used in a blend file! Try saving the blend file and choosing 'Pack all into blend' before clearing the cache.
-------
Logging
-------
.. figure:: img/sidepannel_logging.png
:align: center
Advanced log settings
**log level** allows you to set the level of detail captured in multi-user's logging output. Here is a brief description on the level of detail for each value of the logging parameter:
+-----------+-----------------------------------------------+
| Log level | Description |
+===========+===============================================+
| ERROR | Shows only critical errors |
+-----------+-----------------------------------------------+
| WARNING | Shows only errors (of all kinds) |
+-----------+-----------------------------------------------+
| INFO | Shows only status-related messages and errors |
+-----------+-----------------------------------------------+
| DEBUG | Shows all possible information |
+-----------+-----------------------------------------------+
-----------------
Save session data
-----------------
.. danger::
This is an experimental feature, it is still recommended to use regular .blend save.
The save session data allows you to create a backup of the session data.
When you hit the **save session data** button, the following popup dialog will appear.
It allows you to choose the destination folder and if you want to run an auto-save.
.. figure:: img/quickstart_save_session_data_dialog.png
:align: center
Save session data dialog.
If you enabled the auto-save option, you can cancel it from the **Cancel auto-save** button.
.. figure:: img/quickstart_save_session_data_cancel.png
:align: center
Cancel session autosave.
To import session data backups, use the following **Multiuser session snapshot** import dialog
.. figure:: img/quickstart_import_session_data.png
:align: center
Import session data dialog.
.. note::
It is not yet possible to start a session directly from a backup.
.. _advanced:

View File

@ -1,59 +0,0 @@
========
Glossary
========
.. glossary::
.. _admin:
administrator
*A session administrator can manage users (kick) and have a write access on
each datablock. He could also init a dedicated server repository.*
.. _session-status:
session status
*Located in the title of the multi-user panel, the session status show
you the connection state.*
.. figure:: img/quickstart_session_status.png
:align: center
Session status in panel title bar
All possible state are listed here with their meaning:*
+--------------------+---------------------------------------------------------------------------------------------+
| State | Description |
+--------------------+---------------------------------------------------------------------------------------------+
| WARMING UP DATA | Commiting local data |
+--------------------+---------------------------------------------------------------------------------------------+
| FETCHING | Dowloading snapshot from the server |
+--------------------+---------------------------------------------------------------------------------------------+
| AUTHENTIFICATION | Initial server authentication |
+--------------------+---------------------------------------------------------------------------------------------+
| ONLINE | Connected to the session |
+--------------------+---------------------------------------------------------------------------------------------+
| PUSHING | Init the server repository by pushing ours |
+--------------------+---------------------------------------------------------------------------------------------+
| INIT | Initial state |
+--------------------+---------------------------------------------------------------------------------------------+
| QUITTING | Exiting the session |
+--------------------+---------------------------------------------------------------------------------------------+
| LAUNCHING SERVICES | Launching local services. Services are spetialized daemons running in the background. ) |
+--------------------+---------------------------------------------------------------------------------------------+
| LOBBY | The lobby is a waiting state triggered when the server repository hasn't been initiated yet |
| | |
| | Once initialized, the server will automatically launch all client in the **LOBBY**. |
+--------------------+---------------------------------------------------------------------------------------------+
.. _common-right:
common right
When a data block is under common right, it is available for everyone to modification.
The rights will be given to the user that select it first.

View File

@ -0,0 +1,54 @@
.. _how-to-host:
How to host a session
=====================
------------
Local server
------------
The multi-user add-on relies on a Client-Server architecture.
The server is the heart of the collaborative session.
It is what allows user's blender instances to communicate with each other.
In simple terms, *Hosting a session* means *run a local server and connect the local client to it*.
When we say **local server** we mean a server which is accessible from the LAN (Local Area Network) without requiring an internet connection.
.. _local-setup:
When the hosting process starts, the multi-user addon will launch a local server instance.
In the **Hosting** panel configure your server according to:
.. figure:: img/first_time_server_host.png
:align: center
Hosting panel
* **Init the session from**: the session initialisation method.
* **current scenes**: start with the data loaded in the current blend file.
* **an empty scene**: clear the blend file's data and start over.
* **Port**: port on which the server is listening.
* **Server password**: (*optional*) the server password.
* **Admin password**: (*optional*) the session administration password.
Once everything is set up, you can hit the **Host** button to launch the session!
This will do two things:
* Start a local server
* Connect you to it as an :ref:`admin`
.. danger::
By starting from an empty scene, all of the blend data will be removed!
Be sure to save your existing work before launching the session.
-------------
Online server
-------------
However, there are times when you will need to host a session over the internet.
In this case, we strongly recommend that you read the :ref:`hosting_on_internet` tutorial.
During an online session, various actions are available to you, go to :ref:`how-to-manage` section to
learn more about them.

View File

@ -0,0 +1,104 @@
.. _how-to-join:
How to join a session
=====================
This section describes how to join a launched session.
Before starting make sure that you have access to the session **IP address**, **port number** and that you have filled in your **user information** (name and color).
-----------
Server List
-----------
The server list allows you to manage your servers:
.. figure:: img/quickstart_serverlist.png
:align: center
:width: 200px
Server List
To connect to a server, select the one you want to join in the list and click on **Connect**.
To know if the server you want to join is online, you can refresh your server list with the button on the top right corner.
Online status:
- **Red**: server is offline
- **Green**: server is online
.. note::
If a server is secured with a password, a lock will be displayed next to the server name. You first need to enter the password of the server in its preset to join it.
.. figure:: img/quickstart_serverlist_private.png
:align: center
:width: 200px
It is possible to **add**, **delete** and even **modify** a **server preset** with the buttons located on the top right of the server list:
.. figure:: img/quickstart_serverlist_manage_buttons.png
:align: center
:width: 200px
Add, Remove, Edit Server Preset
.. note::
Two server presets are already present when the addon is launched:
- The 'localhost' preset, to join a local session quickly
- The 'public session' preset, to join the public sessions of the multi-user server (official discord to participate : https://discord.gg/aBPvGws)
-------------------
Add a Server Preset
-------------------
To add a server, you must first register it in the server list. Click on the **+** icon and fill in the window with the server settings:
.. figure:: img/quickstart_server_edit.png
:align: center
:width: 350px
Server Preset pop-up
- **Server name**: the name of the server.
- **IP**: the host's IP address.
- **Port**: the host's port number.
- **Server password**: (*optional*) the server password.
- **Admin password**: (*optional*) the session administration password.
Once you've configured every field, you can save the server preset by clicking **OK**.
You can now select it in the server list to join the session !
.. warning:: Be careful, if you don't rename your new preset, or if it has the same name as an existing preset, the old preset will be overwritten.
----------------
Joining a server
----------------
CONNECT
-------
When joining a server that have already be initialise, the session status screen will be **CONNECT**.
You are now connected and can start creating.
.. figure:: img/quickstart_connect.png
:align: center
In session
During an online session, various actions are available to you. Go to :ref:`how-to-manage` to
learn more about them.
LOBBY
-----
When starting a **dedicated server**, the session status screen will take you to the **LOBBY** (see side-panel header).
If the session status is set to **LOBBY** and you are a regular user, you need to wait for the admin to launch the scene (admins have shield next to their names).
If you are the admin, you just need to initialise the session to start it (see image below).
.. figure:: img/quickstart_lobby.png
:align: center
Session initialisation for dedicated server

View File

@ -0,0 +1,135 @@
.. _how-to-manage:
How to manage a session
=======================
The quality of a collaborative session directly depends on the quality of the network connection, and the communication between the users. This section describes
various tools which have been made in an effort to ease the communication between your fellow creators.
Feel free to suggest any ideas for communication tools `here <https://gitlab.com/slumber/multi-user/-/issues/75>`_ .
--------------------
Monitor online users
--------------------
One of the most vital tools is the **Online user panel**. It lists all connected
users' information including your own:
* **Role** : admin/regular user.
* **Username** : name of the user.
* **Mode** : user's active mode (object, sculpt, paint,etc.).
* **Frame**: on which frame the user is working.
* **Location**: where the user is actually working.
* **Ping**: user's connection delay in milliseconds.
.. figure:: img/quickstart_users.png
:align: center
Online user panel
By selecting a user in the list you'll have access to different users' related **actions**.
Those operators allow you to experience the selected user's state in two different dimensions: **SPACE** and **TIME**.
Snapping in space
-----------------
The **CAMERA button** (Also called **snap view** operator) allow you to snap to
the user's viewpoint. To disable the snap, click on the button once again. This action
serves different purposes such as easing the review process, and working together on a large or populated world.
.. hint::
If the target user is located in another scene, the **snap view** operator will send you to their scene.
.. figure:: img/quickstart_snap_camera.gif
:align: center
Snap view in action
Snapping in time
----------------
The **CLOCK button** (Also called **snap time** operator) allows you to snap to
the user's time (current frame). To disable the snap, click on the button once again.
This action helps various multiple creators to work in the same time-frame
(for instance multiple animators).
.. figure:: img/quickstart_snap_time.gif
:align: center
Snap time in action
Kick a user
-----------
.. warning:: Only available for :ref:`admin` !
The **CROSS button** (Also called **kick** operator) allows the administrator to kick the selected user. This can be helpful if a user is acting unruly, but more importantly, if they are experiencing a high ping which is slowing down the scene. Meanwhile, in the target user's world, the session will properly disconnect.
---------------------------
Change replication behavior
---------------------------
During a session, multi-user will replicate all of your local modifications to the scene, to all other users' blender instances.
In order to avoid annoying other users when you are experimenting, you can flag some of your local modifications to be ignored via
various flags present at the top of the panel (see red area in the image below). Those flags are explained in the :ref:`replication` section.
.. figure:: img/quickstart_synchronize.png
:align: center
Session replication flags
-----------
Manage data
-----------
In order to understand replication data managment, a quick introduction to the multi-user data workflow is in order.
The first thing to know: until now, the addon relies on data-based replication. In simple words, it means that it replicates
the resultant output of a user's actions.
To replicate datablocks between clients, multi-user relies on a standard distributed architecture:
- The server stores the "master" version of the work.
- Each client has a local version of the work.
When an artist modifies something in the scene, here is what is happening in the background:
1. Modified data are **COMMITTED** to the local repository.
2. Once committed locally, they are **PUSHED** to the server
3. As soon as the server receives updates, they are stored locally and pushed to every other client
At the top of this data management system, a rights management system prevents
multiple users from modifying the same data at the same time. A datablock may belong to
a connected user or be under :ref:`common-right<**COMMON**>` rights.
.. note::
In a near future, the rights management system will support roles to allow multiple users to
work on different aspects of the same datablock.
The Repository panel (see image below) allows you to monitor, change datablock states and rights manually.
.. figure:: img/quickstart_repository.png
:align: center
Repository panel
The **show only owned** flag allows you to see which datablocks you are currently modifying.
.. warning::
If you are editing a datablock not listed with this flag enabled, it means that you have not been granted the rights to modify it.
So, it won't be updated to other clients!
Here is a quick list of available actions:
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| icon | Action | Description |
+=======================================+===================+====================================================================================+
| .. image:: img/quickstart_push.png | **Push** | push data-block to other clients |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| .. image:: img/quickstart_pull.png | **Pull** | pull last version into blender |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| .. image:: img/quickstart_refresh.png | **Reset** | Reset local change to the server version |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| .. image:: img/quickstart_unlock.png | **Lock/Unlock** | If locked, does nothing. If unlocked, grant modification rights to another user. |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| .. image:: img/quickstart_remove.png | **Delete** | Remove the data-block from network replication |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 8.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@ -3,9 +3,13 @@ Getting started
===============
.. toctree::
:maxdepth: 1
:name: toc-getting-started
:maxdepth: 2
install
update
quickstart
glossary
how-to-join
how-to-host
how-to-manage
troubleshooting

View File

@ -1,13 +1,39 @@
============
Installation
============
=====================
Installing Multi-User
=====================
.. warning:: Under development, use it at your own risks.
Multi-User is often updated. You can keep up to date with the latest changes through the release notes on our `Discord Server <https://discord.com/invite/aBPvGws>`_.
Download
========
`Stable Release <https://gitlab.com/slumber/multi-user/-/jobs/artifacts/master/download?job=build>`__
**Recommended**. A package packed with the latest features and is considered stable without regressions.
`Latest Release <https://gitlab.com/slumber/multi-user/-/jobs/artifacts/develop/download?job=build>`__
**Experimental**. A package updated almost daily to include the newest changes in development.
These versions are not as thoroughly tested as the stable release, and might break.
Install
=======
.. hint::
The process is the same for linux, mac and windows.
1. Download latest `release <https://gitlab.com/slumber/multi-user/-/jobs/artifacts/master/download?job=build>`_ or `develop (unstable !) <https://gitlab.com/slumber/multi-user/-/jobs/artifacts/develop/download?job=build>`_ build.
1. Download the addon zip file
2. Run blender as administrator (to allow python dependencies auto-installation).
3. Install **multi-user.zip** from your addon preferences.
3. Install **multi-user.zip** from your addon preferences in :menuselection:`Edit --> Preferences --> Add-ons --> Install`.
Once the addon is succesfully installed, I strongly recommend you to follow the :ref:`quickstart`
tutorial.
.. figure:: img/settings.png
:align: center
:width: 500px
The Addon Preferences Pannel
Once the addon is succesfully installed, we strongly recommend you to follow the :ref:`quickstart`
tutorial.
.. toctree::
:maxdepth: 1

View File

@ -1,335 +1,48 @@
.. _quickstart:
===========
Quick start
Quick Start
===========
.. hint::
*All session related settings are located under: `View3D -> Sidebar -> Multiuser panel`*
Welcome to the Multi-User manual.
You will find here all the documentation necessary for the good use of the addon: :ref:`index-manual`
The multi-user is based on a session management system.
In this this guide you will quickly learn how to use the collaborative session system in three part:
First of all, let's have a quick look at the Multi-User features.
Username and color
------------------
When you launch the addon for the first time you can find this panel in the Sidebar of your View3D:
.. figure:: img/first_time_menu.png
:align: center
1. Choose a **name** and a **color** that will be specific to you and that will allow others to identify you easily once in session. Don't worry, they can be changed at any time in :menuselection:`Edit --> Prerecences --> Add-ons --> Multi-user` or in :menuselection:`Multi-User Pannel --> General Settings`.
2. Press **Continue**
Multi-User side pannel
----------------------
Once the Multi-User is launched you will arrive directly on the main menu:
.. figure:: img/first_time_server_list.png
:align: center
Three panels are at your disposal:
- **Server list**: You can add, delete and edit server presets according to your preferences. At first launch two servers will already be in your preferences: *Public Session*, the public server of the Multi-User Discord, *Localhost*, to connect locally to your server.
- **Hosting**: To locally host a session with a Blender instance.
- **General Settings**: Include advanced addon settings like *user info*, *server ping*, *cache*, etc.
Session management
------------------
The multi-user addon provides a session management system.
In this guide, you will quickly learn how to use the collaborative session management system in three parts:
- :ref:`how-to-host`
- :ref:`how-to-join`
- :ref:`how-to-host`
- :ref:`how-to-manage`
.. _how-to-host:
How to host a session
=====================
The multi-user add-on rely on a Client-Server architecture.
The server is the heart of the collaborative session,
it will allow each users to communicate with each others.
In simple terms, *Hosting a session* means *run a local server and connect the local client to it*.
When I said **local server** I mean accessible from the LAN (Local Area Network).
However sometime you will need to host a session over the internet,
in this case I strongly recommand you to read the :ref:`internet-guide` tutorial.
.. _user-info:
-----------------------------
1. Fill your user information
-----------------------------
The **User Info** panel (See image below) allow you to constomize your online identity.
.. figure:: img/quickstart_user_info.png
:align: center
User info panel
Let's fill those tow field:
- **name**: your online name.
- **color**: a color used to represent you into other user workspace(see image below).
During online sessions, other users will see your selected object and camera hilghlited in your profile color.
.. _user-representation:
.. figure:: img/quickstart_user_representation.png
:align: center
User viewport representation
--------------------
2. Setup the network
--------------------
When the hosting process will start, the multi-user addon will lauch a local server instance.
In the nerwork panel select **HOST**.
The **Host sub-panel** (see image below) allow you to configure the server according to:
* **Port**: Port on wich the server is listening.
* **Start from**: The session initialisation method.
* **current scenes**: Start with the current blendfile datas.
* **an empty scene**: Clear a data and start over.
.. danger::
By starting from an empty, all of the blend data will be removed !
Ensure to save your existing work before launching the session.
* **Admin password**: The session administration password.
.. figure:: img/quickstart_host.png
:align: center
:alt: host menu
Host network panel
.. note:: Additionnal configuration setting can be found in the :ref:`advanced` section.
Once everything is setup you can hit the **HOST** button to launch the session !
It will do two things:
* Start a local server
* Connect you to it as an :ref:`admin`
During online session, various actions are available to you, go to :ref:`how-to-manage` section to
learn more about them.
.. _how-to-join:
How to join a session
=====================
This section describe how join a launched session.
Before starting make sure that you have access to the session ip and port.
-----------------------------
1. Fill your user information
-----------------------------
Follow the user-info_ section for this step.
----------------
2. Network setup
----------------
In the nerwork panel select **JOIN**.
The **join sub-panel** (see image below) allow you configure the client to join a
collaborative session.
.. figure:: img/quickstart_join.png
:align: center
:alt: Connect menu
Connection panel
Fill those field with your information:
- **IP**: the host ip.
- **Port**: the host port.
- **Connect as admin**: connect you with **admin rights** (see :ref:`admin` ) to the session.
.. Maybe something more explicit here
.. note::
Additionnal configuration setting can be found in the :ref:`advanced` section.
Once you've set every field, hit the button **CONNECT** to join the session !
When the :ref:`session-status` is **ONLINE** you are online and ready to start to collaborate.
.. note::
On the **dedicated server** startup, the session status will get you to the **LOBBY** waiting a admin to start it.
If the session status is set to **LOBBY** and you are a regular user, you need to wait that an admin launch it.
If you are the admin, you just need to init the repository to start the session (see image below).
.. figure:: img/quickstart_session_init.png
:align: center
Session initialisation for dedicated server
During online session, various actions are available to you, go to :ref:`how-to-manage` section to
learn more about them.
.. _how-to-manage:
How to manage a session
=======================
The collaboration quality directly depend on the communication quality. This section describes
various tools made in an effort to ease the communication between the different session users.
Feel free to suggest any idea for communication tools `here <https://gitlab.com/slumber/multi-user/-/issues/75>`_ .
--------------------
Monitor online users
--------------------
One of the most vital tool is the **Online user panel**. It list all connected
users information's including yours such as :
* **Role** : if user is an admin or a regular user.
* **Location**: Where the user is actually working.
* **Frame**: When (in frame) the user working.
* **Ping**: user connection delay in milliseconds
.. figure:: img/quickstart_users.png
:align: center
Online user panel
By selecting a user in the list you'll have access to different user related **actions**.
Those operators allow you reach the selected user state in tow different dimensions: **SPACE** and **TIME**.
Snapping in space
----------------
The **CAMERA button** (Also called **snap view** operator) allow you to snap on
the user viewpoint. To disable the snap, click back on the button. This action
served different purposes such as easing the review process, working together on
wide world.
.. hint::
If the target user is localized on another scene, the **snap view** operator will send you to his scene.
.. figure:: img/quickstart_snap_view.gif
:align: center
Snap view in action
Snapping in time
---------------
The **CLOCK button** (Also called **snap time** operator) allow you to snap on
the user time (current frame). To disable the snap, click back on the button.
This action is built to help various actors to work on the same temporality
(for instance multiple animators).
.. figure:: img/quickstart_snap_time.gif
:align: center
Snap time in action
Kick a user
-----------
.. warning:: Only available for :ref:`admin` !
The **CROSS button** (Also called **kick** operator) allow the admin to kick the selected user. On the target user side, the session will properly disconnect.
Change users display
--------------------
Presence is the multi-user module responsible for users display. During the session,
it draw users related information in your viewport such as:
* Username
* User point of view
* User selection
.. figure:: img/quickstart_presence.png
:align: center
Presence show flags
The presence overlay panel (see image above) allow you to enable/disable
various drawn parts via the following flags:
- **Show selected objects**: display other users current selection
- **Show users**: display users current viewpoint
- **Show different scenes**: display users working on other scenes
-----------
Manage data
-----------
In order to understand replication data managment, a quick introduction to the multi-user data workflow is required.
First thing to know: until now, the addon rely on a data-based replication. In simple words, it means that it replicate
user's action results.
To replicate datablocks between clients the multi-user rely on what tends to be a distributed architecture:
- The server store the "master" version of the work.
- Each client have a local version of the work.
When an artist modified something in the scene, here is what is happening in the background:
1. Modified data are **COMMITTED** to the local repository.
2. Once committed locally, they are **PUSHED** to the server
3. As soon as the server is getting updates, they are stored locally and pushed to every other clients
At the top of this data management system, a right management system prevent
multiple users from modifying same data at same time. A datablock may belong to
a connected user or be under :ref:`common-right<**COMMON**>` rights.
.. note::
In a near future, the right management system will support roles to allow multiple users to
work on different aspect of the same datablock.
The Repository panel (see image below) allow you to monitor, change datablock states and right manually.
.. figure:: img/quickstart_properties.png
:align: center
Repository panel
The **show only owned** flag allow you to see which datablocks you are currently modifying.
.. warning::
If you are editing a datablock not listed with this fag enabled, it means that you do
not have right granted to modify it. So it won't be updated to other client !
Here is a quick list of available actions:
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| icon | Action | Description |
+=======================================+===================+====================================================================================+
| .. image:: img/quickstart_push.png | **Push** | push data-block to other clients |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| .. image:: img/quickstart_pull.png | **Pull** | pull last version into blender |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| .. image:: img/quickstart_refresh.png | **Reset** | Reset local change to the server version |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| .. image:: img/quickstart_unlock.png | **Lock/Unlock** | If locked, does nothing. If unlocked, grant modification rights to another user. |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
| .. image:: img/quickstart_remove.png | **Delete** | Remove the data-block from network replication |
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
.. _advanced:
Advanced configuration
======================
This section contains optional settings to configure the session behavior.
.. figure:: img/quickstart_advanced.png
:align: center
Repository panel
.. rubric:: Network
**IPC Port** is the port used for Inter Process Communication. This port is used
by the multi-users subprocesses to communicate with each others. If different instances
of the multi-user are using the same IPC port it will create conflict !
You only need to modify it if you need to launch multiple clients from the same
computer(or if you try to host and join on the same computer). You should just enter a different
**IPC port** for each blender instance.
**Timeout (in milliseconds)** is the maximum ping authorized before auto-disconnecting.
You should only increase it if you have a bad connection.
.. rubric:: Replication
**Synchronize render settings** (only host) enable replication of EEVEE and CYCLES render settings to match render between clients.
**Properties frequency gird** allow to set a custom replication frequency for each type of data-block:
- **Refresh**: pushed data update rate (in second)
- **Apply**: pulled data update rate (in second)
.. note:: Per-data type settings will soon be revamped for simplification purposes
For more details on what the addon offers:
.. - :ref:

View File

@ -0,0 +1,57 @@
================
Update the Addon
================
Multi-User has a built-in auto-update function in its preferences.
Auto-Update
-----------
1. Enable it by clicking 'Auto-check for Update' and choose the frequency you'd like.
2. **Make sure to click the three bars in the bottom-left, and save this to your preferences**
.. figure:: img/auto_updater_location.png
:align: center
:width: 500px
Update menu in the addon preferences pannel
Manual Update
-------------
Sometimes you'd like to perform manual update, or even side-grade or rollback your multi-user version. Perhaps you are trying out new features from the 'develop' branch in a test session.
1. Click on 'Check now for multiuser update'. Multi-user will now find new versions
.. figure:: img/auto_updater_check.png
:align: center
:width: 500px
Check for updates
1. Select 'Install latest master / old version'
.. figure:: img/auto_updater_last.png
:align: center
:width: 500px
Install
1. In most cases, select 'master' branch for the latest stable release. The unstable 'develop' branch and older releases are available
.. figure:: img/auto_updater_version.png
:align: center
:width: 500px
Select version
4. Finally, restart blender to use the updated version
.. figure:: img/auto_updater_restart.png
:align: center
:width: 500px
Restart blender
.. toctree::
:maxdepth: 1

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,723 @@
.. _hosting_on_internet:
===================
Hosting on Internet
===================
.. warning::
Until now, those communications are not encrypted but are planned to be in a mid-term future (`status <https://gitlab.com/slumber/multi-user/issues/62>`_).
This tutorial aims to guide you toward hosting a collaborative multi-user session on the internet.
Hosting a session can be achieved in several ways:
- :ref:`host-blender`: hosting a session directly from the blender add-on panel.
- :ref:`host-dedicated`: hosting a session directly from the command line interface on a computer without blender.
- :ref:`host-cloud`: hosting a session on a dedicated cloud server such as Google Cloud's free tier.
.. _host-blender:
--------------------
From blender
--------------------
By default your router doesn't allow anyone to share you connection.
In order grant the server access to people from internet you have two main option:
* The :ref:`connection-sharing`: the easiest way.
* The :ref:`port-forwarding`: this way is the most unsecure. If you have no networking knowledge, you should definitely follow :ref:`connection-sharing`.
.. _connection-sharing:
Using a connection sharing solution
-----------------------------------
You can either follow `Pierre Schiller's <https://www.youtube.com/c/activemotionpictures/featured>`_ excellent video tutorial or jump to the `text tutorial <zt-installation_>`_.
.. raw:: html
<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/xV4R5AukkVw" frameborder="0" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</p>
Many third party software like `ZEROTIER <https://www.zerotier.com/download/>`_ (Free) or `HAMACHI <https://vpn.net/>`_ (Free until 5 users) allow you to share your private network with other people.
For the example I'm gonna use ZeroTier because it's free and open source.
.. _zt-installation:
1. Installation
^^^^^^^^^^^^^^^
Let's start by downloading and installing ZeroTier:
https://www.zerotier.com/download/
Once installed, launch it.
2. Network creation
^^^^^^^^^^^^^^^^^^^
To create a ZeroTier private network you need to register a ZeroTier account `on my.zerotier.com <https://my.zerotier.com/login>`_
(click on **login** then register on the bottom)
Once you account it activated, you can connect to `my.zerotier.com <https://my.zerotier.com/login>`_.
Head up to the **Network** section (highlighted in red in the image below).
.. figure:: img/hosting_guide_head_network.png
:align: center
:width: 450px
ZeroTier user homepage
Hit 'Create a network'(see image below) and go to the network settings.
.. figure:: img/hosting_guide_create_network.png
:align: center
:width: 450px
Admin password
Now that the network is created, let's configure it.
In the Settings section(see image below), you can change the network name to what you want.
Make sure that the field **Access Control** is set to **PRIVATE**.
.. hint::
If you set the Access Control to PUBLIC, anyone will be able to join without
your confirmation. It is easier to set up but less secure.
.. figure:: img/hosting_guide_network_settings.png
:align: center
:width: 450px
Network settings
That's all for the network setup !
Now let's connect everyone.
.. _network-authorization:
3. Network authorization
^^^^^^^^^^^^^^^^^^^^^^^^
Since your ZeroTier network is Private, you will need to authorize each new user
to connect to it.
For each user you want to add, do the following step:
1. Get the client **ZeroTier id** by right clicking on the ZeroTier tray icon and click on the `Node ID`, it will copy it.
.. figure:: img/hosting_guide_get_node.png
:align: center
:width: 450px
Get the ZeroTier client id
2. Go to the network settings in the Member section and paste the Node ID into the Manually Add Member field.
.. figure:: img/hosting_guide_add_node.png
:align: center
:width: 450px
Add the client to network-authorized users
4. Network connection
^^^^^^^^^^^^^^^^^^^^^
To connect to the ZeroTier network, get the network id from the network settings (see image).
.. figure:: img/hosting_guide_get_id.png
:align: center
:width: 450px
Now we are ready to join the network !
Right click on the ZeroTier tray icon and select **Join Network** !
.. figure:: img/hosting_guide_join_network.png
:align: center
:width: 450px
.. figure:: img/hosting_guide_join.png
:align: center
Joining the network
Past the network id and check ``Allow Managed`` then click on join !
You should be connected to the network.
Let's check the connection status. Right click on the tray icon and click on **Show Networks...**.
.. figure:: img/hosting_guide_show_network.png
:align: center
:width: 450px
Show network status
.. figure:: img/hosting_guide_network_status.png
:align: center
Network status.
The network status must be **OK** for each user(like in the picture above) otherwise it means that you are not connected to the network.
If you see something like **ACCESS_DENIED**, it means that you were not authorized to join the network. Please check the section :ref:`network-authorization`
This is it for the ZeroTier network setup. Now everything should be setup to use the multi-user add-on over internet ! You can now follow the :ref:`quickstart` guide to start using the multi-user add-on !
.. _port-forwarding:
Using port-forwarding
---------------------
The port forwarding method consists of configuring your network router to deny most traffic with a firewall, but to then allow particular internet traffic (like a multiuser connection) through the firewall on specified ports.
In order to know which ports are used by the add-on, please check the :ref:`port-setup` section.
To set up port forwarding for each port you can follow this `guide <https://www.wikihow.com/Set-Up-Port-Forwarding-on-a-Router>`_ for example.
Once you have set up the network you can follow the :ref:`quickstart` guide to begin using the multi-user add-on !
.. _host-dedicated:
--------------------------
From the dedicated server
--------------------------
.. warning::
The dedicated server is developed to run directly on an internet server (like a VPS (Virtual Private Server)). You can also run it at home on a LAN but for internet hosting you need to follow the :ref:`port-forwarding` setup first. Please see :ref:`host-cloud` for a detailed walkthrough of cloud hosting using Google Cloud.
The dedicated server allows you to host a session with simplicity from any location.
It was developed to improve internet hosting performance (for example poor latency).
The dedicated server can be run in two ways:
- :ref:`cmd-line`
- :ref:`docker`
.. Note:: There are shell scripts to conveniently start a dedicated server via either of these approaches available in the gitlab repository. See section: :ref:`serverstartscripts`
.. _cmd-line:
Using a regular command line
----------------------------
You can run the dedicated server on any platform by following these steps:
1. Firstly, download and intall python 3 (3.6 or above).
2. Install the latest version of the replication library:
.. code-block:: bash
python -m pip install replication
3. Launch the server with:
.. code-block:: bash
replication.serve
.. hint::
You can also specify a custom **port** (-p), **timeout** (-t), **admin password** (-pwd), **log level (ERROR, WARNING, INFO or DEBUG)** (-l) and **log file** (-lf) with the following optional arguments
.. code-block:: bash
replication.serve -p 5555 -pwd admin -t 5000 -l INFO -lf server.log
Here, for example, a server is instantiated on port 5555, with password 'admin', a 5 second timeout, and logging enabled.
As soon as the dedicated server is running, you can connect to it from blender by following :ref:`how-to-join`.
.. hint::
Some server commands are available to enable administrators to manage a multi-user session. Check :ref:`dedicated-management` to learn more.
.. _docker:
Using a pre-configured image on docker engine
---------------------------------------------
Launching the dedicated server from a docker server is simple as running:
.. code-block:: bash
docker run -d \
-p 5555-5560:5555-5560 \
-e port=5555 \
-e log_level=DEBUG \
-e password=admin \
-e timeout=5000 \
registry.gitlab.com/slumber/multi-user/multi-user-server:latest
Please use the :latest tag, or otherwise use the URL of the most recent container available in the `multi-user container registry <https://gitlab.com/slumber/multi-user/container_registry/1174180>`_. As soon as the dedicated server is running, you can connect to it from blender by following :ref:`how-to-join`.
You can check that your container is running, and find its ID and name with:
.. code-block:: bash
docker ps
.. _docker-logs:
Viewing logs in a docker container
----------------------------------
Logs for the server running in a docker container can be accessed by outputting the container logs to a log file. First, you'll need to know your container ID, which you can find by running:
.. code-block:: bash
docker ps
Then, output the container logs to a file:
.. code-block:: bash
docker logs your-container-id >& dockerserver.log
.. Note:: If using WSL2 on Windows 10 (Windows Subsystem for Linux), it is preferable to run a dedicated server via regular command line approach (or the associated startup script) from within Windows - docker desktop for windows 10 usually uses the WSL2 backend where it is available.
.. This may not be true. Need to write up how to locally start a docker container from WSL2
Downloading logs from a docker container on a cloud-hosted server
-----------------------------------------------------------------
If you'd like to pull the log files from a cloud-hosted server to submit to a developer for review, a simple process using SSH and SCP is as follows:
First SSH into your instance. You can either open the `VM Instances console <https://console.cloud.google.com/compute/instances>`_ and use the browser terminal provided by Google Cloud (I had the best luck using the Google Chrome browser)... or you can see `here <https://cloud.google.com/compute/docs/instances/connecting-advanced#thirdpartytools>`_ for how to set up your instance for SSH access from your local terminal.
If using SSH from your terminal, first generate SSH keys (setting their access permissions to e.g. chmod 400 level whereby only the user has permissions) and submit the public key to the cloud-hosted VM instance, storing the private key on your local machine.
Then, SSH into your cloud server from your local terminal, with the following command:
.. code-block:: bash
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP_ADDRESS
Use the private key which corresponds to the public key you uploaded, and the username associated with that key (visible in the Google Cloud console for your VM Instance). Use the external IP address for the server, available from the `VM Instances console <https://console.cloud.google.com/compute/instances>`_
e.g.
.. code-block:: bash
ssh -i ~/.ssh/id_rsa user@xxx.xxx.xxx.xxx
Once you've connected to the server's secure shell, you can generate a log file from the docker container running the replication server. First, you'll need to know your container ID, which you can find by running:
.. code-block:: bash
docker ps
If you're cloud-hosting with e.g. Google Cloud, your container will be the one associated with the `registry address <https://gitlab.com/slumber/multi-user/container_registry/1174180>`_ where your Docker image was located. e.g. registry.gitlab.com/slumber/multi-user/multi-user-server:latest
To view the docker container logs, run:
.. code-block:: bash
docker logs your-container-name
OR
.. code-block:: bash
docker logs your-container-id
To save the output to a file, run:
.. code-block:: bash
docker logs your-container-id >& dockerserver.log
Now that the server logs are available in a file, we can disconnect from the secure shell (SSH), and then copy the file to the local machine using SCP. In your local terminal, execute the following:
.. code-block:: bash
scp -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP_ADDRESS:"dockerserver.log" LOCAL_PATH_TO_COPY_FILE_TO
e.g.
.. code-block:: bash
scp -i ~/.ssh/id_rsa user@xxx.xxx.xxx.xxx:"dockerserver.log" .
This copies the file dockerserver.log generated in the previous step to the current directory on the local machine. From there, you can send it to the multi-user maintainers for review.
.. Note:: See these `notes <https://cloud.google.com/compute/docs/containers/deploying-containers?_ga=2.113663175.-1396941296.1606125558#viewing_container_logs>`_ for how to check server logs on Google Cloud using other tools.
.. _serverstartscripts:
Server startup scripts
----------------------
Convenient scripts are available in the Gitlab repository: https://gitlab.com/slumber/multi-user/scripts/startup_scripts/
Simply run the relevant script in a shell on the host machine to start a server with one line of code via replication directly or via a docker container. Choose between the two methods:
.. code-block:: bash
./start-server.sh
or
.. code-block:: bash
./run-dockerfile.sh
.. hint::
Once your server is up and running, some commands are available to manage the session :ref:`dedicated-management`
.. _dedicated-management:
Dedicated server management
---------------------------
Here is the list of available commands from the dedicated server:
- ``help`` or ``?``: Show all commands. Or, use ``help <command>`` to learn about another command
- ``exit`` or ``Ctrl+C`` : Stop the server.
- ``kick username``: kick the provided user.
- ``users``: list all online users.
Also, see :ref:`how-to-manage` for more details on managing a server.
.. _cloud-dockermanage:
Managing a docker server from the command line
----------------------------------------------
If you want to be able to manage a server running within a docker container, open the terminal on the host machine (or SSH in, if you are using cloud hosting), and then run
.. code-block:: bash
docker ps
to find your container id, and then
.. code-block:: bash
docker attach your-container-id
to attach to the STDOUT from the container. There, you can issue the server management commands detailed in :ref:`dedicated-management`. Type ``?`` and hit return/enter to see the available commands. Also, see :ref:`how-to-manage` for more details on managing a server.
.. _port-setup:
----------
Port setup
----------
The multi-user network architecture is based on a client-server model. The communication protocol uses four ports to communicate with clients:
* Commands: command transmission (such as **snapshots**, **change_rights**, etc.) [user-nominated port]
* Subscriber : pull data [Commands port + 1]
* Publisher : push data [Commands port + 2]
* TTL (time to leave) : used to ping each client [Commands port + 3]
To know which ports will be used, you just have to read the port in your preferences.
.. figure:: img/hosting_guide_port.png
:align: center
:alt: Port
:width: 200px
Port in host settings
In the picture below we have setup our port to **5555** so the four ports will be:
* Commands: **5555** (5555)
* Subscriber: **5556** (5555 +1)
* Publisher: **5557** (5555 +2)
* TTL: **5558** (5555 +3)
Those four ports need to be accessible from the client otherwise multi-user won't work at all !
.. _host-cloud:
-------------------------
Cloud Hosting Walkthrough
-------------------------
The following is a walkthrough for how to set up a multi-user dedicated server instance on a cloud hosting provider - in this case, `Google Cloud <https://www.cloud.google.com>`_. Google Cloud is a powerful hosting service with a worldwide network of servers. It offers a free trial which provides free cloud hosting for 90 days, and then a free tier which runs indefinitely thereafter, so long as you stay within the `usage limits <https://cloud.google.com/free/docs/gcp-free-tier#free-tier-usage-limits>`_. ^^Thanks to community member @NotFood for the tip!
Cloud hosting is a little more complicated to set up, but it can be valuable if you are trying to host a session with multiple friends scattered about planet earth. This can resolve issues with data replication or slowdowns due to poor latency of some users (high ping). This guide may seem technical, but if you follow the steps, you should be able to succeed in hosting an internet server to co-create with other multi-user creators around the world.
Setup Process
-------------
1. Sign Up for Google Cloud
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Let's start by activating an account with Google Cloud. Go to https://www.cloud.google.com and click 'Get Started For Free'
.. figure:: img/hosting_guide_gcloud_1.jpg
:align: center
:width: 450px
Google will ask you to login/signup, and to set up a billing account (Don't worry. It will not be charged unless you explicitly enable billing and then run over your `free credit allowance <https://cloud.google.com/free/docs/gcp-free-tier>`_). You will need to choose a billing country (relevant for `tax purposes <https://cloud.google.com/billing/docs/resources/vat-overview>`_). You will choose your server location at a later step.
2. Enable Billing and Compute Engine API
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
From here on, we will mostly stick to the instructions provided `here <https://cloud.google.com/compute/docs/quickstart-linux>`_. Nevertheless, the instructions for multi-user specifically are as follows.
In order to set up a Virtual Machine (VM) to host your server, you will need to enable the billing account which was created during your signup process. From your `console <https://console.cloud.google.com/getting-started>`_, click on 'Go to Checklist' and then 'Create a Billing Account', following the prompts to choose the billing account that was created for you upon signup.
.. figure:: img/hosting_guide_gcloud_2.jpg
:align: center
:width: 300px
.. figure:: img/hosting_guide_gcloud_3.jpg
:align: center
:width: 300px
.. figure:: img/hosting_guide_gcloud_4.jpg
:align: center
:width: 300px
.. figure:: img/hosting_guide_gcloud_5.jpg
:align: center
:width: 300px
.. figure:: img/hosting_guide_gcloud_6.jpg
:align: center
:width: 300px
Now hit 'Set Account', and go back to your `console <https://console.cloud.google.com/getting-started>`_.
Now enable the Compute Engine API. Click `here <https://console.cloud.google.com/apis/api/compute.googleapis.com/overview>`_ to enable.
.. figure:: img/hosting_guide_gcloud_7.jpg
:align: center
:width: 300px
3. Create a Linux Virtual Machine Instance
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Continue following the `instructions <https://cloud.google.com/compute/docs/quickstart-linux#create_a_virtual_machine_instance>`_ to create a VM instance. However, once you've finished step 2 of 'Create a virtual machine instance', use the settings and steps for multi-user as follows.
.. _server-location:
3.1 Choose a Server Location
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The most important settings which you will need to choose for your specific case are the server Region and Zone. You must choose a location which will provide the best ping for all of your fellow creators.
All you need to know is that you'll probably want to choose a location near to where most of your collaborators are located. If your friends are spread out, somewhere in the middle which distributes the ping evenly to all users is best.
You can use `this map <https://cloud.google.com/about/locations/>`_ to make a rough guess of the best server location, if you know your friends' locations.
.. figure:: img/hosting_guide_gcloud_9.jpg
:align: center
:width: 450px
A much better approach is to have your users run a ping test for Google Cloud's servers at https://www.gcping.com/
Have your collaborators open this webpage from their fastest browser, and press the play button. The play button turns to a stop icon while the ping test is running. When it is complete, the play button returns. You may need to refresh your browser to get this to work. You can replay the test to add more server locations to the scan, and stop when you are satisfied that the results are consistent.
Now, gather your friends' data, and work down each user's list from the top, until you find the first location which gives roughly the same ping for all users.
In general, global (using load balancing) will provide the best results, but beyond that, the US Central servers e.g. IOWA generally turn out best for a globally distributed bunch of creators. When in doubt, choose between the servers offered under the `free tier <https://cloud.google.com/free/docs/gcp-free-tier>`_
- Oregon: *us-west1*
- Iowa: *us-central1*
- South Carolina: *us-east1*
For the following example, the server which gave the most balanced, and lowest average ping between two friends based in Europe and Australia was in Iowa. Salt Lake City would also be an excellent choice.
.. figure:: img/hosting_guide_gcloud_10.jpg
:align: center
:width: 450px
Left - European User | Right - Australian User
Now, input this server location in the 'Region' field for your instance, and leave the default zone which is then populated.
.. Note:: You can read `here <https://cloud.google.com/solutions/best-practices-compute-engine-region-selection>`_ for a deeper understanding about how to choose a good server location.
3.2 Configure the VM
^^^^^^^^^^^^^^^^^^^^
You can deploy the replication server to your VM in either of the ways mentioned at :ref:`host-dedicated`. That is, you can set it up :ref:`cmd-line` or :ref:`docker`. We will go through both options in this walkthrough. See :ref:`container_v_direct` for more details on how to choose. Deploying a container is the recommended approach.
.. _cloud-container:
Option 1 - Deploy a container
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If you are familiar with Docker, you'll appreciate that it makes life a little simpler for us. While configuring your instance, you can check **Deploy a container to this VM instance** and copy in the URL of the latest docker image available from the `multi-user container registry <https://gitlab.com/slumber/multi-user/container_registry/1174180>`_ to the *Container image* field, or use the tag ``:latest``
.. figure:: img/hosting_guide_gcloud_8b.jpg
:align: center
:width: 450px
Your configuration with Docker should look like this
Make sure to choose the amount of memory you'd like your server to be able to handle (how much memory does your blender scene require?). In this example, I've chosen 4GB of RAM.
Click on **Advanced container options** and turn on *Allocate a buffer for STDIN* and *Allocate a pseudo-TTY* just in case you want to run an interactive shell in your container.
.. _cloud-optional-parameters:
Optional server parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^
The default Docker image essentially runs the equivalent of:
.. code-block:: bash
replication.server -pwd admin -p 5555 -t 5000 -l DEBUG -lf multiuser_server.log
This means the server will be launched with 'admin' as the administrator password, run on ports 5555:5558, use a timeout of 5 seconds, verbose 'DEBUG' log level, and with log files written to 'multiuser_server.log'. See :ref:`cmd-line` for a description of optional parameters.
.. Note:: If you'd like to configure different server options from the default docker configuration, you can insert your options here by expanding 'Advanced container options'
For example, I would like to launch my server with a different administrator password than the default, my own log filename, and a shorter 3-second (3000ms) timeout. I'll click *Add argument* under **Command arguments** and paste the following command with options into the "command arguments" field:
.. code-block:: bash
replication.serve -pwd supersecretpassword -p 5555 -t 3000 -l DEBUG -lf logname.log
Now, my configuration should look like this:
.. figure:: img/hosting_guide_gcloud_8c.jpg
:align: center
:width: 450px
The rest of the settings are now complete. Hit **Create** and your instance will go live. If you've taken this approach, you're already almost there! Skip to :ref:`cloud-firewall`.
.. hint:: You can find further information on configuration options `here <https://cloud.google.com/compute/docs/containers/configuring-options-to-run-containers>`_. Also, see these `notes <https://cloud.google.com/compute/docs/containers/deploying-containers?_ga=2.113663175.-1396941296.1606125558#viewing_container_logs>`_ for other options when deploying your server inside a container, including how to access the server's logs.
.. _cloud-direct:
Option 2 - Over SSH
^^^^^^^^^^^^^^^^^^^
Otherwise, we can run the dedicated server ourselves from the command-line over SSH.
While creating your instance, keep the default settings mentioned in the `guide <https://cloud.google.com/compute/docs/quickstart-linux#create_a_virtual_machine_instance>`_, however at step 4, choose Debian version 10. Also, there is no need to enable HTTP so skip step 6.
.. figure:: img/hosting_guide_gcloud_8a.jpg
:align: center
:width: 450px
Your configuration should look like this
Make sure to choose the amount of memory you'd like your server to be able to handle (how much memory does your blender scene require?). In this example, I've chosen 4GB of RAM.
Now, finally, click 'Create' to generate your Virtual Machine Instance.
.. _cloud-firewall:
4. Setting up Firewall and opening Ports
----------------------------------------
Now that your VM is instanced, you'll need to set up firewall rules, and open the ports required by multi-user. The documentation for VM firewalls on google cloud is `here <https://cloud.google.com/vpc/docs/using-firewalls#listing-rules-vm>`_.
First, go to the dashboard showing your `VM instances <https://console.cloud.google.com/compute/instances>`_ and note the 'External IP' address for later. This is the address of your server. Then, click 'Set up Firewall Rules'.
.. figure:: img/hosting_guide_gcloud_11.jpg
:align: center
:width: 450px
Note down your External IP
Now you will need to create two rules. One to enable communication inbound to your server (ingress), and another to enable outbound communication from your server (egress). Click 'Create Firewall'
.. figure:: img/hosting_guide_gcloud_12.jpg
:align: center
:width: 450px
Now create a rule exactly as in the image below for the outbound communication (egress).
.. figure:: img/hosting_guide_gcloud_13.jpg
:align: center
:width: 450px
Egress
.. Note:: If you set a different port number in :ref:`cloud-optional-parameters`, then use the ports indicated in :ref:`port-setup`
And another rule exactly as in the image below for the inbound communication (ingress).
.. figure:: img/hosting_guide_gcloud_14.jpg
:align: center
:width: 450px
Ingress
Finally, your firewall configuration should look like this.
.. figure:: img/hosting_guide_gcloud_15.jpg
:align: center
:width: 450px
Final Firewall Configuration
5. Install Replication Server into Virtual Machine
--------------------------------------------------
.. Note:: Skip to :ref:`initialise-server` if you've opted to launch the server by deploying a container. Your server is already live!
Now that we have set up our Virtual Machine instance, we can SSH into it, and install the Replication Server. Open the `VM Instances console <https://console.cloud.google.com/compute/instances>`_ once more, and SSH into your instance. It's easiest to use the browser terminal provided by Google Cloud (I had the best luck using the Google Chrome browser), but you can also see `here <https://cloud.google.com/compute/docs/instances/connecting-advanced#thirdpartytools>`_ for how to set up your instance for SSH access from your terminal.
.. figure:: img/hosting_guide_gcloud_16.jpg
:align: center
:width: 450px
Now, a terminal window should pop up in a new browser window looking something like this:
.. figure:: img/hosting_guide_gcloud_17.jpg
:align: center
:width: 450px
Remember, you had set up the VM with Debian 10. This comes with Python 3.7.3 already installed. The only dependency missing is to set up pip3. So, run:
.. code-block:: bash
sudo apt install python3-pip
.. figure:: img/hosting_guide_gcloud_18.jpg
:align: center
:width: 450px
And now lets install the latest version of replication:
.. code-block:: bash
sudo pip3 install replication==0.1.13
6. Launch Replication Server on VM Instance
-------------------------------------------
We're finally ready to launch the server. Simply run:
.. code-block:: bash
replication.serve -p 5555 -pwd admin -t 5000 -l INFO -lf server.log
See :ref:`cmd-line` for a description of optional parameters
And your replication server is live! It should stay running in the terminal window until you close it. Copy the external IP that you noted down earlier, available `here <https://console.cloud.google.com/networking/addresses/list>`_ and now you can open Blender and connect to your server!
.. _initialise-server:
7. Initialise your Server in Blender
------------------------------------
Once in Blender, make sure your multi-user addon is updated to the latest version. :ref:`update-version`. Then, follow the instructions from :ref:`how-to-join` and connect as an admin user, using the password you launched the server with and the IP adress of the server. Then, click *connect*.
Now as the admin user, you can click on *init* and choose whether to initialise the server with a preloaded scene, or an empty scene.
Now your session is live!
If you made it this far, congratulations! You can now go ahead and share the external IP address with your friends and co-creators and have fun with real-time collaboration in Blender!
Hopefully, your cloud server setup has improved your group's overall ping readings, and you're in for a smooth and trouble-free co-creation session.
.. Note:: If you should so desire, pay attention to your credit and follow the steps `here <https://cloud.google.com/compute/docs/quickstart-linux#clean-up>`_ to close your instance at your discretion.
.. _container_v_direct:
Should I deploy a Docker Container or launch a server from Linux VM command-line?
------------------------------------------------------
- Directly from Linux VM - This approach gives you control over your session more easily. However, your server may time out once your SSH link to the server is interrupted (for example, if the admin's computer goes to sleep).
- Deploy a Docker Container - This is the recommended approach. This approach is better for leaving a session running without supervision. It can however be more complicated to manage. Use this approach if you'd like a consistent experience with others in the multi-user community, pulling from the most up-to-date docker image maintained by @swann in the multi-user container registry.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 KiB

After

Width:  |  Height:  |  Size: 438 KiB

BIN
docs/img/index_advanced.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

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