Compare commits
1083 Commits
Author | SHA1 | Date | |
---|---|---|---|
7bc45f8b58 | |||
7e6fc3ef3a | |||
acc74b9bf9 | |||
62904e8106 | |||
b58871470c | |||
8935c94101 | |||
12355b6457 | |||
74ad4e5e1f | |||
2a88c3e5ac | |||
4c42a5be92 | |||
757ee7015a | |||
15d66579c6 | |||
4128a47b88 | |||
689a565c75 | |||
c5f1bf1176 | |||
4dc6781c94 | |||
5311e55208 | |||
4cb64e5e77 | |||
ff67b581b1 | |||
f7bec3fc08 | |||
5e929db3ee | |||
629f2e1cdb | |||
b8fed806ed | |||
8190846b59 | |||
c228b6ad7f | |||
48651ce890 | |||
26847cf459 | |||
bfa6991c00 | |||
0c60c86775 | |||
70b6f9bcfa | |||
8d176b55e4 | |||
4c0356e724 | |||
6b04d1d8d6 | |||
edfcdd8867 | |||
bdd6599614 | |||
6efd1321ce | |||
047bd47048 | |||
d32cbb7b30 | |||
adabce3822 | |||
62f52db5b2 | |||
745f45b682 | |||
4b7573234a | |||
f84860f520 | |||
c7ee67d4dd | |||
7ed4644b75 | |||
e0c4a17be9 | |||
2a6181b832 | |||
0f7c9adec5 | |||
f094ec097c | |||
2495b5b0e7 | |||
cc829b66d1 | |||
97cec4f9af | |||
102eb3ded0 | |||
bea6373f03 | |||
8c3845349a | |||
9256d78d3c | |||
bb952a507f | |||
3669aafcff | |||
dfcfb84c20 | |||
5390e1a60c | |||
2910ea654b | |||
ff2ecec18b | |||
7555b1332a | |||
690e450349 | |||
3e7e3a9b19 | |||
e27a16975c | |||
44f1dc1aa8 | |||
c62ed63de3 | |||
de32bd89e3 | |||
50e86aea15 | |||
c05a12343c | |||
a09193fba2 | |||
60e21f2b8e | |||
421f00879f | |||
5ac61b5348 | |||
189e5c6cf1 | |||
964e6a8c63 | |||
80c81dc934 | |||
563fdb693d | |||
a64eea3cea | |||
03ad7c0066 | |||
d685573834 | |||
0681b53141 | |||
6f02b38b0e | |||
92c773dae9 | |||
f48ade6390 | |||
63c4501b88 | |||
06e21c86ce | |||
e28d3860da | |||
7b247372fb | |||
bc47ef951a | |||
de7417f0da | |||
9d484b00e9 | |||
de9255f71c | |||
61cdfd7eca | |||
99528ea3e0 | |||
bb342951a5 | |||
438a79177b | |||
947e9044c6 | |||
08fc49c40f | |||
d7e25b1192 | |||
1671422143 | |||
a9620c0752 | |||
583beaf6fe | |||
126d2338f2 | |||
24b0c0ed8a | |||
07fc1cf000 | |||
8e0131b3a8 | |||
912a2d524c | |||
82a5124d64 | |||
cca5bf903b | |||
4c0d4cb1c7 | |||
ca64797641 | |||
a49d9ee437 | |||
4c1cd6b8f8 | |||
d6cda709a6 | |||
4bc0feb3a5 | |||
59aab7159a | |||
0a798bb21b | |||
beaafce4fa | |||
6f77337832 | |||
07252d62df | |||
ac615cd134 | |||
ac84509b83 | |||
a4f9f6e051 | |||
10de88cdc9 | |||
69565b3852 | |||
e4fa34c984 | |||
0dd685d009 | |||
3e8c30c0ab | |||
21cc3cd917 | |||
81e620ee3d | |||
fb9bd108bd | |||
4846fbb589 | |||
cab6625399 | |||
1b81251a11 | |||
cf44e547a2 | |||
0269363c63 | |||
4ffca17c54 | |||
77bf269fb5 | |||
1e675132d4 | |||
781287c390 | |||
fc91b252f4 | |||
41c7c569ca | |||
a82d263f05 | |||
d4476baa1b | |||
467e98906e | |||
64a25f94a3 | |||
e6996316be | |||
cf4cd94096 | |||
e9ab633aac | |||
297639e80f | |||
f0cc63b6f0 | |||
d433e8f241 | |||
963a551a1e | |||
d01a434fb7 | |||
3a5a5fc633 | |||
8926ab44e1 | |||
a8f96581c5 | |||
440a4cc1cd | |||
a207c51973 | |||
e706c8e0bf | |||
e590e896da | |||
4140b62a8e | |||
6d9c9c4532 | |||
e9e1911840 | |||
ab350ca7bc | |||
0a8f0b5f88 | |||
2238a15c11 | |||
de73f022e6 | |||
f517205647 | |||
f33c3d8481 | |||
71c69000ec | |||
de1e684b3c | |||
d87730cffb | |||
3f005b86ab | |||
5098e5135d | |||
37cfed489c | |||
9003abcd18 | |||
a199e0df00 | |||
3774419b7e | |||
3e552cb406 | |||
9f381b44c8 | |||
ad795caed5 | |||
504dd77405 | |||
82022c9e4d | |||
d81b4dc014 | |||
63affa079f | |||
fcf5a12dd0 | |||
b0529e4444 | |||
bdfd89c085 | |||
ff1630f9cc | |||
5830fe1abb | |||
c609f72080 | |||
a28a6f91bd | |||
a996f39d3b | |||
7790a16034 | |||
836fdd02b8 | |||
7cb3482353 | |||
041022056c | |||
05f3eb1445 | |||
17193bde3a | |||
a14b4313f5 | |||
b203d9dffd | |||
f64db2155e | |||
e07ebdeff5 | |||
3d6453f7a2 | |||
7421511079 | |||
bc24525cec | |||
699cf578e2 | |||
e9b4afb440 | |||
0c6491590e | |||
b87e733ddc | |||
cb0962b484 | |||
1fc25412ac | |||
b5405553dc | |||
a1b6fb0533 | |||
b6a8a2ec01 | |||
3e41b18af1 | |||
f7c4f5d1fe | |||
c616054878 | |||
5c08493774 | |||
af8a138b4f | |||
6d9216f14a | |||
fc4fb088bb | |||
98553ba00c | |||
1e15a12b10 | |||
569543650f | |||
07358802f7 | |||
a059fafe12 | |||
297f68ccfe | |||
c9c70d1e08 | |||
a34f58ef3f | |||
e7b7f38991 | |||
392e0aaaa3 | |||
4c774d5d53 | |||
4c4cf8a970 | |||
211d0848c2 | |||
c9665c4719 | |||
431fe0d840 | |||
df7ca66ad8 | |||
c2d2db78e6 | |||
ad89a4e389 | |||
6ca6d4443d | |||
81c9b5fc06 | |||
9fddfe084c | |||
ca40523393 | |||
76e28ced21 | |||
55c6002b28 | |||
8d5c8aded3 | |||
8ebba80b97 | |||
50d6c6b3c8 | |||
f0b03c50f2 | |||
28e83a38e6 | |||
2e261cd66b | |||
3f6e4f7333 | |||
49fadf084a | |||
e2e0dc31c1 | |||
389bbd97d5 | |||
19602691d3 | |||
2e2ff5d4bf | |||
fef6559ce0 | |||
5f669fd49a | |||
330ff08fd3 | |||
f3be8f9623 | |||
ffb70ab74c | |||
26140eefb2 | |||
cdf0433e8a | |||
acd70f73bf | |||
36c3a9ab0b | |||
cfb1afdd72 | |||
4eeb80350e | |||
fb1c985f31 | |||
689c2473d6 | |||
41620fce90 | |||
249bcf827b | |||
d47eab4f26 | |||
f011089d82 | |||
acc58a1c9f | |||
24d850de9f | |||
b045911a59 | |||
a67be76422 | |||
32033c743c | |||
5da8650611 | |||
aec5096f87 | |||
fba39b9980 | |||
6af3e4b777 | |||
58d639e9d8 | |||
0efe5d5a10 | |||
2ad93cf304 | |||
771d76a98b | |||
1e83241494 | |||
1bcbff3ed4 | |||
9a45fe7125 | |||
207901afdd | |||
c6eb1ba22f | |||
ba4168d0fd | |||
00e7adf022 | |||
d9d8ca7ca0 | |||
e8cd271bd8 | |||
e71af6402c | |||
dd1c6a4fc7 | |||
7fe1ae83b1 | |||
a7ad9d30c3 | |||
14779be1ed | |||
a36c3740cc | |||
d2108facab | |||
e5651151d9 | |||
fb61b380b6 | |||
57fdd492ef | |||
e538752fbc | |||
53eaaa2fcd | |||
a7e9108bff | |||
570909a7c4 | |||
736c3df7c4 | |||
8e606068f3 | |||
eb631e2d4b | |||
70641435cc | |||
552c649d34 | |||
d9d5a34653 | |||
12acd22660 | |||
826a59085e | |||
5ee4988aca | |||
cb85a1db4c | |||
5e30e215ab | |||
9f167256d0 | |||
4e19c169b2 | |||
9c633c35ec | |||
9610b50a49 | |||
67d18f08e2 | |||
9d0d684589 | |||
2446df4fe3 | |||
07862f1cf0 | |||
3a02711baa | |||
c7e8002fed | |||
f4e7ec6be8 | |||
480818fe85 | |||
b965c80ba5 | |||
235db712fd | |||
647ac46c01 | |||
8e3c86561f | |||
dba19e831d | |||
93df5ca5fa | |||
b17104c67e | |||
b66d0dd4ce | |||
9487753307 | |||
df1257ca4c | |||
875b9ce934 | |||
2d638ef76f | |||
cc5a87adb8 | |||
19c56e590b | |||
d0e80da945 | |||
0ccd0563ea | |||
1c3394ce56 | |||
d2b63df68e | |||
3d9c78c2f9 | |||
4726a90a4a | |||
73b763d85f | |||
5e29c6fe26 | |||
113ab81cbf | |||
d2215b662c | |||
238a34d023 | |||
55ca8a7b84 | |||
7049c1723d | |||
6586647eac | |||
fb6f170d60 | |||
c1c39438e3 | |||
317fc03f87 | |||
505f3ab770 | |||
209062af4f | |||
88bab2a4c6 | |||
a91bae3506 | |||
0a96643a9f | |||
261d4d9610 | |||
3293741969 | |||
3eee8db1ae | |||
031b143843 | |||
7dd6e38e3f | |||
1dd0235061 | |||
cdcb2de786 | |||
0b88631250 | |||
c00b2a2d7d | |||
1f0f44fdbf | |||
8262fb9d4e | |||
c2114b593e | |||
7e28ca3fa1 | |||
d0bd4193d9 | |||
d09479fd47 | |||
07cfb85561 | |||
cf0d7a1122 | |||
3f335c7031 | |||
2180db5206 | |||
e6110b4cea | |||
819598ebd9 | |||
1be43f0336 | |||
6a5ff9a097 | |||
86cb3d29fb | |||
589702dab7 | |||
ed76210270 | |||
75c4f42796 | |||
1fd54769b9 | |||
c4484b4b51 | |||
4eb787cc0f | |||
c855b5a424 | |||
ee4083c134 | |||
0325e9d0bd | |||
21dc95b5a7 | |||
d8161f22f3 | |||
94f8bff231 | |||
d3a1094cc2 | |||
d08e0a80a4 | |||
26148e9934 | |||
0a7be03c6f | |||
b6449a7da2 | |||
36038effdf | |||
cb90c196a5 | |||
ae3c9fe43e | |||
2983195af4 | |||
4d69faf186 | |||
2304563b6e | |||
1cfb4e797e | |||
8f95158f08 | |||
5949e3c5cc | |||
790f145022 | |||
ec40862dd0 | |||
9cc1c92e0e | |||
7a716b4c37 | |||
a4ef8a6344 | |||
c5e20085f0 | |||
f4463f9cfe | |||
a212445927 | |||
89a8891073 | |||
52ebb874b0 | |||
2913e6d5a7 | |||
6a00b58600 | |||
2bde136bb6 | |||
f5c77fec3a | |||
d3211199c4 | |||
2d90ea7679 | |||
abd846fc8d | |||
e3bd7ea445 | |||
12bd4a603b | |||
3c31fb5118 | |||
c24f70fad5 | |||
ca2d8e49b5 | |||
4b1499f6ae | |||
f0c1fe9c87 | |||
dfaf1be4ff | |||
51cb099c4c | |||
64731a9198 | |||
213523c8d6 | |||
4fdb72f874 | |||
1412fc638c | |||
7920f67aea | |||
a0c0f781e2 | |||
ec74ea0038 | |||
2c016833fd | |||
3d9da73ab0 | |||
2f4e30f432 | |||
cd1e535a56 | |||
8a8cc0b322 | |||
1e64e17ff4 | |||
66b6c06a2c | |||
45fbc46d8d | |||
39e3c1dbd5 | |||
f043b03128 | |||
ffe419a46e | |||
d4a0f782aa | |||
9273adbd01 | |||
03b92eb5e7 | |||
d0dc61bf66 | |||
056b3524e5 | |||
16fc4b8c54 | |||
e62f0682a2 | |||
f463cb82e7 | |||
54f416e8c3 | |||
682c983a64 | |||
8015881e29 | |||
6e2d36cd00 | |||
affab2414c | |||
af6d54296a | |||
2ab0a75608 | |||
ccb9e55920 | |||
31254d13c0 | |||
6fddbb6f5e | |||
9ee3f26b80 | |||
19c5ca0928 | |||
4bc35d7da4 | |||
8d19ffd52f | |||
4f506c461a | |||
49fcc40db9 | |||
8492b537a8 | |||
e6e4f6ab7a | |||
e073182028 | |||
78eb5d948c | |||
ac9a0f3733 | |||
4e7ade8f38 | |||
0b25264375 | |||
1d03fe4975 | |||
1273ab2371 | |||
7dd2ee5e70 | |||
c72bb21f20 | |||
5b43520353 | |||
7e25ca4c84 | |||
4a4cd5db50 | |||
7f19d45b71 | |||
37b3d6d094 | |||
64bb715aff | |||
3024b479d3 | |||
abf4462da6 | |||
aa6827303f | |||
254e8e8ca1 | |||
a63bf66023 | |||
983c5f9020 | |||
9f61335a85 | |||
ed0c5d9431 | |||
46414aef13 | |||
3841ed3330 | |||
47a281faff | |||
f0442861a8 | |||
039225a41c | |||
f1ffe37ac7 | |||
6ca7b42ab4 | |||
fbb32147b9 | |||
d85db295a5 | |||
0f1850bf2c | |||
8f4de7adbf | |||
320745aab3 | |||
40cec39d27 | |||
498616147b | |||
30b2f5d32e | |||
f7e98abb59 | |||
4022f300b3 | |||
cef45dad3c | |||
30d734c2c1 | |||
4391510d7b | |||
04a4f7668a | |||
908c0fa4af | |||
c718e62b33 | |||
2f34bba1fd | |||
db4e495183 | |||
c00a7184ff | |||
9c83df45fc | |||
17949003f7 | |||
371d793a13 | |||
c710111887 | |||
664f7635cc | |||
babecf5ae7 | |||
0bad6895da | |||
66e55a7eec | |||
4e2377cd7f | |||
f90c12b27f | |||
3573db0969 | |||
92bde00a5a | |||
2c82560d24 | |||
6f364d2b88 | |||
760b52c02b | |||
4dd932fc56 | |||
ba1a03cbfa | |||
18b5fa795c | |||
1a82ec72e4 | |||
804747c73b | |||
7ee705332f | |||
bed33ca6ba | |||
716c78e380 | |||
5e4ce4556f | |||
aa9ea08151 | |||
f56890128e | |||
8865556229 | |||
5bc9b10c12 | |||
7db3c18213 | |||
ff35e34032 | |||
9f8222afa7 | |||
1828bfac22 | |||
3a1087ecb8 | |||
b398541787 | |||
f0b33d8471 | |||
5a282a3e22 | |||
4283fc0fff | |||
753f4d3f27 | |||
9dd02b2756 | |||
c74d12c843 | |||
e1d9982276 | |||
8861986213 | |||
1cb9fb410c | |||
c4a8cc4606 | |||
187f11071c | |||
530fae8cb4 | |||
6771c371a1 | |||
c844c6e54f | |||
a4d0b1a68b | |||
2fdc11692d | |||
dbfca4568f | |||
069a528276 | |||
030f2661fd | |||
e589e3eec4 | |||
04140ced1b | |||
0d9ce43e74 | |||
d3969b4fd4 | |||
e21f64ac98 | |||
b25b380d21 | |||
1146d9d304 | |||
51b60521e6 | |||
035f8a1dcd | |||
cefaef5c4b | |||
4714e60ff7 | |||
3eca25ae19 | |||
96346f8a25 | |||
a258c2c182 | |||
6862df5331 | |||
f271a9d0e3 | |||
bdff6eb5c9 | |||
b661407952 | |||
d5eb7fda02 | |||
35e8ac9c33 | |||
4453d256b8 | |||
299e330ec6 | |||
34b9f7ae27 | |||
9d100d84ad | |||
2f677c399e | |||
e967b35c38 | |||
7bd0a196b4 | |||
7892b5e9b6 | |||
f779678c0e | |||
629fc2d223 | |||
724c2345df | |||
673c4e69a4 | |||
fbfff6c7ec | |||
f592294335 | |||
8e7be5afde | |||
fc76b2a8e6 | |||
1a8bcddb74 | |||
60fba5b9df | |||
be0eb1fa42 | |||
93d9bea3ae | |||
022b7f7822 | |||
ae34846509 | |||
d328077cb0 | |||
0c4740eef8 | |||
d7b2c7e2f6 | |||
efbb9e7096 | |||
e0b56d8990 | |||
7a94c21187 | |||
0687090f05 | |||
920744334c | |||
dfa7f98126 | |||
ea530f0f96 | |||
c3546ff74f | |||
83aa9b57ec | |||
28a265be68 | |||
7dfabb16c7 | |||
ea5d9371ca | |||
3df73a0716 | |||
ae3c994ff1 | |||
bd73b385b6 | |||
f054b1c5f2 | |||
d083100a2a | |||
b813b8df9e | |||
d0e966ff1a | |||
56cbf14fe1 | |||
8bf55ebd46 | |||
edbc5ee343 | |||
4a92511582 | |||
b42df2cf4a | |||
7549466824 | |||
423e71476d | |||
3bc4b20035 | |||
9966a24b5e | |||
577c01a594 | |||
3d72796c10 | |||
edcbd7b02a | |||
b368c985b8 | |||
cab1a71eaa | |||
33cb188509 | |||
0a3dd9b5b8 | |||
7fbdbdcc21 | |||
8f9d5aabf9 | |||
824d4d6a83 | |||
5f4bccbcd9 | |||
8e8e54fe7d | |||
04b13cc0b7 | |||
ba98875560 | |||
a9fb84a5c6 | |||
2f139178d3 | |||
e466f81600 | |||
cb836e30f5 | |||
152e356dad | |||
7b13e8978b | |||
e0839fe1fb | |||
aec3e8b8bf | |||
a89564de6b | |||
e301a10456 | |||
cfc6ce91bc | |||
4f731c6640 | |||
9b1b8f11fd | |||
e742c824fc | |||
6757bbbd30 | |||
f6a39e4290 | |||
410d8d2f1a | |||
bd64c17f05 | |||
dc063b5954 | |||
0ae34d5702 | |||
167b39f15e | |||
9adc0d7d6e | |||
fb622fa098 | |||
c533d4b86a | |||
6c47e095be | |||
f992d06b03 | |||
af3afc1124 | |||
b77ab2dd05 | |||
150054d19c | |||
8d2b9e5580 | |||
6870331c34 | |||
6f73b7fc29 | |||
6385830f53 | |||
b705228f4a | |||
73d2da4c47 | |||
b28e7c2149 | |||
38f06683be | |||
62221c9e49 | |||
e9f416f682 | |||
3108a06e89 | |||
470df50dc2 | |||
d8a94e3f5e | |||
47a0efef27 | |||
ca5aebfeff | |||
fe6ffd19b4 | |||
b9a6ddafe9 | |||
ae71d7757e | |||
34ed5da6f0 | |||
2c16f07ae7 | |||
60f25359d1 | |||
975b50a988 | |||
66417dc84a | |||
514f90d602 | |||
086876ad2e | |||
71c179f32f | |||
2399096b07 | |||
0c4d1aaa5f | |||
de8fbb0629 | |||
d7396e578c | |||
7f5b5866f2 | |||
3eb1af406b | |||
79ccac915f | |||
f5232ccea0 | |||
c599a4e6ea | |||
b3230177d8 | |||
f2da4cb8e9 | |||
605bcc7581 | |||
e31d76a641 | |||
97c2118b7e | |||
352977e442 | |||
a46d5fa227 | |||
ade736d8a5 | |||
d7f7e86015 | |||
5e7d1e1dda | |||
fa5f0c7296 | |||
f14d0915c8 | |||
d1e088d229 | |||
aa35da9c56 | |||
f26c3b2606 | |||
00d60be75b | |||
bb5b9fe4c8 | |||
c6af49492e | |||
6158ef5171 | |||
6475b4fc08 | |||
e4e09d63ff | |||
4b07ae0cc3 | |||
49a419cbe2 | |||
5d52fb2460 | |||
f1e09c1507 | |||
f915c52bd0 | |||
dee2e77552 | |||
7953a2a177 | |||
3f0082927e | |||
07ffe05a84 | |||
09ee1cf826 | |||
61bcec98c3 | |||
1c85d436fd | |||
03318026d4 | |||
7a0b142d69 | |||
eb874110f8 | |||
6e0c7bc332 | |||
ee83e61b09 | |||
99b2dc0539 | |||
53f1118181 | |||
2791264a92 | |||
6c2ee0cad3 | |||
20f8c25f55 | |||
0224f55104 | |||
644702ebdf | |||
9377b2be9b | |||
29cbf23142 | |||
a645f71d19 | |||
909d92a7a1 | |||
7ee9089087 | |||
6201c82392 | |||
0faf7d9436 | |||
e69e61117a | |||
25e988d423 | |||
8a3ab895e0 | |||
06a8e3c0ab | |||
c1c1628a38 | |||
022e3354d9 | |||
211cb848b9 | |||
25e233f328 | |||
9bc3d9b29d | |||
15debf339d | |||
56df7d182d | |||
26e1579e35 | |||
a0e290ad6d | |||
092384b2e4 | |||
2dc3654e6c | |||
f37a9efc60 | |||
0c5d323063 | |||
b9f1b8a871 | |||
2f6d8e1701 | |||
9e64584f2d | |||
154aaf71c8 | |||
ac24ab69ff | |||
ad431378f8 | |||
784506cd95 | |||
eb7542b1dd | |||
2bc0d18120 | |||
27f9b8c659 | |||
ae08b40e8b | |||
6ce4cc2d47 | |||
f96d5e0e2f | |||
8ec80b5150 | |||
691c45b2c2 | |||
25f3e27b7f | |||
e2cdd26b7c | |||
eb52deade6 | |||
0e8bdf7fe5 | |||
b2d1cec7f4 | |||
29e19c7e05 | |||
dda252729d | |||
4e4d366a57 | |||
fca53a6725 | |||
80f37583cc | |||
5f763906c3 | |||
f64d36d7ed | |||
dc6975171c | |||
e5d3c664a7 | |||
d11035fd6c | |||
406039aa21 | |||
5e8c4c1455 | |||
92efa89e35 | |||
d806570ee0 | |||
b414ca31b1 | |||
59bfcede97 | |||
9d8e3a3e7b | |||
788477502d | |||
226c01df8b | |||
c57fb0ca67 | |||
745c7ca04a | |||
8ddb86556d | |||
b1ccbf72f3 | |||
f85001cb1a | |||
a7371c0566 | |||
3d9c20cc03 | |||
661065e51f | |||
c1fe033ff3 | |||
3ea45b3cf6 | |||
b385a821d4 | |||
ac1e1f39b7 | |||
41140286e1 | |||
c50313f8b1 | |||
2ad626197f | |||
e927676e3e | |||
4531b7fd6d | |||
5199a810cd | |||
2bdbfb082b | |||
9e6b1a141d | |||
9c3afdbd81 | |||
32669cef22 | |||
cc6d1a35bc | |||
63a36ad5d4 | |||
bcdefca32c | |||
88e69711ba | |||
1ccfd59e65 | |||
a201ae4ea6 | |||
e9029b1414 | |||
19946794f6 | |||
3f15092b3a | |||
838df92217 | |||
54b01e4513 | |||
c065b198d4 | |||
12c0dab881 | |||
7759234ea3 | |||
ad99a349f7 | |||
fdc7e4678c | |||
8d040cc304 | |||
f1c95d03f8 | |||
b55faf2d1c | |||
258f27d96e | |||
8027e541c3 | |||
fc1108ab61 | |||
54bcd41267 | |||
25c19471bb | |||
9e4e646bb1 | |||
95524fa3e9 | |||
07a646aa18 | |||
67fc19dae1 | |||
1070cabf7a | |||
fcc9292e02 | |||
f3d8f15ab1 | |||
4c44c2f1a0 | |||
e7d948049d | |||
0ad0f4d62d | |||
7df6ab1852 | |||
b4d1e04b87 | |||
2e60bb985f | |||
f8fa407a45 | |||
b2085e80f8 | |||
95241d4148 | |||
03490af042 | |||
94aeff7b35 | |||
f5452b8aee | |||
4f02134b6c | |||
52b2c25014 | |||
d8f68640b5 | |||
bb2fc2c32b | |||
582c908dc4 | |||
506284ad1f | |||
e7e8782c28 | |||
3f614cdcef | |||
5f1853bbe3 | |||
99d64cd411 | |||
607a1f25d3 | |||
b047b48738 | |||
e1688f7f12 | |||
5aa7a1f140 | |||
ca141f9860 | |||
d4d14d57ff | |||
1789ae20cf | |||
2e0414f9d5 | |||
52cbf79f39 | |||
e9e06bbf8f | |||
1f16e07a3c | |||
e476d44527 | |||
7a09026b6c | |||
09c724ac53 | |||
7152bb825d | |||
e8d23426d7 | |||
dcb593db07 | |||
3b9a722812 | |||
7cc0c0ccf8 | |||
1304489748 | |||
673a9dd669 | |||
fc15478dfa | |||
c23b5923ab | |||
2d700e83bb | |||
271f210591 | |||
e65dd1939a | |||
76be9092c8 | |||
3394299e8b | |||
56ea93508c | |||
5e6f6ac460 | |||
49d676f4f2 | |||
4dd4cea3ed | |||
408a16064c | |||
cfd80dd426 | |||
0fde356f4b | |||
427b36ddaf | |||
1b94e017e6 | |||
b3b2296b06 | |||
9c897745fd | |||
0783c625d0 | |||
a1036956c3 | |||
bfbf2727ea | |||
39766739d2 | |||
776664149e | |||
fef088e39b | |||
31feb2439d | |||
e041b2cb91 | |||
379e7cdf71 | |||
928eccfa23 | |||
9c9d7a31bf | |||
d46ea3a117 | |||
820c6dad7e | |||
acbf897f5d | |||
981ac03855 | |||
c20777f860 | |||
219973930b | |||
79ba63ce85 | |||
922538dc3a | |||
5574059b46 | |||
289a49251e | |||
ef9e9dbae8 | |||
98d86c050b | |||
3f0c31d771 | |||
d7e47e5c14 | |||
cab4a8876b | |||
d19932cc3b | |||
ea9ee4ead1 | |||
667c3cd04d | |||
6334bfdc01 | |||
2016af33b7 | |||
f0a2659b43 | |||
489502a783 | |||
cb6e26513c | |||
3680a751aa | |||
4413785903 | |||
25825f7aeb | |||
73019fc0b0 | |||
6a98e749f9 | |||
a84fccb3ce | |||
f9222d84ea | |||
d7964b645a | |||
c3ae56abd2 | |||
daff548010 | |||
757dbfd6ab | |||
01fdf7b35b | |||
90d4bb0e47 | |||
01faa94a9a | |||
b55700862f | |||
90a44eb5db | |||
fb0760928e | |||
8ce53b8413 | |||
2484028b5a | |||
2fcb4615be | |||
653cf7e25a | |||
aa0b54a054 | |||
8d2755060e | |||
ba9b4ebe70 | |||
b8f46c2523 | |||
153ff5b129 | |||
931301074e | |||
56e5709a35 | |||
7fa97704bd | |||
85b3f6e246 | |||
a0676f4e37 | |||
5a0be0f6f9 | |||
717a2da3de | |||
4a127e617c | |||
3f7cb65393 | |||
cd00813aed | |||
511983c7ff | |||
1e580dbcd6 | |||
824040660b | |||
931c683030 | |||
ff5e56e36c | |||
1c6e88ce61 | |||
08b9a35981 | |||
7db7382c68 | |||
1e81a2de16 | |||
624f67a621 | |||
ffb6c397b8 | |||
dbaff5df85 | |||
5f95eadc1d | |||
40ad96b0af | |||
75839e60f0 | |||
cd10dbb04d | |||
7c3ac6aeed | |||
d30f4452be | |||
61a05dc347 | |||
9f59e7b6e8 | |||
30f787f507 | |||
a8da01c8ff | |||
9df7cd4659 | |||
c281ac4397 | |||
250cf91032 | |||
fe9a096ab2 | |||
a6e1566f89 | |||
adeb694b2d | |||
50d14e663e | |||
9b8d69042d | |||
b2475081b6 | |||
aef1d8987c | |||
d8f49ff298 | |||
efa243211b | |||
f03a3aadff | |||
16147ae2ba | |||
8e600778ab | |||
292f76aea5 | |||
28c4ccf1f3 | |||
a7641d6fc9 | |||
c7584964fe | |||
549b0b3784 | |||
fc9ab1a7e6 | |||
44bffc1850 | |||
a141e9bfe7 |
7
.gitignore
vendored
@ -7,6 +7,11 @@ __pycache__/
|
||||
cache
|
||||
config
|
||||
*.code-workspace
|
||||
multi_user_updater/
|
||||
|
||||
# sphinx build folder
|
||||
_build
|
||||
_build
|
||||
|
||||
# ignore generated zip generated from blender_addon_tester
|
||||
*.zip
|
||||
libs
|
7
.gitlab-ci.yml
Normal file
@ -0,0 +1,7 @@
|
||||
stages:
|
||||
- build
|
||||
|
||||
|
||||
include:
|
||||
- local: .gitlab/ci/build.gitlab-ci.yml
|
||||
|
11
.gitlab/ci/build.gitlab-ci.yml
Normal file
@ -0,0 +1,11 @@
|
||||
build:
|
||||
stage: build
|
||||
image: debian:stable-slim
|
||||
script:
|
||||
- rm -rf tests .git .gitignore script
|
||||
artifacts:
|
||||
name: multi_user
|
||||
paths:
|
||||
- multi_user
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
21
.gitlab/ci/deploy.gitlab-ci.yml
Normal 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
|
16
.gitlab/ci/doc.gitlab-ci.yml
Normal 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
|
||||
|
||||
|
46
.gitlab/issue_templates/Bug.md
Normal file
@ -0,0 +1,46 @@
|
||||
<!---
|
||||
Please read this!
|
||||
|
||||
Before opening a new issue, make sure to search for keywords in the issues
|
||||
filtered by the "bug" label:
|
||||
|
||||
- https://gitlab.com/slumber/multi-user/-/issues?scope=all&utf8=✓&label_name[]=bug
|
||||
|
||||
and verify the issue you're about to submit isn't a duplicate.
|
||||
--->
|
||||
|
||||
### Summary
|
||||
|
||||
(Summarize the bug encountered concisely)
|
||||
|
||||
* Addon version: (your addon-version)
|
||||
* Blender version: (your blender version)
|
||||
* OS: (your os windows/linux/mac)
|
||||
|
||||
|
||||
### Steps to reproduce
|
||||
|
||||
(How one can reproduce the issue - this is very important)
|
||||
|
||||
### Example Project [optionnal]
|
||||
(If possible, please create an example project that exhibits the problematic behavior, and link to it here in the bug report)
|
||||
|
||||
|
||||
### What is the current *bug* behavior?
|
||||
|
||||
(What actually happens)
|
||||
|
||||
|
||||
### Relevant logs and/or screenshots
|
||||
|
||||
(Paste any relevant logs - please use code blocks (```) to format console output,
|
||||
logs, and code as it's tough to read otherwise.)
|
||||
|
||||
|
||||
### Possible fixes [optionnal]
|
||||
|
||||
(If you can, link to the line of code that might be responsible for the problem)
|
||||
|
||||
|
||||
/label ~type::bug
|
||||
/cc @project-manager
|
30
.gitlab/issue_templates/Documentation.md
Normal file
@ -0,0 +1,30 @@
|
||||
### Problem to solve
|
||||
|
||||
<!-- Include the following detail as necessary:
|
||||
* What feature(s) affected?
|
||||
* What docs or doc section affected? Include links or paths.
|
||||
* Is there a problem with a specific document, or a feature/process that's not addressed sufficiently in docs?
|
||||
* Any other ideas or requests?
|
||||
-->
|
||||
|
||||
### Further details
|
||||
|
||||
<!--
|
||||
* Any concepts, procedures, reference info we could add to make it easier to successfully use the multi-user addom?
|
||||
* Include use cases, benefits, and/or goals for this work.
|
||||
-->
|
||||
|
||||
### Proposal
|
||||
|
||||
<!-- Further specifics for how can we solve the problem. -->
|
||||
|
||||
### Who can address the issue
|
||||
|
||||
<!-- What if any special expertise is required to resolve this issue? -->
|
||||
|
||||
### Other links/references
|
||||
|
||||
<!-- E.g. related GitLab issues/MRs -->
|
||||
|
||||
/label ~type::documentation
|
||||
/cc @project-manager
|
18
.gitlab/issue_templates/Feature Proposal.md
Normal file
@ -0,0 +1,18 @@
|
||||
### Problem to solve
|
||||
|
||||
<!-- What problem do we solve? Try to define the who/what/why of the opportunity as a user story. For example, "As a (who), I want (what), so I can (why/value)." -->
|
||||
|
||||
|
||||
### Proposal
|
||||
|
||||
<!-- How are we going to solve the problem?-->
|
||||
|
||||
### Further details
|
||||
|
||||
<!-- Include use cases, benefits, goals, or any other details that will help us understand the problem better. -->
|
||||
|
||||
|
||||
### Links / references
|
||||
|
||||
/label ~type::feature request
|
||||
/cc @project-manager
|
34
.gitlab/issue_templates/Refactoring.md
Normal file
@ -0,0 +1,34 @@
|
||||
## Summary
|
||||
|
||||
<!--
|
||||
Please briefly describe what part of the code base needs to be refactored.
|
||||
-->
|
||||
|
||||
## Improvements
|
||||
|
||||
<!--
|
||||
Explain the benefits of refactoring this code.
|
||||
-->
|
||||
|
||||
## Risks
|
||||
|
||||
<!--
|
||||
Please list features that can break because of this refactoring and how you intend to solve that.
|
||||
-->
|
||||
|
||||
## Involved components
|
||||
|
||||
<!--
|
||||
List files or directories that will be changed by the refactoring.
|
||||
-->
|
||||
|
||||
## Optional: Intended side effects
|
||||
|
||||
<!--
|
||||
If the refactoring involves changes apart from the main improvements (such as a better UI), list them here.
|
||||
It may be a good idea to create separate issues and link them here.
|
||||
-->
|
||||
|
||||
|
||||
/label ~type::refactoring
|
||||
/cc @project-manager
|
237
CHANGELOG.md
@ -35,4 +35,239 @@ All notable changes to this project will be documented in this file.
|
||||
- Right management takes view-layer in account for object selection.
|
||||
- Use a basic BFS approach for replication graph pre-load.
|
||||
- Serialization is now based on marshal (2x performance improvements).
|
||||
- Let pip chose python dependencies install path.
|
||||
- Let pip chose python dependencies install path.
|
||||
|
||||
## [0.0.3] - 2020-07-29
|
||||
|
||||
### Added
|
||||
|
||||
- Auto updater support
|
||||
- Big Performances improvements on Meshes, Gpencils, Actions
|
||||
- Multi-scene workflow support
|
||||
- Render setting synchronization
|
||||
- Kick command
|
||||
- Dedicated server with a basic command set
|
||||
- Administrator session status
|
||||
- Tests
|
||||
- Blender 2.83-2.90 support
|
||||
|
||||
### Changed
|
||||
|
||||
- Config is now stored in blender user preference
|
||||
- Documentation update
|
||||
- Connection protocol
|
||||
- UI revamp:
|
||||
- user localization
|
||||
- repository init
|
||||
|
||||
### Removed
|
||||
|
||||
- Unused strict right management strategy
|
||||
- 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
|
71
README.md
@ -2,7 +2,7 @@
|
||||
|
||||
> Enable real-time collaborative workflow inside blender
|
||||
|
||||

|
||||
<img src="https://i.imgur.com/X0B7O1Q.gif" width=600>
|
||||
|
||||
|
||||
:warning: Under development, use it at your own risks. Currently tested on Windows platform. :warning:
|
||||
@ -11,36 +11,54 @@ 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 | :exclamation: | Not stable |
|
||||
| armature | :exclamation: | Not stable |
|
||||
| camera | :white_check_mark: | |
|
||||
| collection | :white_check_mark: | |
|
||||
| curve | :white_check_mark: | Not tested |
|
||||
| gpencil | :white_check_mark: | |
|
||||
| image | :exclamation: | Not stable yet |
|
||||
| mesh | :white_check_mark: | |
|
||||
| material | :white_check_mark: | |
|
||||
| metaball | :white_check_mark: | |
|
||||
| object | :white_check_mark: | |
|
||||
| scene | :white_check_mark: | |
|
||||
| world | :white_check_mark: | |
|
||||
| lightprobes | :white_check_mark: | |
|
||||
| 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
|
||||
|
||||
@ -51,18 +69,17 @@ I'm working on it.
|
||||
|
||||
| Dependencies | Version | Needed |
|
||||
| ------------ | :-----: | -----: |
|
||||
| ZeroMQ | latest | yes |
|
||||
| msgpack | latest | yes |
|
||||
| PyYAML | 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
|
||||
|
||||
See [license](LICENSE)
|
||||
|
||||
[](https://multi-user.readthedocs.io/en/latest/?badge=latest)
|
||||
|
17
docs/about/community.rst
Normal 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
@ -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.
|
BIN
docs/about/img/about_chain.gif
Normal file
After Width: | Height: | Size: 5.8 MiB |
@ -1,8 +1,10 @@
|
||||
About
|
||||
=====
|
||||
================
|
||||
About Multi-User
|
||||
================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:name: toc-about
|
||||
:maxdepth: 2
|
||||
|
||||
introduction
|
||||
features
|
||||
community
|
||||
|
@ -1,10 +1,14 @@
|
||||
============
|
||||
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.
|
||||
|
||||
.. figure:: img/about_chain.gif
|
||||
:align: center
|
||||
|
||||
The linear workflow problems
|
||||
|
||||
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.
|
67
docs/conf.py
@ -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.1'
|
||||
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
|
||||
|
BIN
docs/general_settings/img/quickstart_import_session_data.png
Normal file
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 80 KiB |
BIN
docs/general_settings/img/sidepannel_cache.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
docs/general_settings/img/sidepannel_general_settings.png
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
docs/general_settings/img/sidepannel_logging.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
docs/general_settings/img/sidepannel_network.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
docs/general_settings/img/sidepannel_replication.png
Normal file
After Width: | Height: | Size: 8.7 KiB |
BIN
docs/general_settings/img/sidepannel_userinfo.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
117
docs/general_settings/index.rst
Normal 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:
|
54
docs/getting_started/how-to-host.rst
Normal 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.
|
104
docs/getting_started/how-to-join.rst
Normal 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
|
135
docs/getting_started/how-to-manage.rst
Normal 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 |
|
||||
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
|
BIN
docs/getting_started/img/auto_updater_check.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
docs/getting_started/img/auto_updater_last.png
Normal file
After Width: | Height: | Size: 89 KiB |
BIN
docs/getting_started/img/auto_updater_location.png
Normal file
After Width: | Height: | Size: 101 KiB |
BIN
docs/getting_started/img/auto_updater_restart.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
docs/getting_started/img/auto_updater_version.png
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
docs/getting_started/img/first-time_menu.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
docs/getting_started/img/first_time_menu.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
docs/getting_started/img/first_time_server_edit.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
docs/getting_started/img/first_time_server_host.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
docs/getting_started/img/first_time_server_list.png
Normal file
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB |
BIN
docs/getting_started/img/quickstart_connect.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 8.5 KiB |
BIN
docs/getting_started/img/quickstart_lobby.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
docs/getting_started/img/quickstart_lobby_wait.png
Normal file
After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 559 B |
BIN
docs/getting_started/img/quickstart_repository.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
docs/getting_started/img/quickstart_save_session_data.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
docs/getting_started/img/quickstart_server_edit.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
docs/getting_started/img/quickstart_serverlist.png
Normal file
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 11 KiB |
BIN
docs/getting_started/img/quickstart_serverlist_private.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
docs/getting_started/img/quickstart_serverlist_refresh.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
docs/getting_started/img/quickstart_session_init.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
docs/getting_started/img/quickstart_session_status.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
docs/getting_started/img/quickstart_snap_camera.gif
Normal file
After Width: | Height: | Size: 16 MiB |
BIN
docs/getting_started/img/quickstart_snap_time.gif
Normal file
After Width: | Height: | Size: 8.4 MiB |
BIN
docs/getting_started/img/quickstart_synchronize.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
docs/getting_started/img/quickstart_user_info.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 26 KiB |
BIN
docs/getting_started/img/settings.png
Normal file
After Width: | Height: | Size: 74 KiB |
@ -1,9 +1,15 @@
|
||||
===============
|
||||
Getting started
|
||||
===============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:name: toc-getting-started
|
||||
:maxdepth: 2
|
||||
|
||||
install
|
||||
update
|
||||
quickstart
|
||||
how-to-join
|
||||
how-to-host
|
||||
how-to-manage
|
||||
troubleshooting
|
||||
|
||||
|
@ -1,9 +1,39 @@
|
||||
============
|
||||
Installation
|
||||
============
|
||||
=====================
|
||||
Installing Multi-User
|
||||
=====================
|
||||
|
||||
*The process is the same for linux, mac and windows.*
|
||||
.. warning:: Under development, use it at your own risks.
|
||||
|
||||
1. Download latest release `multi_user.zip <https://gitlab.com/slumber/multi-user/uploads/8aef79c7cf5b1d9606dc58307fd9ad8b/multi_user.zip>`_.
|
||||
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 the addon zip file
|
||||
2. Run blender as administrator (to allow python dependencies auto-installation).
|
||||
3. Install last_version.zip from your addon preferences.
|
||||
3. Install **multi-user.zip** from your addon preferences in :menuselection:`Edit --> Preferences --> Add-ons --> Install`.
|
||||
|
||||
.. 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
|
@ -1,111 +1,48 @@
|
||||
===========
|
||||
Quick start
|
||||
.. _quickstart:
|
||||
|
||||
Quick Start
|
||||
===========
|
||||
|
||||
*All 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`
|
||||
|
||||
Session setup
|
||||
=============
|
||||
This section describe how to create or join a collaborative session.
|
||||
First of all, let's have a quick look at the Multi-User features.
|
||||
|
||||
---------------------
|
||||
1. User information's
|
||||
---------------------
|
||||
Username and color
|
||||
------------------
|
||||
|
||||
.. image:: img/quickstart_user_infos.png
|
||||
When you launch the addon for the first time you can find this panel in the Sidebar of your View3D:
|
||||
|
||||
- **name**: username.
|
||||
- **color**: color used to represent the user into other user workspace.
|
||||
.. figure:: img/first_time_menu.png
|
||||
:align: center
|
||||
|
||||
----------
|
||||
2. Network
|
||||
----------
|
||||
|
||||
.. note:: If you host a session over internet, special network configuration is needed.
|
||||
|
||||
Hosting and connection are done from this panel.
|
||||
|
||||
+-----------------------------------+-------------------------------------+
|
||||
| Host | Join |
|
||||
+===================================+=====================================+
|
||||
|.. image:: img/quickstart_host.png | .. image:: img/quickstart_join.png |
|
||||
+-----------------------------------+-------------------------------------+
|
||||
| | Start empty: Cleanup the file | | IP: server ip |
|
||||
| | before hosting | | Port: server port |
|
||||
+-----------------------------------+-------------------------------------+
|
||||
| **HOST**: Host a session | **CONNECT**: Join a session |
|
||||
+-----------------------------------+-------------------------------------+
|
||||
|
||||
**Port configuration:**
|
||||
For now, a session use 4 ports to run.
|
||||
If 5555 is given in host settings, it will use 5555, 5556 (5555+1), 5557 (5555+2), 5558 (5555+3).
|
||||
|
||||
------------
|
||||
2.1 Advanced
|
||||
------------
|
||||
|
||||
.. image:: img/quickstart_advanced.png
|
||||
|
||||
**Right strategy** (only host) enable you to choose between a strict and a relaxed pattern:
|
||||
|
||||
- **Strict**: Host is the king, by default the host own each properties, only him can grant modification rights.
|
||||
- **Common**: Each properties are under common rights by default, on selection, a property is only modifiable by the owner.
|
||||
|
||||
On each strategy, when a user is the owner he can choose to pass his rights to someone else.
|
||||
|
||||
**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
|
||||
|
||||
Session Management
|
||||
==================
|
||||
|
||||
This section describe tools available during a collaborative session.
|
||||
|
||||
---------------
|
||||
Connected users
|
||||
---------------
|
||||
|
||||
.. image:: img/quickstart_users.png
|
||||
|
||||
This panel displays all connected users information's, including yours.
|
||||
By selecting a user in the list you'll have access to different **actions**:
|
||||
|
||||
- The **camera button** allow you to snap on the user viewpoint.
|
||||
- The **time button** allow you to snap on the user time.
|
||||
|
||||
---------------------
|
||||
Replicated properties
|
||||
---------------------
|
||||
|
||||
.. image:: img/quickstart_properties.png
|
||||
|
||||
The **replicated properties** panel shows all replicated properties status and associated actions.
|
||||
Since the replication architecture is based on commit/push/pull mechanisms, a replicated properties can be pushed/pull or even committed manually from this panel.
|
||||
|
||||
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
|
||||
| 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 |
|
||||
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
|
||||
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-join`
|
||||
- :ref:`how-to-host`
|
||||
- :ref:`how-to-manage`
|
||||
|
||||
For more details on what the addon offers:
|
||||
|
||||
.. - :ref:
|
57
docs/getting_started/update.rst
Normal 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
|
BIN
docs/hosting_internet/img/hosting_guide_add_node.png
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
docs/hosting_internet/img/hosting_guide_create_network.png
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_1.jpg
Normal file
After Width: | Height: | Size: 757 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_10.jpg
Normal file
After Width: | Height: | Size: 214 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_11.jpg
Normal file
After Width: | Height: | Size: 249 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_12.jpg
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_13.jpg
Normal file
After Width: | Height: | Size: 116 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_14.jpg
Normal file
After Width: | Height: | Size: 97 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_15.jpg
Normal file
After Width: | Height: | Size: 230 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_16.jpg
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_17.jpg
Normal file
After Width: | Height: | Size: 687 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_18.jpg
Normal file
After Width: | Height: | Size: 635 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_19.jpg
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_2.jpg
Normal file
After Width: | Height: | Size: 204 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_20.jpg
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_3.jpg
Normal file
After Width: | Height: | Size: 153 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_4.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_5.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_6.jpg
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_7.jpg
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_8a.jpg
Normal file
After Width: | Height: | Size: 109 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_8b.jpg
Normal file
After Width: | Height: | Size: 252 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_8c.jpg
Normal file
After Width: | Height: | Size: 262 KiB |
BIN
docs/hosting_internet/img/hosting_guide_gcloud_9.jpg
Normal file
After Width: | Height: | Size: 233 KiB |
BIN
docs/hosting_internet/img/hosting_guide_get_id.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
docs/hosting_internet/img/hosting_guide_get_node.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
docs/hosting_internet/img/hosting_guide_head_network.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
docs/hosting_internet/img/hosting_guide_join.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
docs/hosting_internet/img/hosting_guide_join_network.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
docs/hosting_internet/img/hosting_guide_network_settings.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
docs/hosting_internet/img/hosting_guide_network_status.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
docs/hosting_internet/img/hosting_guide_port.png
Normal file
After Width: | Height: | Size: 12 KiB |