Page MenuHome

B-Bone display size/scaling op issues
Open, Needs Triage by DeveloperPublic

Description

System Information

Blender 2.81 (sub 1)
	build date: 2019-08-13
	build time: 13:38:11
	build commit date: 2019-08-13
	build commit time: 11:31
	build hash: 6f9cbbc8ec4f
	build platform: Linux
	build type: RelWithDebInfo

Blender Version
Broken: rB6f9cbbc8ec4f

Exact steps for others to reproduce the error

  • Start Blender with "--factory-startup".
  • Add an armature, set viewport display as B-Bone and switch to the edit or pose mode.
  • Scale the B-Bone display size [ctrl-alt-s].

Bug
B-Bone scaling triggers a wrong "redo Transform" dialog, it should be Resize.
+ UI glitch bonus
"Display size X, Z" is also relevant for 1 segment and should therefore not be greyed out.

Details

Type
Bug

Event Timeline

Jacques Lucke (JacquesLucke) triaged this task as Needs Information from User priority.

I guess with VP you mean "viewport"?
Why is a Resize dialog more correct than a transform dialog? Both seems fine (not that Transform is not Translate).

The display size should not be grayed out here indeed.

Why is a Resize dialog more correct than a transform dialog? Both seems fine (not that Transform is not Translate).

You will change the size of the B-Bone profile. Try to change some values in the transform dialog. This doesn't work.

Jacques Lucke (JacquesLucke) raised the priority of this task from Needs Information from User to Needs Triage by Developer.Tue, Aug 13, 3:59 PM

I'll take care of the graying out issue since that's my bad.

It looks like you can change the bbone scale using "Value X" in the redo panel. Which in turn will also update Y and Z, which you cannot change manually or individually... it's quite odd but it works.

When I was looking at the transform code, it all felt like a big mess. But I'm new to C so everything feels like a big mess to me, so I shouldn't be the judge of that. But if I'm right, maybe it could be thrown into a "code cleanup" task where we keep track of code that "works but isn't ideal". I don't know if such a thing already exists, I think it would be handy if it did.

I'll take care of the graying out issue since that's my bad.

Too late. Fixed that already in rB6e7ea807e1e.

It looks like you can change the bbone scale using "Value X" in the redo panel.

You can e.g. hit [ctrl-alt-s + x] and constrain the operator to resize in the x-axis . If you change the x-value in the redo panel, it resets the bbone profile from rectangle to sqare. It says ScaleB X, Y, Z in the upper left corner, so I think the resize dialog would be more appropriate here.

The redo panel is based on what operator was used last, so it would be a matter of moving that code to a different operator. The resize operator does something completely unrelated to things like bbone x/z width(which is only used for display), envelope head/tail radius and envelope distance. So maybe the answer is to give all these things their own operator? But would that make the transform code more or less of a mess?

I didn't know it was that complicated. Sounds like it's not worth fixing this.
In any case, you can now set the exact values in the bbone UI, thanks for cleaning that up!

Now, comparing the transform operations / dialogs in 2.7x and 2.8x, I think that the functionality in 2.7x was not broken from a user's perspective, even though it was strange. You could enable / disable the constraint axis in the UI, and then changing the "x-value" worked as expected.

For some reason, the dialog has been redesigned, so only the 'orient_axis' can be changed, which is in this case useless, and also the printed constraint_axis property seems to be ignored. Maybe someone could at least bring it into the old, messy but working state?

2.7x
bpy.ops.transform.transform(mode='BONE_SIZE', value=(5.86101, 12.911, 6.10101, 0.37), axis=(0, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)

2.8x
bpy.ops.transform.transform(mode='BONE_SIZE', value=(0.973, 0.973, 0.973, 0), orient_axis='Z', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(True, False, False), mirror=True, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False)