Maniphest T60605

stale world_matrix despite scene.update() after transform
Closed, Duplicate

Assigned To
None
Authored By
Evgeniy Skvortsov (ChieVFX)
Jan 17 2019, 11:31 PM
Tags
  • BF Blender
  • Tracker Curfew
Subscribers
Campbell Barton (campbellbarton)
Evgeniy Skvortsov (ChieVFX)
Jacques Lucke (JacquesLucke)

Description

System Information
Operating system: Windows 10
Graphics card: Nvidia GTX 980 Ti

Blender Version
Broken:
2.80, ad707115d5bc, blender2.8, 2019-01-17

Short description of error
after changing location or rotation and calling for bpy.context.scene.update(), the world_matrix does not change.
It seems to stay stale as long as the popup is active.
On popup reactivation, the matrix gets updated once(sometimes twice) and then goes stale again.

Exact steps for others to reproduce the error

  1. paste code below to 'scripting' and run it
  2. launch operator from 'space'(search) popup: 'TEZZT_P'
  3. change float property
  4. notice, how the object is moving, but the printed in the console(as 'INFO' message) values do not change
  1. release operator popup
  2. launch again
  3. notice that the printed 'INFO' values have changed, but do not via slider any more
import bpy

class OpTeztPopup(bpy.types.Operator):
    bl_idname = "tezt.op_tezt_p"
    bl_label = "TEZZT_P"
    bl_options = {'REGISTER', 'UNDO'}

    location_x : bpy.props.FloatProperty()

    def execute(self, context):
        d1 = str(context.object.matrix_world[0][3])
        context.object.location[0] = self.location_x
        
        #throw everything, something might stick:
        context.scene.update()
        bpy.context.scene.update()
        
        d2 = str(context.object.matrix_world[0][3])
        debug = "{} ::: {}".format(d1, d2)
        print(debug)
        op : bpy.types.Operator = self
        op.report({'INFO'}, debug)
        return {"FINISHED"}

    def invoke(self, context, event):
        return context.window_manager.invoke_props_popup(self, event)

classes = [
    OpTeztPopup
]

def register():
    for c in classes:
        bpy.utils.register_class(c)

def unregister():
    for c in classes:
        bpy.utils.unregister_class(c)

if __name__ == '__main__':
    register()

Related Objects

Mentioned Here
rBad707115d5bc: Preferences: add new Viewport, Animation, Navigation, Save & Load sections.

Event Timeline

Evgeniy Skvortsov (ChieVFX) created this task.Jan 17 2019, 11:31 PM
Jacques Lucke (JacquesLucke) lowered the priority of this task from 90 to 50.Jan 18 2019, 10:58 AM
Jacques Lucke (JacquesLucke) added subscribers: Campbell Barton (campbellbarton), Jacques Lucke (JacquesLucke).

This assert fails during undo: BLI_assert((gh->flag & GHASH_FLAG_ALLOW_DUPES) || (BLI_ghash_haskey(gh, key) == 0));

__GI_raise(int sig) (/build/glibc-OTsEL5/glibc-2.27/sysdeps/unix/sysv/linux/raise.c:51)
__GI_abort() (/build/glibc-OTsEL5/glibc-2.27/stdlib/abort.c:79)
ghash_insert_ex(const uint bucket_index, void * val, void * key, GHash * gh) (/home/jacques/blender-git/blender/source/blender/blenlib/intern/BLI_ghash.c:466)
ghash_insert(void * val, void * key, GHash * gh) (/home/jacques/blender-git/blender/source/blender/blenlib/intern/BLI_ghash.c:516)
BLI_ghash_insert(GHash * gh, void * key, void * val) (/home/jacques/blender-git/blender/source/blender/blenlib/intern/BLI_ghash.c:761)
BKE_main_idmap_lookup(struct IDNameLib_Map * id_map, short id_type, const char * name, const Library * lib) (/home/jacques/blender-git/blender/source/blender/blenkernel/intern/library_idmap.c:150)
BKE_main_idmap_lookup_id(struct IDNameLib_Map * id_map, const ID * id) (/home/jacques/blender-git/blender/source/blender/blenkernel/intern/library_idmap.c:160)
restore_pointer_by_name(struct IDNameLib_Map * id_map, ID * id, ePointerUserMode user) (/home/jacques/blender-git/blender/source/blender/blenloader/intern/readfile.c:7343)
lib_link_workspace_layout_restore(struct IDNameLib_Map * id_map, Main * newmain, WorkSpaceLayout * layout) (/home/jacques/blender-git/blender/source/blender/blenloader/intern/readfile.c:7572)
blo_lib_link_restore(Main * newmain, wmWindowManager * curwm, Scene * curscene, ViewLayer * cur_view_layer) (/home/jacques/blender-git/blender/source/blender/blenloader/intern/readfile.c:7650)
setup_app_data(bContext * C, BlendFileData * bfd, const char * filepath, const _Bool is_startup, ReportList * reports) (/home/jacques/blender-git/blender/source/blender/blenkernel/intern/blendfile.c:212)
BKE_blendfile_read_from_memfile(bContext * C, struct MemFile * memfile, const struct BlendFileReadParams * params, ReportList * reports) (/home/jacques/blender-git/blender/source/blender/blenkernel/intern/blendfile.c:450)
BKE_memfile_undo_decode(MemFileUndoData * mfu, bContext * C) (/home/jacques/blender-git/blender/source/blender/blenkernel/intern/blender_undo.c:85)
memfile_undosys_step_decode(struct bContext * C, UndoStep * us_p, int UNUSED_dir) (/home/jacques/blender-git/blender/source/blender/editors/undo/memfile_undo.c:88)
undosys_step_decode(bContext * C, UndoStep * us, int dir) (/home/jacques/blender-git/blender/source/blender/blenkernel/intern/undo_system.c:176)
BKE_undosys_step_undo_with_data_ex(UndoStack * ustack, bContext * C, UndoStep * us, _Bool use_skip) (/home/jacques/blender-git/blender/source/blender/blenkernel/intern/undo_system.c:616)
BKE_undosys_step_undo_with_data(UndoStack * ustack, bContext * C, UndoStep * us) (/home/jacques/blender-git/blender/source/blender/blenkernel/intern/undo_system.c:632)
ed_undo_step(bContext * C, int step, const char * undoname, ReportList * reports) (/home/jacques/blender-git/blender/source/blender/editors/undo/ed_undo.c:173)
ED_undo_pop_op(bContext * C, wmOperator * op) (/home/jacques/blender-git/blender/source/blender/editors/undo/ed_undo.c:266)
ED_undo_operator_repeat(bContext * C, wmOperator * op) (/home/jacques/blender-git/blender/source/blender/editors/undo/ed_undo.c:435)
wm_block_redo_cb(bContext * C, void * arg_op, int UNUSED_arg_event) (/home/jacques/blender-git/blender/source/blender/windowmanager/intern/wm_operators.c:1012)
ui_apply_but_funcs_after(bContext * C) (/home/jacques/blender-git/blender/source/blender/editors/interface/interface_handlers.c:797)
ui_popup_handler(bContext * C, const wmEvent * event, void * userdata) (/home/jacques/blender-git/blender/source/blender/editors/interface/interface_handlers.c:9939)
wm_handler_ui_call(bContext * C, wmEventHandler * handler, const wmEvent * event, int always_pass) (/home/jacques/blender-git/blender/source/blender/windowmanager/intern/wm_event_system.c:573)
wm_handlers_do_intern(bContext * C, wmEvent * event, ListBase * handlers) (/home/jacques/blender-git/blender/source/blender/windowmanager/intern/wm_event_system.c:2374)
wm_handlers_do(bContext * C, wmEvent * event, ListBase * handlers) (/home/jacques/blender-git/blender/source/blender/windowmanager/intern/wm_event_system.c:2607)
wm_event_do_handlers(bContext * C) (/home/jacques/blender-git/blender/source/blender/windowmanager/intern/wm_event_system.c:2997)
WM_main(bContext * C) (/home/jacques/blender-git/blender/source/blender/windowmanager/intern/wm.c:427)
main(int argc, const char ** argv) (/home/jacques/blender-git/blender/source/creator/creator.c:523)
Dalai Felinto (dfelinto) added a project: Tracker Curfew.Dec 23 2019, 4:35 PM