Page MenuHome

Proxy controls break when appending in scenes to new file
Closed, ArchivedPublic

Description

System Information
Windows 7 Home Premium X64 service pack 1
Intel i7 920 @ 2.67 Ghz
9 GB ram
Nvidia GeForce GTX 760 4 GB ram driver version 340.52 directX11

Blender Version
Broken: 2.75a c27589e date: 2015-07-07 14:56 and 2.76b f337fea date: 2015-11-03 10:56
Worked: 2.74 000dfc0 date: 2015-03-31 13:39

Proxy controls break when appending in scenes to new file

Steps
Attached zip file is a basic rigged prop consisting of 1 cube, an armature with one bone named ctl.god.c and a circle representing the bone shape. All in a group named grp.name

Preparation

  1. In a fresh blend file name a scene shot.001
  2. Link in the grp.name group from the zip file
  3. Create a proxy of ctl.god.c
  4. Create a second scene file with option "link object data". Call this scene shot.002
  5. Create a UV_sphere, select it and create a group called grp.ball
  6. You should now have a file with 2 scenes ( shots )and two groups. Both scenes have the cube rig linked in , shot.002 has a ball that is in grp.ball
  7. Save the file as test_master_shot_2.74.blend

( Old behavior ) Create a fresh file in blender 2.74

  1. Append in scene "shot.001" & "shot.002". This should bring in the group grp.name with the scenes.
  2. In shot.001 , grab the ctl.god.c control and move it in pose mode. The armature should work as expected. Hit control Z and it should go back to origin.
  3. Go to shot.002, Notice there is no grp.ball group. Group is missing from append ( This is a problem going back to version 2.74 at least )

( New Broken Behavior ) Create a fresh blend file in blender 2.75a or 2.76b

  1. Repeat previous append steps from version 2.74
  2. In these versions of blender you get a double of the proxy controls when you move the ctl.god.c control in pose mode
  3. Hitting control Z to undo movement completely breaks the control leaving two versions. This seems to be a problem with appended scenes

Also notice the grp.ball group is still missing from the appended file. It also doesn't seem to matter if you build the test_master_shot_2.74.blend file in 2.75a od 2.76b. It still breaks.

Event Timeline

Brian Foster (Jiff) raised the priority of this task from to 90.
Brian Foster (Jiff) updated the task description. (Show Details)
Brian Foster (Jiff) edited a custom field.
Campbell Barton (campbellbarton) changed the task status from Unknown Status to Archived.Nov 11 2015, 8:02 PM

Seems theres no file attached.

@campbellbarotn seems kinda quick to close this with out much explanation

What was in the zip file was described in the original bug report.

"Attached zip file is a basic rigged prop consisting of 1 cube, an armature with one bone named ctl.god.c and a circle representing the bone shape. All in a group named grp.name"

Why was this issue closed so quickly. It's easy to re-create and it's still a bug.

Aaron Carlisle (Blendify) lowered the priority of this task from 90 to 30.

It does seem that the file is not included can you please try to re-upload it?

I'm actually working with the submitter of the bug so I've been looking into this in parallel. I have traced the problem to the "id_clear_lib_data" function. Specifically this code:

	if (GS(id->name) == ID_OB) {
		Object *object = (Object *)id;
		if (object->proxy_from != NULL) {
			object->proxy_from->proxy = NULL;
			object->proxy_from->proxy_group = NULL;
		}
		object->proxy = object->proxy_from = object->proxy_group = NULL;
	}

It looks like proxies are always cleared now. Why is this code here? (I also emailed the blender developers list)

We are still missing the demo .zip file here…

And this comes from rB7dae8e54… That simple 'nuke' solution is not good enough here, think this is another case where global id remap (being worked on in id-remap branch) could help too, but not quite sure what to do as immediate fix, @Sergey Sharybin (sergey)? @Campbell Barton (campbellbarton)?

Here is the zip again, sorry, third time lucky.

Simple steps in blender

Try linking the group from the zip file into a new scene, make a proxy
Save file
Start a fresh blender session
Append in the scene from the file you just created. Go to pose mode and move armature control, control looks ghosted.
Press Ctl Z. Armature control is now broken

@Bastien Montagne (mont29), have you been able to reproduce the issue? The code seems to come from function id_clear_lib_data() (unless there's other similar case?) and this function is not being called when i'm trying to reproduce the issue with given steps. Even the issue i can't really reproduce yet..

Bastien Montagne (mont29) raised the priority of this task from 30 to Normal.Nov 17 2015, 10:52 AM

OK, now that I could test the file I think I understand the “problem”: you are appending a whole scene and would expect your proxy from that appended scene to remain 'non-local' (i.e. linked to data in original library).

However, I do not see a bug here, append aims at making everything local (i.e. not keeping any dependency to any other lib), so I would say it was previous behavior which was buggy? If you want to keep library relations (at least partially), you have to link and then selectively make local…

That said, proxies are very fragile in Blender currently, here it seems we end up with two rigs in appended scene (assuming you proxified the rig of the group), one in instantiated group (which isn't much useful), and the proxy one, which is disconnected from the geometry. Actually, even the fact that proxyfying a member of a linked group creates a new, non-grouped object is… hairy.

TBH that whole process seems broken to me, when we append a group it is actually removed (or rather, not instantiated), and its objects get instantiated. This does not happen when appending a groups' container (like a scene).

All this is very fragile and only working for a few common processes, when you try to do smart things it can easily break. I would be tempt to consider it as known limitation for now (complete redesign of our proxy system is a long known TODO). :/

Thank you for getting back to me on this. We have started looking into our own solution to this. It could be an extremely useful feature if we could get this process working predictably. That said, we are a Canadian animation company currently working on a theatrical animated feature using Blender as the primary 3d tool. We have resources in the form of experienced programmers and financing available to help with some of these issues. Who could we contact to offer some assistance and help with the development of Blender. We are very interested in lending a hand here.

Bastien Montagne (mont29) changed the task status from Unknown Status to Unknown Status.Jan 9 2016, 10:44 AM

I’ll close this as known TODO really, proxies need a complete redesign, trying to make tweaks in current system is mostly waste of time (you are more likely to break something new than to fix an existing issue really).

Regarding getting involved, both programming and financial help would be welcome! Here are a few links to get you started:

And of course, dropping by on irc (#blendercoders on irc.freenode.net), and/or using our ML (bf-committers@blender.org), are always good ideas too. :)