forked from bartvdbraak/blender
Fix T41902: Flipped persp/ortho region_2d_to_vector_3d
- Ortho result from view3d_utils.region_2d_to_vector_3d was flipped. - Persp result wasn't normalized. - operator_modal_view3d_raycast.py failed for ortho views. Thanks to Philipp Oeser for the initial fix.
This commit is contained in:
parent
217095f622
commit
61baf6e813
@ -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):
|
||||
|
@ -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():
|
||||
|
Loading…
Reference in New Issue
Block a user