forked from bartvdbraak/blender
e0db647d35
In some cases when: * the viewport was in the camera mode * the camera was ortho * the view was not fitting (as oppose to use HOME) region_2d_to_origin_3d would misbehave (and consequently region_2d_to_location_3d). Sample addon to test it: ``` import bpy from bpy_extras.view3d_utils import ( region_2d_to_location_3d, ) from mathutils import ( Vector, ) class MoveXYOperator(bpy.types.Operator): """Translate the view using mouse events""" bl_idname = "view3d.move_xy" bl_label = "Move XY" @classmethod def poll(cls, context): return context.object def modal(self, context, event): if event.type == 'MOUSEMOVE': self.move(context, event) elif event.type in {'LEFTMOUSE', 'RIGHTMOUSE', 'ESC'}: return {'FINISHED'} return {'RUNNING_MODAL'} def invoke(self, context, event): if context.space_data.type == 'VIEW_3D': self.ob = context.object context.window_manager.modal_handler_add(self) return {'RUNNING_MODAL'} else: self.report({'WARNING'}, "Active space must be a View3d") return {'CANCELLED'} def move(self, context, event): xy = region_2d_to_location_3d( context.region, context.space_data.region_3d, (event.mouse_region_x, event.mouse_region_y), Vector(), ).xy self.ob.location.xy = xy def register(): bpy.utils.register_class(MoveXYOperator) def unregister(): bpy.utils.unregister_class(MoveXYOperator) if __name__ == "__main__": register() ``` |
||
---|---|---|
.. | ||
bl_i18n_utils | ||
bl_previews_utils | ||
bpy | ||
bpy_extras | ||
console | ||
addon_utils.py | ||
animsys_refactor.py | ||
blend_render_info.py | ||
bpy_restrict_state.py | ||
bpy_types.py | ||
bpyml_ui.py | ||
bpyml.py | ||
console_python.py | ||
console_shell.py | ||
graphviz_export.py | ||
keyingsets_utils.py | ||
nodeitems_utils.py | ||
progress_report.py | ||
rna_info.py | ||
rna_keymap_ui.py | ||
rna_prop_ui.py | ||
rna_xml.py | ||
sys_info.py |