嗚嗚喔學習筆記: 四月 2019

搜尋此網誌

2019年4月30日 星期二

Unity Print Log to Screen

      
using UnityEngine;
using System.Collections;

public class MyLog : MonoBehaviour
{
 string myLog;
 Queue myLogQueue = new Queue();

 void Start()
 {
  Debug.Log("Im Log");
  Debug.LogWarning("Im Warning Log");
  Debug.LogError("Im Error Log");
 }

 void OnEnable()
 {
  Application.logMessageReceived += HandleLog;
 }

 void OnDisable()
 {
  Application.logMessageReceived -= HandleLog;
 }

 void HandleLog(string logString, string stackTrace, LogType type)
 {
  myLog = logString;
  string newString = "\n [" + type + "] : " + myLog;
  switch (type)
  {
   case LogType.Error:
   case LogType.Exception:
    newString = "" + newString + "";
    break;
   case LogType.Warning:
    newString = "" + newString + "";
    break;
   default:
    newString = "" + newString + "";
    break;
  }

  myLogQueue.Enqueue(newString);
  if (type == LogType.Exception)
  {
   newString = "" + "\n" + stackTrace + "";
   myLogQueue.Enqueue(newString);
  }
  myLog = string.Empty;
  foreach (string mylog in myLogQueue)
  {
   myLog += mylog;
  }
 }

 void OnGUI()
 {
  GUILayout.Label(myLog);
 }
}

2019年4月24日 星期三

UnityShader初體驗 - 6.2.4 高光反射 Phong && Blinn-phong








ㄠㄍ

高光反射公式 : phong

Mgloss -> 高光係數
v -> 攝影機看的向量



r = l - 2 * (n·l)*n   -> 光跟法向量 的 反射向量
















完整公式 : (C-light · M-diffuse)max(0,v·r)^Mgloss 

高光反射公式 : Blinn-Phong

h
=(v
+l
)
|v
+l |
  

-> h向量就是 攝影機向量 跟 光向量的一半





完整公式 : (C-light · M-diffuse)max(0,n·h)^Mgloss


重點 : 

1. Frag的法向量會從Vectex線性內插得出, " ^Mgloss  " 這裡用了非線性算法,所以直接使用Vectex做計算會怪怪的。



2. Phong 公式裡 v·r 某個臨界值後 v 跟 r 的夾角會超過90度,
然後 v·r 就會變成負數這時候我們就會取成 0。
所以在一個角度後會出現一個奇怪的邊線

Blinn-phong 公式裡 n·h 的夾角永遠小於 90度, 所以沒有這種問題。










2019年4月22日 星期一

Unity & Android 交互的坑

Android 移植Unity

坑  -> 如果你的module 用到其他Jar 也要 "手動" 加入Unity

坑  -> 找不到 Suport.v4 checkSelfPermission ,
   解法 : 需要 Suport.v4.jar 24.1以上才有
   載點 : https://mvnrepository.com/artifact/com.android.support/support-v4/24.1.1


坑  -> android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

使用 runOnUiThread 處理



2019年4月21日 星期日

UnityShader初體驗 - 6.2.3 漫射 Lambert's law && Half Lambert's Law


這裡介紹漫射會用到的公式 : 

通俗的理解 :
下面有一顆球理論上
越是面向光線的方向
就越亮

所以
其中 n·I 簡單說就是如下圖  ( 兩向量之內積 )






所以就會是公式就是 : 光亮度 * 漫射係數 * Max( 0 , 光向量 與 法向量 之內積 )

(光向量 與 法向量 之內積) --> (n·I) --> 因為有可能變成負的這不合理阿??
所以只取正值如下 : 

Max( 0 , 光向量 與 法向量 之內積 )

-------------------------------------------------------------------------------

Lambert's Law - 蘭伯特定律  


公式為 : (C-light · M-diffuse)max(0,n·I)


Half Lambert's Law - 半蘭伯特定律 - 沒有理論基礎只是經驗模型

α & β 通常為 0.5公式為  : (C-light · M-diffuse)(α(n·I)+β)

----------------------------------------



如上圖 
Lamber's Law 計算後在光的另一面會全黑 , 這樣看起來蠻奇怪的
Half Lamber's Law 就不會但這只是經驗模型,就是靠感覺做出來的公式拉~~







2019年4月15日 星期一

2019年4月6日 星期六

Blogger 不見了?? [Fix]

登入時後出現這個
我滿臉問號 怎麼Blogger不見了
下面還出現 "開始使用Blogger" 的按鈕
我不是早就開始使用了嗎o.o??


後來輸入名稱進去後就正常了嚇了我一跳 QQ