2017/09/02(土) [n年前の日記]
#1 [ubuntu][python][pi3d] Ubuntu Linux 16.04 LTS に pi3d をインストール
Pythonから OpenGL ES を使える
_pi3d
は、 Linux や Windows 上でもインストールすることが可能らしい。足元で埃をかぶってる、Ubuntu Linux 16.04 LTS が入ったサブPCを使って、インストールできるのか試してみる。
◎ Ubuntu Linux 上で OpenGL ES が使えるようにする。 :
デスクトップ機で OpenGL ES を使うためには、mesa-utils-extra が必要らしい。仮想的に OpenGL ES を持ってるような状態にしてくれるとかなんとか…。とりあえずインストール。
実機にディスプレイを繋いで、OpenGL ES の動作確認。
sudo apt install mesa-utils-extra
実機にディスプレイを繋いで、OpenGL ES の動作確認。
es2gearsギアがクルクル回るアレが表示されて、FPSも出力された。動いてるっぽい。
◎ pipをインストール。 :
pipをインストール。pip を使えば、Python のモジュールをネット経由でインストールできる。
バージョン等を確認。
pipをアップグレードする。
ちなみにUbuntu上では、pip は Python 2.7用。pip3 は Python 3.x 用。自分の環境では、pip のほうは既に 9.0.1 になってた。
sudo apt install python-pip python3-pip
バージョン等を確認。
$ pip3 --version pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5) $ sudo -H pip3 search pi3d pi3d (2.20) - pi3d OpenGLES2 3D graphics library You are using pip version 8.1.1, however version 9.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.「pipをアップグレードしろ」と言われてしまった。
pipをアップグレードする。
$ sudo -H pip3 install --upgrade pip $ sudo -H pip3 --version pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)アップグレードできた。
ちなみにUbuntu上では、pip は Python 2.7用。pip3 は Python 3.x 用。自分の環境では、pip のほうは既に 9.0.1 になってた。
◎ pi3dをインストール。 :
pipを使って、pi3dをインストール。
デモスクリプト群の pi3d_demos も git で取ってくる。
sudo -H pip install pi3d sudo -H pip3 install pi3d
デモスクリプト群の pi3d_demos も git で取ってくる。
git clone https://github.com/pi3d/pi3d_demos.git
◎ pi3dの動作確認。 :
デモスクリプトを動かしてみる。ディスプレイを繋げた実機上で操作。
他のスクリプトも動かしてみる。
/dev/input/mice のパーミッションを確認してみる。
ユーザをinputグループに所属させる。
再度、pi3dのスクリプトを実行。
ということで、Linux上でも pi3d が動作することを確認できた。
cd pi3d_demos python Earth.py地球と月がグルグル回るソレが出てきた。たしかに Linux上でも動いた。
他のスクリプトも動かしてみる。
Python ForestWalk.pyPermission denied /dev/input/mice と怒られて終了してしまった…。
/dev/input/mice のパーミッションを確認してみる。
$ ll /dev/input/mice crw-rw---- 1 root input 13, 63 9月 2 08:51 /dev/input/miceユーザがinputグループに入ってないとアクセスできないのだな…。
ユーザをinputグループに所属させる。
sudo gpasswd -a ユーザ名 inputログアウトして再ログイン。
再度、pi3dのスクリプトを実行。
python ForestWalk.py今度は動いた。
ということで、Linux上でも pi3d が動作することを確認できた。
◎ 自分の手元の環境の問題点。 :
表示はできたけど、描画面積が大きいスクリプトを動かすと、なんだかガクガクしてるな…。
サブPCのCPUとM/Bは、AMD Athlon II X2 250 (3.0GHz, 2コア) + ASRock M3A785GMH/128M (AMD785G + SB710チップセット使用)。このスペックでは重いのかもしれん。というか、AMD785Gチップセットの ATI Radeon HD 4200 が足を引っ張ってるんじゃないかな。たぶん。
サブPCのCPUとM/Bは、AMD Athlon II X2 250 (3.0GHz, 2コア) + ASRock M3A785GMH/128M (AMD785G + SB710チップセット使用)。このスペックでは重いのかもしれん。というか、AMD785Gチップセットの ATI Radeon HD 4200 が足を引っ張ってるんじゃないかな。たぶん。
◎ VMware + Ubuntu でも試してみた。 :
調子に乗って VMware + Ubuntu 上でも pi3d のインストールを試してみた。
import pi3d で「そんなモジュールはねえよ」と怒られた…。pip じゃなくて pip2 を使ってインストールしないとダメっぽい。pip2 が Python 2.7用。pip3 が Python 3.x用。ということなのかな。
この状態なら、python Earth.py が動いてくれた。
ただ、VMware 上では vsync(垂直同期)を見てくれないというかサポートしてないようで。物凄い速度で、地球と月が回る…。
ググってみたら、.vmx に
import pi3d で「そんなモジュールはねえよ」と怒られた…。pip じゃなくて pip2 を使ってインストールしないとダメっぽい。pip2 が Python 2.7用。pip3 が Python 3.x用。ということなのかな。
sudo -H pip2 install pi3d
この状態なら、python Earth.py が動いてくれた。
ただ、VMware 上では vsync(垂直同期)を見てくれないというかサポートしてないようで。物凄い速度で、地球と月が回る…。
ググってみたら、.vmx に
mks.vsync = "1"を追加する、という話を見かけたので試してみたけど効果は無かった。もしかするとMac上で動いてるVMware用の設定、なんだろうか。
[ ツッコむ ]
#2 [ubuntu][linux] x11vncを使ってみたり
今までは、
しかしこの組み合わせだと、Ubuntu側で OpenGL関係の何かを実行しても、Windows 側の VNC viewer 上では描画結果が表示されないことに気がついて、これはちょっと不便だなと。描画速度が遅くてもいい・紙芝居状態でもいいから、一応結果を VNC viewer上でも確認したい。
ググってたら、tightvncserver は OpenGLの描画結果を表示できない、という話を見かけた。そこで代わりに vnc4server をインストールしてみたり。
さらにググってたら、x11vnc というものがあると知り。x11vnc を使うと、Ubuntu がディスプレイに表示してるデスクトップをそのまま VNC で表示できるから OpenGLの結果も表示できる、という話を見かけた。
_linux - How can OpenGL graphics be displayed remotely using VNC? - Server Fault
_x11vnc(1) - Linux man page
試してみたり。
たしかに、OpenGLの描画結果も表示された。接続を切ると x11vnc も終了する。
ただ、コレをするためには、Ubuntu側であらかじめデスクトップ画面を表示しておかないといけない…。
- Ubuntu 16.04側に tightvncserver をインストール、
- Windows10 x64側に UltraVNC をインストール、
しかしこの組み合わせだと、Ubuntu側で OpenGL関係の何かを実行しても、Windows 側の VNC viewer 上では描画結果が表示されないことに気がついて、これはちょっと不便だなと。描画速度が遅くてもいい・紙芝居状態でもいいから、一応結果を VNC viewer上でも確認したい。
ググってたら、tightvncserver は OpenGLの描画結果を表示できない、という話を見かけた。そこで代わりに vnc4server をインストールしてみたり。
sudo aptitude purge tightvncserver sudo aptitude install vnc4serverしかしコレも、OpenGLの描画結果は表示されなかった。
さらにググってたら、x11vnc というものがあると知り。x11vnc を使うと、Ubuntu がディスプレイに表示してるデスクトップをそのまま VNC で表示できるから OpenGLの結果も表示できる、という話を見かけた。
_linux - How can OpenGL graphics be displayed remotely using VNC? - Server Fault
_x11vnc(1) - Linux man page
試してみたり。
sudo aptitude install x11vnc
x11vnc -display :0Windows側は今までと同様、 UltraVNC に同梱の VNC viewer を利用。「相手ホスト名:5900」でアクセス。
たしかに、OpenGLの描画結果も表示された。接続を切ると x11vnc も終了する。
ただ、コレをするためには、Ubuntu側であらかじめデスクトップ画面を表示しておかないといけない…。
◎ 自動ログインを有効に。 :
Ubuntu は
_lightdm
というディスプレイマネージャが最初に起動して、そこでユーザを選択してパスワードを入力するとデスクトップ画面に入れるようになってる。この lightdm の設定ファイルを編集すれば自動ログインができるようになる。らしい。
_LightDM - ArchWiki
_LightDM - Ubuntu Wiki
/etc/lightdm/lightdm.conf を編集、というか新規作成して以下を追加。
これで、Ubuntuを起動すると自動ログインしてデスクトップ画面が表示される状態になった。後は ssh でアクセスして x11vnc を起動すれば、Windows側で VNC viewer を起動してデスクトップ画面が出せる。はず。
_LightDM - ArchWiki
_LightDM - Ubuntu Wiki
/etc/lightdm/lightdm.conf を編集、というか新規作成して以下を追加。
[Seat:*] autologin-user=ユーザ名 autologin-user-timeout=0
これで、Ubuntuを起動すると自動ログインしてデスクトップ画面が表示される状態になった。後は ssh でアクセスして x11vnc を起動すれば、Windows側で VNC viewer を起動してデスクトップ画面が出せる。はず。
◎ x11vncのオプション。 :
x11vncのオプションについて、一部をメモ。
- -repeat はキーリピート有効化。
- -ncache n は描画の高速化。n は 6〜12 を指定できる。
- -ncache_cr はウインドウドラッグ時の高速化。
- -nowf はウインドウドラッグ時のワイヤーフレーム表示の無効化。
- -nodpms はディスプレイの電源管理無効化。スクリーンセーバが1〜2秒で起動してしまうときは指定するといいらしい。
x11vnc -display :0 -repeat -ncache 10
*1: あくまで「たまに」で…。普段は PuTTY で ssh接続すれば十分な場合がほとんど。
[ ツッコむ ]
#3 [ubuntu][linux] Ubuntu 16.04上で x0vncserver の動作確認をしてみたり
TigerVNC に入ってる x0vncserver を使えば x11vnc のようなことができるらしい。TightVNC じゃなくて TigerVNC。なんだか間違えやすい…。
_TigerVNC - ArchWiki
試しに入れてみようかなと思ったけれど、TigerVNC は Ubuntu 16.04の公式リポジトリに入ってない。が、 _Releases - TigerVNC/tigervnc 経由で、 _tigervnc/1.8.0 に .debファイルがあることを知った。Files → ubuntu-16.04LTS → amd64、で、tigervncserver_1.8.0-1ubuntu1_amd64.deb をダウンロード。
あるいは、 _https://dl.bintray.com/tigervnc/stable/ubuntu-16.04LTS/amd64/ から入手することもできる。
今まで入れてた vncserver をアンインストール。
_Ubuntu Xenial Xerus 16.04 で tigervnc server(nightly-build:1.6.8) を使う方法 - Qiita を参考に、.deb をダウンロードしたディレクトリで以下を実行して、TigerVNC をインストール。
VNCでアクセスするためのパスワードを指定。 ~/.vnc/passwd にパスワードファイルが作成される。
x0vncserver を実行。
Windows 側から UltraVNC の VNC viewer を使って「相手先ホスト名:5900」でアクセス。パスワードを尋ねてくるので打ち込む。…デスクトップ画面が出た。
しかし、接続を切っても x11vnc のように自動で終了してくれない。Ctrl + C で無理矢理終了させたけど、本来はどうやって終了させるのやら…。
_TigerVNC - ArchWiki
試しに入れてみようかなと思ったけれど、TigerVNC は Ubuntu 16.04の公式リポジトリに入ってない。が、 _Releases - TigerVNC/tigervnc 経由で、 _tigervnc/1.8.0 に .debファイルがあることを知った。Files → ubuntu-16.04LTS → amd64、で、tigervncserver_1.8.0-1ubuntu1_amd64.deb をダウンロード。
あるいは、 _https://dl.bintray.com/tigervnc/stable/ubuntu-16.04LTS/amd64/ から入手することもできる。
今まで入れてた vncserver をアンインストール。
sudo aptitude purge tightvncserver or sudo aptitude purge vnc4server
_Ubuntu Xenial Xerus 16.04 で tigervnc server(nightly-build:1.6.8) を使う方法 - Qiita を参考に、.deb をダウンロードしたディレクトリで以下を実行して、TigerVNC をインストール。
sudo apt install ./tigervncserver_1.8.0-1ubuntu1_amd64.debaptってローカルにある .deb のインストールもできるのか…! 知らなかった。
VNCでアクセスするためのパスワードを指定。 ~/.vnc/passwd にパスワードファイルが作成される。
vncpasswd
x0vncserver を実行。
x0vncserver -display :0 -passwordfile ~/.vnc/passwd
Windows 側から UltraVNC の VNC viewer を使って「相手先ホスト名:5900」でアクセス。パスワードを尋ねてくるので打ち込む。…デスクトップ画面が出た。
しかし、接続を切っても x11vnc のように自動で終了してくれない。Ctrl + C で無理矢理終了させたけど、本来はどうやって終了させるのやら…。
◎ x0vnc4serverなるものもあるらしい。 :
_Ubuntu - パッケージのファイル一覧: vnc4server/trusty-updates/i386
を眺めた感じでは、vnc4server をインストールすると x0vnc4server というファイルがインストールされるようで。TigerVNC を使わなくても vnc4server を入れれば同じことができたのか…な…。
[ ツッコむ ]
#4 [pc] HDDレコーダがLANに繋がらない
ふと、Windows10 x64機から、HDDレコーダ RD-BZ710 が見えないことに気がついた。調べてみたら、どうも RD-BZ710 がルータからDHCPでIPアドレスを貰えてないようで。というか、RD-BZ710 からルータが見えてない気配が。
とうとう壊れたのかな…。とりあえず、RD-BZ710 を固定IPアドレスにしてみたり。これならWindowsからアクセスできるから用は済むだろう…。
一応、ルータ側も、RD-BZ710 のMACアドレスに固定IPを割り当てる設定にしておいた。
とうとう壊れたのかな…。とりあえず、RD-BZ710 を固定IPアドレスにしてみたり。これならWindowsからアクセスできるから用は済むだろう…。
一応、ルータ側も、RD-BZ710 のMACアドレスに固定IPを割り当てる設定にしておいた。
[ ツッコむ ]
以上、1 日分です。