Raspberry Pi2 で Blender を使う ()
Raspbian Jessie の新バージョン (2016-02-03-raspbian-jessie) が 2016/02/09 に公開されました。Mathematica のバージョンが 10.3 になったり、Java8 が update 65 になっていたり、いろいろとバージョンアップされています。
しかし今回の最も大きな変化は Raspberry Pi2 のみですが、GPU で動作する OpenGL ES ではない普通の OpenGL のドライバーが使えるようになったことでしょう。 まだ実験レベルということで、Raspberry Pi2 で raspi-config の「Advanced Options」から有効にする必要があります。いろいろ制限はあるようですが、 Raspberry Pi2 で下のスクリーンショットのように Blender(ブレンダー) が普通に使えるようになりました。頂点数が数千ほどの3Dモデルならば、ストレス無くモデリングできます。 Blender は、3次元コンピュータグラフィックスを作成する非常に高機能のソフトウェアで、モデリング(3Dモデルの作成)、レンダリング(画像の生成)、アニメーション、ゲームエンジンとしての機能を備えています。 オープンソース(無料)で、Windows、Linux, MacOSX で使用できます。Raspberry Pi2 で高品質なアニメーションは無理でしょうが、モデリングの練習には問題なく使えそうです。
この記事ではスクリーンショットでも文字が読めるように Blender のウィンドウを 640 x 480 程度に小さくして原寸で表示しています。 画面が狭く、文字が切れていますが、実際はこんなに狭くありません。
2016-02-03-raspbian-jessie のインストール
今回も 2016-02-03-raspbian-jessie をディスクイメージからクリーンインストールする手順を紹介します。 インストール作業を行うSD カードはデータがすべて初期化されるので、新しいカードやデータが不要で消去してもいい SD カードを使って下さい。
いつものように MacBook Pro17(MacOSX 10.11.2) でインストール作業した記録です。 MacOS X ではデバイス名の指定方法が異なるだけで、Linuxと同じく dd コマンドを使ってSDカードに ディスクイメージを書き込みます。 以下の例は、私のMacBookでの例です。今回の作業では SDカード が /dev/disk3 で認識されています。適宜読み替えてください。
dd コマンドのデバイスの指定を間違えると最悪ハードディスクがすべて消えるなどの悲惨な結果が待っています。十分に注意して行なってください。
$ uname -rsv
Darwin 15.2.0 Darwin Kernel Version 15.2.0: Fri Nov 13 19:56:56 PST 2015;
root:xnu-3248.20.55~2/RELEASE_X86_64Darwin 14.5.0
ダウンロードしたディスクイメージは以下のサイズです。
$ ls -lt
-rw-r--r-- 1 jun staff 1468312136 2 10 00:52 2016-02-03-raspbian-jessie.zip
イメージのハッシュ(SHA-1 Checksum)が公式サイトにある 7f834b560d774a607fa1e88198791a9e69477eeb であることを確認します。
$ shasum 2016-02-03-raspbian-jessie.zip
$ shasum 2016-02-03-raspbian-jessie.zip
7f834b560d774a607fa1e88198791a9e69477eeb 2016-02-03-raspbian-jessie.zip
いつものようにMacBook Pro17 にUSB接続のmicroSDカードリーダを接続して、デバイスを確認後、SDカードをアンマウントします。
$ df -k
Filesystem 1024-blocks Used Available Capacity iused ifree %iused Mounted on
略
/dev/disk3s1 57288 20320 36968 36% 512 0 100% /Volumes/boot
SDカードは /dev/disk3s1 と認識されていました。SDカードに見えているパーティションをアンマウントします。
$ diskutil unmount /dev/disk3s1
Volume boot on disk3s1 unmounted
zipファイルを展開します。
$ unzip 2016-02-03-raspbian-jessie.zip
Archive: 2016-02-03-raspbian-jessie.zip
inflating: 2016-02-03-raspbian-jessie.img
展開したファイルを確認します。
$ ls -l 2016-02-03-raspbian-jessie.*
-rw-r--r-- 1 jun staff 4127195136 2 3 00:17 2016-02-03-raspbian-jessie.img
-rw-r--r-- 1 jun staff 1468312136 2 10 00:52 2016-02-03-raspbian-jessie.zip
SDカードに書き込みます。 今回は /dev/rdisk3 に書いています。
$ sudo time dd bs=1m if=2016-02-03-raspbian-jessie.img of=/dev/rdisk3
3936+0 records in
3936+0 records out
4127195136 bytes transferred in 381.668256 secs (10813567 bytes/sec)
381.68 real 0.01 user 2.66 sys
ブート領域のファイルを確認します。
$ cd /Volumes/boot $ ls -l -rwxrwxrwx 1 jun staff 18693 3 29 2015 COPYING.linux -rwxrwxrwx 1 jun staff 1494 2 2 09:50 LICENCE.broadcom -rwxrwxrwx 1 jun staff 18974 2 2 15:17 LICENSE.oracle -rwxrwxrwx 1 jun staff 10866 2 2 09:50 bcm2708-rpi-b-plus.dtb -rwxrwxrwx 1 jun staff 10587 2 2 09:50 bcm2708-rpi-b.dtb -rwxrwxrwx 1 jun staff 10617 2 2 09:50 bcm2708-rpi-cm.dtb -rwxrwxrwx 1 jun staff 11854 2 2 09:50 bcm2709-rpi-2-b.dtb -rwxrwxrwx 1 jun staff 17920 2 2 09:50 bootcode.bin -rwxrwxrwx 1 jun staff 136 2 2 11:52 cmdline.txt -rwxrwxrwx 1 jun staff 1635 2 2 11:52 config.txt -rwxrwxrwx 1 jun staff 6481 2 2 09:50 fixup.dat -rwxrwxrwx 1 jun staff 2505 2 2 09:50 fixup_cd.dat -rwxrwxrwx 1 jun staff 9719 2 2 09:50 fixup_db.dat -rwxrwxrwx 1 jun staff 9721 2 2 09:50 fixup_x.dat -rwxrwxrwx 1 jun staff 110 2 2 15:17 issue.txt -rwxrwxrwx 1 jun staff 3952788 2 2 09:50 kernel.img -rwxrwxrwx 1 jun staff 4033988 2 2 09:50 kernel7.img drwxrwxrwx 1 jun staff 8192 2 2 15:17 overlays -rwxrwxrwx 1 jun staff 2738968 2 2 09:50 start.elf -rwxrwxrwx 1 jun staff 612024 2 2 09:50 start_cd.elf -rwxrwxrwx 1 jun staff 4887080 2 2 09:50 start_db.elf -rwxrwxrwx 1 jun staff 3839304 2 2 09:50 start_x.elf
overlays というディレクトリも見てみましょう。
$ cd overlays/ $ ls README pitft28-capacitive-overlay.dtb ads7846-overlay.dtb pitft28-resistive-overlay.dtb at86rf233-overlay.dtb pps-gpio-overlay.dtb bmp085_i2c-sensor-overlay.dtb pwm-2chan-overlay.dtb dht11-overlay.dtb pwm-overlay.dtb enc28j60-overlay.dtb raspidac3-overlay.dtb gpio-ir-overlay.dtb rpi-backlight-overlay.dtb gpio-poweroff-overlay.dtb rpi-dac-overlay.dtb hifiberry-amp-overlay.dtb rpi-display-overlay.dtb hifiberry-dac-overlay.dtb rpi-ft5406-overlay.dtb hifiberry-dacplus-overlay.dtb rpi-proto-overlay.dtb hifiberry-digi-overlay.dtb rpi-sense-overlay.dtb hy28a-overlay.dtb sdhost-overlay.dtb hy28b-overlay.dtb sdio-overlay.dtb i2c-gpio-overlay.dtb smi-dev-overlay.dtb i2c-rtc-overlay.dtb smi-nand-overlay.dtb i2s-mmap-overlay.dtb smi-overlay.dtb iqaudio-dac-overlay.dtb spi-bcm2708-overlay.dtb iqaudio-dacplus-overlay.dtb spi-bcm2835-overlay.dtb lirc-rpi-overlay.dtb spi-dma-overlay.dtb mcp2515-can0-overlay.dtb tinylcd35-overlay.dtb mcp2515-can1-overlay.dtb uart1-overlay.dtb mmc-overlay.dtb vc4-kms-v3d-overlay.dtb mz61581-overlay.dtb vga666-overlay.dtb piscreen-overlay.dtb w1-gpio-overlay.dtb piscreen2r-overlay.dtb w1-gpio-pullup-overlay.dtb
vc4-kms-v3d-overlay.dtb というのが、OpenGLのドライバーです。
Raspberry Pi で動かすため、Mac から SDカードをアンマウントして取り出します。
$ df -k Filesystem 1024-blocks Used Available Capacity iused ifree %iused Mounted on 略 /dev/disk3s1 61384 20312 41072 34% 512 0 100% /Volumes/boot $ diskutil unmount /dev/disk3s1 Volume boot on disk3s1 unmounted
Raspbian Jessie で起動
2016-02-03-raspbian-jessie ではイメージを書き込んだ SDカードで起動すると、そのままデスクトップが表示されて、ログインすることもなく、すぐに使用することができます。
ターミナルを開いてカーネルのバージョンを確認してみます。
$ uname -a
Linux raspberrypi 4.1.17-v7+ #834 SMP Mon Feb 1 15:17:54 GMT 2016 armv7l GNU/Linux
raspi-config による初期設定は自動的に実行されません。 SDカードは容量にかかわらず、書き込んだイメージのサイズになっています。
$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 3837080 3514504 107948 98% /
devtmpfs 469752 0 469752 0% /dev
tmpfs 474068 0 474068 0% /dev/shm
tmpfs 474068 6396 467672 2% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474068 0 474068 0% /sys/fs/cgroup
/dev/mmcblk0p1 61384 20344 41040 34% /boot
tmpfs 94816 0 94816 0% /run/user/1000
上のようにパーティションは4GBとなっていて、あまり空きはありません。
raspi-config による初期設定
これまでと同じ raspi-config も使用できますが、デスクトップのメニューからも GUI で設定できます。「Expand Filesystem」ボタンを押して、再起動するとSDカード全体を使うようになります。
OpenGL のドライバー
Raspberry Pi では最初から OpenGL ES2 を利用して、GPU のシェーダを使った高速なアプリケーションを作成できました。 しかし、ES では無い普通の OpenGL はハードウェアによるアクセラレーションがなく、ソフトウェアによる描画のため、簡単なアプリケーションを除いて実用的な速度では動きませんでした。
しかし、今回の 2016-02-03-raspbian-jessie では Raspberry Pi2 専用ですが、GPU を使った OpenGL ドライバーを使うことができます。 Raspberry Pi2 では raspi-config の「Advanced Options」から有効にする必要があります。
「GL Driver」 から Enable を選択してリブートすると、GPU を使った OpenGL ドライバーが有効になります。
OpenGLのドライバーを有効にすると /boot/config.txt の赤く示した「dtoverlay=vc4-kms-v3d」の行が追加されます。OpenGLのドライバーを有効にして起動しなくなるような場合は、別のPCにSDカードを接続して、 /boot/config.txt を「#dtoverlay=vc4-kms-v3d」」のようにコメントアウトすると、OpenGLのドライバーが無効な設定で起動できるようになります。この行以外にも変更する必要のある設定があるので、起動したら再度 raspi-config で OpenGL のドライバーを「Disable」に再設定して下さい。
$ cat config.txt # For more options and information see # https://www.raspberrypi.org/documentation/configuration/config-txt.md # Some settings may impact device functionality. See link above for details # uncomment if you get no picture on HDMI for a default "safe" mode #hdmi_safe=1 # uncomment this if your display has a black border of unused pixels visible # and your display can output without overscan #disable_overscan=1 # uncomment the following to adjust overscan. Use positive numbers if console # goes off screen, and negative if there is too much border #overscan_left=16 #overscan_right=16 #overscan_top=16 #overscan_bottom=16 # uncomment to force a console size. By default it will be display's size minus # overscan. #framebuffer_width=1280 #framebuffer_height=720 # uncomment if hdmi display is not detected and composite is being output #hdmi_force_hotplug=1 # uncomment to force a specific HDMI mode (this will force VGA) #hdmi_group=1 #hdmi_mode=1 # uncomment to force a HDMI mode rather than DVI. This can make audio work in # DMT (computer monitor) modes #hdmi_drive=2 # uncomment to increase signal to HDMI, if you have interference, blanking, or # no display #config_hdmi_boost=4 # uncomment for composite PAL #sdtv_mode=2 #uncomment to overclock the arm. 700 MHz is the default. #arm_freq=800 # Uncomment some or all of these to enable the optional hardware interfaces #dtparam=i2c_arm=on #dtparam=i2s=on #dtparam=spi=on # Uncomment this to enable the lirc-rpi module #dtoverlay=lirc-rpi # Additional overlays and parameters are documented /boot/overlays/README # Enable audio (loads snd_bcm2835) dtparam=audio=on dtoverlay=vc4-kms-v3d
トラブルシューティング
GPUでアクセラレーションする OpenGL のドライバーは、まだ完全ではありません。私が経験した問題と対策を書いておきます。まず重要なのは電源です。Raspberry Piのトラブルの多くが電源とケーブルの品質が原因ですが、OpenGLのドライバーを使っていて電圧が低いと画面が表示されなくなります。 これまでも電源の電圧が低めのときに画面右上に小さいレインボー色の四角形が表示されました。現在のOpenGLのドライバーでは電圧が低いと、小さい四角形ではなくフルスクリーンで表示されて、デスクトップは完全に見えなくなります。 私の環境では 50cm の短い電源ケーブルに変えると大丈夫ですが、1.8m のケーブルでは点滅して使い物になりませんでした。次の問題は、公式7インチタッチスクリーンディスプレイを接続するとOpenGL のドライバーが有効な設定では起動しないようです。 電圧が低いときと同じような画面が表示されますが、カーネルが起動していないようです。 上でも書きましたが、OpenGLのドライバーを有効にして起動しなくなるような場合は、別のPCにSDカードを接続して、 /boot/config.txt を「#dtoverlay=vc4-kms-v3d」」のようにコメントアウトすると、OpenGLのドライバーが無効な設定で起動できるようになります。この行以外にも変更する必要のある設定があるので、起動したら再度 raspi-config で OpenGL のドライバーを「Disable」に再設定して下さい。
拙作の j3w をこの設定で起動すると、動作はしますが多角形の描画ができません。 OpenGL の使い方の問題かもしれませんが、昔から色々な環境で動作しているので Raspberry Pi の OpenGL のドライバーの問題の可能性もあります。 ソフトウェアのOpenGLのドライバーでは動作を確認しました。 Raspberry Pi はユーザも開発者も多いので、今後いろいろな面で改善されていくと思うと楽しみでもあります。
Blender を使う
blender をインストールします。
sudo apt-get install blender
blender を日本語化するために、日本語フォントをインストールします。
sudo apt-get install fonts-vlgothic
blender をインストールすると、メニューの項目に Blender が現れます。
メニューを選択すると次のように blender が起動します。
日本語化
最初にメニューやボタンを日本語で表示するように設定を変更します。blender のウィンドウの上部のメニューの「File」を選択し、「User Preference」をクリックします。
開いたウィンドウの右上部の「System」ボタンを押します。日本語フォントを指定するために右下に表示されているフォルダーのアイコンをクリックします。
先にインストールした「VLゴシック」指定するために、/usr/share/fonts/truetype/vlgothic まで移動して、下のようにVL-PGothic-Regular.ttf を選択して「Accept」ボタンをクリックします。
すぐ下の「International Fonts」をクリックして、言語で Japanese を選択して、「インターフェイス」ボタンを押すと日本語で表示されるようになります。下の「ユーザー設定の保存」ボタンを押してウィンドウを閉じると次回から日本語で表示されるようになります。
以上の設定で、すべての表示が日本語になります。
テーマの変更
デフォルトの画面はちょっと暗くて老眼にはつらいので、テーマを変更して画面を少し明るい色使いに変えます。「ファイル」メニューの「ユーザー設定」を選択します。 「テーマ」を選択すると、Blender のすべてのパーツの色を変更できます。 非常に多くの設定項目があるので完全にカスタマイズすると大変です。 私は、プリセットから 「Blender24X」 を選択して、blender 2.4以前の古いバージョンのテーマがお気に入りです。
テーマを「Blender24X」に変更すると次のような画面構成になります。 字が読みやすいですよね。
Blender は無料にも関わらず本格的なアニメーションが作成できるほど超高機能です。 使い方はネット上に色々な解説があります。 書籍も多く出版されていますが、Blender2.6マスターブック が高いですが、中途半端なものを買うより結局安くつくような気がします。 私はすでに書籍をイッパイ買ってしまっています(笑)。Blender はキーボードとマウスを両方使う必要があって、「右クリックで選択」が特徴的なユーザインターフェイスで、マウスだけで色々突っついても使い方がわかるようにはなりませんが、元々プロ用なだけあって慣れると効率的な操作性であることが分かります。