PyRender最小示例

PyRender是一个基于Python的轻量级图形库,支持物理渲染和PBR,包含内置的SceneViewer和OffscreenRenderer。它符合glTF2.0标准,特别适合在机器学习中生成3D模型的RGB图像和深度图。示例展示了如何加载和渲染3D模型,以及在无头服务器上进行GPU加速渲染。
摘要由CSDN通过智能技术生成

PyRender是一个纯Python(2.7, 3.4, 3.5, 3.6)、用于物理渲染(PBR)和可视化的图形库。其设计满足Khronos Group的glTF 2.0规范。

PyRender库是轻量级的,易于安装且易于使用。PyRender内置了一个场景查看器(Scene Viewer)和一个无需屏幕的离屏渲染器(offscreen renderer),支持在无头服务器上的gpu加速渲染。以上特性使得PyRenderer非常适用于机器学习应用,比如从3D模型渲染得到RGB图像或深度图。

Minimal Example for 3D Viewer

下面是一个在pyrender中加载和查看三角形网格模型的最小示例。

# pyrender_scene_viewer.py

import trimesh
import pyrender
fuze_trimesh = trimesh.load('examples/models/fuze.obj')
mesh = pyrender.Mesh.from_trimesh(fuze_trimesh)
scene = pyrender.Scene()
scene.add(mesh)
pyrender.Viewer(scene, use_raymond_lighting=True)

演示效果如下所示:

在这里插入图片描述

Minimal Example for Offscreen Rendering

下面是一个在pyrender中渲染网格模型的最小示例。唯一额外需要的是:添加照明和相机 (lighting and camera)。

# pyrender_offscreen_rendering.py

import numpy as np
import trimesh
import pyrender
import matplotlib.pyplot as plt

# import os
# os.environ["PYOPENGL_PLATFORM"] = "egl"

fuze_trimesh = trimesh.load('./examples/models/fuze.obj')
print("input mesh: {}".format(fuze_trimesh))

mesh = pyrender.Mesh.from_trimesh(fuze_trimesh)
scene = pyrender.Scene()
scene.add(mesh)
print("scene: {}".format(scene))

camera = pyrender.PerspectiveCamera(yfov=np.pi / 3.0, aspectRatio=1.0)
s = np.sqrt(2)/2
camera_pose = np.array([
    [0.0, -s,   s,   0.3],
    [1.0,  0.0, 0.0, 0.0],
    [0.0,  s,   s,   0.35],
    [0.0,  0.0, 0.0, 1.0],
])
scene.add(camera, pose=camera_pose)
light = pyrender.SpotLight(color=np.ones(3), intensity=3.0,
                            innerConeAngle=np.pi/16.0,
                            outerConeAngle=np.pi/6.0)
scene.add(light, pose=camera_pose)
r = pyrender.OffscreenRenderer(1600, 1200)
color, depth = r.render(scene)

plt.figure()
plt.subplot(1,2,1)
plt.axis('off')
plt.imshow(color)
plt.subplot(1,2,2)
plt.axis('off')
#plt.imshow(depth, cmap=plt.cm.gray_r)
plt.imshow(depth, 'rainbow')
plt.show()

演示效果如下所示:
在这里插入图片描述

更多

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值