MENU

(無料記事)【はじめにお読み下さい】

(約 4,500文字の記事です。)

簡単なものでいいのでBlenderのアドオンを開発したい!マクロの記録程度でいい。後は自作のボタンをどこかに設置できて、それをクリックしたら定型処理を1秒程度で終えてくれればいい。

たったこれだけのことが、できなかったんだ……。

更新履歴
2021/07/30 自力でアドオン開発できる状態になったので記事をメンテ。

国内の日本語情報によるBlenderのアドオン開発関連には目を通したし、BOOTHから有料本を買ったり、Amazonから英語のKindle本を買って読んだ。だが分からない……。

Pythonの知識ゼロが足を引っ張っているのか?と思ってPythonの基礎本もざっと読んだ。満を持して過去の資料を読み直した。だが分からない……。

(分からないこと1)×(分からないこと2)=(無限に分からないw)

Pythonが分からないのか、Blender APIが分からないのか、分からないw

もちろんBlender APIもPythonの作法に従っているので、Python独特の洗練されたループ文などは、最初は意味不明だったがPythonの基礎本を終えてからは理解できるようになった。

だが肝心のBlenderのアドオン開発のサンプルコードを見ても、さっぱり分からない……。

目次

多くの日本語情報は初心者には不便

脱初心者~中級者向けの情報ばかり。初心者は置いてけぼり。

かなり探し回ってみたが残念ながら超絶初心者向けの情報は見つけられなかった。だからこのマガジンを書いたわけだ。このマガジンほど初心者から脱初心者に優しい日本語の記事はないと思う。

記事のわかりやすさには自信がある。なんてったって、私が超絶素人だから(笑)Pythonも知らなかったし。

でもここまで来た。ようやくBlenderのアドオン開発をできるぞ!

上記の記事まで当マガジンを実践すると、他の多くの公開情報をすんなり利用できるようになる。ここまでくればあとは自力で開発を進められる。スキルアップできる。

当マガジンは、以後自力開発できるようになるまでの基礎を固めるために作成されました。超絶初心者のためのBlenderアドオン開発の基礎知識を提供しています。

情報量じゃなくて「スッキリした日本語の説明がない」

多分これだと思った。そもそもPython+Blender APIではオブジェクト指向のクラスの概念が多用されている。オブジェクト指向の理解、これがまずはどんなプログラミング言語であっても初心者キラーの最初の難関。それをPythonで理解する必要がある。第2の難関だがこれは第1の難関とセットで乗り越えればいい。

だがBlender APIは謎だ。Pythonの教本のような「Blender APIの教本」がないからだ。本家のリファレンスを見てもサッパリ分からない。謎のアルファベットの羅列が辞書的に繰り返されているのみ。

そして肝心のアドオン開発の説明も、謎のカタカナ用語が溢れていて、初心者にはもうお手上げです。

情報はたくさんあるのに、処理しきれない。

こりゃ挫折する人98%という感じがするw

私もかなりさじを投げたくなった(泣)だが、どうしても作りたいアドオンが1つだけあるので、そこに辿り着くまでの試行錯誤と結論をこのマガジンに残しておきます。

素人による、素人のための情報

まず私はPythonとBlender APIの素人なので、情報が正しくない場合がかなりあると思います。ご了承下さい。

(正確な情報が欲しい人は公式からのリファレンスをご覧下さい。)

だがしかし!分かりにくければ「正確な表現」であっても私や同類の初心者にとっては、その情報に価値はないっ!という強い信念の元(笑)、素人がより分かりやすく理解できて、とにかく実践的にアドオンのUIを作ってその中に実際の動作内容を記述して、あとは「自分が便利に使えればそれでいい」「エラー処理などいらん!」という自分的実用主義100%を目指して、とにかく自分のための便利なアドオンを使いたい!作りたい!!というところを目指していくのがこのマガジンです。

なので、正確性よりも

1. まずは理解できること、
2. コードを読んでその動作のイメージを掴むこと、
3. エラー処理なしでいいから「自分のためにエラーなしで動作すること」

この3点を実現するためだけのマガジンです。

似たような説明になる部分はリンク先に頼る(笑)

似たような説明になる部分については、容赦なく外部リンクでご紹介し、車輪の再説明は省きます。無駄ですから。リファレンスについても、分かりやすいものが外部に既にあるならば、そのリンクを貼ります。それをみても分からない部分について、言葉や図で説明する予定。

ただしくどいですが正確な説明ではなくて、あくまでも「私が解釈した説明や図」になることはご了承下さい。私は素人です。

CC0のソースコード「も」使う予定

後半戦では、予定ではCC0で公開されているソースコードを元に説明します。そのソースコードは他の人がその人なりの解説をしているので、同じものを別の切り口で説明したほうが、より分かりやすくなるはずですから。(ソースコードについての詳細は有料マガジン内の記事で解説する予定。)

「もっといいやり方」よりも「まずは1つのやり方」を

もちろんプロからすれば「ぷっ、もっと楽でいい方法があるのにね ♪ 」という部分もあるだろう。私が素人でゼロスタートだからそういうこともたくさんあると思う。でも、1つの「何かの実現」について10も20も手法があって、その中のベストオブベストを探る時間があったら、とりあえず達成できる1つの手法でOKとして、他の「何かの実現」について模索していきたいのだ。

ベストオブベストのやり方だろうが、泥臭い1つのやり方だろうが、それでその「1つの何か」がエラーなく動作して目的を達成できるならば、それでいいのだ。

なぜならば、自分が使えるツールになりさえすればそれでいいから。インプットに対して、望むアウトプットが得られるならば、ソースコードの些末などどうでもいいのだ。エラーがなくて、望んだ結果になっていれば、ぐちゃぐちゃだろうが1行コードだろうが、何でもいい。当マガジンではそういう美学は捨てる。

望む結果が得られたら、前に進む。その過程で、「あ、あのやり方よりももっといい方法が見つかった!」と思ったら、その記事を更新するだけだ。

だがそういう未来が待っているかどうかは、誰も知らない。

だから「こだわらない」。1つ実現する手法が手に入ったらそれで十分。ベストオブベストを模索するよりも別の新たな何かを実現するための1つの手法のほうが尊い。

なぜならば、今はまだ何もできることがないからだ。できることを増やすほうが先。効率は後回し。エラーがなくて正常動作すれば1つのハードルを越えたことにしていい。

何はともあれPythonの基礎本とオブジェクト指向の理解は必要

とはいえ、Pythonの構文のルールや、オブジェクト指向の基本的な概念は各自で学習して欲しい。そこからスタートするつもりはない。以下のようにAmazonプライム会員なら無料で読めるKindle本もある。探してみて欲しい。

他にもKindle アンリミテッドで読み放題なPython本もたくさんある。

ここをどれくらい固めるかは各自の他のプログラミング言語の経験の有無で変わってくる。プログラミング初心者ならば、まずはPythonの基礎本にさく時間が増えるだろうが、しょうがない。

でもあまりPython自体に深入りしても無駄なので、サッと通読するくらいでもいいかも。

「要するに何なの?」を先に解説

ここにこだわる。なぜならば、ソースコードの既存の解説では、長々と前置きやリファレンスの解説が続いて、息切れした頃に本題に入るのでかなり雑な説明であることが多い。場合によっては肝心なところがなかったりもする。

そこじゃないんだよ、知りたいのは!

というわけで当マガジンの説明では、「知りたいところから攻めていく」スタイル。そこを手厚くし、どうでもいいところや、「よく知らないならこんな風にしておけば問題ない」という所は「そんなもんだルール」として深入りしない。

「そんなもんだルール」

Pythonのみのプログラムならまだしも、Blender APIを使う以上、最終的には「Blender APIでそれを制御するためには、ルール的にそういう風に書けば問題ない」というルールがたくさん出てくる。

このルールのことを「そんなもんだルール」と呼ぶことにする。で、既存の解説が分かりにくいのは、この「そんなもんだルール」の中身までいちいちリファレンス的に紹介しているものだから、本質が見えにくい。

例えば、リンゴについて幼稚園児に解説するときに、リンゴの種類や歴史、生物学上の歴史を語ったとしても、幼稚園児は理解しないだろう。

必要なのは「リンゴは果物。赤くて丸い、甘い。」これだけなのだ!補足事項で、「赤くなる前は緑だが、緑のままでも甘いリンゴもある」。これだけでいいのだ。これを最初に言っちゃうと、混乱する。

「リンゴは果物だが甘くない時期もあり、赤くなると甘いが、その前は緑で甘くないものの、種類によっては緑でも甘いものもある。」大混乱。

欲しい情報はそれじゃないんだ。「リンゴは果物。赤くて丸い、甘い。」これだけなのだ!これがベースだ、と理解できて初めて、補足事項や例外の意味が分かるのだ。

並列で説明されると何が何だか分かりません。

なので当マガジンでは、不正確でも大雑把に現象を把握し、それに基づいてコードを理解し、それに基づいてコーディングした結果、Blenderがエラーなく動いてくれればそれでよしとする。正確な理解じゃなくても、結果として、想定通りの動作となっているコードであれば、結果オーライとする。

【まとめ】自分が使うための道具になれば何でもいい

結果オーライで、想定した内容になるように自力でコーディングできれば、多少不正確な理解でも構わない。とにかく自分で使える道具を作ることを最終目的とする。

決して正確な情報源としてこれを作っているわけではない。なので、間違いな記述もあることだろう。その指摘は歓迎するが、その指摘について私が理解できなければ、修正しようがない、というか修正するつもりがない(笑)

何を目的にしているのかをしっかりと固めた上で、この記事を執筆するつもりです。ですので読者の皆様におかれましても、何を大切にした上で当マガジンを読もうとしているのか、きちんと決めた上で、当マガジンを上手くご利用下さい。

今回の創作活動は約1時間30分(累積 約2,476時間)
(646回目のnote更新)

目次