BlenderへのAnaconda環境の導入

  • 3
    Like
  • 0
    Comment

この記事はBlender Advent Calender 2016 12/24 分の記事です。

 うっかりイブの日を担当してしまいましたが、めげずに頑張ります。マニアックな内容になりますが、間違いなどのご指摘は遠慮なくどうぞ。

◎概略

 まずは下のツイートをご覧ください。

 要するに、Anacondaの仮想環境をBlenderに入れただけなのですが、この記事ではもう少し詳しく説明したいと思います。想定している主な読者は、PythonでNumPyとかを使ったことがあり、Blenderで色んなパッケージを使いたいと思っている人です。

◎Anacondaとは何か

 Blenderのプログラムの多くはPythonという言語で書かれており、アドオンを自作する場合などにも利用します。このPythonの良い所としては、便利なライブラリが豊富にあることが挙げられます。しかし、公式のPythonにデフォルトで入っていないライブラリを使う場合、後から導入するのは割と面倒な作業です。でもAnacondaを使えば、公式にない科学技術計算系のライブラリも最初から取り入れることができます。
 導入方法は簡単で、WindowsやMac向けにインストーラが用意されています。しかも、Anacondaには各パッケージを管理するためのcondaというツールがあり、これはpipとも共存できるという優れものです。そのため現在では、高度なことをすると分かっている場合には、公式のpythonよりもAnacondaを導入する方が便利なように思います。Pythonのバージョンは3.x系を使いましょう。また、インストール先はCドライブ直下などにしましょう。ただ、全体のデータサイズがかなりでかいので、要領がいい人にはMinicondaの方をおススメします。

<参考>
Anaconda で Python 環境をインストールする
AnacondaでPythonの分析環境をまとめてインストール
Windows でpython環境を作る (Minicondaを利用する場合)

 Anacondaをインストールしたら、コマンドライン(Windowsでは検索窓に「cmd」と打つと出ます)で確認してみましょう。コマンドラインに「conda list」と打つと、インストールされたパッケージ群が出てきます。項目としては100以上は出てくるはずですが、それらが全て入ったことになります。
 なお、「conda update --all」と打つと全パッケージを更新し、「conda clean --all」と打つと不要なファイルを削除してくれます。condaパッケージを使う大きな利点だと思います。

◎Blenderへの導入

 Blender内にもPythonが入っていますが、ライブラリは大したものは入っていません。Blender\バージョン番号\の中にpythonフォルダがありますが、ここにPython本体があります。この中身をAnacondaで作った仮想環境に置き換えてみます。
 まず、コマンドラインで「conda create -n python python=3.5 anaconda」を実行し、Anaconda3\envs\内にpythonという名前の仮想環境を作ります。また、Blender内の「python」フォルダを、「_python」などと書き換えておきます。そして、先ほど作ったAnaconda3\envs\pythonフォルダを、Blenderのpythonフォルダとして移動すれば準備完了です。
 Blenderを起動し、import bpy、import pandas、import numpy、import scipy、import sklearnなどとして機能するか確認してください。利用可能なモジュール一覧を取得するおススメの方法は、Pythonコンソールで以下の3行を実行することです。これで、2番目のツイートの画像のように、モジュール一覧が表示されます。

import pkgutil
for m in pkgutil.iter_modules():
    print (m)

<参考>
Using Anaconda Python 3 in Blender Winx64
利用可能なモジュール一覧を取得する

◎使い道はあるのか?

 元々のBlenderにはpipやSciPyなどが入っていないので、プログラミングをする上では便利だと思います。特にNumPyなどで数値処理をする場合、MKL (Intel Math Kernel Library)が入っていることは、計算速度の点でかなり重要だと思います。Blenderでゴリゴリとプログラミングをしたことは実は無いのですが、何かデータを読み込んで可視化に使えたら便利そうとかはすぐに想像がつきます(ロボット系の研究でBlenderを使ってたとか聞いたこともあるので)。
 ただし、3番目のツイートを見ていただくと分かるように、画像などをポップアップで表示させたりすると、Blenderがフリーズするという症状に見舞われました(多分、tkinterを使うような操作がダメ)。ご利用の際にはくれぐれもご注意を。