3

If I publish a complex blender file with geometry nodes to github and a different person makes a commit change - they can only upload the entire newly updated blender file - you have no idea what changed. With code you can see exactly changed.

Is there any good way to have source controlled collaborative editing for geometry nodes?

The solutions I can think of are:

  1. python to geometry node generator
  2. splitting the nodes into several blender files that are linked so you have a bit more granularity.
stackzz
  • 481
  • 4
  • 11
  • To be honest I haven't solved this problem completely - for now I'm just using more granularity of the geometry nodes blend binary files so it's easier to keep track of what changed. The idea of python exporter / importer with external XML / JSON is the ideal solution but could be a maintenance nightmare. If you find any links to existing work that does this it would be helpful. – stackzz Aug 23 '22 at 23:31
  • maybe this can help https://blender.stackexchange.com/questions/214911/whats-the-most-reliable-way-of-converting-a-material-into-reusable-code-blocks – Harry McKenzie Aug 23 '22 at 23:46

1 Answers1

3

Yeah Git was explicitly designed for text storage, not binary. It would have been cool if the developers kept shader nodes, geometry nodes, or even compositor nodes as separate external XML or JSON files so a git diff would make it easy to understand changes. But currently and unfortunately there is no feasible way to do a version control of these types of changes as they are all embedded within the binary .blend file.

The problem with the first option (assuming that was even possible with python) is this: While we would need to do some testing around with geometry nodes until we find a working setup, we would then have to go through the pain & hassle to update the python generator and make sure it generates exactly that setup to keep everything in sync.

You would probably be better off with your second option. And always make sure to keep changes minimal and modularized (that is make changes to only one problem or bug at a time) whenever you make a git commit with proper comments (git commit -m command) so it's easier to trace back if something breaks.

You can also take a look at Perforce Helix Core for more efficient binary file version control.

On another thought if this was really even possible. Maybe there is a way to python script your way to "export" all the nodes (and their positions) after making your geometry nodes changes into a python script, which when executed generates the same exact setup. That would mean that you could continue working on your geometry nodes and whenever you're finished you need to click that button to generate the script and commit it then everytime someone wants to work on the setup they execute the script and continue working. But then you could run into the problem that someone else made a new change. So you would have to lock the file while editing.

Harry McKenzie
  • 10,995
  • 8
  • 23
  • 51