I would use NDC, it is more clear and common terminology, while camera_view is imprecise and needs explanation in a comment,
On 13 June 2013 08:55, Brecht Van Lommel <[email protected]> wrote: > "world_to_camera_view" would be good I think. > > On Thu, Jun 13, 2013 at 5:24 PM, Campbell Barton <[email protected]> > wrote: > > Fair point, not really a fan of `ndc space`, though I can't think of > > one I'm especially happy with either... > > > > other possibilities ... > > world_to_view2d (except it returns z component) > > world_to_camera_frame (since it uses camera framing functions, though > > this is more of a detail) > > world_to_view_uvw > > world_to_render ? > > > > On Fri, Jun 14, 2013 at 12:06 AM, Brecht Van Lommel > > <[email protected]> wrote: > >> Nitpick about the terminology used here. "Camera space" usually refers > >> to the coordinates when transformed by the camera matrix but without > >> any perspective transformation applied, so I would say "2D camera > >> space coords" here. OpenGL and Renderman would call the result of this > >> function Normalized Device Coordinates, though I'm not sure if there > >> is a common name for the space, maybe "NDC space". > >> > >> On Thu, Jun 13, 2013 at 3:51 PM, Campbell Barton <[email protected]> > wrote: > >>> Revision: 57433 > >>> > http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57433 > >>> Author: campbellbarton > >>> Date: 2013-06-13 13:51:01 +0000 (Thu, 13 Jun 2013) > >>> Log Message: > >>> ----------- > >>> handy function for getting the 2d camera coords for a worldspace > location. > >>> > >>> bpy_extras.object_utils.world_to_camera(scene, obj, coord) > >>> > >>> Modified Paths: > >>> -------------- > >>> trunk/blender/release/scripts/modules/bpy_extras/object_utils.py > >>> > >>> Modified: > trunk/blender/release/scripts/modules/bpy_extras/object_utils.py > >>> =================================================================== > >>> --- trunk/blender/release/scripts/modules/bpy_extras/object_utils.py > 2013-06-13 13:09:32 UTC (rev 57432) > >>> +++ trunk/blender/release/scripts/modules/bpy_extras/object_utils.py > 2013-06-13 13:51:01 UTC (rev 57433) > >>> @@ -25,6 +25,7 @@ > >>> "object_add_grid_scale", > >>> "object_add_grid_scale_apply_operator", > >>> "object_image_guess", > >>> + "world_to_camera", > >>> ) > >>> > >>> > >>> @@ -265,3 +266,40 @@ > >>> if image is not None: > >>> return image > >>> return None > >>> + > >>> + > >>> +def world_to_camera(scene, obj, coord): > >>> + """ > >>> + Returns the 2d camera space coords for a 3d point. > >>> + > >>> + Where (0, 0) is the bottom left and (1, 1) is the top right of > the camera frame. > >>> + values outside 0-1 are also supported. > >>> + > >>> + Takes shift-x/y, lens angle and sensor size into account > >>> + as well as perspective/ortho projections. > >>> + > >>> + :arg scene: Scene to use for frame size. > >>> + :type scene: :class:`bpy.types.Scene` > >>> + :arg obj: Camera object. > >>> + :type obj: :class:`bpy.types.Object` > >>> + :arg coord: World space location. > >>> + :type coord: :class:`mathutils.Vector` > >>> + :return: normalized 2d vector. > >>> + :rtype: :class:`mathutils.Vector` > >>> + """ > >>> + > >>> + co_local = obj.matrix_world.normalized().inverted() * coord > >>> + > >>> + camera = obj.data > >>> + frame = [-v for v in camera.view_frame(scene=scene)[:3]] > >>> + if camera.type != 'ORTHO': > >>> + frame = [(v / -v.z) * co_local.z for v in frame] > >>> + > >>> + min_x, max_x = frame[1].x, frame[2].x > >>> + min_y, max_y = frame[0].y, frame[1].y > >>> + > >>> + x = (co_local.x - min_x) / (max_x - min_x) > >>> + y = (co_local.y - min_y) / (max_y - min_y) > >>> + > >>> + from mathutils import Vector > >>> + return Vector((x, y)) > >>> > >>> _______________________________________________ > >>> Bf-blender-cvs mailing list > >>> [email protected] > >>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs > >> _______________________________________________ > >> Bf-committers mailing list > >> [email protected] > >> http://lists.blender.org/mailman/listinfo/bf-committers > > > > > > > > -- > > - Campbell > > _______________________________________________ > > Bf-committers mailing list > > [email protected] > > http://lists.blender.org/mailman/listinfo/bf-committers > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
