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

しゅみぷろ

プログラミングとか

雨の日のカメラを作る

はじめに カメラのレンズに雨が付着した感を出してみました。 ささっと作ったのですが、ちょっといい感じになったので自分で驚いてます。 雨粒が付着した部分は背景の映り込みが歪むようになっています。 Unity Standerd Assetに含まれるガラスシェーダーを…

オブジェクト表面を垂れる液体表現 その2

はじめに ペイント後に垂らす処理 ロゴの表示演出(© UTJ/UCL) 複数色のテスト esprog.hatenablog.com オブジェクト表面を液体が垂れる表現をさせる試みの続きです。 前回の記事で基本的な部分を実装したのですが、複数の色をペイントすることが出来ないとい…

オブジェクトの一部のみ鏡面反射を行うようにする

はじめに オブジェクトにインクっぽいものを塗って、そのインク部分だけが反射するような表現がしたかったので作りました。 多用は出来ませんが、数カ所こういった特徴的な表現ができるとゲームがかなり尖ります(と思います。 UnityTexturePaintを利用してい…

歩いた場所の雪が凹むやつ作った

はじめに 雪が積もって高さがもとに戻っていくやつ書いた。Uniteでセツナの講演聞いててよかった。パーティクルの逆LODもやりたい。 pic.twitter.com/tGdu0RxZ41— Es (@Es_Program) October 26, 2016 こんな感じで、歩いた箇所の雪を凹ませるやつ作ってみま…

C# Interactive 便利に使おう -その2 UnityAssemblyの参照-

はじめに esprog.hatenablog.com 以前のC# Interactive記事では、DLLの参照について書きました。 今回はUnity + Visual Studioで開発を進めている方向けに、Unityに特化したDLL参照について書き残します。 できること C# Interactiveで、現在Unity Editor上…

UV算出ロジックの穴

はじめに 特定のオブジェクト表面上の点(World-Space)の位置を中心に、ブラシで色を塗るためにUVを算出するロジックを作っています。 これができると何が嬉しいのかというと、UnityのOnCollision系イベントメソッドで衝突した点に対して、ペイント処理を施す…

戒めの暗黙的型変換

はじめに esprog.hatenablog.com esprog.hatenablog.com これらに掲載したコードで一部、誤っている箇所が判明したのでお詫びとご報告をするのが今回のエントリー(。 以前紹介してたコードでは、メッシュの持つローカルな頂点座標で$z=0$の場合にバグります(…

UnityでUVを確認するエディタ拡張

はじめに 気が向いたのでパッと作ってみました。 UVがどう設定されているかを確認できます。 実装 コードはこんな感じ。 UnityでUVを確認するエディタ拡張

リングセレクトシステムとモーフォング

はじめに 今回はリングセレクトシステム(と呼んでいきます。正式名称とかあるのかは知らないです。)とモーフィングについて書いてみます。 Unityで実装しています。 リングセレクトシステムはアイコンがくるくる回って、その中の1つを選択するみたいなアレ…

C# Interactive 便利に使おう -その1 DLLの参照-

はじめに esprog.hatenablog.com 前回の記事ではC# Interactiveをちょちょいと使ってみました。 REPLめちゃくちゃ便利で重宝してます。 ということで今回はC# Interactiveを便利に使うための個人的Tipsの1つ「複数のDLLの参照を容易にする」を紹介します。 D…

C# Interactive

はじめに C# Interactive、便利ですよね。 普段からVSで開発しているのでお世話になってます。 今回別にとりあえず何か記事書いとかなきゃってことで書いてるので適当です。 C# Interactive Roslynの機能で、REPL(Read-Eval-Print Loop)と呼ばれているらし…

Splatoonの塗りみたいのを再現したい その5

はじめに 塗り表現その5です。今回はとうとう、動的テクスチャペイントについて解説していきます。 サンプルはこちら(© UTJ/UCL)から遊べます Splatoonの塗りみたいのを再現したい その1 - しゅみぷろ Splatoonの塗りみたいのを再現したい その2 - しゅみ…

任意の点がモデル表面上に存在する場合にその位置のUVを算出する

はじめに esprog.hatenablog.com 上記の記事で行っているように、動的にUVを算出してその部分にエフェクトを掛ける場合などでは あるワールド座標上の点pがシーン内に配置されたモデルの表面上の点であるかどうか調べる モデル表面上の点である場合は、$p$の…

Splatoonの塗りみたいのを再現したい その4

はじめに Splatoonの塗りみたいのを再現したい その1 - しゅみぷろ Splatoonの塗りみたいのを再現したい その2 - しゅみぷろ Splatoonの塗りみたいのを再現したい その3 - しゅみぷろ 細々と実装しつつとうとうその4まで来ました。 自作した動的テクスチ…

Splatoonの塗りみたいのを再現したい その3

はじめに esprog.hatenablog.com esprog.hatenablog.com 塗りを作るその3です。エフェクトを付けてベチャっと塗った感を出しました。 結構それらしくなってきた気がします。 エフェクト作る技術力が無かったのでこちらのアセットを使わせて頂きました。 実…

Splatoonの塗りみたいのを再現したい その2

はじめに esprog.hatenablog.com の続編、塗りの表現です。ちょっとだけ進化したので簡単にメモしておきます。 今回実装したのはブラシの法線マップをペイントに適用する処理です。法線マップについては 法線マップと接空間 - しゅみぷろ で紹介しています。…

Splatoonの塗りみたいのを再現したい その1

はじめに Unity WebGL Player | スプラトゥーンもどきをやってSplatoonやりたい欲が高まってまいりました。 Splatoonしたいけどお金なくてWiiU買えない貧乏苦学生なので、「無ければ作ろう!」という精神でSplatoonの塗りをコンセプトに取り入れたゲームを作…

Unityでなるべくシェーディング処理を自作してみる

はじめに 以前記事にした esprog.hatenablog.com esprog.hatenablog.com こちらの知識を使って、なるべくUnityのライトやShaderLibrary(.cginc)を使わずシェーディングを行ってみました。 Unityのグラフィックスを勉強するには結構いい題材だったかなと思い…

1つのカメラでMRT出力を用いたPostEffectを実現する

はじめに 今までにも何度かCommandBufferを用いたエフェクトについて書いてきたので今更なのですが、Unityのコミュニティでの会話でなんとなくきっかけがあったので書いてみることにしました。 今回は1つのカメラでMRTによる出力を使ったPostEffectをしてみ…

Screen Space Reflection for Unity

はじめに UnityでSSR(Screen Space Reflection)に挑戦しました。 が、実際に出来たのは「SSRっぽい何か」です。 コア部分のみの実装のため、いわゆる「破綻を誤魔化す処理」は付加していません。 条件によっては結構不自然だったりします。 これを改善するた…

C# 5.0までの色々をメモしてたスライドを発掘した

めちゃんこ前にC#の勉強をはじめた時に書いていたメモ用のスライドを発掘しました。 間違ってたら当時の自分を殴って目を覚ましに行ってやってください。

SceneビューでRaymarchingのプレビューをON/OFFする

esprog.hatenablog.com こちらで紹介したUnityでRaymarchingを行う際に使用しているスクリプトで、カメラに対してCommandBufferを追加しているスクリプトがあります。 これの問題点は、SceneビューではRaymarchingによる描画を見ることができないことです(実…

UnityでRaymarching

まえがき タイトルの通りで、UnityでRaymarchingを試してみました。以下でリポジトリを公開しています。 github.com 既にやっている方のを真似させて頂いただけですので、詳しく知りたい方はid:i-saintさんとid:hecomiさんの記事を参考にしてください。 この…

UnityでSceneビューのような視点移動ができるカメラを作る

つくったもの Unityでゲーム実行中(Gameビューで見てる時)、カメラをSceneビューと同じように操作できるようにするスクリプト書きました。 Gameビューでデバッグ用にカメラ移動して色々確認したりするのに便利です。 使い方 使い方はカメラに後述するスクリ…

Shader Variantについて調べてみた

Unityシェーダーの基本についてはこちらでスライドにまとめています esprog.hatenablog.com 今回は上記のスライドの内容では扱っていないシェーダーのバリアントについてです。 色々とググッては見たのですが詳しく書いてあるサイトが見つからなかったため、…

背景のリピートとスクロール

容量の関係で画質がめちゃくちゃ荒いですが。。 背景画像は基本的にuGUIでバックグラウンドカメラのスクリーンスペースに対して表示させるようになっています。 この背景をプレイヤーの位置情報をもとにスクロールさせたかったので実装しました。 // 背景リ…

Unityのサウンド管理(SoundManager)

ゲームサウンド管理のためにSoundManager作りました。 使用方法 基本的には「追加」「削除」ボタンでサウンドを追加していきます。追加時に、左のテキストフィールドからサウンドに一意な名前をつけておきます。 例えば「TitleBGM」という名前をつけて追加す…

全ての派生クラスの型情報を取得する

あるクラスの派生クラスの型情報をすべて取得したいケースがあったのでメモ。 あるクラスをTとして、以下のようにすれば取得できます。 skillTypes=Assembly .GetAssembly(typeof(T)) .GetTypes() .Where(t=>{ return t.IsSubclassOf(typeof(T)) && !t.IsAbs…

エディター拡張について

めちゃくちゃ参考になるスライド。 Extending the Unity Editor from Masamitsu Ishikawa www.slideshare.net インスペクター拡張についてです。内容は初歩的なことです。 とりあえず、インスペクター拡張を試した基本的なサンプルを。 using System.Collect…

UnityでのSingletonについて

UnityのMonoBehaviourをSingletonにしたい時って結構ありますよね。 調べれば、シンプルなSingletonMonoBehaviourの実装とかそんな感じですごいたくさん出てきます。 しかし、公開されているものの中には結構用法によっては不便に思えるものが多かったりしま…

Nullable<T>のGetTypeについて

var i = new int?(); //i.GetType(); //NullReferenceException!!! Console.Write(i.HasValue); //false となる原因について色々調べてみたのでまとめようかと思います。 上記のコードでは、インスタンス化した直後のNull許容型(Nullable)に対してGetTypeメ…

イベント関数について

ちょっとしたメモ。Unity界隈では常識なのかもです(よく知らない)。 MonoBehaviourを継承したクラスAがあって、Aを継承したクラスBがあったとして class A : MonoBehaviour{ void Awake(){ Debug.Log("Class A awake.");} void Start(){ Debug.Log("Class A …

Unityでキーコンフィグ&キー入力イベントの進捗

qiita.com Unityでゲーム内にキーコンフィグを実装しようと思うと結構工夫が必要になります。 なので、以前からゲーム制作と並行して、キーコンフィグとユーザーのキー入力イベントを簡単にするためのAsset制作を進めています。ほぼ完成したのですが、まだ抽…

以前から気になってたUnityエディタ拡張で動画を見る方法試してみた

chroske.hatenablog.com Unityのエディタ拡張で動画を見よう(というかWebView使って色々しよう)!というもの。 なんとも素晴らしい記事に心をつかまれました。 以前から気になっていたのですが、なかなかタイミングがなくてこの時期に。。。 処理内容 コード…

マスク処理 - ShaderLab

Unityでマスクを用いたエフェクト処理を色々と試してみたのでメモ。 qiita.com マスク処理とは マスクと呼ばれる数値の集合と、注目ピクセルの周辺のピクセル色を一定の規則に従って計算する処理をマスク処理といいます。 注目ピクセルとその周辺ピクセルを$…

Unityでキーコンフィグ実装

Qiitaでも記事にしました。 qiita.com 突貫で作ったので、他のプロジェクトで利用できるよう抽象化されていません。 コードは公開しますが、そのままコピペするだけでは使えないと思います。 そのうちリファクタリングしてから公開し直すとおもいます。 なの…

Unityでラスタースクロール

Qiitaにも書きました Qiita: Uniryでラスタースクロール Unityでラスタースクロール Unityでラスタースクロールを実装したことについて書きます。 そもそもラスタースクロールとは...っていう説明は面倒なので、「ラスタースクロールって何?」って方は動画…