Page MenuHome

constraints["IK"].target causes unnecessary frame update
Open, Needs Triage by DeveloperPublic

Description

System Information
Operating system: Windows-10-10.0.18362 64 Bits
Graphics card: GeForce GTX 960M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 391.25

Blender Version
Broken: version: 2.81 (sub 1), branch: master, commit date: 2019-08-06 20:27, hash: rBf4e27bc2c981
Worked: (optional)

Short description of error
Setting the value to posebone.constraints["IK"].target and subtarget causes unnecessary frame update. It seems that calls frame_set() after the value set.

Exact steps for others to reproduce the error
I attached sample python scripts for both 2.78 and 2.81.

for 2.78c

for 2.81

I've just finished porting my own add-on from 2.78 to 2.81. There was no problem in porting except for one thing that I describe below.
My add-on is for posing armature with simple rig and attached above is a simplified version.

I found a problem in "c.target = rigObj" line in change_rig() function in it.
Just after the line was executed, all matrix_bases were reverted to their own animation curve value, so I could not assign the desired pose as a key in 2.81.
This is not occurred in 2.78c.

You can find simple armature and three keys in timeline for each bones in attached .blend file.

for 2.78c

for 2.81

In 2.78c,

  1. drag "Bone.001" by G key to change bone attitude.

  1. press "Start" in "changetarget" panel and select "Effector" bone

  1. and press G key which is overridden by the add-on. "IK" constraint is muted and "Effector" bone is parented to "Bone.001" inside the script.

* Please ignore this weird pose.

  1. Click left mouse button to finish add-on. The pose is completely the same as before step 3. above.

Now you can assign the new pose as a new key.

On the other hand, once the pose was set in step 1. the pose revert to #80th frame pose after step 4, so I cannot create any animation in current 2.81 with my own add-on.

As I wrote a comment in the add-on code, I thought that "frame_set()" may be called when the value of posebone.constraints["IK"] is changed without intention.

Please refer to attached movies describe above step for 2.78c and 2.81.

Thanks.

Details

Type
Bug

Event Timeline

Please somebody triage this...