読者です 読者をやめる 読者になる 読者になる

凹みTips

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

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

Unity WebGL x WebSocket で複数クライアント間の大量のオブジェクトを簡単に同期できる仕組みを作ってみた

はじめに まだ実験中なのですが、Unity WebGL x WebSocket で大量のクライアント間で大量のオブジェクトを同期できる仕組みを作っています。UNET や Photon によって近いうちに対応されると思うのですが、現状では使えないのと、制限なく扱えたりチューニン…

Unity 5 の WebGL で WebSocket を利用した通信をする方法について調べてみた

はじめに Unity の WebGL では現状ではネットワーク機能に制約がありますが、WebSocket は使えるようです。 (English) On the future of Web publishing in Unity – Unity Blog 以前の記事では外側の JavaScript で Socket.IO を通じて通信した内容を用いま…

Unity 5 の WebGL で外部からテクスチャを与える方法について調べてみた

はじめに Unity 5 の WebGL 出力で、外部(自分で書いた JavaScript のコード)からテクスチャを与えたいと思い、色々調べてみましたので情報を共有したいと思います。通常の画像をテクスチャとして指定する方法と、base64 エンコードした画像をテクスチャと…

筋電の Raw Data が取得できるようになった Myo SDK 0.8.0 を試してみた

はじめに 前回、Myo の記事について書きました。 筋電によるジェスチャコントロールが可能なアームバンド Myo が届いたので遊んでみた - 凹みTips この時点では筋電の生値が未だ取れない、と書いたのですが、公式ブログで生値が取れるようになったことが発表…

Oculus Rift x Leap Motion を使った指で空間に魔法を描いて発動できる Magic VR を作ってみた

この記事は Oculus Rift Advent Calendar 2014 19日目の記事です。前日は KaleidPlayer の作者の @faifx さんによる「視差無し立体視のススメ - とあるOculusRift使いの備忘秘録」でした。2D の動画/静止画の単眼立体視を行うには、なるべく遠い場所に置く…

筋電によるジェスチャコントロールが可能なアームバンド Myo が届いたので遊んでみた

はじめに 先週、昨年の 6 月にプリオーダーしていた Myo の Developer Kit が届きました。 Myo は Thalmic Labs 社によって開発されたワイヤレスなアームバンド型のジェスチャコントローラです。 価格はプリオーダー時が $149、現在は $199 です。 Buy Preor…

Unity 5 x WebGL について詳しく調べてみた

はじめに 本エントリは Unity Advent Calendar 2014 8日目の記事になります。 Unity 5 からは Build ターゲットに WebGL が追加されます。Unity 5 プリオーダ向けベータ版で現在試すことが出来ます。 Unity - Beta - Unity 5.0 今年の 3/18 に行われた GDC20…