NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 - 3D道路快速建模

Pyrender 是一个纯 Python(2.7、3.4、3.5、3.6)库,用于基于物理的渲染和可视化。 它旨在满足 Khronos 的 glTF 2.0 规范

Pyrender轻量、易于安装且易于使用。 它配备了直观的场景查看器的离屏渲染器,支持无头服务器上的 GPU 加速渲染,这使其非常适合机器学习应用程序。 查看用户指南以获得完整的教程,或者在 Github 上分叉这个仓库

如果你使用的是无头服务器,则需要使用 EGL(用于 GPU 加速渲染)或 OSMesa(用于仅 CPU 软件渲染)。 如果使用 OSMesa,请确保已正确安装它。 有关详细信息,请参阅让 Pyrender 使用 OSMesa

如果你的模型不是gltf格式,可以使用NSDT 3DConvert将其他格式的3D模型转换为GLTF:

https://3dconvert.nsdt.cloud

1、选择pyrender后端

一旦你设置了场景的几何体、摄像机和灯光,就可以使用 OffscreenRenderer 对其进行渲染。 Pyrender 支持三种离屏渲染后端:

  • Pyglet,运行查看器的同一引擎。 这需要一个活动的显示管理器,因此你无法在无头服务器上运行它。 这是默认选项。
  • OSMesa,一个软件渲染器。
  • EGL,允许在没有显示管理器的情况下进行 GPU 加速渲染。

如果要使用 OSMesa 或 EGL,则需要在导入 Pyrender 或任何其他 OpenGL 库之前设置 PYOPENGL_PLATFORM 环境变量。 你可以在命令行执行此操作:

PYOPENGL_PLATFORM=osmesa python render.py

或者在 Python 脚本的顶部:

# Top of main python script
import os
os.environ['PYOPENGL_PLATFORM'] = 'egl'

EGL 的句柄是 egl,OSMesa 的句柄是 osmesa

2、运行渲染器

适当设置环境变量后,创建场景,然后使用窗口宽度、窗口高度和点云点的大小配置 OffscreenRenderer 对象:

>>> r = pyrender.OffscreenRenderer(viewport_width=640,
...                                viewport_height=480,
...                                point_size=1.0)

然后,只需调用 OffscreenRenderer.render() 函数:

>>> color, depth = r.render(scene)

这将返回从场景主摄像机渲染的 (w,h,3) 通道浮点彩色图像和 (w,h) 浮点深度图像。

你可以通过使用 RenderFlags 中的标志选项并将它们按位或运算来自定义渲染过程。 例如,以下代码渲染带有 Alpha 通道的彩色图像,并为所有方向光启用阴影贴图:

>>> flags = RenderFlags.RGBA | RenderFlags.SHADOWS_DIRECTIONAL
>>> color, depth = r.render(scene, flags=flags)

完成离屏渲染器后,你需要先关闭它,然后才能运行不同的渲染器或打开同一场景的查看器:

>>> r.delete()

原文链接:Offscreen Rendering With Pyrender

BimAnt翻译整理,转载请标明出处