凹みTips

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

Unity

Unity の XR 向けシングルパスステレオレンダリングについて調べてみた

はじめに Unity での XR Settings に含まれる Stereo Rendering Method ですが、みなさんは理解されていますか?ちなみに私は理解していませんでした。。 なんとなく マルチパス は遅くて シングルパス にすると速い、しかしながらシングルパスにするにはシ…

Unity でクロマキーシェーダを作ってみた

はじめに クロマキーに関してはもう既に色々なアセットがあるとは思うのですが、uWindowCapture で使えるクロマキーシェーダがほしいとの要望を受けたので作ってみました。 デモ 任意の色相・彩度・明度の範囲を抜くことが出来ます。下の例ではピンク色を背…

Unity で円形に曲がるスクリーンをシェーダで作成するアセットを作ってみた

はじめに uDesktopDuplication に用意されているカーブドスクリーンを uWindowCapture でも使いたいとの要望を頂いたので、単体のアセットとして作成してみました。 デモ ダウンロード github.com Release から最新の .unitypackage をダウンロードしてプロ…

Unity の GPU Instancing に対応するシェーダのコードを調べてみた

はじめに GPU Instancing を使うと同一メッシュ・マテリアルを使用したオブジェクトを一度に大量に描画することが出来ます。GPU Instancing そのものについてはテラシュールブログさんや公式ドキュメントをご参照ください。 tsubakit1.hateblo.jp docs.unity…

Unity のソフトパーティクルのシェーダについて調べてみた

はじめに 現在 Forward Rendering における Raymarching を試していて、その際にポリゴンとの交差判定でデプス情報を使う必要があるのですが、デプスを使ったシェーダが Unity ではどういう風に書かれているのか気になり、パッと思いつくソフトパーティクル…

Unity で Windows のウィンドウを個別にキャプチャできるアセットを作成した

はじめに 本エントリでは先ほど公開した uWindowCapture という Windows において個別のウィンドウをキャプチャできるアセットの解説を行います。本アセットで実現できることは以下のようなものです。 ウィンドウを個別にキャプチャ 背面やデスクトップ画面…

Unity で Windows のマルチタッチ操作をエミュレートできる uTouchInjection を作った

はじめに VR 向けのバーチャルデスクトップを作っているとハンドコントローラを使ったポインタによる UI 等で指した場所の操作をしたくなります。こういった場合は kernel32.dll 経由でマウス操作をエミュレーションすることが多いと思いますが、Windows で…

Unity でテクスチャに使う画像をネイティブ側で読み込んでみた(CustomTextureUpdate 編)

はじめに 前回は以下の記事で低レベルネイティブプラグインインターフェースを使ったテクスチャのアップデートについての解説を行いました: tips.hecomi.com しかし前回のプロジェクトでは以下の点で複数プラットフォーム対応が面倒という問題がありました…

Unity でテクスチャに使う画像をネイティブ側で読み込んでみた(低レベルネイティブプラグインインターフェース編)

はじめに Unity で画像をネイティブ側で非同期に読み込みたい、というお話が Twitter で出ていたので、やってみました。 従来の問題点 StreamingAssets ディレクトリやウェブから WWW や UnityWebRequest で持ってきた画像ファイルを使う場合、Unity にデコ…

Unity で Standard Surface Shader の変換後のコードを追ってみた (Forward)

はじめに サーフェスシェーダは Unity が提供してくれているライティングなどの処理を簡略化して書けるシェーダです。予め定義された SurfaceOutput や SurfaceOutputStandard といった構造体に必要な情報を詰め、影を使うかアルファを使うかといったオプシ…

Unity 上で DLL(マネージドプラグイン)をビルドするエディタ拡張を作ってみた

はじめに Unity で以下のようなユースケースでソースコードを DLL(マネージドプラグイン)にビルドしたいことがあるかと思います: C# のソースを隠蔽したい場合*1 取り回しを楽にしたい(DLL をプロジェクトにインクルードするだけで完結させたい)場合 再…

VrGrabber v0.0.3 をリリースしました

はじめに 以前リリースした VR 向けの自作 Grabber のアップデート情報です。 tips.hecomi.com 今回は、Twitter の DM で頂いた要望である「めり込み回避機能」を入れました。 デモ ダウンロード github.com 使い方 avoidIntersection オプションが追加され…

Unity 2018.1 より提供される Scriptable Render Pipeline について調べてみた

はじめに Unity 2018.1b より Scriptable Render Pipeline (SRP) というレンダリングパイプラインをより細かくコントロールできる機能がリリースされました。SRP の登場により、従来の Forward / Deferred に加え、新たに Compute Shader を活用し SSS など…

Unity でボリュームレンダリングをしてみる - vol.2 レイの衝突判定

はじめに 前回、Unity でのボリュームレンダリングの導入を行いました。 tips.hecomi.com 今回はレイの通過判定の改善を行います。 プロジェクト github.com 4 が今回の範囲になります。 環境 Unity 2017.3.0f3 MacBook Pro (15-inch, Late 2016) レイと AAB…

Unity でボリュームレンダリングをしてみる - vol.1 データ表示

はじめに 今回はボリュームレンダリングについて調べてみました。 ボリュームレンダリングは CT スキャンや MRI などで得られたデータや、雲やエフェクトなどの事前に用意またはリアルタイムに計算した 3 次元のデータを 2 次元の画面上に描画するための手法…

Windows における Unity のネイティブプラグイン作成についてまとめてみた

はじめに 本記事は Unity Advent Calendar 2017 21 日目の記事になります。 ここ 1 年はいくつか Windows 向けのネイティブプラグインの作成とメンテを行いました。本エントリでは、Windows に特化して、そういったネイティブプラグインの作り方、およびそこ…

Tokyo HoloLens ミートアップ vol.6 で LT をしてきた

はじめに 2017/12/16 に日本マイクロソフト株式会社さんのオフィスで行われた Tokyo HoloLens ミートアップ vol.6 で「HoloLens x iPad」という題目で LT してきました。内容は以前紹介した内容をスライドにしたものです。 tips.hecomi.com スライド 関連 ww…

uREPL の .NET 4.6 対応を行いました

はじめに issue で Unity 2017 における .NET 4.6 から uREPL が動かないとの報告を受けていたので対応を行いました。.NET 3.5 はエディタ上では動くのですがビルドで正常に動かない不具合が解消できなかったため、サポート外となっています。.NET 3.5 を使…

Unity のシェーダをテンプレートファイルから生成するエディタ拡張をつくってみた

はじめに Unity でシェーダをテンプレートファイルから生成できるアセットを作ったので、作った動機および使い方の紹介をしたいと思います。 以前 uRaymarching というアセットの一部の機能として作成したものを分離したものになります。 tips.hecomi.com ダ…

Unity で画面出力を変形するイメージエフェクトを作ってみた

はじめに Unity で作ったアプリをプロジェクタを使って投影したい際、以前は Syphon を使って MadMapper に送ったりしていましたが、単純に 1 枚の画を対象となる矩形の物体に映したいだけの時が多く、フレームの転送の遅延があったり、複数アプリを立ち上げ…

Unity 向けの OSC 実装を作ってみた

はじめに 世の中に Unity 向けの OSC 実装は既にあるのですが、自分の理解を深めるため(+ お盆で暇だった期間 + αで)OSC の実装をしてみました。 OSC とは OpenSound Control のことで、型やデータ長などの情報を付加したデータの詰め方が定義されていて、…

VR 向けの自作 Grabber を作ってみた

はじめに VR 内でオブジェクトをつかむには OVRGrabber や VRTK などが挙げられると思います。 framesynthesis.jp ただ、両手のインタラクションや遠くのものを取ったり遠くに置いたりといった機能が欲しかったので、自分で作ることにしました。 環境 Unity …

Tango のアプリ開発はじめました

はじめに Mogura VR さん経由で ASUS 社の ZenFone AR のエンジニアリングサンプル品をお借りすることが出来たので色々調べてみました。Tango についての一般的な事柄や ZenFone AR そのものについては Mogura VR さんの方に寄稿いたしましたので、併せてお…

Unity 2017.1 の機能の CustomRenderTexture を使ってみた

はじめに keijiro さんの以下のつぶやきを見て Unity 2017.1 から CustomRenderTexture という新しいテクスチャが導入されたことを知りました。 Real time reaction-diffusion system with CustomRenderTexture (Unity 2017.01) https://t.co/NvZhkNTS1s pic…

HoloLens で UDP 通信を行う方法について調べてみた

はじめに 前回のデモで iPad と HoloLens を OSC で通信しようとした際に通信周りが面倒だったのでまとめておきます。 tips.hecomi.com ちなみに OSC はアドレス付きのデータを扱えるプロトコルで、UDP ベースのものがよく使われます。 OpenSound Control - …

HoloLens 用の Body-Locked な UI を作ってみた

はじめに ホーム画面の UI の用に、ある程度の遊びとディレイを持って視界に追従してくる Body-Locked な UI を実現したい時のために、HoloToolkit-Unity には Tagalong というコンポーネントが用意されているのですが、その挙動が自分のイメージとちょっと…

HoloLens で使える Near Clip 表現について解説してみた

はじめに 先日、Micorosoft さんのオフィスで Tokyo HoloLens ミートアップ vol.2 が行われ、そこで LT 枠で発表をしてきました。発表は「HoloLens x Graphics 入門」ということで、HoloLens に見られる幾つかの基本的な表現の紹介および解説を行いました。…

HoloLens で向こう側が見える窓を動的に追加してみる

はじめに 前回のブログで少しだけ穴あき表現について触れました。 tips.hecomi.com 本エントリでは動的に穴を開ける方法について解説したいと思います。 デモ 環境 Windows 10 Unity 5.5.1f1 ダウンロード github.com おさらい ドキュメント:Case study - L…

HoloLens のアプリ開発はじめました

はじめに 先日、TMCN さんから、なんと HoloLens をお貸し頂きました。 TMCN さんのご厚意で HoloLens をお借りすることができました!ありがとうございます。色々作るぞ〜 pic.twitter.com/sLgy0C2Ohm— 凹 (@hecomi) 2017年2月4日 HoloLens は Microsoft に…

Unity でネイティブプラグインの実行時更新を可能にする PatchLibrary を使ってみた

はじめに 主に Windows での開発の話になります。 Unity でネイティブプラグインの開発していると、一番困るのが DLL の更新です。Unity では DLL を読み込むとエディタを再起動するまで解放してくれないため、エディタ実行中に DLL を置き換えることが出来…