記事一覧へ English

Internet of Tomohiro

よろしければ投げ銭をお願いします。


【素でタダ】Google ColaboratoryでOpenGLを使ったデスクトッププログラムを動かす【STADIAモドキ】

2022/9/15: Google ColaboratoryでリモートデスクトップまたはSSH を使うことは許可されなくなりました

Unigine ValleyをGoogle Colaboratoryで動かしているところ
  1. 必要なもの
  2. 手順
  3. OpenGLを使ったプログラムを実行する
    1. Run Shadertoy
    2. Run Unigine Valley
    3. Use Blender
    4. Use Godot
  4. 解説
  5. 動きを滑らかにする方法
  6. 画面サイズを変更する方法

必要なもの

Google Colaboratory 上のデスクトップ環境にアクセスするには ngrok または Argo Tunnel のどちらかを使う必要があります。

手順

詳しい手順は以下のサイトをご覧下さい。

https://github.com/demotomohiro/remocolab/blob/master/README.md

うまくいかないときは以下のページが参考になるかもしれません。

https://github.com/demotomohiro/remocolab/wiki/Frequently-Asked-Questions

  1. ngrokを使う場合は ngrok にサインアップ
  2. Argo Tunnel を使う場合は cloudflared をダウンロードしてインストールするか、解凍してパスが通っているディレクトリに実行ファイルをコピーする
  3. OpenGLを使いたい場合はランタイムタイプを変更

  1. セルに以下のコードをコピペ
  2. 左上の再生ボタンのようなところをクリック
  3. ngrokを使う場合はngrokのauthtokenをコピペする
  4. ngrok regionを訊かれるので自分に一番近い場所を選んで入力
  5. TurboVNCが立ち上がるまで待つ
  6. Google Colaboratory にSSHでログイン
  7. TurboVNC Viewerを実行

問題無く接続できれば以下のような画面が見えます。

以下のコマンドでNVIDIAのOpenGL実装が使えるかどうか確認できます。

$ vglrun /opt/VirtualGL/bin/glxinfo | grep NVIDIA

問題なければ以下のような出力がでるはずです。

OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.6.0 NVIDIA 418.67
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 418.67
OpenGL shading language version string: 4.60 NVIDIA

OpenGLを使ったプログラムを実行する

以下の内容はリモートデスクトップ上で実行してください。 TurboVNC ViewerではローカルPCとリモートPC間でコピペすることができます。 OpenGLを使うプログラムを実行するときは vglrun の後に実行するプログラムを指定します。 vglrun をつけずに実行するとTurboVNC付属のソフトウェアGLX/OpenGL実装が使われるのでレンダリングが遅くなります。

SSHからプログラムを起動しVNC上に表示したい場合には以下のように DISPLAY=:1 をつけてコマンドを実行します。

$ DISPLAY=:1 vglrun firefox &

Run Shadertoy

ターミナルを開いて以下のコマンドでfirefoxをインストールして実行します。

$ su
# apt install firefox
# exit
$ vglrun firefox

firefoxで Shadertoy のページを開きます。

Run Unigine Valley

Unigine Valley のページからUnigine Valleyをダウンロードします。 次に以下のコマンドでファイルを展開して実行します。

$ chmod +x Unigine_Valley-1.0.run
$ ./Unigine_Valley-1.0.run
$ cd Unigine_Valley-1.0
$ vglrun ./valley

Use Blender

Blender の公式サイトのDownloadページからLinux 64bit用のファイルをダウンロードします。 次に以下のコマンドでファイルを解凍し、実行します。

$ tar xf blender-2.79b-linux-glibc219-x86_64.tar.bz2
$ cd blender-2.79b-linux-glibc219-x86_64
$ vglrun ./blender

Use Godot

Godot の公式サイトのDownloadページからLinux 64bit用のファイルをダウンロードします。 次に以下のコマンドでファイルを展開して実行します。

$ unzip Godot_v3.1-stable_x11.64.zip
$ vglrun ./Godot_v3.1-stable_x11.64

解説

remocolab はOpenSSH、 TurboVNClibjpeg-turboVirtualGLXfce のダウンロードとインストールを行っています。 TurboVNC を使って Google Colaboratory の仮想マシン上にデスクトップを起動しリモートPCからアクセスできるようにしています。 TurboVNC はサーバ上のデスクトップ画面を TurboVNC Viewer を実行しているクライアントPCに送り、クライアントPCからマウスとキーボード入力を受け取ります。 TurboVNClibjpeg-turbo を使って画面の画像を圧縮してから送信しています。 SSH port forwardingを使うことによってこれらの通信を暗号化しています。 remocolab では外部からSSHを使わず直接TurboVNCに接続することができないように設定しています。 OpenGLを使うプログラムを実行するときにVirtualGLを使うことによってTurboVNC上でも普通のデスクトップ上で実行したときと同じようにサーバ上のGPUを使ったハードウェアアクセラレーションが効くようにしています。

動きを滑らかにする方法

TurboVNC Viewer Optionsを開き、Encoding methodを Tight + Medium-Quality JPEG または Tight + Low-Quality JPEG(WAN) に設定します。 ノイズが見えるようになりますが、カクツキが軽減します。

画面サイズを変更する方法

TurboVNC Viewer Optionsを開き、 Connection タブをクリックして Remote desktop size に好きなサイズを設定します。

Frequently-Asked-Questions


by Tomohiro

記事一覧へ