看板 GameDesign 關於我們 聯絡資訊
先貼demo~ https://www.youtube.com/watch?v=yILKJEd9pvE
我原本是在研究全畫面的射線邁進(ray marching) 雖然用了包絡空間階層(bounding volume hierarchy, BVH)優化了不少 但是感覺效能還是沒辦法進步到能夠在遊戲中廣泛應用 (當然如果遊戲本體或主要機制就是全畫面射線邁進則另當別論) 這是我的ray marching優化最終成果demo https://www.youtube.com/watch?v=2T2FqvtXqLw
後來有不少人建議我去看看Clayxels: https://andrea-intg.itch.io/clayxels 它是一個Unity的外掛,使用邁進方塊(marching cubes)方式建構物件 與ray marching同樣是對有向距離場(signed distance field, SDF)取樣 所以同樣可以達到像是黏土般融合物件的效果 再加上用色塊(splat)的方式繪製,就可以達到類似Dreams的效果 (Clayxels算是部分受到Dreams影響) 受到了Clayxels的啟發 我便轉換跑道從ray marching改成研究marching cubes 開頭的demo影片就是目前的研究進度 已經可以達到物件融合和材質融合 接下來就要開始研究優化和工具UX了 以下是我所用到的研究資料 http://www.michaelwalczyk.com/blog/2017/5/25/ray-marching http://www.iquilezles.org/www/articles/smin/smin.htm http://www.iquilezles.org/www/articles/normalsSDF/normalsSDF.htm https://box2d.org/files/ErinCatto_DynamicBVH_GDC2019.pdf https://github.com/erincatto/box2d http://paulbourke.net/geometry/polygonise/ -- Web http://AllenChou.net Twitter http://twitter.com/TheAllenChou LinkedIn http://linkedin.com/in/MingLunChou -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 160.33.168.6 (美國) ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1588213931.A.E5A.html
zxc9764315: 要看起來這麼平滑的話,cube size是多少啊? 04/30 10:54
dreamnook: 04/30 12:44
metallican: 貓大是我的神 04/30 17:03
aiwhat: 要看起來平滑,可以根據與該點相鄰的面重新計算 normal 04/30 20:12
aiwhat: vector,取代原本的 face normal 04/30 20:12
我沒有採用存取鄰近面的方法 每一個方塊是獨立的GPU thread運算 如果要存取鄰近方塊生成的面,會遇到以下兩個問題之一: 1. 需要額外配置跨GPU thread的共同記憶體 2. 需要重算6個鄰近方塊生成的面,會多出6倍運算量 我使用的方式是對SDF進行數值微分 https://iquilezles.org/www/articles/normalsSDF/normalsSDF.htm 不過也只用在圓滑mesh繪製模式 splat繪製模式用平的法向量就可以了 ※ 編輯: cjcat2266 (160.33.168.6 美國), 05/01/2020 03:24:22
doomleika: 05/01 10:10
※ 編輯: cjcat2266 (160.33.168.6 美國), 05/01/2020 10:30:25