神代レポート

Unity Xcode Android 関連のEtc...

体内時計[Android/iPhone] - 昼夜逆転でも健康的になれるアプリ

体内時計

f:id:KoujiroHashida:20200904090705p:plain

このアプリのおすすめしたい人

  • 自分にとっての昼食・運動・睡眠時間を知りたい人
  • 不規則な生活だけど健康的になりたい人
  • 昼夜逆転を直さずに健康的になりたい人
  • 一般的な生活リズムに合わせてられない人

ToDoリストをいくつか試した人にもオススメの一品です!

【 ↓ iOS ↓ 】

 

体内時計

体内時計

  • tai tanaka
  • ヘルスケア/フィットネス
  • 無料

apps.apple.com

【 ↓ Android ↓ 】

play.google.com

UnityのShader基礎に関する簡単な説明とメモ

Surface Shader 関連

↓ 基本的に以下の記事を読みながら、疑問に思った用語を解説しています。

www.atmarkit.co.jp

上記の記事を読みながら補足程度に使ってもらえば学習がスムーズに行くかもしれません。

ShaderLab

Unity上でシェーダーを記述する言語

下記のような構造体を指す

Shader "MyShader" {

Properties {
_MyTexture ("My Texture", 2D) = "white" { }
}

SubShader {
}
}

Properties ( プロパティ定義 )

UnityのInspector上に表示される変数

_MyTexture ("My Texture", 2D) = "white"{}

変数名( インスペクター上の表示 , 型 ) = 初期値

_Glossiness - 滑らかさ

_Metalilic - メタリック度

SubShader

シェーダー本体 ( 実際の処理・計算等を行う )

float ( 高精度 )

浮動小数点値。ワールド空間位置、テクスチャ座標、三角法や累乗・べき乗に使用

half ( 中精度 ) 

浮動小数点値。ショートベクトル、方向、オブジェクト空間位置、HDRカラーに使用

fixed ( 低精度 )

固定小数点数。標準カラーに使用

合成ベクトル / 行列の型

float  =  1.0
float2 = (1.0,1.0)
float3 = (1.0,1.0,1.0)
float4 = (1.0,1.0,1.0,1.0)

float4x4 = 4x4変換行列

half4 = (.x, .y, .z, .w)
half4 = (.r, .g, .b, .a)

fixed4 = (1.0,1.0,1.0,1.0)

Surface Shader ( サーフェイスシェーダー )

シェーダーの一種。明るさや影の影響を受けるシェーダー。
Unity標準のシェーダー

Vertex and Fragment Shader ( 頂点・フラグメントシェーダー )

シェーダーの一種。明るさや影の影響を受ないシェーダー。
サーフェイスシェーダーよりも細かく設定することができる上級者向け。

Fixed Function Shader ( 固定関数シェーダー )

シェーダーの一種。古いハードウェアのためのシェーダー。
単純な機能のみ

LOD ( Level Of Detail )

状況に応じてSubShaderを切り替える仕組み
例えば負荷が高い時や、遠くにある物を描画する時に
低負荷処理のSubShaderをスクリプトから適応することができる!

CGPROGRAM ~ ENDCG

シェーダープログラムの「開始位置」と「終了位置」

#paragma surface surf Standard fullforwardshadows

これから使用する処理の宣言

pragma宣言 サーフェスシェーダー使用宣言 関数名 ライティングモデル ランディングモデルオプション

Specular ( スペキュラー )

視点と物体の角度によって光源自身が写り込んでできるハイライト

Standard - 物理法則をベースとしたシェーディング

Lambert - 拡散反射光

入射光と法線で導き出した明るさ。
計算からスペキュラーは無視される(計算されない)ので光沢はない

BlinnPhong - 鏡面反射

物理ベースではないが光が反射する。
Standardの軽量版だが若干リアリティに欠ける。

#pragma target 3.0

これから使用する処理の宣言
 
pragma宣言 ターゲット宣言 シェーダーモデル

sampler2D - テクスチャの型 ( 2D )

UV座標 - テクスチャ座標

uv_◯◯

uv_MainTexなど 「 uv_ 」 を頭につけることで、自動的にテクスチャ座標設定(TilingとOffset)が
適用されたUV座標が入ってくる

Input - 入力構造体

Unityから送られてくるテスクチャ座標が入った情報。

Albedo ( アルベド ) - 外部からの入射光に対する反射率 (fixed3)

Alpha ( アルファ )- 透過度 

Gloss -  鏡面強度

FallBack "Diffuse" - すべり止め

FallBack "すべり止めシェーダー名" 
SubShaderが対応していない場合に適応されるシェーダー

Diffuse ( ディフューズ ) - 拡散反射

光を反射する強さ

Ambient ( アンビエント ) - 環境光 

反射方向がなく、モデル全体に均等に色を与える。ただし影響は光源からの距離に比例する

Specular ( スペキュラー ) - 鏡面反射

視点と物体の角度によって光源自身が写り込んでできるハイライト(ボンネットとかで光る眩しい部分のやつ)

Normal - 法線

光の反射する角度。

Normal Map - 法線マップ

法線の情報を色情報として書き込んだテクスチャ。
平面であっても法線を工夫することで凹凸を作ったりできる。(ポリゴンの頂点数が減るので負荷を抑えられる)

Emission - 放出

表面から放出するライトの光の色と強さ。
発光している物を表現する時に利用するもの(スマホ画面やブレーキランプなど)
1を超えるとHDRが適応される

HDR (HighDynamic Rage)

人間的に色や光を処理する仕組み
暗いところにある光がより眩しく見えたり、明るすぎる所でも物の判別ができたりする。
通常なら眩しすぎる物があると画面が真っ白になってしまうが、人間の目は発光物以外の物が認識できたりする

UnpackNormal  - 法線情報を法線マップから取得する関数

UnityCG.incに定義されている法線情報取得関数

UV ( The base texture coordinates of the mesh )

ポリゴン単位でのテクスチャ画像の任意の位置を貼り付けるもの

Tiling

UV座標を何回繰り返すか

Offset

UV自体の座標を移動するパラメーター

Out

出力するUVの値

RenderQueue - オブジェクトを連打リンスする順番

 

Vertex / Fragment Shader 関連

 

#pragma vertex vert

これから使用する処理の宣言

pragma宣言 ヴェール関数使用宣言 関数名

#paragma fragment frag

これから使用する処理の宣言

pragma宣言 フラグメント関数使用宣言 関数名

Vertex

頂点の位置を決める

Fragment

ピクセルに塗る色を決める

appdata

モデルから頂点やUV、法線などの情報などを受け取る

v2f ( vertex to fragment )

vert関数で変換されたappdataの一部の情報が渡ってきます。
ピクセルすべてでこの関数が実行されます。

POSITION - 3D空間の頂点情報 

NORMAL - 法線ベクトル

TEXCOORD0,TEXCOORD1,... - テクスチャ座標や位置や方向などの情報

COLOR0,COLOR1,... - 色情報

SV_POSITION - 変換後の頂点情報

SV_TARGET - ピクセルの色情報

SV_TARGET1,SV_TARGET2,... - 他のレンダリング対象に対する色情報

SV_DEPTH - ピクセルの深度情報

UnityObjectToClipPos - 3D空間を2D空間へ変換する関数

Tex2D(_MainTex, i.uv) - UV情報と画像から色情報を取得す関数

セマンティクス

シェーダープログラムの入力や出力の値が、何を意味するかを表すもの。

Cull - ポリゴンのどちら側を描画するか制御

Cull Back : 裏側を描画しない
Cull Front : 表面を描画しない
Cull Off : どちらも描画する

Zwrite - 深度計算した結果を反映するかどうか

ZWrite Off : 反映させない。
ZWrite On : 反映する。デフォルト

ZTest

深度計算の判定基準
ZTest Less : すでに描画されているオブジェクトより近い場合のみクリア!
ZTest Greater : すでに描画されているが前にある場合のみクリア!
ZTest LEqual : すでに描画されているオブジェクト距離が等しいかより近い場合クリア ( デフォルト )
ZTest GEqual : すでに描画されているオブジェクトが前にある場合か完全に重なっている場合クリア
ZTest Equal : 完全に重なっているときのみクリア
ZTest NotEqual : 完全に重なっているとき以外クリア
ZTest Always : 常にクリア

 #pragmaのalphaオプジョン

#pragma surface surf Standard alpha

alpha : 透過部分を存在しているように見せる
alpha:auto : alphaと同じ
alpha:blend : アルファブレンディングを可能にする
alpha:fade : 透過部分を存在していないように見せる
alpha:premul : プレマルチプライドアルファ透明度を可能にする
alpha:VariableName : アルファカットアウト透明度を有効にする

 worldNormal - 法線ベクトル

 表面に対して垂直方向のベクトル

viewDir - 視線ベクトル 

 カメラが向いている方向のベクトル

screenPos - スクリーンベクトル 

画面上のベクトル float2 

dot(x,y) - 2ベクトルの内積を求める 

mul(x,y) - 行列乗算

saturate(x) - xを0 ~ 1にクランプ

step(hoge,x) -  x < hoge ? 0.0 : 1.0

clip(x) - 値が0より小さい場合、ピクセルを破棄する 

frac(x) - xの小数部を返す

fmod(x,y) - x/yの浮動小数点の剰余を返す

atan2(x,y) - 2つの値 (x,y)のアークタンジェントを返す

discard フラグメントシェーダーでピクセルの結果を出力しない

【2020年保存版】現時点で最強と思われるタスク管理・ToDo おすすめアプリ

iToDo

f:id:KoujiroHashida:20200422073848p:plain

このTODOアプリのおすすめポイント!

  • シンプルで説明いらず!
  • すべての操作が直感的に使える!
  • 邪魔な機能がない!
  • 洗練されたデザイン!

ToDoリストをいくつか試した人にもオススメの一品です!

 

【 ↓ iOS ↓ 】

iToDo

iToDo

  • tai tanaka
  • 仕事効率化
  • 無料

apps.apple.com

 

【 ↓ Android ↓ 】

play.google.com

Exception: Calling TargetGuidByName with name='Unity-iPhone' is deprecated.【解決策】

Error内容

Exception: Calling TargetGuidByName with name='Unity-iPhone' is deprecated. There are two targets now, call GetUnityMainTargetGuid() - for app or GetUnityFrameworkTargetGuid() - for source/plugins to get Guid instead.

解決方法

PBXProject proj = new PBXProject();
string
 targetGuid = proj.TargetGuidByName("Unity-iPhone");

↓↓↓↓ 上記を以下のように変更する ↓↓↓↓

PBXProject proj = new PBXProject();
string
 targetGuid = proj.GetUnityMainTargetGuid();

 原因

Unity-iPhoneが複数存在しているため

ListenAndServe(): listen tcp :8080: bind: address already in use. ~ Go httpサーバーを停止する方法 ~

Error内容

ListenAndServe(): listen tcp :8080: bind: address already in use

解決方法

1:以下のコマンドで8080ポートを使用しているプロセスを探します

lsof -iTCP:8080 -sTCP:LISTEN

結果例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
__debug_b 97092 koujiro 4u IPv6 0x33c50906e0dbd8d3 0t0 TCP *:http-alt (LISTEN)


2:見つけたプロセスを停止します

kill -9 97092

97092の部分はそれぞれ違います。
PIDに応じて変更してください

 原因

8080ポートを他のプロセスが既に使用しています

解説

lsof:プロセスが開いているファイルの一覧を表示するコマンド
-iTCP:見つけたいTCPのポート番号を指定
-sTCP:LISTEN:LISTEN状態にあるTCP/IPに限定します
kill -9:デフォルトよりも強制的に終了

自分用 Gitコマンド早見表

全追加・コミット・プッシュ

git add --all
git commit -m "comment"
git push -u origin master

直前のコミット取り消し

git reset --hard HEAD^
  • --hard:コミット取り消した上でワークディレクトリの内容も書き換えたい場合
  • --soft:ワークディレクトリの内容はそのままでコミットだけを取り消したい場合
  • HEAD^:直前のコミット
  • HEAD~{n} :n個前のコミット

直前のAddの取り消し

git reset HEAD

強制的にPushする

git push -f origin master

Cloud Source Repositoriesからクローンする

gcloud source repos clone リポジトリ名 --project=プロジェクト名

参考・その他コマンド

qiita.com

error: src refspec master does not match any【解決策】

Error内容

error: src refspec master does not match any
error: failed to push some refs to 'https://source.developers.google.com/p/*****/r/*****'

解決方法

以下のコマンドを実行することで解決します!

touch initial
git add initial
git commit -m "initial commit"
git push -u origin master

原因

リポジトリが空であることが原因です。

解説

# 空initialファイルを生成しています
touch initial

# 作成したinitialファイルをgitに追加しています
git add initial

# 現状のgitをコメント付きでコミットしています
git commit -m "initial commit"

# マスターにプッシュしています
git push -u origin master