def calc_projection_matrix(camera):
if 'perspective' in camera:
f = 1 / np.tan(camera['perspective']['yfov'] / 2)
znear, zfar = camera['perspective']['znear'], camera['perspective']['zfar']
projection_matrix = np.array([[f / camera['perspective']['aspectRatio'], 0, 0, 0],
[0, f, 0, 0],
[0, 0, (znear + zfar) / (znear - zfar), 2 * znear * zfar / (znear - zfar)],
[0, 0, -1, 0]], dtype=np.float32)
elif 'orthographic' in camera:
raise Exception('TODO')
return projection_matrix
评论列表
文章目录