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月30日 星期二
Unity Print Log to Screen
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 處理
坑 -> 如果你的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
這裡介紹漫射會用到的公式 :
所以就會是公式就是 : 光亮度 * 漫射係數 * 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月6日 星期六
訂閱:
文章 (Atom)