e.blog

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

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

概要 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をちょっとずつ触り始めています。 その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』の中で、メインの演出となったパーティクルシステムについて書きたいと思います。 このパーティクルシステムの特徴は、指定したモデルグループの頂点位置にパーティクルをまとわせ…

逆引きUniRx - 使用例から見る使い方

概要 UniRx。最近よく目にする気がしますが基本的な概念は『Reactive Extensions』です。 似た用語として『関数型リアクティブプログラミング:Functional Reactive Programming(FRP)』がありますが概念としては違うようです。 ざっくりとRx系ライブラリを…

Generalized Perspective ProjectionをUnityで実装する

はじめに 元記事は、以前自分が英語で書いたものの日本語訳版になります。(自分で書いた英語を翻訳するという初体験w) medium.com 概要 今回のこの記事は、Generalized Perspective ProjectionをUnityで実装するための解説記事です。 これが意味するのは…

Unityで流体シミュレーション ~粒子法編~

はじめに 以前に、格子法を用いた2次元の流体シミュレーションについて概念編と実装編に分けて2つの記事を書きました。 しかし格子法は、その定義領域の範囲を越えてしまうと計算ができなくなってしまうという問題があります。特に今回は3Dに拡張し、AR/VR内…

ドメインワープをテクスチャフェッチで実装する

概要 以前、フラクタルブラウン運動とドメインワープという記事を書きました。 ここで紹介した方法は、ドメインワープの計算のためにランタイムでノイズを計算する方法でした。 ちなみにドメインワープによるアニメーションはこんな感じのものになります↓ が…

Unityで流体シミュレーションを実装する 〜 実装編 〜

概要 前回は流体シミュレーションの概念編を書きました。 edom18.hateblo.jp 今回は前回説明した内容を元に実際に実装したプログラムに関して解説していきたいと思います。 ちなみに実行したデモ動画はこちら↓ 前のやつ、ちょっと計算間違っていてちゃんと動…

Unityで流体シミュレーションを実装する 〜 概念編 〜

はじめに 今回の実装をするにあたってナビエ・ストークス方程式を解いて実装していく必要があるのですが、正直、数学・物理としての正確な意味の理解や方程式のしっかりとした理解には至ってません。 式の内容やどういうことを行っているのかというのは理解…

シャボン玉風シェーダを実装してみたのでメモ

概要 今回の実装はこちらの論文(汎用的な構造色レンダリング手法の開発)を参考に実装したものになります。 ただ理解が足りていない部分や勘違いなどあるかもしれないので、もし間違いなどあれば指摘いただけると嬉しいです。 また今回の実装にあたってこち…

Unityで簡易TexturePackerを実装してみた

はじめに 概要 実装のフロー コード全容 シェーダによる書き込みと読み込み シェーダによる書き込み シェーダによる読み込み 最後に はじめに こちらの記事を参考にUnityで簡易的なTexturePackerを実装してみたのでそのまとめです。 blackpawn.com ちなみに…

World SpaceのCanvasにWorld SpaceからRaycastする

概要 ARやVRなどの開発を行っているとGUIも3D空間に配置する必要があります。 しかしUnityのuGUIは2Dで扱うことを想定しており、通常のGraphicRaycastはスクリーンスペースの位置から判定を行うものになっています。 つまり、3D空間に置かれた(World Space…

Compute ShaderとGraphics.DrawMeshInstancedIndirectを使ったレンダリングを理解する

概要 ComputeShaderを準備する コード システム全体で利用する構造体を定義する C#コード側でデータを準備し計算を実行する コンピュートシェーダで利用するものと同じレイアウトの構造体を定義する 各データ用変数を定義 データのセットアップ Indirect(間…

Unityで簡易的なドローイングツールを作ってみたので実装についてまとめ

概要 Unityで簡易的なドローイング機能がプロジェクトで必要になったので作ってみたもののまとめです。 実装はシェーダを利用して描いていて、ブラシと色とサイズを変更できるようになっています。 実際の動きはこんな感じ↓ Unityで簡易的なドローイング機能…

Unityが起動しなくなってあれこれしたことを殴り書きしておく

概要 ある日突然、Unityが死んだ。 シーン読み込み時にフリーズして再起動したら、Unity自体が起動しなくなるという自体に遭遇。 結果的に4時間溶かしてなんとか解決した・・・。 ただ、正直謎が多すぎてこれで直るか分からないのだけど、同じ悩みを持ってい…

ネイティブテクスチャ経由で画面キャプチャ(RenderTexture)を保存する

概要 フロー RenderTextureを用意 CommandBufferを用意する ReadPixelsでピクセル情報を読み出す(※ 必要ありませんでした) RenderTextureのGetNativeTexturePtrを使ってネイティブテクスチャのポインタを取得 ネイティブプラグインへテクスチャのポインタ…

Unity AR FoundationでPeople Occlusionをやってみる

この記事はUnityゆるふわサマーアドベントカレンダー 2019 #ゆるふわアドカレの8/11の記事です。 概要 UnityのPackage Managerで提供されているAR Foundation。最近はARKit3のサポートが入ってだいぶ熱くなってきてますね。 ということで、今回はAR Foundati…

ARで影を描画する(影だけをレンダリングするシェーダ)

概要 ARコンテンツを作っているとキャラやオブジェクトの影をつけたくなります。 ただ、通常地面はARKitの機能で認識した平面に対して透明(か半透明)のメッシュを配置して表現します。 そしてUnityの標準のシェーダでは透明なオブジェクトには影が落ちませ…