グラフィックス環境のセットアップ

グラフィックス環境について

Choreonoidではロボットや環境のモデルを三次元コンピュータグラフィックス(3DCG)で描画するようになっています。これを行うため、使用するPCのグラフィックス環境は以下を満たしている必要があります。

  1. 三次元描画APIであるOpenGL(バージョン1.5以上、3.3以上を推奨)が利用可能であること
  2. OpenGLについてGPUによるハードウェアアクセラレーションが利用可能であること

1については、対応プラットフォーム であれば通常は利用可能となっています。Choreonoidが動作するためにまずはこれを満たしている必要があります。

その上で、快適に利用するためには2も満たしていることが望ましいです。そうでないと、3DCGの描画が極端に遅くなってしまうので、よほど簡単なモデルを利用するのでない限り、実用的ではなくなってしまいます。

WindowsであればPC購入時の状態で通常はOpenGLのハードウェアアクセラレーションが利用可能となっています。ただしWindowsを自前でインストールしたり、ビデオボードを交換したりした場合は、搭載されているGPU用のグラフィックスドライバを別途インストールしなければならないこともありますので、ご注意ください。

Linuxでも最近はオープンソースのドライバが改善され、インストール直後からOpenGLのアクセラレーションが機能する場合も多くなってきました。ただしGPUによってはそのままではアクセラレーションが十分でない場合もありますので、注意が必要です。GPUの種類ごとの状況については後述します。

仮想マシンで使用する場合は、OpenGLのハードウェアアクセラレーションが十分に機能しない場合が多いです。その場合、描画が遅かったり、うまく描画できなかったりします。これは仮想マシン側の不備になります。一般的に仮想マシンではそのような状況になること多いので、あまり使用は推奨できませんし、使用するとしてもこのことを承知の上で使うようにしてください。(ただし最近の仮想マシンでは状況が以前よりは改善されているようです。)

GPUの種類

GPUの種類は大きく製造メーカーによって区別できます。また型番によって状況が異なる場合もあります。以下ではGPUの種類ごとの状況について簡単にまとめておきます。

  • NVIDIA製のGPU (GeForce/Quadro等)
  • 問題なく動作し、性能も申し分ないです。
  • 最高の性能を求める場合は、現在のところNVIDIA製のハイエンドモデルが選択肢として有力です。
  • Ubuntuで使用する場合、本来の性能を発揮させるためには別途プロプライエタリドライバをインストールする必要があります。このためのGUIツールも用意されているので、ドライバのインストールはそれほど難しくはありません。
  • AMD製のGPU (Radeon)
  • 以前はChoreonoidの使用において問題がありましたが、最新の開発版では改善されています。
  • 以前はLinux対応が不十分な点もありましたが、数年前より対応がよくなりました。具体的には、"GCNアーキテクチャ" 世代の以降のGPUであればLinux上でも問題なく動作します。
  • GCNアーキテクチャは具体的な型番としてはRadeon HD 7700-7900、HD 8000、RX 240-290、RX 300、RX 400、RX 500、Vegaシリーズが該当するようです。これより古い型番のものは使用を控えてください。
  • 上記型番のものはUbuntuに標準でインストールされるオープンソースドライバでも概ね問題なく動作するようです。
  • AMDがリリースしているプロプライエタリドライバも利用可能です。描画速度についてはオープンソースドライバとどちらが優れているか一概には言えないようですが、安定性についてはプロプライエタリドライバの方が優れているようです。
  • GCNの次のアーキテクチャであるRDNAアーキテクチャのGPU、具体的にはRadeon RX5000シリーズのGPUも動作します。ただしUbuntu 18.04以前のディストリビューションでは、オープンソースドライバが対応しておらず、プロプライエタリドライバを導入する必要があるようです。
  • 現状では絶対的性能はNVIDIA製のGPUに劣るようです。一方で、ミドルスペックのものに関しては、コストパフォーマンスが良いようです。
  • Intel製CPU内蔵GPU((HD Grraphics、UHD Graphics)
  • IntelのCore iシリーズ等のCPUに内蔵されているGPUです。こちらも動作については問題ありません。
  • 描画速度については基本的に上記2メーカーのGPUほど速くはありませんが、比較的単純なモデルを使用する場合は問題ないかと思います。
  • Ubuntuに標準でインストールされるドライバで問題なく動作します。というか、それ以外のドライバはありません。
  • ただし古い型番のものは描画は影の描画がうまくいかない場合があります。そのような型番のものに対しては影の描画を無効化するようにしています。

NVIDIA製GPUは、これまでの実績と安定性、性能等総合的に考慮して、使用を推奨できます。AMD製のGPUについては、以前は推奨していなかったのですが、最近はドライバも改善されており、最新の開発版Choreonoidと組み合わせて使用するのであれば、十分利用可能です。Intel製のCPU内蔵GPUは性能はそれほどではありませんが、安定して動作しますので、お持ちのPCに搭載されている場合、まずはそれで試してみるのがよいかと思います。

WindowsにおけるGPUドライバのインストール

Windowsでは適切なドライバが標準でインストールされていることが多いため、通常はあまり気にしなくても大丈夫です。Choreonoidで三次元モデルの描画がうまくいかない場合は、ドライバが正しくインストールされているか確認するようにしてください。

Ubuntu LinuxにおけるGPUドライバのインストール

Linuxの場合はGPUドライバを別途インストールしなければならない場合があります。以下ではその方法についてGPUのタイプごとに説明します。

NVIDIA製GPUの場合

NVIDIA製のGeForceやQuadroといったGPUを搭載しているPCの場合、Ubuntu Linuxにデフォルトでインストールされるドライバはオープンソース版の "Nouveau" というものになります。これは残念ながら現状では3D描画のハードウェアアクセラレーションが十分に機能しないため、使用は推奨できません。

これに対して、NVIDIAが開発しているプロプライエタリ・ドライバを利用することができます。そちらはメーカーが自ら開発しているだけあって機能や性能は申し分なく、GPUの能力を最大限に利用することが可能です。

プロプライエタリ・ドライバの状態確認や導入は、Ubuntuの「ソフトウェアとアップデート」ツールを用いて行うことができます。このツールの「追加のドライバー」というタブにこの設定があります。(あるいは「追加のドライバー」というツールを単体で利用できる場合もあります。)

利用可能なドライバがある場合は「追加のドライバー」の領域に、

  • NVIDIA binary driver - version 375.29をnvidia-375から使用します(プロプライエタリ,検証済み)

といった表示が出ます。これをクリックして選択し、「変更の適用」を実行することで、ドライバがインストールされ、使えるようになります。候補が複数表示される場合は、なるべくバージョンの新しいものや、「検証済み」と記されているものを選択するようにします。

Intel製GPUの場合

Intel CPU内蔵のHD Graphics、UHD GraphicsといったGPUは、Ubuntu Linuxでは標準のドライバが機能するようになっています。これはオープンソースのドライバになりますが、Intelも開発に関わっているようで、Windows版のドライバと比べても遜色は無いようです。逆にIntel製GPUについては、Linux用のプロプライエタリ・ドライバーは存在しません。

AMD製GPUの場合

AMD製のGPUでもオープンソース版とプロプライエタリ版が利用可能です。それぞれ

  • AMDGPU (オープンソース版)
  • AMDGPU-PRO (プロプライエタリ版)

という名称がついています。

Ubuntuをインストールすると標準でオープンソース版が利用可能となっています。これに対して、プロプライエタリ版のAMDGPU-PROはマニュアルでインストールする必要があります。ドライバはAMD公式サイトの「ドライバーとサポート」のページから検索して取得することが可能です。

2020年10月2日現在、当方で動作確認済みのUbuntu用ドライバは、以下になります。

こちらはUbuntu 20.04と18.04 (成果には18.04.4 HWE) に対応しています。これより古いディストリビューション用のものは、 AMD Drivers and Support のページから対象製品を選択し、出てくるページで "Previous Drivers" というリンクを辿って探してください。

上記ページにインストール方法が書かれたマニュアルもリンクされています。基本的にはインストール用スクリプトをひとつ実行するだけでインストールできるようになっています。

注釈

上記リンクから得られるドライバのバージョンは20.30ですが、これよりも新しい バージョン20.40のドライバ もリリースされています。ただしそちらのバージョンをUbuntu 18.04 + Radeon RX 570の環境で試したところ、OpenGLの表示に乱れが出ます。20.30以前のドライバではそのようなことはなく、また同じバージョンのChoreonoidが他のGPUやOSにおいては問題なく動作しています。また、ドライバ20.40であっても、Radeon RX 5500 XTの場合は同じ問題は発生しませんでした。この状況から、バージョン20.40のドライバは特定の型番のRadeon GPUに対して不具合を有すると考えられますので、当面はバージョン20.30を利用するのがよいかと思います。

三次元描画エンジン

グラフィックス環境については、GPUとそのドライバに加えて、Choreonoid側の設定が影響する部分もあります。それはChoreonoidの実装において三次元モデルの描画を担当する「三次元描画エンジン」と呼ばれる部分で、これについて以下の2つの実装が利用可能となっています。

  1. 新描画エンジン(GLSL描画エンジン、OpenGL3.3以降に対応)
  2. 旧描画エンジン(固定シェーダ描画エンジン、OpenGL1.5以降に対応)

最新の開発版ではデフォルトで新描画エンジンが使用されるようになっています。こちらはOpenGLバージョン3.3以降のAPIを使用するもので、GLSLというプログラマブルシェーダ言語を用いて描画機能を実装しています。

旧描画エンジンは、描画機能の点では新エンジンに劣っており、デフォルトでは使用されないようになっています。ただしOpenGLのバージョン1.5があれば使用できるので、かなり古いGPUを搭載したPCであったり、仮想マシン上で利用する場合など、OpenGLが十分にサポートされていない環境でも動作する可能性が高くなります。

通常はデフォルトの新描画エンジンを利用すればOKですが、それがうまく動作しない場合には、旧描画エンジンに切り替えて使用することができます。

注釈

Choreonoidはこれまで旧描画エンジンをデフォルトとしていましたが、2019年の8月以降の開発版で、新描画エンジンをデフォルトにするように変更しました。以前より描画エンジンの切り替えを行っていた方はこの点注意するようにしてください。

描画エンジンの切り替え方法

描画エンジンの切り替えは、環境変数 "CNOID_USE_GLSL" を用いて行います。

この変数が定義されていないか、値として1が設定されていれば、新描画エンジンを使用します。一方、この変数に0を設定しておくと、旧描画エンジンが利用されるようになります。

Ubuntu Linuxの場合

Choroenoidをコマンドラインから起動する際に、

CNOID_USE_GLSL=0 choreonoid ...

などとすれば、旧描画エンジンが使用されるようになります。この方法だと起動の度に描画エンジンを選択できます。(0を1に変更すると新描画エンジンになります。)

あらかじめ

export CNOID_USE_GLSL=0

と設定しておけば、最初のように起動しなくても、旧描画エンジンが使用されるようになります。旧描画エンジンを使用しなければならない環境の場合は、これをホームディレクトリの .profile などに記述しておくと、毎回設定しなくてもよくなります。

新描画エンジンに戻す場合は

unset CNOID_USE_GLSL

として変数の定義をクリアするか、

export CNOID_USE_GLSL=1

としてください。

Windowsの場合

Windowsでもコマンドプロンプトを使えば上記と同様に切り替えることができます。 もちろんシステムの環境変数設定で設定しておくことも可能です。

OpenGLバージョンの確認方法

OpenGLのバージョンは、WindowsであればGPUメーカーの提供する設定用ツールなどを用いて確認することができます。

Ubuntuでもそのようなツールが利用可能なことがありますが、他には "glxinfo" というコマンドを用いて確認することができます。このコマンドは

sudo apt install mesa-utils

を実行するとインストールされます。そして

glxinfo

を実行することでその環境で利用可能なOpenGLに関する情報が表示されます。この中に

OpenGL version string: 4.5.0 NVIDIA 375.39

といった表示があれば、OpenGLの4.5.0までサポートされていることになります。

あるいは、Choreonoid起動時に、 メッセージビュー

OpenGL 3.3 (GLSL 4.60)"シーン" ビューで利用可能です.
ドライバプロファイル: ATI Technologies Inc. Radeon RX 5500 XT 3.3.14736 Core Profile Forward-Compatible Context 20.20.

といった情報が出力されますので、そちらで確認することもできます。(ここで最後にGLSLのバージョンが表示されていれば、新描画エンジンが有効になっています。旧描画エンジンの場合はGLSLバージョンの表示はされません。)

GPU性能の確認方法

シーンビュー設定ダイアログ にある「FPSテスト」というボタンを押すと、シーンを360度回転させるアニメーションを行なって、これにかかるフレームレートを表示します。この機能により描画速度が分かりますので、GPUやGPUドライバを変更した際などに、描画速度の変化を確認することができます。テストは何らかのモデルやプロジェクトを読み込んで、モデルが表示されている状態で行うとよいでしょう。