e.blog

主にUnity/UE周りのことについてまとめていきます

llama.cppをUnityで扱う

Unityに組み込む準備 iOS / macOS向けにビルドする llama.cppをラップするSwiftパッケージを作成する まずはビルドしてみる ラッパーを実装する llama.cppの実装を呼び出す機能の実装 ラッパークラスを実装 コールバックを使ってC#側で結果を受け取る インス…

SwiftパッケージをビルドしてUnityで扱う

自作パッケージを作る パッケージ用に初期化する パッケージをビルドする macOS向けにビルドする iOS向けにビルドする iOS向けライブラリはEmbed設定をする Swift側の実装を利用する Swiftのクラスを利用する ポインタを利用する C#から呼び出す Swift側の文…

QuestのパススルーとVR Room機能を利用してMixed Realityを実現する

概要 Questのパススルーの機能が拡充され、MRアプリとして色々と利用できるようになっているので、その機能を利用するためのメモを書いていきます。具体的には、以下の動画のように、自分で設定したオブジェクト(机や椅子、本棚など)を制御して「自分の部…

XR Plug-in ManagementによるXR機能(サブシステム)の仕組みを追う

概要 普段の開発でクロスプラットフォームの対応をよくしている関係で、XR Plug-in Managementの仕組みに興味を持って調べてみました。今回はXR機能(以後、サブシステム)の仕組みについてまとめていきたいと思います。 ちなみに以下の画面で設定するプロバ…

V8 エンジンを Unity Android アプリ上で動かす(V8 ビルド編)

概要 Google Chrome や Node.js で使われている JavaScript エンジンである V8 エンジンを、Unity のアプリ上で動かすためのあれこれをまとめていきたいと思います。長くなってしまうのでビルド編と使用編に分けて書きます。今回はビルド編です。V8 をどうや…

C# Job System + Burst compilerを使ってPNG画像の展開を最適化してみる

概要 前回の記事、前々回の記事でPNG画像について書きました。 前回の記事で、最適化について書けたら書きますと書いていたのですが、C# Job SystemとBurst compilerを利用して最適化してみたのでそれをメモがてら書いておきたいと思います。 ちなみに、Unit…

PNGデータを自前で展開してテクスチャ化する

概要 前回の記事でPNGデータの構造とテキストチャンクにデータを書き込むことを書きました。 今回はさらに話を進めて、自前でPNGデータを展開しテクスチャ化するまでを書いてみようと思います。またさらに、速度を上げるためにポインタを直に使っています。…

PNGのText ChunkにC#でデータを書き込む

概要 PNG画像自体に情報を埋め込めたら便利かなーと思ってPNGのテキスト領域について調べたのでそのメモです。 テクスチャを EncodeToPNG() でPNGデータ化したあとに、テキスト領域を追加してファイルに書き出し、それを読み込んでパースして表示、というと…

NDI SDKをUnity向けにPlugin化し映像を配信する

概要 以前、UnityでNDI SDKを利用して映像を受信するプラグインを作る記事を書きました。 今回はこれを拡張して映像配信部分の実装について書きたいと思います。具体的には、配信映像の準備とそのエンコード、およびDLLの利用法についてまとめます。 なお、…

LiDARセンサーのデータを使ってUnityで点群を描画する

概要 今回はiPadやiPhoneに搭載されているLiDARセンサーから得られる深度情報を使って、立体的に点群位置を計算する方法について書いていきます。 具体的な動作は以下の動画をご覧ください。画面中央に表示されているのが、センサーから得られた情報を元に点…

UnityでGraphQL.Clientを使ってAWS AppSyncを利用する

この記事はUnity Advent Calendar 2021の11日目の記事です。 概要 今回はNuGetからインストールできるGraphQL.Clientを利用して、AWSのAppSyncを利用する手順を書いていこうと思います。 特にSubscriptionを行うには手順が必要でこれを知るのにかなり苦戦し…

Unity Androidのネイティブプラグイン(C++)でOpenGLのテクスチャデータをNativeArrayにコピーする

概要 以前、iOSのネイティブプラグイン側でテクスチャを保存するという記事を書きました。 edom18.hateblo.jp 今回はこれと似た、Androidのネイティブプラグインを作成してテクスチャをコピーする方法について書きたいと思います。 今回の実装にあたり、こち…

OpenCV for Unityで画像変換する備忘録

概要 プロジェクトでポストイットを判別したいという話があり、それを実現するためにOpenCVに手を出してみました。使う上での備忘録をメモしていきます。 なお、今回紹介する内容はおもちゃラボさんの以下の記事を、OpenCV for Unityに置き換えて実装しなお…

Oculus Questのビデオパススルーを試す

概要 Oculus QuestでビデオパススルーAPIが公開され、開発者でも利用できるようになったので試してみました。いくつか設定で(2021/08/13時点では)いくつかハマりポイントがあるのでメモしておこうと思います。これらについては@gtk2kさんと@korinVRさんの…

Unity向けのNDI SDKのPlugin化を通してC++実装の扱い方の勘所を押さえる

NDI SDKのDLLをUnityで扱えるようにする過程を通して、C++ライブラリの使い方を解説していきます。

シーンビューライクなカメラ操作をするスクリプト

概要 XRの開発中、デバッグ目的でGameビューの視点をシーンビューのカメラと同じように操作したいなと思って簡単にスクリプトを書きました。というメモ。 動作はこんな感じ。 Unityのシーンビューのカメラライクな移動スクリプト。 #Unity pic.twitter.com/R…

UnityでWebSocketを使ってブラウザと通信する

概要 WebブラウザからUnityへ(そしてビルドしたアプリにも)データを送信したいことがあったのでWebSocketをUnityで利用する方法およびWebブラウザからデータを送信する方法を試してみたのでそのメモです。 Unity側のWebSocketの利用は以下のライブラリを利…

UnityでWebAssemblyを扱う

概要 今回はUnityと、ビルドしたアプリからWebAssemblyを利用する手順についてまとめたいと思います。 もともと、ビルド後のアプリに対してコードを追加することができないかなと思っていたところ、たるこすさんの以下の記事を見かけたのがきっかけです。 た…

UnityでAWSのS3を扱うためのメモ

目次 概要 実現すること テスト環境 フロー AWS SDK for .NETをダウンロード・インポートする 必要なDLLをPluginsフォルダにコピー 依存しているDLLもコピー(依存関係の解決) Identity Pool IDを取得する バケットの作成 IAMの設定 C#で実装する Credentia…

Unity VFX Graphでposition mapを使って導蟲風パーティクルを作る

概要 Meshの頂点をテクスチャにベイクする テクスチャの内容 Texture2Dに保存したPosition Mapをサンプリングする ターゲット位置に徐々に近づける ランタイムにデータをVFX Graphに送る まとめ 概要 今回はVFX Graphを使ってパーティクルをMeshにまとわりつ…

VFX GraphのConform to Signed Distance Fieldのコードを読んでみる

概要 そのVFX Graphの中にConform to Signed Distance FieldというBlockがあります。 SDFを活用することで表現力が向上するので、今回はそのコードを読んでSigned Distance Field、SDFがどういうふうに使われているのかを見ていきたいと思います。 実際に実…

SRP Batcherが有効なURP向けのシェーダを書く

この記事はUnityアドベントカレンダー2020の5日目の記事です。 qiita.com 概要 SRP Batcherを有効にする マクロと関数を覗いてみる ZERO_INITIALIZE CBUFFER_START / CBUFFER_END TransformObjectToHClip まとめ 概要 以前、URPのScriptableRenderFeatureを…

【XR】URP向けのマルチビュー対応イメージエフェクトシェーダの書き方

概要 前回書いた「URPで背景をぼかしてuGUIの背景にする」で書いたことの続編です。 edom18.hateblo.jp 具体的には、前回の実装のままでVRのマルチビュー(やSingle Pass Instanced)に変更すると正常に描画されないという問題があったのでそれへの対応方法…

URPで背景をぼかしてuGUIの背景にする

概要 今までのビルトインパイプラインで利用していたCommandBufferはSRP環境では少し違った方法で実装しないとならないようです。 今回はSRPでのカスタムパスの使い方と、それを利用してuGUIの背景にブラーを掛けるエフェクトについて書きたいと思います。 …

バイトニックソートの実装を理解する

概要 以前書いた粒子法を用いた流体シミュレーションをさらに発展させ近傍探索を行って最適化をしています。 その中で使っている『バイトニックソート』というソートについてまとめたいと思います。 本記事は近傍探索を実装する上でのサポート的な記事です。…

XRCameraSubSystemから直接カメラの映像を取得する

概要 今回はUnityのARFoundationが扱うシステムからカメラ映像を抜き出す処理についてまとめたいと思います。 これを利用する目的は、カメラの映像をDeep Learningなどに応用してなにかしらの出力を得たいためです。 今回の画像データの取得に関してはドキュ…

TensorFlow Lite Unity Pluginを利用してDeepLabを動かすまで

概要 最近、ARでSemantic Segmentaionを試そうと色々やっているのでそのメモです。 最終的には拾ってきたDeepLabモデルを変換して実際に動かすまでをやってみようと思います。 今回の記事はこちらを参考にさせていただきました。 asus4.hatenablog.com 元々T…

Oculus Questでハンドトラッキングを使ってみる

概要 Oculus Questのハンドトラッキングが利用できるようになったので使ってみたいと思います。 そこで、実際に使用するにあたってセットアップ方法とどういう情報が取れるのか、どう使えるかなどをまとめておきます。 ドキュメントは以下です。 developer.o…

Unityの推論エンジン『Barracuda』を試してみたのでそのメモ

概要 以下の記事を参考に、最近リリースされたUnity製推論エンジンを試してみたのでそのメモです。 qiita.com note.com Barracudaとは? Barracudaとは、ドキュメントにはこう記載されています。 Barracuda is lightweight and cross-platform Neural Net in…

ComputeShaderで動かす様々な形に変化するパーティクルシステム

概要 今回は1/7〜1/10にかけて開催されたCES2020でMESONが展示した『PORTAL』の中で、メインの演出となったパーティクルシステムについて書きたいと思います。 このパーティクルシステムの特徴は、指定したモデルグループの頂点位置にパーティクルをまとわせ…