diff options
-rw-r--r-- | release/scripts/modules/bpy_extras/view3d_utils.py | 8 | ||||
-rw-r--r-- | release/scripts/templates_py/operator_modal_view3d_raycast.py | 7 |
2 files changed, 12 insertions, 3 deletions
diff --git a/release/scripts/modules/bpy_extras/view3d_utils.py b/release/scripts/modules/bpy_extras/view3d_utils.py index ad555a417d7..b25024fca9b 100644 --- a/release/scripts/modules/bpy_extras/view3d_utils.py +++ b/release/scripts/modules/bpy_extras/view3d_utils.py @@ -54,9 +54,13 @@ def region_2d_to_vector_3d(region, rv3d, coord): w = out.dot(persinv[3].xyz) + persinv[3][3] - return ((persinv * out) / w) - viewinv.translation + view_vector = ((persinv * out) / w) - viewinv.translation else: - return viewinv.col[2].xyz.normalized() + view_vector = -viewinv.col[2].xyz + + view_vector.normalize() + + return view_vector def region_2d_to_origin_3d(region, rv3d, coord): diff --git a/release/scripts/templates_py/operator_modal_view3d_raycast.py b/release/scripts/templates_py/operator_modal_view3d_raycast.py index 6c59603239b..1aa13c90ca3 100644 --- a/release/scripts/templates_py/operator_modal_view3d_raycast.py +++ b/release/scripts/templates_py/operator_modal_view3d_raycast.py @@ -2,7 +2,7 @@ import bpy from bpy_extras import view3d_utils -def main(context, event, ray_max=10000.0): +def main(context, event, ray_max=1000.0): """Run this function on left mouse, execute the ray cast""" # get the context arguments scene = context.scene @@ -13,6 +13,11 @@ def main(context, event, ray_max=10000.0): # get the ray from the viewport and mouse view_vector = view3d_utils.region_2d_to_vector_3d(region, rv3d, coord) ray_origin = view3d_utils.region_2d_to_origin_3d(region, rv3d, coord) + + if rv3d.view_perspective == 'ORTHO': + # move ortho origin back + ray_origin = ray_origin - (view_vector * (ray_max / 2.0)) + ray_target = ray_origin + (view_vector * ray_max) def visible_objects_and_duplis(): |