def get_camera_params(box, size, view_angle):
box_size = box.size()
size_diagonal = math.hypot(*size)
if view_angle is None:
focal_length = size_diagonal # Normal lens by default
else:
focal_length = size_diagonal / (2 * math.tan(math.radians(view_angle) / 2))
distance = focal_length * max(_zero_if_inf(box_size.x) / size[0],
_zero_if_inf(box_size.z) / size[1])
if distance == 0:
distance = 1
distance *= 1.2 # 20% margin around the object
origin = box.midpoint() - util.Vector(0, distance + _zero_if_inf(box_size.y) / 2, 0)
direction = util.Vector(0, 1, 0)
up = util.Vector(0, 0, 1)
return (origin, direction, up, focal_length)
评论列表
文章目录