pyrender基于PyRender的深度图渲染

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyrender基于PyRender的深度图渲染相关的知识,希望对你有一定的参考价值。

一、安装pyrender

二、加载Mesh模型与相机参数

  • 加载Mesh模型
    • colmap fused.ply --> PoissonRecon
  • 相机参数的转换
    • colmap (world-to-camera) vs pyrender (camera-to-world)
    • y-z axis reverse
# Creates the scene and adds the mesh.
scene = pyrender.Scene()
scene.add(mesh)

# Creates a renderer of suitable height and width
cam_data = cameras[images[i].camera_id]
renderer = pyrender.OffscreenRenderer(cam_data.width,
                                      cam_data.height)

# Extracts focal length and principal point information.
# Important: This code snippet assumes that the camera
# is a PINHOLE camera.
fx = np.float32(cam_data.params[0])
fy = np.float32(cam_data.params[1])
cx = np.float32(cam_data.params[2])
cy = np.float32(cam_data.params[3])

# Extracts the pose of the image.
# Note that pyrender poses transform from camera
# to world coordinates while colmap poses transform
# from world to camera.
R = np.asmatrix(qvec2rotmat(images[i].qvec)).transpose()
T = np.identity(4)
T[0:3,0:3] = R
T[0:3,3] = -R.dot(images[i].tvec)
# Takes into account that colmap uses the computer vision
# camera coordinate system (x = right, y = down, z = front)
# while pyrender uses the computer graphics conventions
# (x = right, y = up, -z = front).
T[:, 1:3] *= -1

# Sets up the camera with the intrinsics and extrinsics.
pyrender_camera = pyrender.IntrinsicsCamera(fx, fy, cx, cy,
                                            zfar=800.0)  # 425~935
cam_node = scene.add(pyrender_camera, pose=T)

参考资料:

https://github.com/colmap/colmap/issues/704#issuecomment-954161261

以上是关于pyrender基于PyRender的深度图渲染的主要内容,如果未能解决你的问题,请参考以下文章

Unity Shader - 深度图基础及应用

商业Shader渲染-深度图

Shadow Acne问题

从鼠标位置和深度图计算 3D 点

实时阴影渲染:PSSM平行分割阴影图

软件渲染器之 阴影计算