凹みTips

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

C#

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

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

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

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

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

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

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

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

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

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

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 機能を利用したサンプルが上がっています。 Compute Shaders - Unity Forum この中には 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 にはコマンド…

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

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

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

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

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

はじめに VR 向け Leap Motion アセットに再び神アップデートがきました。 Unity Core Assets 2.3.0 + ImageHands - Development - Leap Motion (Ultraleap) Community Forums https://developer.leapmotion.com/gallery/category/image-hand いくつかアップ…

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 そこで触れていたように、今回はスキニングモデリングに挑…