Linking custom manipulators?

Hey Guys,

I’d like to port a prototype to visualize depth of field limits from 2.79 to 2.8 by using the new cutom manipulators.

At the moment, I’m using a modal operator drawing two circles to visualize the depth of field per camera interactively in the viewport. Basically, I’d like to replace both shapes with real handles (two arrows pointing in the opposite direction), allowing the user to set near limit and far limit to change the aperture settings of the camera on the fly.

I tried to implement that based on the python templates. Problem is that I can’t find a way to link the 2 manipulators in a way that both sharing properties but reacting slightly different on any change (at once). Next problem is that if I move the first one, the second one disappears so I guess I’m missing something obvious… What’s a good approach linking both manipulators? Is that even possible? If yes, is there any similar custom manipulator example that already comes with 2.8? Am I too early?

Thanks.

The Python API for manipulators was working well-enough when it was developed,
however there have been some regressions (there a bug in one of the Python templates I need to investigate whats going on).

Suggest to wait on this for a bit, or - you could dive into the code and see why it’s not working as it should.
Otherwise I’ll look into it before 2.8x release.

Thanks Campbell,

No problem, I can wait until 2.8 is finished. Yeah, when running manipulator_custom_geometry.py blender crashes instantly. However, after playing around for a while with the manipulators yesterday, I can say it’s a great feature and it feels pretty good having that option, so many thanks for taking the time and implementing that.

The only thing I noticed is that, in case of having multiple widgets, all the other widgets disappearing while dragging one of them, right? I couldn’t find a way around that at least. Not sure how hard to implement this is, but I think it would improve the entire system if there were an option to display widgets of the group permanently while using one of them (not only for my use case).

Is that by any chance the bug in the operator gizmo template i am having trouble with?

  • call operator -> gizmos work nicely
  • call any other operator
  • call operator again -> cannot find gizmo error

It looks like it’s not the python template problem

after
bpy.context.window_manager.gizmo_group_type_remove(GizmoGroup.bl_idname)
is called

bpy.context.window_manager.gizmo_group_type_add(GizmoGroup.bl_idname)
no longer works