Closed5

SpoutでPython⇔Unity間の通信やってみる

こたこた

今回やること

バックエンドとしてのPythonとフロントエンドとしてのUnityで制作。
PythonでWebCamの映像を撮影し、SpoutでUnityに送信。
Unityで画像加工し、Pythonへ返す。
Python側で返された画像を表示する。

動作環境

  • Windows 11 23H2
  • Python 3.11.1
  • Unity 6000.0.23f1
こたこた

Spoutとは

https://spout.zeal.co

Mac用の Syphon というソフトウェアのWindows版。
GPUメモリを別のアプリケーションと共有することでリアルタイムでの画像共有を実現するもの。
GPUメモリを使って通信するため、同じPCのアプリケーション同士でしか通信できない。

こたこた

Python

ここにPythonのプロジェクトが列挙されている。

https://leadedge.github.io/spout-projects.html#Python

今回はこれを使うことにした。

https://github.com/Off-World-Live/pyspout

Git submoduleが使われているので、recursiveをつけてcloneする。

git clone --recursive git@github.com:off-world-live/pyspout.git

Python3.12で使いたいので自分でビルドする。

https://github.com/Off-World-Live/pyspout#using-a-different-version-of-python-to-310

PySpoutを右クリックして出てくるプロパティから

  • C/C++ > 全般 > 追加のインクルードディレクトリ に {Pythonのパス}\include
  • リンカー > 全般 > 追加のライブラリディレクトリ に {Pythonのパス}\libs

を設定する

今回はuvでインストールしたPythonを使ったので

uv python install 3.12.7

パスはこんな感じ

C:\Users\kota\AppData\Roaming\uv\python\cpython-3.12.7-windows-x86_64-none

あとは ビルド > ソリューションのビルドで成功することを確認する。

成功したらこんな感じにファイル一式が生成される

❯ ls .\pyspout\x64\Debug

    Directory: C:\Users\kota\dev\spout-test-python\pyspout\x64\Debug

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2024/10/24    18:24            756 PySpout.exp
-a---          2024/10/24    17:36           1732 PySpout.lib
-a---          2024/10/24    18:24        5967872 PySpout.pdb
-a---          2024/10/24    18:24         619520 PySpout.pyd
-a---          2024/10/24    17:31         719360 Spout.dll
-a---          2024/10/24    17:31         105455 Spout.exp
-a---          2024/10/24    17:31         173606 Spout.lib
-a---          2024/10/24    17:31        4247552 Spout.pdb

必要なのは Spout.dllPySpout.pyd なので、ソースコードのディレクトリに持ってくる。

このスクラップは29日前にクローズされました