[Bf-committers] Thinking about a "community edit mode" for blender

Chad Fraleigh chadf at triularity.org
Mon Nov 19 00:07:36 CET 2012


What about instead of trying to keep the internal data directly in
sync it was treated more like a high level database replay log. Sync
the operations, like select vertex #5, begin move action, move by x/y,
end move action; or set modifier #1 field X to value Y. Assuming all
instances started out with logically identical data/state and have the
same capabilities (i.e. same blender version, and same [active]
addons), then in the end each edited copy should be identical. Of
course this also assumes that all "actions" (whether UI or script
triggered) can be hooked/captured and replicated to the other node(s).

One catch would be any local system specific data (like non-relative
filenames) that might get applied would not be portable across nodes.
If support for virtual/aliased/mapped file resources existed, then
both sides could have their system dependent resources mapped, and
then these virtual "filenames" could be passed back and forth. While
not a complete solution, it would allow even those that have a
collection of [non-common directory] external data on incompatible
directory structures (or OS's) to still work together. For that matter
there could even be exported virtual resources.. so if resource X
wasn't mapped on one side it could pull the data remotely from another
node that does have it (when allowed).

Another issue would be error handling. So for example of user A loads
a texture file, but that file doesn't exist on the user B's side (or
it does but is an invalid image) then user B would get an error
dialog. This would place them in inconsistent states. Best case the
error is semi-ignorable (e.g. one side just doesn't have a nice
texture showing, but works otherwise), however worst case is the data
structures get out of sync (e.g. texture slot #2 is missing on side
B). Maybe an error catching hook that gives a dialog "There was an
error that didn't occur on the other node... would you like to resync
your blender data?" Yes, not ideal (especially if it is a big file and
happens a lot with a slow network connection).

On Sun, Nov 18, 2012 at 9:29 AM, Brecht Van Lommel
<brechtvanlommel at pandora.be> wrote:
> Hi,
>
> There was indeed experimental Verse integration for this sort of
> thing, but it never got to a finished state. The idea was that Verse
> would be integrated in various applications and game engines, and that
> you could then interchange data. The main issue I guess is that
> synchronizing data is a hard problem, and that it's difficult to add
> this into Blender or other 3D app designs which weren't designed from
> the ground up with this in mind.
>
> For exporting to a game engine, I think this can work and could be
> implemented as an addon. But it's still a hard problem, especially if
> you want to do 2-way syncing. For Blender-Blender syncing, I don't see
> it happening, syncing all data structures is too much work to get
> reliable, with a game engine you only have to consider a subset, same
> as when writing an exporter.
>
> One mistake with Verse in my opinion is that it tried to be too fine
> grained in syncing, it's nice in theory to only send changed vertices,
> but this all just becomes incredibly complex when you consider that
> you have to sync all data at this level. It's better to work at the
> level of entire datablocks in my opinion, and if you want to optimize
> data transfer then maybe use an rsync like algorithm.
>
> Brecht.
>
> On Sun, Nov 18, 2012 at 5:05 PM, Gaia <gaia.clary at machinimatrix.org> wrote:
>> I remember there was some attempt to add a multi user mode for blender
>> (I think there was something setup in 2.4) The key idea was that 2 or
>> more users could share one Blender 3dView and do concurrent editing on
>> the objects right in blender.
>>
>> I would like to even add another thought: Maybe it is possible to setup
>> a bridge between blender and an online world, such that you can edit an
>> object in blender which is actually located in an online environment (or
>> visualize an object that is actually located in blender in an online
>> world) . I guess that all of this is far from trivial. But maybe it
>> would be fun to start thinking about how that could be done. Or if the
>> groundwork has already been done,  maybe it makes sense to make a
>> "production ready" tool (Addon?). As far as i know there was some work
>> on this done for "RealExtent" a while ago...
>>
>> Do you have any opinion on such a development ? Does it make sense, are
>> there better ways to go, is it doable, feasible ? Anybody working on it
>> even ?
>>
>> cheers,
>> Gaia


-Chad


More information about the Bf-committers mailing list