Unity再入門して「AI x アート」やってみたい

f:id:karaage:20210427125431p:plain:w640

今更ながらUnityに興味しんしん丸

 ずっと興味あって、少し手を出してはいたものの、全然がっつり取り組めていなかったUnity。最近、Unity使えば、AIもVRもシミュレーションもマルチプラットフォーム対応もできるということで、今更ながら熱が高まってきました。

 GWに取り組むべく、個人的に気になるUnity関係の情報をまとめてみたいと思います。

 目的としては、AIと組み合わせた映像・音楽表現的なことをしたいなと考えいます。なので、普通にゲームとか作りたい人にはあんまり参考にならない情報かもしれないので、その点はご了承ください。

学習サイト・書籍

 Unityの学習サイトですが、試行錯誤して感じましたが、公式が分かりやすい情報を発信していますね。しかも充実しています。

 UnityステーションというYouTube動画は、Unityの活用法をたくさん紹介しているので、見てるだけで結構面白いです。Unityで何ができるんだろ?という人や、Unityで結局何をしていいか or 何ができるのか分からなかった人は、このあたりからみると良さそうです。

Unityステーション - YouTube

 以下は、公式の学習サイトです。これらもUnityステーションで知りました。Unity Learn Premiumは新型コロナの状況もあり、無料公開しているようです。太っ腹ですね。

Unity Learning Materials

最新の 3D & VR 開発トレーニングを提供 | E ラーニング | Unity Learn Premium

 書籍は、Unityの教科書を買いました。1冊くらいは本があっても良いかと思います。評判の良いUnityの教科書を持っています。私は積んでいた2018年版を使っていますが、基本的には最新版を使うのが良いと思います。

Unityの教科書 Unity 2020完全対応版 (2D&3Dスマートフォンゲーム入門講座)

Unityの教科書 Unity 2020完全対応版 (2D&3Dスマートフォンゲーム入門講座)

  • 作者:北村愛実
  • 発売日: 2020/08/29
  • メディア: 単行本(ソフトカバー)

Unity x AI

 UnityにはBarracudaという仕組みがあり、Unity上でAIモデル(ONNX形式)を使うことができます。

 こちらに関しては、 Keijiro Takahashiさんが、様々なプロジェクトをGitHubで公開されています。なお、Keijiroさんに関しては、こちらの記事を参照ください

 詳細は、以下動画でKeijiroさんが直々に解説してくださっています。

 手っ取り早く楽しみたい方は、以下のリポジトリなどを動かしてみると良いかと思います。

 使い方は、GitHubでリポジトリ毎ダウンロード(clone)した後、Unity Hubを起動して「リストに追加」でダウンロードしたフォルダを選択してUnityを起動して実行するだけです。Unityのバージョンは2019.4.21f1で確認しました。

 強化学習とかも面白そうですね。UnityではML-Agentsで強化学習環境も構築できます。こちらに関しては、Zennに記事をまとめていますので、以下記事参照ください。

 他、強化学習だとML-Agentsではありませんが高橋 かずひとさんさんが、Unityでリバーシを作られています。

 Unityで作ると、マルチプラットフォームなのが良いですね。以下リンク先では、なんとWeb上でもこのAIとのリバーシが楽しめます。

 コードなどは、以下リポジトリにあります。

GitHub - Kazuhito00/Unity-Barracuda-Reversi-WebGL-Sample: Unity Barracudaを用いてリバーシAI(簡易なMLP)をWebGL上で推論するサンプルです。リバーシ用のモデルは教師有り学習で作成したものを使用しています。

 他にちょっと変わった使い方として、AIの教師データを自動生成したりもできそうです。UnityではそのためにPerceptionというパッケージが提供されています。こちらに関しては、使い方以下記事参照ください。

映像表現・音楽表現

 Unityのアート的な使用も面白そうです。PythonとMIDIコントローラでVJ x DJ的な遊びをしているのですが、Unityだとより高いクオリティの表現ができそうです(自由度が高い分、難易度も高そうですが…)

 UnityでのMIDIの使い方に関しては、AIのときと同様 Keijiroさんが以下動画で解説してくださっています。

 冒頭で、以前私がProcessingで作った花火の映像表現と同様のことを、高いクオリティでUnityで実現していて、いきなり完敗しました(笑)

 BoltとかKeijiroさんが作ったMIDIのプラグインを使うと、Unityで色々な映像・音楽表現ができそうです。以下は関連するリポジトリです。

GitHub - RealityStop/Bolt.Addons.Community: A community-driven project for extending Unity Bolt

GitHub - keijiro/MinisVS: MIDI input add-on for Bolt visual scripting

GitHub - keijiro/Minis: Minis: MIDI Input for New Input System -- A plugin that adds MIDI input support to Unity's new Input System

Bolt | ビジュアルスクリプティング | Unity Asset Store

 Depthセンサーを使った表現とかも面白そうですね。以下でRealsenseというDepthセンサをUnityで使う方法に関してまとめてみました。

 こちらもKeijiroさんが、エフェクトなど公開しているのですが、私はうまく動かすことができませんでした…

 以下記事とかみると、普通にOpenCVも使えるようなので、映像表現は自分で工夫して色々できそうですね。

その他色々使えるUnity

 プレゼンとか、ロボットのシミュレーションとか、色々可能性は広がりそうです。

ゲームも作れます

 Unityですが、なんとゲームも作れます。というか、もともとそのためのものですね(笑)

 今更感はありますが、Unityでササッとクソゲーとかもつくりたーなとか妄想しています。

まとめ

 今更Unityが気になってきたので、興味深い応用例や情報元のサイトをとりとめもなく列挙してみました。

 なかなかお出かけも難しいGWなので、時間のある限りUnityで遊んでみたいと思います。興味がある人は、是非参考にしてみてください。またオススメのサイトなどありましたら是非教えてください。

関連記事