Re: [分享] 用緩存mesh和vert shader實作debug draw

看板GameDesign作者 (CJ Cat)時間6年前 (2017/10/01 12:50), 6年前編輯推噓0(006)
留言6則, 2人參與, 6年前最新討論串3/3 (看更多)

10/01 12:04,
不知道Gizmos有沒有符合這邊提到的debug需求?
10/01 12:04

10/01 12:07,
我也覺得跟Gizmos有像
10/01 12:07
Gizmos應該不太一樣 主要能夠在畫面上動態繪製的方法有三種: 1. Debug.DrawLine 2. Gizmos.Draw* 3. Graphics.Draw* (GL.* 因為是效能不佳的immediate mode所以就不考慮了) 三者各有不同,以下分辨一下 Debug.DrawLine 顧名思義,就是debug draw線條 預設只有editor mode的時候會顯示,play mode的時候要額外打開gizmos選項才會顯示 不會被編譯進build輸出的執行檔,所以不會在成品中顯示 Gizmos.Draw* 需要跟物件的OnDrawGizmos綁定才有辦法發揮作用 在物件的OnDrawGizmos中繪製的圖形會成為物體點選區域的一部份 (原理該是繪製時額外在stencil buffer上寫入物件ID,再藉由滑鼠點選像素取樣) 可透過Gizmos.color更改整體圖形繪製的顏色,除此之外無法客製渲染方法 Gizmos.DrawMesh可繪製任意圖形,但是仍有單色且無法客製渲染方法的限制 只有editor mode才會顯示,無法在play mode中當debug draw用 而且不會被編譯進build輸出的執行檔,所以也不會在成品中顯示 Graphics.Draw* 這是泛用型繪製指令,所有mode之下都可以顯示 也無需跟物件綁定,任何script都可以用Graphics.Draw*任意繪製或視覺化資料 可用mesh繪製任意圖形,且可以用客製vertex/fragment/surface shader 效能高、可用shader客製、又各mode可用,所以是我debug draw的首選 唯一做不到的就是像Gizmos一樣可以擴增物件點選區域 但如果有需要的話,把我的cached mesh邏輯抽離出來就可以和Gizmos共用了 以上是我的個人理解 但最近才剛開始研究Unity,可能有搞錯什麼細節 有錯煩請指正 -- Web http://AllenChou.net Twitter http://twitter.com/TheAllenChou LinkedIn http://linkedin.com/in/MingLunChou -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 104.174.112.138 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1506833439.A.F5A.html ※ 編輯: cjcat2266 (104.174.112.138), 10/01/2017 13:05:11

10/01 13:05, 6年前 , 1F
你們是要準備做手機遊戲了嗎xD
10/01 13:05, 1F

10/01 13:11, 6年前 , 2F
蛤?"我們"是說公司?沒有啊,這是我自己興趣使然的研究
10/01 13:11, 2F

10/01 13:12, 6年前 , 3F
對未來生成blog的3D動態範例GIF也很有幫助
10/01 13:12, 3F

10/01 13:13, 6年前 , 4F
之前做數值彈簧範例的時候是有用過一次Unity啦,不過那
10/01 13:13, 4F

10/01 13:14, 6年前 , 5F
次也是摸皮毛,弄出GIF就沒碰了 http://bit.ly/2fHulp4
10/01 13:14, 5F

10/01 13:15, 6年前 , 6F
這次是比較有目的性和系統性的研究+學習
10/01 13:15, 6F
※ 編輯: cjcat2266 (104.174.112.138), 10/01/2017 14:51:29
文章代碼(AID): #1Pq7GVzQ (GameDesign)
文章代碼(AID): #1Pq7GVzQ (GameDesign)