p2d = Point2()
return p2d if base.camLens.project(p3d, p2d) else None
+ @staticmethod
+ def screen_coord(pos):
+ new_node = NodePath('temp')
+ new_node.set_pos(pos)
+ coord3d = new_node.get_pos(base.cam)
+ new_node.remove_node()
+ coord2d = Point2()
+ base.camLens.project(coord3d, coord2d)
+ coord_r2d = Point3(coord2d[0], 0, coord2d[1])
+ coord_a2d = base.aspect2d.get_relative_point(render2d, coord_r2d)
+ return coord_a2d[0], coord_a2d[2]
+
+ @staticmethod
+ def world_from_to(pos):
+ p_from, p_to = Point3(), Point3() # in camera coordinates
+ base.camLens.extrude(pos, p_from, p_to)
+ p_from = render.get_relative_point(base.cam, p_from) # global coords
+ p_to = render.get_relative_point(base.cam, p_to) # global coords
+ return p_from, p_to
+
@property
def shader_support(self):
return base.win.get_gsg().get_supports_basic_shaders()