凹みTips

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

C#

uLipSync の Timeline エディタのパフォーマンス改善を行ってみた

はじめに 先日、uLipSync のタイムラインの機能で長いデータを割り当てるとパフォーマンスが低下する、とのコメントを頂きました。実際に 3 分程のクリップを割り当ててみると顕著にパフォーマンスが落ちています。 原因を調べてみると、どうやら波形描画に…

Unity で Timeline のカスタムトラックおよびクリップを作成して見た目をキレイにしてみた

はじめに 前々回の記事で Unity でリップシンクを行うためのアセットである uLipSync のタイムライン対応について紹介しました。 tips.hecomi.com ここでは次のように現在どのリップシンクデータを喋らせているか分かるように色々装飾しています。 本記事で…

uLipSync にアニメーションベイク機能を追加してみた

はじめに 前回は uLipSync で、リップシンクの解析結果のベイク機能の追加とタイムラインのサポートを行いました。 tips.hecomi.com 今回は、このベイク結果を元に、ブレンドシェイプを動かすアニメーションへと変換する仕組みを作りました。アニメーション…

Unity で自作ライブラリの Package Manager / Scoped Registry 対応をしてみた

Unity Advent Calender 2021 この記事は「Unity Advent Calendar 2021」19 日目の記事です。 qiita.com 18 日目は @Azukiidxさんによる以下の記事でした。 qiita.com 私は(残念ながら非推奨になってしまった)UNET のサーバー向けに Linux 上でヘッドレスで…

uOSC v2 をリリースしました

はじめに uOSC は、Unity 向けの OSC 実装です。数ある Unity 向け OSC 実装の中でもシンプルな使い方が出来るように目指して作ったものでした。 tips.hecomi.com github.com EVMC4U を始めとし、思っていたよりも多くのプロジェクトにて使っていただいてお…

Unity で DICOM 画像をレンダリングしてみる

はじめに 先日、Twitter で手持ちの DICOM 画像を以前書いたボリュームレンダリングの記事のように描画したい、というご相談をいただき試してみましたので内容を共有します。 tips.hecomi.com DICOM(ダイコム)とは「Digital Imaging and COmmunications in…

Unity で URP 向けのファーシェーダを書いてみた(動き・アニメーション連携)

はじめに 毛の連載も 4 回目になりました。これまでの記事は以下になります。 tips.hecomi.com tips.hecomi.com tips.hecomi.com これまでは風による動きを Sin 関数でそれっぽくしてましたが、今回は実際に頂点毎の動きを見て動かしてみることをやってみま…

Looking Glass Portrait を手に入れたので Unity 向けの仕組みを調べてみた

はじめに 遅ればせながら Looking Glass Portrait を手に入れました。 lookingglassfactory.com クラウドファンディング開始からしばらくして気づいてバックしたので入手できるタイミングが第一陣の方々に比べ遅くなってしまいましたが…、ようやくといった感…

Unity で Windows のウィンドウを個別にキャプチャできる uWindowCapture の高速化をしてみた

はじめに 前回の記事で Windows Graphics Capture の解説を行いました。 tips.hecomi.com 記事中でも触れたのですが、調査の目的としては OVR Toolkit などにも使われている拙作の uWindowCapture にこの API を導入するためでした。従来の設計に合わせるの…

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 をプロジェクトにインクルードするだけで完結させたい)場合 再…