Changing display for FloatVectorProperty

I’ve recently started to use bpy.props.FloatVectorProperty(subtype='DIRECTION') in a Panel and like the general idea of a 3D shape that can be rotated to indicate a direction. However, the current implementation has some problems;

  • The current implementation has the Y axis as up and the Z axis as toward the user, which is the system OpenGL uses but which is different than Blender’s unique coordinate system. So the direction the panel control is pointing is in a different direction than what you would expect from the viewport.

  • The current display control is a shaded sphere which makes it very difficult to tell with any precision which direction the control is pointing. (It is particularly unclear for any direction pointing away from the user). It would be useful to replace it with an arrow or some other slender pointy object so the direction can be seen more clearly.

  • It is activating its ‘update’ callback, even if the use clicks somewhere in the viewport that is nowhere near to it. It also does not pass through the mouse up event.

  • There is also a display problem where the text name of the control is written over top of it.

I feel the control could use some development work. Would anyone else agree?

image