Tutorial rápido de renderizado fuera de pantalla de PyRender

Insertar descripción de la imagen aquí

Recomendado: utilice el editor NSDT para crear rápidamente escenas 3D programables

Pyrender es una biblioteca pura de Python (2.7, 3.4, 3.5, 3.6) para renderizado y visualización físicos. Está diseñado para cumplir con la especificación glTF 2.0 de Khronos.

Pyrender es liviano, fácil de instalar y fácil de usar. Viene con un renderizador fuera de pantalla para un visor de escenas intuitivo y admite renderizado acelerado por GPU en servidores sin cabeza, lo que lo hace ideal para aplicaciones de aprendizaje automático. Consulte la guía del usuario para obtener un tutorial completo o bifurque este repositorio en Github.

Si está utilizando un servidor sin cabeza, necesitará usar EGL (para renderizado acelerado por GPU) u OSMesa (para renderizado de software solo de CPU). Si utiliza OSMesa, asegúrese de que esté instalado correctamente. Para obtener más información, consulte Permitir que Pyrender use OSMesa.

Si su modelo no está en formato gltf, puede utilizar la herramienta en línea NSDT 3DConvert para convertir modelos 3D en otros formatos a GLTF:
Insertar descripción de la imagen aquí

1. Seleccione el backend de pyrender

Una vez que haya configurado la geometría, la cámara y las luces de su escena, puede renderizarla usando OffscreenRenderer. Pyrender admite tres backends de renderizado fuera de la pantalla:

  • Pyglet, el mismo motor que hace funcionar al espectador. Esto requiere un administrador de pantalla activo, por lo que no puede ejecutarlo en un servidor sin cabeza. Esta es la opción por defecto.
  • OSMesa, un renderizador de software.
  • EGL, que permite la renderización acelerada por GPU sin un administrador de pantalla.

Si desea utilizar OSMesa o EGL, debe configurar la variable de entorno PYOPENGL_PLATFORM antes de importar Pyrender o cualquier otra biblioteca OpenGL. Puedes hacer esto desde la línea de comando:

PYOPENGL_PLATFORM=osmesa python render.py

O en la parte superior del script de Python:

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

El identificador de EGL es egl y el identificador de OSMesa es osmesa.

2. Ejecute el renderizador

Después de configurar las variables de entorno adecuadamente, cree la escena y luego configure el objeto OffscreenRenderer con el ancho de la ventana, el alto de la ventana y el tamaño de los puntos de la nube de puntos:

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

Luego, simplemente llama a la función OffscreenRenderer.render():

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

Insertar descripción de la imagen aquí

Esto devuelve una imagen flotante en color de canal (w,h,3) y una imagen flotante de profundidad (w,h) renderizada desde la cámara principal de la escena.

Puede personalizar el proceso de renderizado utilizando las opciones de bandera en RenderFlags y aplicando OR bit a bit. Por ejemplo, el siguiente código representa una imagen en color con un canal alfa y habilita mapas de sombras para todas las luces direccionales:

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

Una vez que haya terminado con el renderizador fuera de la pantalla, deberá cerrarlo antes de poder ejecutar un renderizador diferente o abrir un visor para la misma escena:

>>> r.delete()

Enlace original: PyRender renderizado fuera de pantalla GLTF - BimAnt

Supongo que te gusta

Origin blog.csdn.net/shebao3333/article/details/132825530
Recomendado
Clasificación