こんにちは。今年4回目のアドカレを書くしゅもんです。
今日は3Dグラ課向けの記事を書きたいと思うので、多くの人が使っているBlenderについての話をします。
Blenderについて
Blenderとは、無料で使える3DCGソフトのうち最も高機能なオープンソースソフトウェアです。
日々アップデートを繰り返し、現在では高価な有料3DCGソフトと肩を並べるほどに成長しています。
最近はプロが実際に業務で使用することもあるらしく、無料とはいえなかなか侮れないソフトです。
RiG++では新入生講習にBlenderを使用しているので、ほとんどの3Dグラフィック課がメインに使っている3DCGソフトはBlenderだと思います。
僕は普段Blenderをdisり倒していますが、実は結構すごいやつなんです!
Blenderのここがダメ!
実はBlenderは一部で悪名高いソフトで、原因はなんと言っても独特なUIでしょう。
他の3DCGソフトには、ある程度共通したUI配置が存在しますが、BlenderのUI配置はかなり特殊です
いろんな機能が、その使用頻度に関わらず同じサイズで分かりにくく、いろんなタブに散り散りになって配置されています。
これでは頻繁に使う機能も呼び出すだけで一苦労です。
そこでBlenderはこのような大量のキーボードショートカットを用意して対応しました。
一目見ただけでうんざりしますね。明らかに多すぎます。
ユーザがストレスなく覚えるショートカットは10個程度と言われているので、感性工学の観点からもこの設計は誤りであることが分かります。
今日はdisるだけじゃないよ
ここまではいつも通りのテンプレなんですが、今日はもう少し踏み込んでみます。
Blenderを使っていると、あまりにも高機能すぎてついつい忘れてしまうことがあります。
それはBlenderがオープンソースであることです。
ソースコードは公開され、規律を守れば誰でも自由に改変し配布する権利があります。
あなたが使っているそのソフトの裏側を簡単に覗き見ることができるのです。
不満があるなら、それを解消するよう行動を起こすべきです。
私たちには「プログラミング」という特別な能力があります。使い勝手の悪さを嘆くだけのユーザになってはいけません。
利用者である前に開発者であるべきです。
まあ翻訳サイトみたいな長い前置きはこれくらいにして、ここからようやく今日の本題に入っていきます。
今日のアドカレはBlenderの開発についての話です。
Blenderの開発に携わろう
それではBlenderの開発者になる準備をしましょう。
まずは開発コミュニティに参加します。
アカウントを作って、メールアドレスの承認を済ませてください。
標準アドオンやBlender自体のバグを発見したときに、ここに報告すると次のアップデートで修正される可能性が高まるので、特に開発に参加するつもりがなくてもアカウントを作っておいて、積極的に報告していきましょう。
バグ報告もオープンソースソフトウェアへの立派な貢献となります。
基本的にこのコミュニティページを通して、開発に関わっていきます。
Blenderをビルドしよう
オープンソースソフトウェアの開発に参加するうえで、最も重要なことはビルド可能な環境を構築するということです。
環境構築というと、あまりこういうことをしたことがない人にとっては難しく聞こえるかもしれませんが、身構える必要はありません。
Blenderは巨大なプロジェクトなので、ドキュメントが丁寧に整備されています。
開発環境についてもドキュメントに掲載されているので、wikiのBuilding Blenderに従えば簡単に環境を構築することができます。
英語ですけど優しい英語なので、TOEICで300点以上取れる人類なら読めます。
初回ビルドには死ぬほど時間が掛かるので注意してください。
ビルドが終わったら、ビルドしたBlenderを起動してみてください。
ソースコードから自分でビルドしたソフトが動くのは普通に感動しますよ。
Doxygenを使ってコードドリファレンスを作ろう
ここからいきなりコードを読め!っていうのはさすがに厳しすぎるので、Doxygenを使ってコードリファレンスを作ります。
Doxygenをインストールしていない人はインストールしてください。
$ cd ~/blender-build/blender/doc/doxygen $ doxygen
これを実行して、しばらく待っているとリファレンスができあがります。
生成されたリファレンスは
~/blender-build/blender/doc/doxygen/html/index.html
を開くとこんな感じで確認できます。
ここからは頑張って読み進めるのみです。
Blenderの開発する上で重要なページ
Blenderの開発をする上で、いくつか重要なページが存在します。
ここではそれらのページを紹介します。
まず最も重要なのがBlender Foundationです。
さっきアカウントを作ったところですね。
ここに上がってくるバグ報告を元にデバッグ作業をしたり、行った作業をコミットしたりします。
次に、Blender Developmentです。
ここはさっき環境構築のときに見たページです。
Blenderのコーディング規約や、IDEの設定など、新米開発者に向けた情報や、プロジェクト全体の概要など、たくさんの情報が詰まっています。
Python APIについても詳しく載っているので、アドオンを自作したい人もここを読むと良いかもしれません。
最後は、さっきDoxygenで生成したコードリファレンスです。
最初のうちは、これをひたすら読むだけになりますが、根気よく頑張ってください。
正直かなり辛いので、全部理解しようとは思わないで、wikiの概要を読みながら、実装が気になったところだけを読みましょう。
もしどこに何が書いてあるのか知りたくなったら、Blender code layoutを見てください。理解の助けになってくれるはずです。
さて、この3つ以外からはまともな情報は手に入りません。
「Blenderの使い方の解説」と違って、「Blenderのソースの解説」なんて、ググっても一切の情報にヒットすることはないです。
一からブログにまとめてみると一躍有名ブログになれるかもしれません。
コミュニティで質問してみれば回答がつくかもしれませんが、全てのソースコードはいつでも読めるので、気合いと根性でなんとかしてください。
実際に開発に参加しよう
まずはBlender DevelopmentのGetting Startedを読み進めてください。
開発する上で必要な環境のセットアップや注意事項などが書かれています。
Getting Startedの最後にQuick Hacksという項目があります。
これは慣れた開発者なら30分〜2時間程度で終えられるような軽い修正です。
まずは、ここに挙げられているタスクをこなしていきましょう。
ここから先は、僕に言えることはありません。
あなたの信念に基づいて「ぼくのかんがえたさいきょうのBlender」を作っていってください。
ぼくのかんがえたさいきょうのBlender
RiG++専用バージョンみたいなものを作ることもできます。
OSSに参加しよう
今日僕が伝えたかったのは、OSSの開発に興味を持ってほしいということです。
OSSとはオープンソースソフトウェアの略です。
OSSは非常に素晴らしい文化で、世界中のプログラマたちの善意で成り立っています。
Blenderは1人で全貌を把握するのは不可能なほど大きなプロジェクトなので、なかなか開発に参加するにはハードルが高く感じるかもしれませんが、実はBlenderは多くのOSSの上に成り立っています。
例えば画面描画をしているOpenGL、OpenGLの拡張機能であるGLEW、数学ライブラリのEigen2、jpegの読み書きをするOpenJPEG、物理エンジンのBullet、他にもたくさんのOSSが活用されており、さらにそのライブラリもまた別のOSSを使って作られています。
もっと言えばそれらをコンパイルしているGCCやClangがそもそもOSSです。
とにかく今まで実感したことがなかったとしても多くのOSSに支えられて現在のコンピュータの世界は成り立っています。
そうは言ってもBlenderのようなプロジェクトに参加するのはハードルが高く感じるかもしれませんが、OSSは多くの人が使っている有名で大規模なプロジェクトばかりではありません。
数人やたった1人で開発しているようなOSSはたくさんあります。(むしろほとんどがそうです。)
そうしたOSSの開発に参加してみてください。たいていの場合は非常に感謝されます。
「OSSへの貢献」というのは就職活動でも有利に働くので、そういう意味でも積極的にOSS開発をしていってください。
(あとGitの知識が必須になるので、みんなGit講習受けに来てください......)
以上、Blenderの話でした。
明日はいよいよアドカレ最終日。書くのは団体長です。