推荐:用 NSDT编辑器 快速搭建可编程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:
一旦你设置了场景的几何体、摄像机和灯光,就可以使用 OffscreenRenderer 对其进行渲染。 Pyrender 支持三种离屏渲染后端:
如果要使用 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。
适当设置环境变量后,创建场景,然后使用窗口宽度、窗口高度和点云点的大小配置 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()
原文链接:PyRender离屏渲染GLTF — BimAnt