凹みTips

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

C#

Unity でリアルタイムにリップシンクを行うプラグインを更に作り直してみた

はじめに 前回、リップシンクするプラグインを作り直してみた記事を書きました。 tips.hecomi.com 色々とご反響を頂いたのですが、しかしながら母音推定の性能がいまいちでした。第 1 、第 2 フォルマントという周波数スペクトルの 1 つ目、2 つ目のピークを…

Unity でリアルタイムにリップシンクを行うプラグインを作り直してみた

はじめに Unity でリップシンクを行う手段としては、事前にデータを作るものからリアルタイムに解析するものまで色々あります。本ブログでも以前、自分で作ったり Oculus 製のものを解説したりしました。 tips.hecomi.com tips.hecomi.com 前者の記事で自分…

Unity 向けに HLSL Tools for Visual Studio を便利にするアセットを作ってみた

はじめに 本記事は Unity Advent Calendar 2020 の 20 日目の記事です。 qiita.com Windows 上の Unity でシェーダを書く(読む)際は Visual Studio を使うことが多いかもしれません(VSCode の人も多いと思いますが...)。しかしながらそのままでは補完も…

uRaymarching を使った VRChat のワールドを作ってみた

はじめに こりんさん(@korinVR)が VRChat で行われる以下のようなイベントを企画してくれました。 8/2(日)13:00~15:00にVRChatで囲む会をやります。今回のスペシャルゲストは「凹みTips」 https://t.co/mZ2BmIxFST の凹さん @hecomi です! XRやUnityの…

Unity の ShaderGraph の仕組みについて調べてみた

はじめに 本記事は Unity Advent Calendar 5 日目の記事です。 以前の記事で UniversalRP(URP) の調査を行いました。 tips.hecomi.com 今回は、その続きとして URP / HDRP の目玉機能の一つである ShaderGraph について調べてみます。私もノードグラフではな…

Unity の Universal Render Pipeline のレンダリング周りについて勉強してみた

はじめに 以前、Lightweight Render Pipeline(LWRP)と呼ばれていたパイプラインが 2019.3(SRP 7.0.0)から、Universal Render Pipeline(UniversalRP / URP)と改名されました。 blogs.unity3d.com 私は LWRP 含む SRP をあまり調べていなかったのですが…

uDesktopDuplication でキャプチャしたデスクトップ画像をリモートに転送してみた

はじめに 主要な VR 向けのデスクトップ表示アプリ(Virtual Desktop や Bigscreen など)では、PC だけでなくモバイル VR もサポートしています。これを実現するには、キャプチャしたデスクトップ画面をリモートへ低遅延で転送しなければなりません。また、…

Unity でテクスチャを直接 NVENC でエンコードしてみる

はじめに 前回の記事で NVIDIA のハードウェアエンコーダである NVENC(および NVDEC)を使いやすくした NvPipe を Unity で使えるようにしたアセットの紹介をしました。 tips.hecomi.com しかし問題点として、NvPipe はバッファのポインタしか食わせる口が…

NvPipe で Unity のテクスチャを H.264 にハードウェアエンコード / デコードしてみる

はじめに NvPipe は NVIDIA 製 GPU に搭載されたハードウェアエンコーダ(NVENC)およびデコーダ(NVDEC)機能を簡単に C 言語で使えるようにラップした NVIDIA 製のライブラリです。 github.com NVENC および NVDEC は NVIDIA Video Codec SDK に含まれ、対…

Intel RealSense デプスカメラ D435 を Unity で遊んでみた

はじめに 以前、Intel® RealSense™ のトラッキングカメラである T265 の記事を書きましたが、今回はデプスカメラである D435 を手に入れましたので、まずはカメラの概要と Unity のサンプルの紹介をしようと思います。 tips.hecomi.com デモ 画像ストリーム …

Unity の CustomTextureUpdate で DXT1 を使ってみる

はじめに 以前、CustomTextureUpdate の記事を書きました。 tips.hecomi.com この API は、ネイティブ(DLL 側)からバッファのポインタを渡してあげるだけでプラットフォーム間の差異(OpenGL や DirectX 固有のテクスチャの更新方法)を気にせず且つ簡単に…

RealSense トラッキングカメラ T265 を Unity で遊んでみた

はじめに 1 月にプリオーダーしていた、V-SLAM をデバイス側で行ってくれる RealseSense の新しい製品である T265 が先日届きました。 realsense.intel.com T265 は次のようなデバイスです。 低消費電力 V-SLAM 動作で 1.5 W 正確なトラッキング 様々な環境…

Unity で距離関数の記述だけでレイマーチングができる uRaymarching を Forward / XR 対応した

はじめに uRaymarching を更新しました。以前の記事はこちら: tips.hecomi.com uRaymarching は以下のような機能を持つアセットです(太字が今回更新した内容です)。 エディタ上で距離関数の記述だけでレイマーチングができる フォワード / ディファード対…

Unity で Boids シミュレーションを作成して Entity Component System(ECS)を学んでみた

本エントリは Unity Advent Calendar 2018 23 日目の記事になります。 qiita.com はじめに ECS(Entity Component System)の概要は読んだり、勉強会で話を聞いてはいたのですが、自分では書いたことがなかったので勉強してやってみることにしました。既に E…

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

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

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

はじめに GPU Instancing を使うと同一メッシュ・マテリアルを使用したオブジェクトを一度に大量に描画することが出来ます。GPU Instancing そのものについてはテラシュールブログさんや公式ドキュメントをご参照ください。 tsubakit1.hateblo.jp docs.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 上で 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.3 色付け / シェーディング

はじめに 本記事はボリュームレンダリングシリーズで以下の記事の続きです。 tips.hecomi.com 今回はボリュームレンダリングの結果に色付けしたりシェーディングしたりするところをやります。 参考 以下のエントリを参考にしています。 graphicsrunner.blogs…

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

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

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

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

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 のことで、型やデータ長などの情報を付加したデータの詰め方が定義されていて、…