[Bf-taskforce25] List of problems/bugs with 2.5 UI re aramture animation

Benoit Bolsee benoit.bolsee at online.be
Fri Jul 24 13:23:28 CEST 2009


>> 7) changing a target position ruins the cache
>> - Dragging the target of a pose channel constraint causes the point
>> cache of the armature to be cleared. It ruins the simulation of the
new
>> IK solver, which uses a point cache to store the previous armature
>> position (the new solver is stateful). Why is it necessary to clear
the
>> point cache when dragging an object? It wasn't the case in 2.4.
>
>Err... what's this point cache you're referring to? If you're just
referring
>to the bone paths, then I'm restoring that tonight. But if it's some
special
>point-cache stuff implemented for the new IK solver, I think you'll
have to
>look into it yourself. (If it uses particles-type pointcache, then
consult
>jahka :)

I'm referring to the BKE_ptcache_object_reset() function that is called
as part of the update procedure when dragging the target object. I've
added my only IK cache clearing stuff in this function as it seems to be
the right place: it is called in situation that requires clearing the
cache, such as changing IK parameter values.

However, in blender 2.5, dragging an object causes this function to be
called on all dependent objects. So dragging an IK target clear the IK
cache. This seems overkill and wasn't happening in 2.4.

Tracing down the call stack, the incriminated line seems to be:

	/* all recalc flags get flushed to all layers, so a layer flip
later on works fine */
	DAG_scene_flush_update(t->scene, -1, 0);

In set_trans_object_base_flags(bContext *C, TransInfo *t)

Here is the full stack:

>	blender.exe!BIK_clear_cache(bPose * pose=0x02c5ff00)  Line 120
C
 	blender.exe!BKE_ptcache_object_reset(Scene * scene=0x02c53e50,
Object * ob=0x02c5f048, int mode=0)  Line 1043 + 0xf bytes	C
 	blender.exe!DAG_scene_flush_update(Scene * sce=0x02c53e50,
unsigned int lay=4294967295, int time=0)  Line 1933 + 0xf bytes	C
 	blender.exe!set_trans_object_base_flags(bContext * C=0x027a3670,
TransInfo * t=0x02bfed58)  Line 4290 + 0x13 bytes	C
 	blender.exe!createTransObject(bContext * C=0x027a3670, TransInfo
* t=0x02bfed58)  Line 4959 + 0xd bytes	C
 	blender.exe!createTransData(bContext * C=0x027a3670, TransInfo *
t=0x02bfed58)  Line 5270 + 0xd bytes	C
 	blender.exe!initTransform(bContext * C=0x027a3670, TransInfo *
t=0x02bfed58, wmOperator * op=0x02c03740, wmEvent * event=0x02ac4b40,
int mode=1)  Line 1354 + 0xd bytes	C
 	blender.exe!transformops_data(bContext * C=0x027a3670,
wmOperator * op=0x02c03740, wmEvent * event=0x02ac4b40)  Line 192 + 0x19
bytes	C
 	blender.exe!transform_invoke(bContext * C=0x027a3670, wmOperator
* op=0x02c03740, wmEvent * event=0x02ac4b40)  Line 258 + 0x11 bytes
C
 	blender.exe!wm_operator_invoke(bContext * C=0x027a3670,
wmOperatorType * ot=0x028c6ac8, wmEvent * event=0x02ac4b40, PointerRNA *
properties=0x02bfebd8)  Line 356 + 0x19 bytes	C
 	blender.exe!WM_operator_name_call(bContext * C=0x027a3670, const
char * opstring=0x01fdc4f4, int context=1, PointerRNA *
properties=0x02bfebd8)  Line 424 + 0x15 bytes	C
 	blender.exe!BIF_do_manipulator(bContext * C=0x027a3670, wmEvent
* event=0x02be7578, wmOperator * op=0x03b05828)  Line 1604 + 0x17 bytes
C
 	blender.exe!manipulator_invoke(bContext * C=0x027a3670,
wmOperator * op=0x03b05828, wmEvent * event=0x02be7578)  Line 1878 +
0x11 bytes	C
 	blender.exe!wm_operator_invoke(bContext * C=0x027a3670,
wmOperatorType * ot=0x028c4640, wmEvent * event=0x02be7578, PointerRNA *
properties=0x02c3f710)  Line 356 + 0x19 bytes	C
 	blender.exe!wm_handler_operator_call(bContext * C=0x027a3670,
ListBase * handlers=0x02c53944, wmEventHandler * handler=0x03b04318,
wmEvent * event=0x02be7578, PointerRNA * properties=0x02c3f710)  Line
747 + 0x15 bytes	C
 	blender.exe!wm_handlers_do(bContext * C=0x027a3670, wmEvent *
event=0x02be7578, ListBase * handlers=0x02c53944)  Line 930 + 0x1c bytes
C
 	blender.exe!wm_event_do_handlers(bContext * C=0x027a3670)  Line
1099 + 0x17 bytes	C
 	blender.exe!WM_main(bContext * C=0x027a3670)  Line 260 + 0x9
bytes	C
 	blender.exe!main(int argc=1, char * * argv=0x027a3e40)  Line 832
+ 0x9 bytes	C
 	blender.exe!__tmainCRTStartup()  Line 266 + 0x19 bytes	C
 	blender.exe!mainCRTStartup()  Line 182	C
 	kernel32.dll!7c817077() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded
for kernel32.dll]	



More information about the Bf-taskforce25 mailing list