なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

2020-01-01から1年間の記事一覧

Git の各種コマンドで条件を満たすパスを非表示にしたい

Git

git status だとか git diff だとかで、たまに Git でトラッキングはしたいけども、 コマンド実行結果上は一時的に非表示にしたいファイルがあるときがあります。 そういうときは、 pathspec を指定することで、表示するファイルを制御することが可能です。 …

Canvas Image を Mesh に変換したい

なんでそんな必要があるのかって? Canvas 使いまくったものが送ってこられて Vket 入稿できなかったからです。 そういう需要があるにはあるので、放流します。 以下ソースコード全文 /*------------------------------------------------------------------…

UdonSharp コンポーネントをエディターから動的生成したい

Prefab からのセットアップ自動化みたいな想定で、 UdonBehaviour (U#) の中身をいじりたい。 そんなときのいじりかた。 といっても、基本は Unity で Component 変更するのと変わらない。 private static void AttachUSharpComponent(GameObject gameObject…

UdonSharp の特定のクラスのみを受け入れる入力フィールドを作りたい

そんなことをする必要があるかどうかはさておき、やりたくなったので。 ということでいつもの前提環境 Unity 2018.4.20f1 UdonSharp 0.18.6 といっても、実装は簡単で、こんな感じ。 もしかしたらこんなことしなくても良いカモだけど。 [SerializeField] [Ud…

ReSharper で EditorBrowsable が付いたものを非表示にしたい

なぜデフォルトで ON になっていないのかは知らないのですが、下のようなコードがあったとき、 [EditorBrowsable(EditorBrowsableState.Never)] public void HogeHoge() { // noop } なぜか ReSharper の IntelliSense を使っていると表示されてしまいます。…

Unity でカメラが近づいたら消えていくシェーダーを作る

最近シェーダーを書くことが増えてきた私です。 ということで今回は「近づくと消える」シェーダーを書きました。 Vertex Shader は変わりないので、 Fragment Shader のみ float4 fs(v2f i) : SV_TARGET { const float d = abs(length(i.worldPos - _WorldSp…

Unity だけでメッシュを作ってアセットとして保存したい

危うく今月の学びがなくなるところでした。 ということで、 Blender などを使わずに任意のメッシュを作成して保存する方法。 やり方は簡単で、以下のコードで 1 tris なメッシュが作成・保存されます。 // see: https://www.wikiwand.com/ja/%E6%AD%A3%E4%B8…

Unity で File (Local) ID を元に Object を検索したい

まあ普通にやっていてそんなケースは無いと思うのですが、以下の場合。 Unity のシーンファイルを解析中 YAML のタグ情報は使えない みたいな場合、 GetComponentsInChildren<T> からがんばって探すことになります。 そういったときのやり方。 まずは、以下のプ</t>…

Docsify CLI を使って快適にドキュメントを書きたい

Markdown to Documentation Tool として Docute を使っていたけれど、 知らないうちにアクティブにはメンテナンスされなくなっていたので、 Docsify に乗り換えました。 今回はそのお話です。 Docsify には docsify-cli があって、それでプレビューすること…

JavaScript で型定義ファイルを Global に宣言したい

TypeScript 使うまでもない単体の JS ファイルでも d.ts を使いたい時ってあるじゃないですか。 そういうときのあれ。 例えば、 window に Docute というオブジェクトを生やしたこんな型定義があって。 // 面倒なので一部だけ type DocuteOptions = { target…

Unity で Animator Controller を動的生成したい

前回、 Animation を動的に生成しましたが、 Controller の方はテンプレートでした。 今回はそこも C# Script から生成してみました。 ちなみに動機は同じですが仕様上不可能だと分かったので供養としておいておきます。 Animator Controller の生成自体も、…

Unity Editor のカスタムエディター上で配列を良い感じに扱いたい

配列を出すためのメソッドが標準で用意されていなかったので、メモしておきます。 例えばこういう配列があったとして。 [SerializeField] private VRCAvatarDescriptor[] _avatars; これをカスタムエディター上で良い感じに表示して欲しいとき、 下のように …

PowerShell で動的に関数を定義したい

PowerShell で動的に関数を定義して、それを使えるようにする方法。 実のところ前の記事に出てきてるのだけれども。 # こんな感じで $ Set-Variable -name DynFunc -value 'function dyn() { echo "Hello" }' -scope global $ Get-Variable DynFunc -ValueOn…

Valve Index のエラーとの戦いの記録

数日ぶりに Index を立ち上げたら認識エラーになって動かなかったので、 動かすまでの戦いの記録。 もしかしたら誰かの役に立つかもしれないので残しておく。 購入情報: VALVE INDEX VR KIT (V003683-10) ツクモネットショップで 2019/11/28 出荷分 だいた…

Oculus Rift S で Knuckles + Full-Body Tracking をやりたい

興味本位で Oculus Rift S + Knuckles (Index Controller) のキメラ構成でやってみたかったので、 試しにやってみたメモです。 テストしたのは VRChat ですが、ちょっとちらつく以外は SteamVR で動いたので、 その記録として残しておきます。 動かしたいも…

Windows の Terminal 環境を整えたい

整えるというか、普段仕事で使っている macOS / Ubuntu に合わせるって言うのが近いけども。 Windows の環境をいろいろいじっていくメモ。 前提環境: Windows 10 Pro WSL2 じゃないよ! Windows Terminal 1.1.2021.0 PowerShell Core 7.0.3 (x64) Rust 1.44…

Unity で Animation を動的生成したい

元は VRChat 関連だけど、アバターの GameObject のツリー構造に依存せず、 自由にギミックを仕込む為の仕組みを作りたかった。 ただ、そのまま anim を配布しただけだと対応できないので、動的に生成してみました。 Animation を動的に生成するには、以下の…

VRCSDK2 から VRCSDK3-AVATARS へ移行したときに気をつけること

VRChat の Avatars 3.0 なるものがでるようなので、早速入れて触ってみました。 が、既存のプロジェクトをアップグレードすると動かない、なぜ。 原因は Define Symbols にありました。 Unity の Player Settings から、 Configuration セクションにある以下…

Parcel Bundler を使ってるときに、 manifest.json までビルドされるのをなんとかしたい

つい最近気がついたのだけども、どうやら Parcel で manifest.json を含んだ index.html をビルドすると、 JavaScript としてコンパイルされてしまうらしい。 ~それに気がつかず約半年 ServiceWorker を消すスクリプトが動いていなかったようだ~ それの防ぎ…

TypeScript で配列かどうかを型付きで判別したい

下のような型をもつ変数 obj が提供されていて、 これが number なのか number[] なのかを区別したいとき。 type Value<T> = T | readonly T[] | undefined | null; declare const obj: Value<number>; こういう文法が使えるのを必要がなかったので知らなかったのだけど</number></t>…

Unity のエディター拡張を DLL 形式で配布したい

C#

Unity のエディター拡張とかでソースを公開したくない場合とか、 追加参照が必要なときに DLL で配布すると良い感じに出来たりします。 そういうときのための、 DLL でエディター拡張を作る方法についてのメモ。 前提環境は以下の通り: Windows 10 Microsof…

Unity で Humanoid で作成した Animation を Generic に適用したい

VRChat とかで、意図的に Humanoid だったものを Generic にする場合など、 Humanoid で作った Animation を Generic に適用したい場面があります。 そういうときの解決方法。 解決方法は簡単で、 Animation を変換してあげれば良い。 そして、そういうアセ…

.NET 公式で定義されている P/Invoke シグネチャーを使って Win32 API を使いたい

C#

暇だったので .NET Foundation (github.com/dotnet) のリポジトリ一覧を眺めていると、 Windows の P/Invoke の定義をしているリポジトリがあったので、 それを使って Win32 API を呼び出してみます。 前提環境は以下の通り Windows 10 Microsoft Visual Stu…

C# で Glob Pattern でファイルを検索したい

C#

Glob Pattern でファイル検索したいですよね、私はしたいです。 ということで、 C# で使ってみるためのメモです。 探してみると、 Microsoft 公式のライブラリがあったのでそれを使います。 Microsoft.Extensions.FileSystemGlobbing NuGet で上記パッケージ…

Unity でプロジェクト外部の参照を追加したい

ここでいう外部の参照っていうのは、 NuGet ライブラリだったり、 .NET Framework には含まれてるけど追加参照が必要なものを指します。 NuGet ライブラリを使う場合 公式ドキュメントでは nuget.org から DL する方法が紹介されていましたが、 いちいち落と…

Particle System の Stop Action が動かないのでなんとかしたい

VRChat で Particle System を当たり判定として使っているときに見つけた仕様。 知らないとハマりがちなので、メモしておきます。 いつも通りの前提条件はこちら: Unity 2018.4.20f1 Personal 実験を行ったリポジトリはこちらにあります。 GitHub - mika-sa…

テクスチャを切り替えられるシェーダーを作りたい

暫く前に、Texture2DArray を作成する記事を書いたのですが、その続きです。 Texture2DArray を元に、テクスチャを切り替えられるシェーダーを作ってみます。 といっても実装は簡単。 まずは Texture2DArray を宣言しておきます。 あとは、テクスチャを切り…

VRChat で自分にしか見えないオブジェクトを実装したい

自分にだけ見えると都合が良いもの (例: 表情確認カメラ) を実装したいとき、 そういったものを実装する為の方法のメモです。 実装する前に、まずセットアップが必要です。 私は VRC 始めてからの 1 年間やってなかったらしいのでやり方も書いておきます。 …

シェーダー開発でも Visual Studio のデバッグ機能を使いたい

いちいち Fragment で色として出力するのよく分からないしやってられない!ということで、 Visual Studio を使ってのデバッグ方法をメモしておきます。 デバッグ方法まではたどり着くんだけど、そこから先がちょっとわかりにくかった。 いつも通り環境は以下…

ドメインシェーダーで一意な ID を頂点に割り振りたい

そんなことをする必要があるかどうかはさておき、やりたくなったのでメモしておきます。 前提環境は以下の通り : Unity 2018.4.20f1 Personal DirectX 11+ 板ポリ (Quad) を分割する Vertex Shader は頂点をそのまま渡すだけのものを、 Hull Shader は下のよ…