※当サイトはPRを含みます

[Open3D]Xserverを使ってWSL2でGUIの表示をする方法とエラー対策

目的

ホストPCからLinuxマシンへSSH接続して、Dockerコンテナを立てて開発を行います。
エディタはVScodeです。
GUIはXサーバ(X Window System)を使用します。

このように実行結果をGUI上に表示するのが目的です。

点群データの表示についてはこちらの記事で紹介しています。

VcXsrvの入手と起動

下記をダウンロードします。
https://sourceforge.net/projects/vcxsrv

参考
https://rin-ka.net/windows-x-server/

コンテナ内のセットアップ

GUI表示のためにX11をインストールします。

apt-get -y install xserver-xorg
apt-get -y install x11-apps

xeyesと入力して、画面上に目玉が2つ出てきたらセットアップ完了です。

xeyes

エラー対策

エラー①OSError: libGL.so.1: cannot open shared object file: No such file or directory
上記のようなエラーが出た場合、aptをアップデートしてからlibGLをインストールします。

apt-get update && apt-get upgrade -y
apt-get install -y libgl1-mesa-dev

エラー②Error: Can't open display: :0.0
上記のようなエラーが出た場合、ディスプレイの設定を行います。

export DISPLAY=aaa.bbb.ccc.ddd:0.0
export LIBGL_ALWAYS_INDIRECT=1

aaa.bbb.ccc.dddはローカルホストのIPアドレスを指定します。
アドレスはコマンドプロンプトでipconfigと入力し、表示されたIPv4アドレスを使います。

上記でうまくいかない場合は下記の方法を試してみてください

ディスプレイ番号をvcxsrvから直接入手する方法です。

  1. vcxsrv.exe を直接実行("C:\Program Files\VcXsrv\vcxsrv.exe")
  2. ウィンドウ左上のディスプレイ番号をコピー ※下記画像参照
  3. コマンドプロンプトへディスプレイ番号を入力してエクスポートする (export DISPLAY=LAPTOP-OTMPSIHS:0.0)

エラー③

[Open3D WARNING] GLFW Error: GLX: GLX version 1.3 is required
[Open3D WARNING] Failed to create window
[Open3D WARNING] [DrawGeometries] Failed creating OpenGL window.


Open3Dなどを使用してプログラムを実行した際に下記のようなエラーが出てきた場合は、VcXsrvの設定を変更してみてください。

・「Native opengl」をオフにする
・「Disable aceccs control」をオンにする