Shader Forgeでcluster用のShaderを作る

Shader Forgeでclusterに対応したすべての端末で使用できるShaderをつくりたいという場合は
基本的には以下、二点にチェックを入れるだけで大丈夫です。

「Compile to all platforms」でMetal対応に
「Force Shader Model 2.0」で古いAndroid端末にも対応できます

ただし、上記二点にチェックを入れたとしても軽量化がされるわけではありませんので、重いShaderは重いままです。モバイルで使うShaderは処理を軽くしておきましょう。


自作のUnityPackageを作ってみる

重要なことはここに書かれているので補足をつらつらと書いていきます
https://docs.unity3d.com/Manual/CustomPackages.html

C#スクリプト(.cs)はAssembly Definition Filesがないと読み込まれない

.asmdefがないとcan not be loadedとなります。作り忘れないようにしましょう。
MyCompany.MyFeature.Runtime.asmdefとかと書くのがよさそうです

(Assembly Definition Filesについては↓
http://tsubakit1.hateblo.jp/entry/2018/01/18/212834

ssh接続にすればプライベートリポジトリでもPackageにできる

ssh接続にすればgithubのプライベートリポジトリでもPackageにできるようです。

注意点としては、パスの通ってるGitクライアントからgithubへssh接続できるようにしておかなければいけないということです。SourceTreeなどのGUIクライアントを利用していて、なおかつパスを通してるGitが別にある方は注意


TrustedInstallerが権限を持っているフォルダを削除

TrustedInstallerが権限を持っているフォルダ/ファイルを削除しようとするとこんなのが出てきます。

うるせぇ!削除させろ!!

という方は下をcmdで実行すれば削除できるようになります。

takeown /F "H:\hoge\hoge" /R /A
icacls "H:\hoge\hoge" /T /grant Administrators:F

権限取ってアクセス許可を変更してるだけ


Wacom MobileStudio Pro 16 バッテリー摘出

我が家のWacom MobileStudio Pro 16 i7 512GB 君ですが、液晶がだんだん浮き出し…(恐怖
いよいよバッテリの膨張がヤバくなってきたので、バッテリー摘出手術を行いました

まずはプラスチックパーツを外します

こちらは両面テープのみ(!?)
こちらはシールの下にビスが二本隠れています
こちらはツメと両面テープ
角の方からパチパチ外していくのが楽です

ここまで終わったら黒いビスたちを外します。外周4+バッテリー直上4本の計8本を取り外します。

そして、両面テープでガッチガチに固定された液晶パネルを慎重に外していきます。(両面テープどんだけ好きやねん
スピーカーの下やSDカードリーダーの下に見えてるやつが液晶パネルになります。間違っても直接そこを押さないように!外縁部を押して外していきます。

ケーブル引きちぎらないように注意しつつ外していくとやっとバッテリーが見えてまいりました。

と、ここでIO機器まわりのケーブルを取り外すと電源が付きました…
どうなってんのや(怖すぎる

気を取り直して…シャットダウン後に、これまた両面テープでガッチガチに固定されたバッテリーを取り外していきます

デデーン
明らかに膨らんでますね
「ぷっくり」なんてレベルじゃないですよ…

液晶がカチ割れた人もいるらしいですね…Wacomさん、これは回収した方がいいんじゃないの?
スマホだったら間違いなくリコール案件ですよ…


GrabPass {}が便利

clusterやVRChatといったサービスではC#のスクリプトが利用できませんが、Standard Assetsに入っているような

ちょっとリッチなWaterを手軽に利用したいんじゃ~ということがあると思います。(Asset Storeからよさげなヤツ探すのすらめんどくさいときとかありますよね?)

そんなときにGrabPassを使うとShaderだけでSSR(Screen Space Reflection)的なことや屈折表現が簡単にできるよというお話です。

Subshader {
	GrabPass {}
	Tags {"Queue"="Transparent" "RenderType"="Transparent"}
	Pass {
CGPROGRAM

~

#include "UnityCG.cginc"

sampler2D _GrabTexture

実際にStandard AssetsのWaterを魔改造すると↓のようになります

Unityに感謝


UnityHDRP+MMDBridgeで動画を作ってみた

https://youtu.be/xRwXb1ULnlk

タイトルの通りなんですが、何点か引っかかった点があるためご紹介します。

今回の構成

Unity 2018.4.22f1
・Alembic 1.0.6
・High-Definition RP 4.10.0
・Shader Graph 4.10.0
・Unity Recorder 2.2.0


WaterShaderの挙動がおかしい!

今回は、ShaderGraphで作成したオリジナルのWaterShaderを利用していたのですが、WaveOffsetをTimeNodeのTimeを利用して行っていました。

ところが!
なんとこのTimeはDeltaTimeでは無いようで(DeltaTimeもTimeNodeにあるのですがこちらも機能せず…

UnityRecorderで撮影を行うと、水が高速で波打つなんてことになってしまいました。
今回はC#⃣ScriptからNodeへ直接DeltaTimeを渡してあげることで解決しました。こちらが参考になると思います。
https://forum.unity.com/threads/recorder-writting-exr-files-with-time-based-shader-are-wrong.662551/

基本的には↑のまま、少しだけ処理速度改善

using UnityEngine;

public class FunctionRenderTime : MonoBehaviour
{
[SerializeField] Material waterOffset;
[SerializeField] float timingValue;
[SerializeField] float timer;
static string vectorNodePropertyName = "Vector1_8A6A3EC4";

private static readonly int vectorNodePropertyID = Shader.PropertyToID(vectorNodePropertyName);

// Start is called before the first frame update
void Start()
{
waterOffset.SetFloat(vectorNodePropertyID, timer);
}

// Update is called once per frame
void Update()
{
timer += timingValue * Time.deltaTime;
waterOffset.SetFloat(vectorNodePropertyID, timer);
}
}

なんか出力結果おかしくない?

なんか黒い部分がありますね

こりゃなんだ、というわけで…
実際は黒いわけではなくRGBにはノイズ、Aチャンネルは黒よりのグレーになっています。

結局こちらの問題の原因はいまいちわかりませんでした。
HDRPのBugでしょうか?最新のバージョンでは直っていることを願うばかり

とりあえず今回はゴリゴリpngそのものを修正していきました…


おまけ HDRPだと簡単にきれいに作れて良いですね~


Androidにapksをインストール

Windows編(他はやったことない

Javaをインストールする(パスを通す

https://developer.android.com/studio?hl=ja でAndroidStudioをインストール
AndroidStudioで適当に一つプロジェクトを作る(debug.keystoreを作成するため

パスを通してadbコマンドを使えるようにしておく(標準ではC:\Users\ユーザー\AppData\Local\Android\Sdk\platform-tools 

https://developer.android.com/studio/command-line/bundletool?hl=ja bundletoolをインストール

.aabを用意

デバイスを接続したらadb devicesコマンドを実行
接続されていて権限もあることを確認

cmd で
java -Xms128m -Xmx768m -jar bundletool-all.jar build-apks --bundle=hoge.aab --output=hoge.apks
を実行して.addを.apksにする

INFO: The APKs will be signed with the debug keystore found at 'C:\Users\ユーザー\ .android\debug.keystore'.
が出てることを確認してね
これが出てないと端末にはインストール出来ません

↑ができてないと
Error: Installation of the app failed. com.android.tools.build.bundletool.model.exceptions.InstallationException: Installation of the app failed.
がでる

java -Xms128m -Xmx768m -jar bundletool-all.jar install-apks --apks=hoge.apks
開発者モードの端末を接続してインストール


Unity Asset Storeにアセットを出品してみた

Unity Asset Storeにアセットを出品してみたのでその記録です

まず、パブリッシャー登録をどっからすればいいんだい?となります
結論から言えば以下
https://publisher.assetstore.unity3d.com/
のCreate a new Unity Asset Store Publisher.という文字リンクから(アイコンもないとは…

あまりにも分かりにく過ぎて… Asset Storeから行けるのかと思っていたよ(リンク自体は Asset Storeページのどこかに書いてあったはず

で、ゴリゴリ必要事項を記入していきます。
Tax関係の書類もなんかいろいろ書かされます。

アセットそのものはUnityから https://assetstore.unity.com/packages/unity/asset-store-tools-115
を利用してアップロードします。

その後、説明やらサムネイル(最低5枚)やらを用意して審査に移りますが

審査結果が届くまでにそこそこ時間がかかります
それもタイミングによって早かったり遅かったり
三週間ぐらい待たされることもあります!あきらめずに待ち続けよう!!

で、機械的な定型文で「Modelのアセットなら説明文に頂点数とメッシュ数書いて、テクスチャの枚数と解像度もかけな?」などという文章が送られてきます。

それらを無事クリアすると
晴れて公開!!

https://assetstore.unity.com/packages/3d/props/interior/modular-catwalks-asset-pack-162943

なんだかんだ一か月半ぐらいかかった…


フィンランド旅行

まずはヴァンター国際空港からHelsinki Central Railway Stationへ

その後、4番に乗りホステル近くまで

この写真の風景に見覚えのある方も多いはず。今回は日本人が多めのユーロホステルに泊まりました。(日本人が多すぎて海外感が薄かったです

 

とりあえず近くのKマーケットでこの日の夕飯を買いました
日本と違うのは個別包装ではないパンや野菜の買い方ぐらい

翌日は9時のフェリーでスオメンリンナ島へ

潜水艦は冬季は休業中

実はちょうどこの潜水艦の写真を撮った後あたりで、日本人の方に声をかけられ少しだけお話ししていました。実はこの方は同じ船に乗っていた方で、その他にも何回か行動のタイミングが重なり、柄にもなく運命のようなものを感じていました(笑)

ただ結局、僕が「人見知り」を発動したので話を早々に切り上げてしまいました。今となっては非常に申し訳なく思っております。

この後は、動物園に行くつもりで16番のバスに乗ったのですが、いざ着いてみると16時までだということが判明しこの日はあきらめて市街散策に予定を変更

Design Museoに行ってみたり
中央駅近くのビル

ロシア横断旅行記

S7航空で成田からウラジオストクへ

1日目 夜に空港につくタクシーお兄ちゃんと両替おじさんに絡まれる。寒いが、北海道ぐらいか、耐えられないような寒さではない。1℃。予約しておいたタクシー?に乗り、そのままホテルへ。車の横を他の車が猛スピードで駆け抜けていく。日本で言うところのカーチェイスである。どうやらこれが「普通」のようだ。突然Uターンする車もテールライトがついてない車も。制限等はないのだろうか…
無事ホテルに到着す。スーパーで買ったレトルト惣菜をホテルの電子レンジで温めて食べた。まぁ普通に美味しかったのだけれど、後でこれが御馳走だったことを知る。70ルーブル。同スーパーで購入したおにぎりはあまり美味しくはなかった。

日本のものがそのまま並ぶスーパー

2日目 朝食は昨日のスーパーで買ったカップ麺を食べた。普通のカップ麺、格安(45ルーブルぐらい?)だったが不味くはない。

ウラジオストク市内を要塞博物館を探して彷徨った後、イタリアンレストランに入る。暖かくて料理も美味しい。対応もよく愛想笑いも通じた。

夜は街を散策した後、王様寿司にて創作寿司を食べた。結構高級店っぽい。夕方散策した場所で日本人が両替を装った詐欺にあっていたことを知る。

3日目 朝食はバナナとパン。電子レンジがあるので何でも美味しく感じる。駅に荷物を預け、昼食の北朝鮮料理を食べに。帰りはタクシーに乗り、C-56潜水艦を見に行く。

その後、海軍歴史博物館に。入り口のおじさんに片言の日本語で話しかけられる。その後、ロシア訛りの英語と日本語でしばらく会話する。上階の元軍人?さんに「カタナ」「カタナ」「カタナ」「カービンアリサカ」「サクラ」「カブト」と説明を受ける。外に一通り兵器が置いてあるが、状態は要塞博物館のほうが良い。

市場を少し見た後、スーパーで水8Lとコーラ4Lを補給して、荷物を回収して、車掌に切符とパスポートを見せ、ピロシキを買い電車に乗り込む。4人部屋は上部ベッドも下部ベッドもそこそこ広い。起き上がっても頭をぶつけるような事はなく、飛行機やバスに比べれば快適である。揺れはするがこの日はまだ寝られた。

4日目 朝、目覚めて朝食を待つ、本当に来るのだろうかなどと冗談を言い合っていると窓をノックする音。サラミとトマト入り卵焼きとパンとラズベリージュースが手渡された。

shaderを書いてみたり、本を読んでみたりこの日は退屈はしなかった。

昼食は、スープパスタ・パン・ザーワークラフト・ひえ+ご飯+肉・ティーパック

夕食は、そばの実+魚肉・人参+ヨーグルト+りんご・パン・水

トイレの匂いが気になってくる。夜は速度を上げるようで、跳ねるように揺れる。何度か目覚める。

5日目 朝食は、サラミ・トマト入り卵焼き・パン・ラズベリージュース

昼食は、スープパスタ・パン・ザーワークラフト・ひえ+ご飯+肉・ティーパック

夕食前に駅のそばで地元民が販売するピロシキを買う。

夕食は、そばの実+肉・人参+ヨーグルト+りんご・パン・水

このあたりで、もうお気づきだろうが車内で提供されるご飯はずっとこんな調子である。

そろそろ鉄道の旅に飽きてくる。街の側を通るときのみインターネットへ接続できる。

6日目 これでご飯が変わらなければ流石にやってられんなどと騒いでいたら、朝食が手渡される。昨日とは異なる容器。期待は膨らむ。中身は、チーズとミルク粥。チーズはフルーティーで、ミルク粥は甘い。塩が付属していたが、入れれば更に甘さが際立つ。

余りにも暇なのでこの紀行文を書き殴る。昼食はトマトとキュウリとキャベツのサラダとマカロニにチキンを載せたもの、まぁ美味しかった。トマトスープも野菜が豊富で美味。

その後に、ウラジオストクで購入し持ち込んでいたケーキで同行者のミニ誕生日会を行った。意外と生地がふわふわで美味しかった。(少々身体に悪そうであったが

夕食はキャベツとキュウリのサラダとマッシュポテトとウインナーであった。マッシュポテトが美味。

もうご飯ぐらいしか楽しみがない

7日目 朝ご飯が遅い…が無事届く。昨日より1時間ぐらい遅いか?届いたスチロールトレーを開けると中から出てきたのはトマトをインした卵焼きとサラミ。なぜもとに戻ったのだ。昼食も推して知るべし。水増しご飯&キャベツサラダ&スープパスタであった。

シベリア鉄道の客車はどうやら石炭ストーブを搭載しているようで、ときどき炭の匂いがするのはそのせいのようである。客車もやたらバコンバコン揺れるが、これも寒さのために空気バネが使用できないからということのようである。いろいろと厳しい土地であることを実感する。

8日目 白いスチロールトレーから現れたるは恐怖のミルク粥。甘い…が前回よりも甘くないだろうか。杏入りの豪華なものではなく、本当にお米だけである。昼食はトマトスープに…以下略

時差の関係で1日は平均25時間ぐらいだろうか。長い気がするのではなく長いのだ。

9日目 やはり朝食が遅い…。本日の朝食はトマト入り卵焼きとチーズ。ほぼ毎日出てくるこのトマトであるが、どうやら多くをトルコから輸入しているらしい。トルコとドンパチやって空爆したりしていて大丈夫なのだろうか?

この愛すべきトイレとも今日でお別れ

無事、モスクワに到着し、シベリア鉄道を降りる。

長かったがあまり記憶には残らない一週間であった。メルカトル図法の地図を見ていた関係で後半に一気に進んだような気がする。線路の状態も良いらしく、確かに平均速度も上がっていたようなので、「気がする」のではなく本当に速いのかもしれない。

巨大なRZDのビル、さすが国策…以下略

10日目 目的地である自動車博物館が移転のため閉館中…。仕方ないので、ノリと勢いで「夢の島」 オストロフ・メチティ へ行きました
https://dreamisland.ru/

CGのようなのっぺりとした外観

未完成なところがそこそこあったりして面白かった。

如何にもロシアっぽくて好き
世界観が迷子

その後は宇宙飛行士記念博物館へ行き、 全ロシア博覧センターへ

日本円からルーブルへの両替はウラジオストクで済ますべきだったことが判明(よくよく考えればそれはそう
ウラジオストクの方がレートがいいし、両替所も多い。一応、Bank of Moscowで円/ルーブルの両替ができる&レートも悪くない。

11日目 赤の広場とgarage美術館

12日目 朝食を食べるためにタクシーを呼ぶも乗車を拒否される。仕方なくレニングラツキーバグザールのPaketaで昼食を済ます。その後、アエロエクスプレスで SVOへ向かう。ホームからはSVO行きの電車しか出ていないようで、特にトラブルもなくSVOに到着する。アエロエクスプレスはターミナルDの3階に到着する。出口すぐにショッピングエリアがある。

今回の航空機はターミナルDからの出発のため、そのままターミナルDに入った。入場前に手荷物検査があり、電子機器などは本当に起動/機能するか確認される。その後、my-myで昼食を済ませ、チェックインをした。出国審査では念入りに本人かどうか確認された(顔など目視確認)。そして手荷物検査を通過後、Gateへ。人生初ボンバルディア

フィンランドへ続く