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:
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翻译整理,转载请标明出处