# Viewport position and direction

How to get Viewport Position, Direction, UpVector? For Perspective and Ortho views.

Here is explanation Screenshot:

• – p2or Jan 9 '15 at 22:50
• I don't need camera. I need 3dView. Repspective/Ortho. But not camera object. – mifth Jan 10 '15 at 20:30
• Can you define the view-position much more clearly, this is quite an important distinction. (The point in the center of the view you look at, the point you look from?) – ideasman42 Jan 11 '15 at 13:21
• The point i look from. – mifth Jan 11 '15 at 17:58

You can get information about the view from RegionView3D which can be accessed via space_data.region_3d.

There are utility functions available in the bpy_extras.view3d_utils module.

You may get the view direction like this

r3d.view_rotation * Vector((0.0, 0.0, -1.0))


the up direction should be

r3d.view_rotation * Vector((0.0, 1.0, 0.0))


and the view location:

r3d.view_matrix.inverted().translation


Or another way

region = context.region
rv3d = context.region_data
view3d_utils.region_2d_to_origin_3d(region, rv3d, (region.width/2.0, region.height/2.0))


Despite its name, RegionView3D.view_location specifies the view target.

• Thanks a lot! But Ortho view does not show position correctly. Here is my video test: youtu.be/Ia7wjCMafqA This line does not work in Ortho "r3d.view_matrix.inverted().translation". Do you know how to fix it? Thanks. – mifth Jan 11 '15 at 12:17
• I reported the issue with OrthoView here developer.blender.org/T43206 – mifth Jan 11 '15 at 12:59
• I added another approach according to the issue which was discussed. I hope you don't mind. – mifth Mar 4 '15 at 14:19