リモートサーバーでBlender 3.6.5を実行するためにx-forwardingを使用しようとしています。サーバーには、デフォルトのx11パッケージとmesaパッケージとfreetypeパッケージがインストールされています。
user@server:~$ sudo apt install -y
bzip2 libfreetype6 libgl1-mesa-dev \
libglu1-mesa \
fontconfig \
libxi6 libxrender1 libglib2.0-0 x11-utils
SSHクライアントを使用してサーバーに接続し、x11転送オプションを定義します。
user@client$ ssh -X -v user@server
走ってみようGLXギアうまくいきますが、Blenderを実行すると、不明なエラーが発生し、クラッシュが発生します。
user@server:~/blender-3.6.5-linux-x64$ ./blender
0debug1: client_input_channel_open: ctype x11 rchan 3 win 65536 max 16384
debug1: client_request_x11: request from 127.0.0.1 60744
debug1: channel 1: new [x11]
debug1: confirm x11
Failed to open dir (No such file or directory): /run/user/7693/gvfs/
X Error of failed request: BadGC (invalid GC parameter)
Major opcode of failed request: 60 (X_FreeGC)
Resource id in failed request: 0x6e00025
Serial number of failed request: 218
Current serial number in output stream: 223
debug1: channel 1: FORCE input drain
Blenderをリモートで実行するときに考慮すべき他のことがありますか? (例:フォントや特定のライブラリ)
答え1
Blenderは最新のX11機能を使用し、glxgearsが書かれたときに発明されていない機能に依存しているため、glxgearsが動作するために必要な機能が少ないことは驚くべきことではありません。
X11 の呼び出し Blender の起動中に実行する操作をすばやく追跡すると、共有メモリ拡張を使用することがわかります。これは、テクスチャの変更やモデルに表示するなどのタスクを実行するプログラムに適しています。これはOpenGL側でも同様のものを使うと確信しているので、すべてのx11-mitshm呼び出しを何らかの方法でパッチし、SSHを介して透過的にしても失敗します。
ローカルでレンダリングするには、Blenderが必要です(つまり、Blenderが実際に実行されているリモートシステムで)。その後、レンダリングされたビットマップをローカルコンピュータに渡すことができます。私はこれがあなたが望むものだと思います。おそらく、強力なGPUとCPUを搭載したシステムでは、コンピューティングのパフォーマンスがほとんどなく実行されているサーバーにログインしないでしょう。しかし、正反対が本当です!おそらく、遅すぎてGPUのないノートブックでBlenderを使用しようとしています。サーバーは高速でGPUがあります。そうですか? (そうでなければ、全体的な努力は意味がありません。ローカルでBlenderを実行してください。)
伝統的に表示されたグラフィックのVNCスクリーンキャプチャがこれを行う方法でした。しかし、これが高解像度で待ち時間が長い大型デルタグラフィックのための方法であるかどうかはわかりません。通常、GPUアクセラレーションX.orgを実行するにはリモートサーバーに接続されている物理画面が必要です。
私は、GoogleがStadia(そしてすべての有料顧客とビジネスパートナー)を放棄した後、人々がヘッドレスサーバー用に構築しているアプリストリーミングソリューションを調べてみたいと思いました。数十)。現在、サーバー側のSunshineとクライアント側のMoonshineが人気のあるソリューションだと思いますが、これについての経験はありません。