オープンソース活動記録 2022

TensorFlow Lite Unity Sample

開発当初はTensorFlow Liteの公式モデルをUnityで動かすサンプル。で開発をはじめましたが、今では、Unity向けに最適化されたTensorFlow Liteのライブラリと C#バインディング、各種DelegateGPUなどを使った高速化オプション)を取り揃えたリポジトリになってきました。UPM(Unity Package Manaer)対応したのも大きいです。

2019年12月から始めて安定期。今年は大きな機能追加はなかったものの、地道な機能追加をしてました。

github.com

MITライセンスなので使ってくれている会社さんを、私に連絡頂いた方のみですが紹介します。

DeNA 配信アプリ IRIAM

10月に開催された Unityイベント内の講演でも使っていることを発表していただきました。TensorFlowの全ライブラリをCircle CIでビルドするという PRもいただきました。ありがたい。 events.unity3d.jp

NEX Team Inc.

www.nex.inc TGSでも話題になったStarriを開発している会社です。最初はGitHubのIssue経由でしたが、直接フリーランスとしての依頼を頂き、私のリポジトリへ優先的に機能追加をしたりしています。ソースコード非公開のプロジェクトでTensorFlow Liteを導入する案件もちらほらあるのですが、Unityのバージョンアップで動かなくなって、私が抜けたあとメンテできなくなったりするので、公開のリポジトリへの依頼はありがたいです。

Augmented Robotics

現実のラジコンをスマートフォンで認識してAR上のものとインタラクションが起こる。という面白いアプリを開発しています。Berlinがオフィスとのことで一度オフィスにもお邪魔しました。 https://augmented-robotics.com/ www.youtube.com

MoveAhead

Dublin City Univからの大学内スタートアップ。子供のためのモーション解析xゲームを作っているチームです。直接連絡をもらい、サポートもしていました。たまにオンラインで質問を聞いたりしています。 moveahead-project.com

他にも個人、企業含めいくつかの方から連絡をもらっています。誰も使わないだろ、と思うようなニッチなやつでも全世界に公開すると、使ってくれる人がいるんだなぁという。

MetaAvfi

keijiroさんがiOS, macOSで動画のレコーディングができるリポジトリを公開していたので、フォークして機能追加。任意のバイナリデータを動画に同期して記録、再生が可能です。普段の案件でUnityで動画レコーディングするのはNatCorderにお世話になっていて、非常のクオリティの高いライブラリではあるのですが、有料サブスクリプションモデルなので、ライブラリとして公開したい場合に気軽に使える動画レコーディング機能がほしいと思っていました。

github.com

これ、Unity 2021 LTS, 2022.1 までは動くのですが、2022.2からUnityのビデオプレーヤーに更新があり、可変fpsの動画が再生できなくなりました。Unity側にバグレポを送り、2023アルファ版では修正されましたが、2022版へもバックポートしてくれと連絡してます。果たして対応してくれるのか。

unity-texture-curve

andydbcさんのリポジトリをフォークして機能追加。 https://github.com/andydbc/unity-texture-curve/raw/master/Screenshots/screen0.gif

Animation CurveをRGBAの最大4チャンネル 、テクスチャにエンコードすることができるライブラリ。シェーダーでアニメーションをさせたいということが多いので、自分で欲しかった機能を足しました。

一つは、UPM対応。もう一つは、ScriptedImporterをつかって、エディタ読み込み時にテクスチャにしてくれる機能です。ランタイム時はただのテクスチャとして扱われます。ScriptedImporterは独自拡張子をUnityに読み込むときに便利な機能なので、積極的に使ってます。

github.com

TextureSource

UnityのWebCamTexture、使うの大変ですよね…。スマートフォンで使うと回転したテクスチャが帰ってくるし、macOSでは最初の数フレーム10 x 10の小さいTextureが来たあと、正しい解像度のTextureになる…。初学者には罠しかありません。普段は上述のNatDeviceを使うのが最適解だと思いますが、いかんせん有料サブスクリプションモデルなので、オープンソースで使いたいときに気軽に使えるやつを作りました。WebCamだけでなく、VirtualTextureというコンポーネント経由で、動画とWebCamをコード変更無しに切り替えられます。主に私がComputer Vision案件をやるために作りました。WebCamTextureは遅延が大きいので、いつかネイティブプラグイン用意したいなーと思ってます。

github.com

ml-slack-bots

Slack上で色々OpenAIや、 OpenAI, Hugging Face, Replicateのモデルを試せるSlackボットです。DALL·E 2や、Imagenが出てきて、まだStable Diffusionが公開される前に、自分でも色々モデル試さなきゃ!!と思って、作りましたが、Stable Diffusionモデルが公開されて、M1 macでもローカルで動くって状況なので、しばらくは使わなそうです。Slackのボットを初めて作りましたが、Slack APIGraceful Retriesという、3000ms以内に一旦レスポンスを返さないと、3回同じリクエストをリトライして送信してくる機能が、画像生成で時間がかかるモデルをAWS LamdaとSlackでやるのが相性悪すぎました。Graceful Retries切るオプション欲しいのは私だけではないはず。

github.com

URP Post Effect

URPでカスタムポストエフェクトを書く際に、RendererFeatureを追加して、ほにゃらら。って面倒くさいですよね。なので気軽にShaderGraphやら、ComputeShaderやらを組み込める機能を作りました。

github.com

Unity 2022 (URP 14以降)では、Full Screen Render Passが追加されて、気軽にできる!と思いきや、これ、Render Settingにマテリアルをアサインするので、一つのエフェクト追加するたびにパスが追加されるし、enable/disableを切り替えるのがめんどくさい。

ので、URP Post Effect的にな手法なほうが手軽で良いなーと個人的には思っています。

GitHub Sponsor

Sponsor @asus4 on GitHub Sponsors · GitHub

GitHub Sponsor、嬉しいことに毎月$100以上を支援して頂いてます。このおかげでGitHub LFSなどの有料機能も帯域が足りなくなったときにも遠慮なく追加出来ています。ありがとうございました。

Zenn Scraps

2022年は公開しても良いときは開発記録をZennのScrapsにだら〜と書きなぐっていました。ブログにまとめなきゃと思いつつ出来てなかったので、ハードル低く、文字に残せるScrapsは個人的にはありがたい機能です。

zenn.dev


以上です。
今年も作ったもので公開して良いのがあれば、積極的に公開していきます。