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 はキーボードとマウスを両方使う必要があって、「右クリックで選択」が特徴的なユーザインターフェイスで、マウスだけで色々突っついても使い方がわかるようにはなりませんが、元々プロ用なだけあって慣れると効率的な操作性であることが分かります。



続く...



このページの目次