Compare commits
1030 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| a4f9f6e051 | |||
| 10de88cdc9 | |||
| 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 | |||
| 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,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
|
||||
@@ -0,0 +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
|
||||
@@ -0,0 +1,12 @@
|
||||
build:
|
||||
stage: build
|
||||
needs: ["test"]
|
||||
image: debian:stable-slim
|
||||
script:
|
||||
- rm -rf tests .git .gitignore script
|
||||
artifacts:
|
||||
name: multi_user
|
||||
paths:
|
||||
- multi_user
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
test:
|
||||
stage: test
|
||||
image: slumber/blender-addon-testing:latest
|
||||
script:
|
||||
- python3 scripts/test_addon.py
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -35,4 +35,185 @@ 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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
|
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.
|
||||
@@ -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.0 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.1-develop'
|
||||
|
||||
|
||||
# -- 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
|
||||
|
||||
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -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:
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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 |
|
||||
+---------------------------------------+-------------------+------------------------------------------------------------------------------------+
|
||||
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
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 |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 16 MiB |
|
After Width: | Height: | Size: 8.4 MiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
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 |
|
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:
|
||||
@@ -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
|
||||
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 757 KiB |
|
After Width: | Height: | Size: 214 KiB |
|
After Width: | Height: | Size: 249 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 230 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 687 KiB |
|
After Width: | Height: | Size: 635 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
After Width: | Height: | Size: 252 KiB |
|
After Width: | Height: | Size: 262 KiB |
|
After Width: | Height: | Size: 233 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 12 KiB |