• PyRender离屏渲染快速教程


    在这里插入图片描述

    推荐:用 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:
    在这里插入图片描述

    1、选择pyrender后端

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

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

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

    PYOPENGL_PLATFORM=osmesa python render.py
    
    • 1

    或者在 Python 脚本的顶部:

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

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

    2、运行渲染器

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

    >>> r = pyrender.OffscreenRenderer(viewport_width=640,
    ...                                viewport_height=480,
    ...                                point_size=1.0)
    
    • 1
    • 2
    • 3

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

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

    在这里插入图片描述

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

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

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

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

    >>> r.delete()
    
    • 1

    原文链接:PyRender离屏渲染GLTF — BimAnt

  • 相关阅读:
    强化学习视频教程--莫凡python
    SSL 证书过期巡检脚本 (Python 版)
    MySQL Hash Join前世今生
    LTE无线网络规划的四大要点
    【excel技巧】Excel表格里的图片如何批量调整大小?
    Nginx 可视化管理平台:nginx-proxy-manager
    快速编写CSDN博客 小技巧
    MySQL事务详解(事务隔离级别、实现、MVCC、幻读)
    Docker实战-使用NGINX实现4层的负载均衡
    为Electron-log 设置日志颜色
  • 原文地址:https://blog.csdn.net/shebao3333/article/details/132825530