如雨露の日記

学んだことを書いていくサイトです。もし誤りがあれば指摘していただけると嬉しいです。

Unity2018.3からAndroidNDKのPathを設定するEditorPrefsのキーが変わっている件について

仕事でUnity2019を使っていて

EditorPrefs.SetString("AndroidNdkRoot", ndkPath);

として設定したにも関わらず

Unable to locate Android NDK.

と表示されて途方に暮れていました。

そんな中こちらのスレッドを見つけました

自分の環境でも、Unityに手動でNDKを設定してEditorPredsをみたところ、確かにAndroidNdkRootR16bというキーが設定されていることを確認しました

Unity2018.3以降でAndroidNDKのPathを設定される方はAndroidNdkRootではなくAndroidNdkRootR16bというキーを指定するようにしてください

Vertex Animation Textureについて調べた

会社の人にVertex Animation Texture(VAT) というものを教えてもらいました。

個人的に面白い手法だなと感激したので調べていたのですが、1ヶ月近く経って忘れかけていたのでまとめておこうというのが今回の内容です。 VATを読み込むShaderを動かしたりコードを読んだりしたのでそのメモになります。

Vertex Animation Textureとは

3Dモデルのフレームごとの頂点の位置情報や法線情報が保存されたテクスチャのことです。 1pixelに1頂点の情報が保存されており、テクスチャのサイズは横が頂点数、縦がフレーム数が一般的のようです。

プロジェクト

椿さんのブログで、Unityで使えるテクスチャへの書き込みと読み込みの両方のサンプルがあるライブラリが紹介されていました。 tsubakit1.hateblo.jp ライブラリはこちら github.com

使い方は椿さんのブログで紹介されているため、そちらをご覧ください。

以下はライブラリのShaderの内部を読んでいた際にいくつか引っかかったのでその点のメモです。

#pragma multi_compile ___ ANIM_LOOP
// キーワードを定義しキーワードごとに分岐した処理を記述できる __は定義されていない場合の分岐

tex2Dlod
// vertex shader内でtextureを参照する場合はtex2Dではなくtex2Dlodを使う

float4 _PosTex_TexelSize;
// {TextureName}_TexelSize はtextureのsize情報を含む

Shaderの記述に関してはこちらを参考にすると良いと思います http://unitech.hatenablog.com/entry/2015/03/11/001953#VFShader

Unityのローカルストレージの話

*Unity プログラミング・バイブルを読んだ自分用のメモです

データの保存先

Application.presistantDataPath

ユーザーの設定や不変なキャッシュデータの保存先はこれを使うのが一般的。

ただし、iOSの場合ここで保存したものはiCloudへバックアップされるので不必要であればUnityEngin.iOS.Device.SetNoBackupFlag(path)で明示的にバックアップ対象外であることを示す。

Application.streamingAssetsPath

 読み込み専用のデータを置く場所。 StreamingAssetsと呼ばれるフォルダーに配置したファイルはビルド先のプラットフォームの特定フォルダにエンコードされることなく保持される。

Application.temporaryCachePath

一時的なデータを保持して置く。OS側から勝手に削除される可能性があるため、永続的なデータはここに保存しないこと。 こちらはiOSiCloudのバックアップの対象にはならない。

Application.dataPath

プロジェクトのAssetsのパスを返す。 Editor拡張などで使うことが多い。

Railsでセッションの保存を指示している場所を探してみた

お久しぶりです。ふと思ったけどこのブログタイトル詐欺もいいところですね。

自分は大学を卒業して社会人になりました。

では早速本題へ。

最近、自分はRuby on Rails チュートリアル:実例を使って Rails を学ぼうでRailsの勉強をしています。

このサイトでログインしているユーザーのIDをcookieに保存させるという演習があります。

そこ自体は問題もなく処理できていてログアウト処理も完成したのですが、ふとブラウザを確認するとログアウト後もcookieが保存されていました。

試しにcookieを削除してメインページを再読み込みしてみると↓

f:id:ninataka_japan:20170803204511p:plain

f:id:ninataka_japan:20170803204531p:plain

なんかある・・・もう一度削除して再読み込みしてもまた存在している・・・

ということで今回のcookieはどこから指示されてset-cookieに書き込まれたのかを調べました。

結論から言うとここのファイルの中のmake_set_cookie_headerメソッドで書き込みの指示をしていました。 write_cookie?メソッドがtrueだったらcookieに書き込むように指示しています。 ではwrite_cookie?メソッドの中身をみてみると。

request.ssl? || !cookie[:secure] || always_write_cookie

この3つの設定のうちどれか1つでもtrueだったらcookie保存するようです。

always_write_cookieが怪しすぎる(なんでこんなものがあるのか)

この変数が設定されている場所を探してみます(ここでした) どれどれ

config.action_dispatch.always_write_cookie = Rails.env.development? if config.action_dispatch.always_write_cookie.nil?

dev環境だとtrueになりますね。まじかよ。

request.ssl? || cookie[:secure]

も調べてみました(WEBで)

request.ssl?はhttps通信になっているかを返すらしいです。(参考サイト

!cookie[:secure]はsecureに設定されているcookieは送信しないよってことみたいです。(参考サイト

なんで!つけてるのかと思いましたがrequest.ssl?も合わせて考えるとそりゃそうかって感じですね。

本番環境でhttps通信じゃないのにsecure属性のcookie送ることになってしまう・・・

自分の場合はcookie[:secure]とalways_write_cookieがtrueだったのでページを再読み込みしたり移動するたびにset-cookieがヘッダに含まれていたんですね。

なるほど

Puredata拡張オブジェクトのWindowsコンパイルする方法

今まで下のサイトの通りにPure Dataのコンパイルを行っていたのですが、初期の設定が面倒だったので別のやり方が出来ないのか調べてみました。

theartofzero.php.xdomain.jp

 

ぶっちゃけ自信はないのでもし間違っていれば指摘していただけると泣いて喜びます。

dll開発してればみんなVisual Studioは入れていると思うのでインストールしている前提で話を進めます。

Visual Studioをインストールしていれば入っているであろう開発者コマンドプロンプトを開き、プロジェクトのフォルダへ移動。

フォルダ内には必要なライブラリーも含め.libが存在するようにしてください。

んで、これを入力(Pd公式のチュートリアルのhelloworldをコンパイルしてます)。

cl /LD helloworld.c pd.lib /link /export:helloworldsetup

~.cやexport:~の部分は各自適切に置き換えてください。

もしライブラリー追加してるのであればpd.libのあとに~.libと入力すればいけるはず。

実行してdllが作成されており、それがPure Dataで問題なく動作していれば成功です。

Inno Setupを使ってみる

ちょっとWindowsインストーラーを作成することになったので色々調べてました。

有償で高機能なものはある程度みつけられたのですが、とある機能を実装したかったのと無償で商用利用したかったのでそれらは使うことができません。(金払え)

そこで探している最中にみつけたInno Setupを利用することにしました。

Inno Setupはオープンソースで開発されているインストーラーの作成ソフトです。

設定をいちいち書いてく必要がありますが、その分自由度が高いです。アイコンが差し替えられたりとかインストール後にサイトに飛ばしたりとか、定数でOSのパスの問題を解決してくれてるのはありがたい。

インストールとかは公式から各自やってください(ぶん投げ)

あ、あとチュートリアル的なサンプルコードと記述の方法はこちらを参考にしてください。こちらのサイト様が優秀すぎて私が基本的なことを書く必要がないですね。

何かわからないことがあれば、英語で調べると大体他の人がやろうとしててstackoverflowあたりに同じことが質問されているはずです。

次の更新時にはInno Setupを使ったインターネットからのダウンロード処理かZipの解凍処理を書くと思います。(タイトル詐欺だと今気が付いた)

Visual StudioでPuredataのデバッグをする

お久しぶりです生きてます。

今回は研究室で使ってるPuredataの記事です。

Puredataって何ぞという方はぐぐってくださいませ~。

といっても今回の記事はそんなに大したことありません。

Puredataは自作のオブジェクトを作ることができますが、デバッグの手段がないと色々と不便なので調べました。

作業量はほとんどありません。

まずはVisual Studioのプロジェクトのプロパティを開いて

構成プロパティ→デバッグを選択。

コマンドにPuredataのexeを選択し、作業ディレクトリにPuredataのbinを選択してください。

f:id:ninataka_japan:20160619230232j:plain

これでビルド時にPuredataが起動します。

設定が終わり、コードも作成したらデバッグを始めましょう。

f:id:ninataka_japan:20160619230949j:plain

ローカル Windows デバッガーのボタンを押せばビルドと同時にPuredataが起動します。

あとはPuredataからビルドしたオブジェクトを読み込んで実際に動作させます。

ブレークポイントが設定できるので、それを上手く利用してデバッグしていきましょう。