IronPythonを使ってUnity上でPythonのコードを実行する

ここ最近、Pythonインターフェイスを用意しているライブラリが非常に多くて、使ってみると確かに、C++でガリガリと低レベルのコードを書くよりもコーディング量が少なくて扱いが楽なのである。最近じわじわと日常に浸透しているSoftBankのロボットPepper君もPythonで制御できるらしいし。

ということで、この利便性をUnityで活かせないかと前々から調べていたのです。そこで見つけたのがIronPythonという、.NET FrameworkやMono上で動作するPython実装。UnityのC# ScriptはMonoで動いているので、こいつは行けるんじゃないかと思って1年以上前から勉強を始めてたんだけど、日本語の情報が少なくて苦労してた。

で、最近になって、UnityでIronPythonを使う日本語記事をまとめている方を見つけたのです↓
http://tkitao.hatenablog.com/entry/2015/05/18/225902
http://tkitao.hatenablog.com/entry/2015/05/31/210054
http://hikipuro.hatenadiary.jp/entry/2015/08/02/073220

どうやらCLRでPython側からUnityの関数も呼べるみたいね。C#とPythonで相互にやり取りできると色んなモジュールと連携できて便利だな。Pythonモジュールの依存関係とかどうなるかわからんけど。



http://baba-s.hatenablog.com/entry/2017/10/25/100000
http://baba-s.hatenablog.com/entry/2017/11/06/080000
https://github.com/exodrifter/unity-python

以前にUnityでIronPythonを扱う方法を調べた時は、Mayaのインストールフォルダに入っているPythonのインタプリタを流用するっていう変なTipsにたどり着いたのだった。つまりMaya持ってないと試せない、随分と高い投資が必要という↓
http://techartsurvival.blogspot.jp/2013/12/embedding-ironpython-in-unity-tech-art.html
http://techartsurvival.blogspot.jp/2013/12/techartists-doin-it-for-themselves.html

ここ最近、強く感じるんだけど、ハードウェア開発に限らず、ソフトウェア開発のアウトプットも結局のところ、どれだけ多くの種類の部品(つまりライブラリやモジュール)を知っているか、それらをどうやって組み合わせるか、という知識量で大体決まってきてしまう。アプリケーション開発で低レベル層のアルゴリズムから、上位層のUIまで全部自前で作るなんてことはまずありえない。

ソフトウェア開発においても、部品の選定スキルがものを言う。ガチでアルゴリズムを考えている研究者から見れば、「ただAPIを叩くだけの簡単なお仕事」に見えるかもしれないけど、ソフトウェアエンジニアはそのアウトプットとなる製品で評価される。質の良い部品を揃え、それらを効果的に結合させる設計スキルで勝負している。なんてね。

2021年 追記:今ならIronPythonじゃなくてPython.NETを検討するし↓



UnityEditor上での操作だけで良いならPython for Unityを考える↓
Python for Unity:UnityEditorでPythonを使えるパッケージ
まだプレビュー版ではあるけど、映像業向けにUnityにPythonのScript環境を提供するパッケージPython for Unity。Python for UnityPython for Unityは、様々なメディア、エンタメ業界のアプ...

関連記事

.NETで使えるTensorFlowライクなニューラルネットワークライブラリ『NeuralNetwo...

UnityのTransformクラスについて調べてみた

Twitter APIのPythonラッパー『python-twitter』

Amazon Web ServicesでWordPress

PyDataTokyo主催のDeep Learning勉強会

MB-Lab:Blenderの人体モデリングアドオン

BlenderでPhotogrammetryできるアドオン

Google App Engine上のWordPressでAmazonJSを利用する

UnityのGameObjectの向きをScriptで制御する

Javaで作られたオープンソースの3DCGレンダラ『Sunflow』

Managing Software Requirements: A Unified Approach

OpenCV 3.1とopencv_contribモジュールをVisual Studio 2015で...

Math Inspector:科学計算向けビジュアルプログラミングツール

オープンソースハードウェア Arduino (アルドゥイーノ)

映像ビジネスの未来

書籍『3次元コンピュータビジョン計算ハンドブック』を購入

3Dグラフィックスの入門書

Kinect for Windows V2のプレオーダー開始

Blender 2.8がついに正式リリース!

OpenCV 3.1から追加されたSfMモジュール

3分の動画でプログラミングを学習できるサイト『ドットインストール』

Amazon EC2ログイン用の秘密鍵を無くした場合の対処方法

書籍『ゼロから作るDeep Learning』で自分なりに学ぶ

WordPressのサーバ引っ越し方法を考える

WebGL開発に関する情報が充実してきている

サンプルコードにも間違いはある?

iPhoneアプリ開発 Xcode 5のお作法

openMVGをWindows10 Visual Studio 2015環境でビルドする

Deep Fluids:流体シミュレーションをディープラーニングで近似する

Google Colaboratoryで遊ぶ準備

Google App Engine上のWordPressでFlickrの画像を貼る

GAN (Generative Adversarial Networks):敵対的生成ネットワーク

Iridescence:プロトタイピング向け軽量3D可視化ライブラリ

タマムシっぽい質感

C++の抽象クラス

TorchStudio:PyTorchのための統合開発環境とエコシステム

UnityのMonoBehaviourクラスをシングルトン化する

Multi-View Environment:複数画像から3次元形状を再構築するライブラリ

TensorSpace.js:ニューラルネットワークの構造を可視化するフレームワーク

Arduinoで人感センサーを使う

Pylearn2:ディープラーニングに対応したPythonの機械学習ライブラリ

OpenCVの顔検出過程を可視化した動画

コメント