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 を使用している場合は、OSMesa が正しくインストールされていることを確認してください。詳細については、「Pyrender に OSMesa を使用させる」を参照してください。

モデルが gltf 形式でない場合は、オンライン ツールNSDT 3DConvertを使用して、他の形式の 3D モデルを GLTF に変換できます。
ここに画像の説明を挿入します

1. pyrender バックエンドを選択します

シーンのジオメトリ、カメラ、ライトを設定したら、OffscreenRenderer を使用してレンダリングできます。Pyrender は 3 つのオフスクリーン レンダリング バックエンドをサポートしています。

  • 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 のフラグ オプションを使用し、ビットごとの OR 演算を行うことで、レンダリング プロセスをカスタマイズできます。たとえば、次のコードはアルファ チャネルを使用してカラー イメージをレンダリングし、すべてのディレクショナル ライトのシャドウ マップを有効にします。

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

オフスクリーン レンダラーの使用が完了したら、別のレンダラーを実行したり、同じシーンのビューアを開いたりする前に、オフスクリーン レンダラーを閉じる必要があります。

>>> r.delete()

元のリンク: PyRender オフスクリーン レンダリング GLTF — BimAnt

おすすめ

転載: blog.csdn.net/shebao3333/article/details/132825530