凹みTips

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

Unity

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 を置き換えることが出来…

Oculus Avatar SDK を使って自分のアバターを Unity で利用する方法を調べてみた

はじめに Oculus の Home アプリから以下のようにアバタを編集できます。 このアバタは Oculus Avatar SDK を利用することで Unity 内でも利用することが出来ます。ただ、現状少し手順が多く大変です。というのも、このアバタ情報は Oculus のサーバ側に保存…

Unity で特定のモデルのみ Image Effect が効かないようにする

はじめに キャラクタの顔だけ SSAO が効かないようにしたいがどうしたら良いか、という相談を受けたので、いくつか方法を考えてみました。 顔のモデル描画時にステンシルを設定しておき、Image Effect のタイミングで特定の値がセットされている場所だけ無視…

Unity で Windows のデスクトップ画面をテクスチャとして表示するプラグインを作ってみた

はじめに 本エントリは Unity Advent Calendar 2016 4 日目の記事になります。先日は srndpty さんによる「uGUIのScrollViewを使いこなす7つのTips - Programming Serendipity」でした。スクロール系は私も昨年の Advent Calendar で書いた uREPL を作成した…

Unity で距離に応じたテッセレーションを行ってみた

はじめに テッセレーションを行うと、ポリゴンの分割数を増やしてより滑らかな曲面を作成できたり、分割された頂点をテクスチャを参照して直接盛り上げたり(ディスプレースメントマッピング)出来ます。ただ、分割数を増やすにはそれなりのコストがかかるの…

Unity のエディタ拡張で FoldOut をかっこよくするのをやってみた

はじめに Screen Space Reflection の Image Effect を見ていたら次のように FoldOut が格好良かったので調べてみました。 方法 ScreenSpaceReflectionEditor.cs を読むとパーティクル(Shuriken)で使っているスタイルを流用して作成しているようです。該当…

Unity のエディタ拡張でシンタックスハイライト対応の TextArea を作成してみた

はじめに uRaymarching を作る上でシンタックスハイライト付きのコードエディタが欲しくて色々試してみましたので、その内容を共有します。 デモ こんな感じのシンタックスハイライト付きテキストエリアが作れます。 カラーコードを意識したりフォントを変更…

Unity でレイマーチングするシェーダを簡単に作成できるツールを作ってみた

はじめに レイマーチングとはポリゴンではなく、距離関数(distance function)と呼ばれる数式を元にオブジェクトをレンダリングする方法です。ポリゴンを使わないのでモーフィングや複雑な図形もシンプルな数式で記述することが可能で、GPU のコストが高い…

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

はじめに 過去幾つかの記事でディファードシェーディングのレンダリングパスで G-Buffer を色々いじることをやってきました。その際、G-Buffer に与える出力は適当な値を与えてきましたが、実際はもう少し真面目にやらなければなりません。というのも本来は…

Unity でオブジェクトスペースのレイマーチをやってみた

はじめに 以前、Unity の Command Buffer を使ってレイマーチを行う方法を紹介しました。 Unity で Command Buffer を使って Raymarching をしてみた - 凹みTips しかしながらこの手法では異なる多数の立体を同時に描画したり、それらのオブジェクトを自由に…

Unity でスクリーンスペースのブーリアン演算をやってみた

はじめに ブーリアン演算とは様々な形状を集合演算(足し合わせる(和)、一方から他方を引く(差)、一致する部分を抜き出す(積)など)によって作成する手法です。 ブーリアン演算 - Wikipedia Constructive Solid Geometry - Wikipedia いくつかの実装方…

Unity で実行時に補完付きで REPL を行うプラグインの複数行対応をした

はじめに 以前公開した uREPL という Unity で実行時に C# のコードや予め登録したコマンドを実行するプラグインのアップデートをして、複数行編集に対応しました。 以前の記事はこちらです。 tips.hecomi.com 本エントリではちょっとした紹介と、備忘録とし…

デプスセンサの値を Deferred Rendering の G-Buffer に書き込んでみた

はじめに Deferred Rendering では G-Buffer にデプスや法線、拡散色などの情報を予め描きこんでおき、その情報を使ってシェーディングやライティングの処理が行われます。 遅延シェーディング - Wikipedia これを利用してあげると距離関数でレイトレースし…

Unity の DX11 向け機能のサンプルを読んでみた

はじめに 以下のスレッドに Unity の中の Aras 氏による DX11 機能を利用したサンプルが上がっています。 Error | Unity Community この中には 8 つのシーンにそれぞれ異なるサンプルが格納されていて、どれもあまり(日本語の)情報がなく且つ面白いものな…

Unity で Compute Shader を使ったスクリーンスペース衝突有りの GPU パーティクルを作ってみた

はじめに コンピュートシェーダを使った GPU パーティクルを試してみます。GPU パーティクルを出す方法はいくつかあるのですが、任意のメッシュを利用したかったため、コンピュートシェーダを使った擬似インスタンシングによる方法を利用してみました。 参考…

Unity で Screen Space Reflection の実装をしてみた

はじめに Screen Space Reflection はカメラから見た画のみを利用してレイトレした結果を使い、擬似的な反射画をそこそこのコストで作り出すテクニックです。Reflection Probe と異なり、動的なものにも効きますし、それなりに正しい反射した画が得られます…

Unity でカスタムライトを使ったスクリーンスペースシャドウを試してみた

はじめに 前回に引き続き Raymarching 関連記事です。 G-Buffer に Raymarching して描画したオブジェクトではポリゴンのオブジェクトから影を受けることは出来るのですが、Raymarching したオブジェクトから自身とポリゴンのオブジェクトへの影を作ることが…

Unity で Raymarching で描画したオブジェクトとのコリジョンを作ってみた

はじめに 前回の記事では G-Buffer を利用して Raymarching で数式から図形を描画する方法を紹介しました。 Unity で Command Buffer を使って Raymarching をしてみた - 凹みTips G-Buffer を利用して Raymarching して描画した図形はコライダが無いため、…

Unity で Command Buffer を使って Raymarching をしてみた

はじめに id:i-saint さんのこちらの記事(rendering fractals in Unity5 - primitive: blog)に触発されて勉強中です。Raymarching はポリゴンベースでなく、距離関数(distance function)と呼ばれる数式を元にオブジェクトをレンダリングする方法で、工夫…

Unity 5 の CommandBuffer を利用したレンダリングパイプラインの拡張について調べてみた

はじめに Unity 5 より利用できるようになった CommandBuffer を利用するとレンダリングパイプラインを拡張して色々な表現が可能となります。公式ブログにこの詳細が書いてあり、サンプルもブログ中またはドキュメント上で配布されています。 (English) Exte…

Unity でリップシンクができる OVRLipSync を試してみた

はじめに Oculus 社が Unity 向けのリップシンクライブラリ、OVRLipSync をリリースしました。 https://developer.oculus.com/downloads/audio/1.0.0-beta/Oculus_OVRLipSync_for_Unity_5/ Oculus Launch Avatar Lip Sync Plugin for Unity - Road to VR Ocu…

Unity で Desktop Duplication API を使ってスクリーンキャプチャしてみた

はじめに 以下のエントリではスクリーンキャプチャを System.Drawing.Graphics.CopyFromScreen() を別スレッドで回して行っていました。 qiita.com ここで触れられているようにネイティブでやった方が速いということもあり、本エントリでは Windows 8 から使…

Unity の Low-Level Native Plugin Interface を使ったテクスチャの更新 (Windows/D3D11 編)

はじめに 本エントリは以下のエントリの続編です。 tips.hecomi.com Low-Level Native Plugin Interface を利用すると OpenGL や DirectX から直接テクスチャの生成や更新を行うことが出来ます。前回のエントリでは Mac OS X 環境下での OpenGL を例に紹介し…

ネイティブプラグインから Unity の関数(Debug.Log 等)を呼び出す

はじめに ネイティブプラグインの作成時にネイティブ側から Unity の Debug.Log() を呼んでデバッグしたくなるときが多々あります。以下のエントリ(英語)で方法が紹介されていたのでやってみました。 Artificial stupidity: C++ Plugin Debug Log ざっくり…

Low-Level Native Plugin Interface を利用してネイティブから Unity のテクスチャを高速に更新する方法を調べてみた

はじめに Unity でネイティブ側(C/C++ 等)で作成したテクスチャを利用する方法はいくつかあって、テラシュールブログさんにまとめられています。 Unityでテクスチャを読む7つの方法 - テラシュールブログ Unityでテクスチャを読む7つの方法 4・5・6につい…

VR 向け高性能ステレオカメラの Ovrvision Pro を手に入れたので詳しく調べてみた

本エントリは Oculus Rift Advent Calendar 2015 12 日目の記事になります。昨日は @MuRo_CG さんによる「アニメの雰囲気をVRに持ってくる方法」でした。以前 Gear VR のデモを見せていただきましたがすごいアニメでした!(語彙力がない) はじめに Ovrvisi…

Unity で実行時にコードやコマンドを補完つきで実行できる uREPL を作ってみた

本エントリは Unity Advent Calnedar 5 日目の記事です。昨日は @tagia0212 さんによる uGUI で透明じゃないところだけに反応するボタンを作った (Unity) - Qiita でした。 はじめに サマーレッスンの VR コンソールの話を見て、Unreal Engine にはコマンド…

発売前に RICOH THETA S のライブビューを Unity でリアルタイムに全天球で見るやつ作ってみた

はじめに GOROman さん(@GOROman)が、以下の様なつぶやきをされているのを見かけたので、その日のうちにやってみたお話です。 これVRストリーム中継楽勝で出来るんじゃないのかなー。ステッチどうするかだけど。。。とりあえず球体をざっくりUVテクスチャ…

Unity で Android 向けの OpenCV x ArUco を利用した AR アプリを作ってみる

はじめに Unity で Android 用のアプリを作る際、Unity だけで出来ないことをやろうとするとプラグインを利用することになります。Android 向けのプラグインは大きく分けて 2 種類あり、一つは Android の機能を利用する Java プラグイン、もう 1 つは C/C++…

Unity 5.1 から導入された新しいネットワーク機能の UNET について詳しく調べてみた

はじめに Unity 5.1 よりマルチプレイヤ用のネットワークシステム(UNET)が追加されました。 (English) Unity 5.1 is here! – Unity Blog Announcing UNET – New Unity Multiplayer Technology – Unity Blog 古い Network 機能は今後 5.x のどこかのタイミ…

Maker Faire Tokyo 2015 にレゴ x ハードウェア x プロジェクションなシューティングゲーム LITTAI を出展してきた

はじめに 前回の記事で書いたように 8/1、8/2 に東京ビッグサイトにて開催された MFT 2015 へ友達と趣味で制作していた LITTAI というゲームを出展してきました。お越しくださった皆様、ありがとうございました! LITTAI は Lit Table Interface の略の造語…

現実の手を直接 VR 内に持ち込めるようになった Leap Motion Core Asset v2.3.0 を詳しく調べてみた

はじめに VR 向け Leap Motion アセットに再び神アップデートがきました。 Unity Core Assets 2.3.0 + ImageHands - Leap Motion Community Gallery | Leap Motion Developers いくつかアップデートがある中で目玉は「Image Hand」という機能で、従来は 3D …

Unity のトゥーンシェーダについて調べてみた

はじめに 自前のトゥーンシェーダを作りたくて、まずは Unity 付属のトゥーンシェーダについて調べてみました。Unity のシェーダについては以前の記事をサラッと読んでいただけると理解しやすいと思います。 Unity のシェーダの基礎を勉強してみたのでやる気…

Unity でキャラクタの足の位置を地面の形状に合わせてみた

はじめに 段差や坂を登る時などに単にアニメーションさせているだけではコライダの位置に合わせてキャラクタが上下するだけで、片方の足は地面に付いているけど、もう片方の足の位置は地面から離れているといった不自然な表現になってしまいます。 これを解…

Particle を使って Line Renderer みたいな表現を作ってみた

はじめに Line Renderer で満足できない場面があったので Particle を密に並べて線っぽく見せるのを作ってみました。 デモ Particle Playground 2 を使った版(Web Player ビルド) Unity Web Player | Particle Playground 2 Line デフォルトの Particle Sy…

Unity で格好いいパーティクル表現を作れる Particle Playground 2 を色々試してみた

はじめに Unity の Particle System である Shuriken を使ってパーティクルを作っている人が多いと思います。 Unity - マニュアル: パーティクルシステム( Shuriken ) http://marupeke296.com/UNI_PT_No1_Shuriken.html ただより凝ったことをしたくなって…

Maya LT でスキニングモデリングに挑戦して Unity で動かしてみた

はじめに Maya LT でのモデリング練習記の続きです。前回はローポリキャラクタモデリングに挑戦してみました。 Maya LT でローポリキャラクタモデリングに挑戦して Unity で動かしてみた - 凹みTips そこで触れていたように、今回はスキニングモデリングに挑…

RealSense が届いたので Unity で出来ることなどを詳しく調べてみた

はじめに RealSense 3D カメラの F200 が届きました。 RealSense は Intel による NUI 用のセンサ・SDK を扱うブランド名で、顔分析、手指・ジェスチャー検出、音声認識、背景除去、AR などが可能です。この前身として本ブログでも紹介したことのある Percep…

Maya LT でローポリキャラクタモデリングに挑戦して Unity で動かしてみた

はじめに 前回のエントリ(Maya LT 2015 の勉強始めました - 凹みTips)では、Maya LT の基本的な使い方を勉強しました。そこで今回は 1 週間使ってローポリのキャラクタモデリング、および作成したモデル・アニメーションの Unity での利用に挑戦してみまし…

Maya LT 2015 の勉強始めました

はじめに Maya LT の勉強を始めました。以前、Blender でキャラクターモデリングに挑戦したことはあったのですが、それっきりになっていて、再度モデリングやアニメーションを始めようと思ったのですが、今は低価格版の Maya LT が利用できることから、Blend…

Unity WebGL x WebSocket でみんなで自由にブロックを置いて遊べるブラウザゲームを作ってみた

はじめに Unity WebGL x WebSocket でたくさんのオブジェクトを同期する前回の仕組みを利用して、データの永続化の実験をしてみました。 デモ マイクラもどきです。全員がログアウトしてもデータをサーバに保持しておくようにしました。みなさんのご協力のお…