Unity Weekly #012
ニューラルネットで何でもできちゃう!? Unity Barracudaで遊ぼう!
ニューラルネットで何でもできちゃう!? Unity Barracudaで遊ぼう! - Unityステーション - YouTube
- この動画ではUnityのニューラルネットワーク推論ライブラリであるUnity Barracudaについて紹介しています。
- Barracudaはニューラルネットワークのランタイム部分(推論部分)のみを提供するライブラリです。そのためモデル生成は別のライブラリなどで行う必要があります。推論モデルはフォーマットとしてONNX(Open Neural Network Exchange)をサポートしています。
- 動画ではBarracudaについての簡単な説明とサンプルプロジェクトとしてNNCamやFaceMeshBarracudaなどの紹介、最後に手書き文字データセットのMNISTをBarracudaで識別するサンプルについての解説を行っています。
- BarracudaのサポートしているONNXのオペレータはまだ少ないそうです(参考: Supported ONNX operators | Barracuda | 1.0.4)
- 動画で紹介されているレポジトリなどは下記のとおりです。
- keijiro/NNCam: Virtual background with Unity Barracuda
- keijiro/FaceMeshBarracuda: Lightweight facial capture package for Unity
- keijiro/UltraFaceBarracuda: "Ultra-Light-Fast-Generic-Face-Detector-1MB" face detector for Unity Barracuda
- keijiro/Waifu2xBarracuda: Waifu2x Unity Barracuda implementation
- UnityLabs/barracuda-style-transfer: Companion code for the Unity Style Transfer blog post, showcasing realtime style transfer using Barracuda.
- keijiro/BlazeFaceBarracuda: BlazeFace face detection model for Unity Barracuda
- keijiro/TinyYOLOv2Barracuda: Tiny YOLOv2 on Unity Barracuda
- onnx/models: A collection of pre-trained, state-of-the-art models in the ONNX format
- PINTO0309/PINTO_model_zoo: A repository that shares tuning results of trained models generated by TensorFlow / Keras. ...
- axinc-ai/ailia-models: Pretrained models for ailia SDK
- keijiro/MnistBarracuda: MNIST on Unity Barracuda
TypeCacheを使って指定したアトリビュートが付いている型を高速に取得する
【Unity】【エディタ】TypeCacheを使って指定したアトリビュートが付いている型を高速に取得する - LIGHT11
- この記事ではUnityEditorが内部でキャッシュしている型情報を取得できるTypeCache APIについて紹介しています。
- このAPIは「指定したアトリビュートがついているプロパティを取得する」、「指定したアトリビュートがついている型を取得する」などエディタ実装で必要そうなユースケースに特化した機能を提供します。
- TypeCacheは上記の情報をキャッシュされた型情報を元に返却するため、リフレクションによる実装と比べると高速に取得することができます。
Unityで動かすOpenCVサンプル集 20選
Unityで動かすOpenCVサンプル集 20選 - おもちゃラボ
- この記事ではUnityで利用できるOpenCVライブラリOpenCV plus Unityの紹介と、そのライブラリを活用したサンプルを20個紹介しています。
- UnityのTexture2DをOpenCVのMat(OpenCVでは画像を扱う際にMat)の相互変換方法からグレースケールや2値化、ガウシアンブラーなどの基本的な画像変換、Sobelフィルターやハイパスフィルターなどの画像へのフィルターの適用方法、顔検出まで網羅的に紹介されています。
Hashing Space
- この記事はCatlike Codingさんの疑似ランダムノイズシリーズの第2弾です。
- この記事では前回の記事でhashingにより算出したUV整数空間を任意のグリッドや形状に変換して利用できるようにします。(前回の記事についてはUnity Weekly #007で取り上げています。)
- また上記の変換を手動でベクトル化することで、Brust CompilerによりジョブがSIMD命令を実行し、ハッシュ計算を4つ並列で計算するようにしています。
Unity Architecture Pattern: the Main loop
Unity Architecture Pattern: the Main loop – Bronson Zgeb
- この記事ではUnityでメインループパターンを実装する方法と、そのメリットについて述べています。
- 典型的なMonoBehaviourを複数個配置するパターンは、実行順序や初期化順の観点からシーンが複雑になるにつれてシステムの複雑さが増し、可読性の低下やメンテナンスコストの増加を招く傾向にあると説明しています。
- GameManagerなどのシーンに単一のMonoBehaviourを配置し、そこからシーン上のオブジェクトを初期化・更新することで実行順を完全に制御下におくことができ、上記の問題を解決することができると述べています。また、
Update
およびFixedUpdate
も1つになることはパフォーマンス上メリットがあることにも触れられています。
Create a health bar that hovers over the player with UI Toolkit
Create a health bar that hovers over the player with UI Toolkit - GameDev Resources
- この記事ではUI Toolkitを用いて3Dプレイヤー上にUIを配置する方法について紹介しています。
- ワールドスペース内のプレイヤー位置からUI Toolkit上のUIスペースの変換は、RuntimePanelUtilを用いて行うことができます。この記事中ではCameraTransformWorldToPanelというメソッドを用いて、プレイヤー位置からUI位置を計算しています。
Facade
- この記事ではFacadeパターンのUnityへの適用について説明しています。
- インスタンスオブジェクトをstaticで定義してアクセスすると、将来そのインスタンスをサブクラスにしたり、そのインスタンスを別のインスタンスに置き換えることができなくなります。
- Facadeパターンを用いることで、シングルトン化したいクラス自体はstaticで定義する必要がなくなります。これにより、クラスの拡張や置き換えが容易になります。また、
using static
ディレクティブを用いることでより簡素に記述することができます。