[問題] 遊戲的3d模組問題已回收

看板C_Chat作者 (ATMJin)時間10年前 (2016/03/11 22:52), 編輯推噓35(35063)
留言98則, 31人參與, 最新討論串1/1
這個問題一直困擾我很久,現在剛好想到上來問一下 為什麼遊戲的3D模組邊緣無法很圓滑? 譬如說剛剛有人發暗殺教室的3DS遊戲,殺老師圓形的頭有很多稜角 明明感覺只是sin跟cos的正圓,為什麼無法做好一點? 到底硬體的效能如何影響到模組的精緻度,有人可以幫我解惑嗎?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.202.182 ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1457707930.A.FC8.html

03/11 22:53, , 1F
因為3D模型都是用多邊形(polygon)組成的
03/11 22:53, 1F

03/11 22:54, , 2F
你真的以為是那麼簡單喔?
03/11 22:54, 2F

03/11 22:55, , 3F
曲面上每一個點的光影角度都不一樣,算不完吧
03/11 22:55, 3F

03/11 22:55, , 4F

03/11 22:55, , 5F
跟製作組的愛有關
03/11 22:55, 5F

03/11 22:56, , 6F

03/11 22:57, , 7F
就不知道詳細情況才上來問的,我當然知道沒這麼簡單
03/11 22:57, 7F

03/11 22:58, , 8F
sin 跟 cos 才是不好算的東西
03/11 22:58, 8F

03/11 22:58, , 9F
反鋸齒開到最大
03/11 22:58, 9F

03/11 22:59, , 10F
一般來說 3D 模型都是用三角形拼起來的, 這才是最好畫的
03/11 22:59, 10F

03/11 23:00, , 11F
那些看起來像是圓表面的都是很多小三角形加上著色計算
03/11 23:00, 11F

03/11 23:00, , 12F
因為現在電腦硬體都是以多邊形來建構3D模組
03/11 23:00, 12F

03/11 23:02, , 13F
至於三角函數這種東西, 軟體解幾乎都是插值多項式
03/11 23:02, 13F

03/11 23:02, , 14F
不是有一種方法叫向量繪圖嗎?那拿來畫3D會怎麼樣?
03/11 23:02, 14F

03/11 23:02, , 15F
硬體解沒研究過不清楚, 不過比較可能是查一張大表再內插
03/11 23:02, 15F

03/11 23:04, , 16F
就算用向量, 你還是得把三維圖形投影到二維螢幕上
03/11 23:04, 16F

03/11 23:04, , 17F
所以模型的複雜程度取決于裡面有多少小三角形?
03/11 23:04, 17F

03/11 23:04, , 18F
計算量是不會少的
03/11 23:04, 18F

03/11 23:05, , 19F
跟愛有關
03/11 23:05, 19F

03/11 23:05, , 20F
是的, 複雜的地方就會有比較多的三角形描述
03/11 23:05, 20F

03/11 23:06, , 21F
就3DS效能不夠 跑不動更精緻的而已
03/11 23:06, 21F

03/11 23:07, , 22F
我還是不懂為什麼直接用函數畫圖會不好算?
03/11 23:07, 22F

03/11 23:10, , 23F
假設要畫一個圓就直覺上不是直接打方程式會比用三角形拼
03/11 23:10, 23F

03/11 23:10, , 24F
出來簡單嗎?
03/11 23:10, 24F

03/11 23:10, , 25F
要達到你想的畫面那分割要切到很密阿...掌機處理器負荷
03/11 23:10, 25F

03/11 23:11, , 26F
不了吧...
03/11 23:11, 26F

03/11 23:12, , 27F
建 3D 模組是先蓋好直接讀點畫
03/11 23:12, 27F

03/11 23:12, , 28F
你那樣呼叫就是在 real time 算函數值再畫
03/11 23:12, 28F

03/11 23:13, , 29F
首先我上面提過三角函數呼叫成本比較高, 然後又要當下算
03/11 23:13, 29F

03/11 23:13, , 30F
?不懂,可以換個說法嗎
03/11 23:13, 30F

03/11 23:14, , 31F
要算到一樣的精細度畫圖當下的計算量差很多
03/11 23:14, 31F

03/11 23:14, , 32F
要給電腦處理的資料 必須建立一套通用的規則
03/11 23:14, 32F

03/11 23:14, , 33F
3D通用的規則就是三角形 因為可以處理任何形狀
03/11 23:14, 33F

03/11 23:15, , 34F
圓形當然最好模擬殺老師的頭 但不能為了他一人而破壞
03/11 23:15, 34F

03/11 23:15, , 35F
計算最花時間的是光影的部份 三角形只要算三個點 剩的內插
03/11 23:15, 35F

03/11 23:15, , 36F
規則 當然你會想說"有些用圓形 有些用三角形就好啦"
03/11 23:15, 36F

03/11 23:15, , 37F
圓形你要算到死
03/11 23:15, 37F

03/11 23:15, , 38F
意思是如果要動起來叫函數的計算量比較大嗎?
03/11 23:15, 38F

03/11 23:15, , 39F
因為模組會動 同樣的一個圓面從不同角度看投到2D上也不同
03/11 23:15, 39F

03/11 23:15, , 40F
遊戲畫面還是動態...及時運算量太大~不建模無法負荷吧
03/11 23:15, 40F

03/11 23:16, , 41F
但這種"選擇性"所消耗的資源過於龐大而不切實際
03/11 23:16, 41F

03/11 23:17, , 42F
應該說"圓形"根本不能用 沒人能用球拼出任意形狀
03/11 23:17, 42F

03/11 23:18, , 43F
"球面的一部分"才可以當成基本單位
03/11 23:18, 43F

03/11 23:18, , 44F
圓跟球對 surface rendering 不太親切啦
03/11 23:18, 44F

03/11 23:18, , 45F
但是"球面的一部分"光要描述就要十幾個參數了
03/11 23:18, 45F

03/11 23:18, , 46F
對 ray tracing 的話就很容易
03/11 23:18, 46F

03/11 23:19, , 47F
但是一般來說你不會用 ray tracing 在遊戲上
03/11 23:19, 47F

03/11 23:20, , 48F
加入“貼圖”這個東西解釋起來會比較容易嗎?
03/11 23:20, 48F

03/11 23:21, , 49F
對一般物體 ray tracing 本來就是大工程...
03/11 23:21, 49F

03/11 23:21, , 50F
“貼圖”又是什麼?介紹大作遊戲時常會被提到
03/11 23:21, 50F

03/11 23:21, , 51F
貼圖就 ... 查表
03/11 23:21, 51F

03/11 23:21, , 52F
「貼圖」管的是我上面講的「著色計算」
03/11 23:21, 52F

03/11 23:21, , 53F
可以換HD材質mod 比如skyrim等等
03/11 23:21, 53F

03/11 23:22, , 54F
那個跟在空間中畫出一個物體的外表是兩回事
03/11 23:22, 54F

03/11 23:22, , 55F
當然本身電腦顯卡 cpu 記憶體 都要撐得住
03/11 23:22, 55F

03/11 23:22, , 56F
現在用三角形已經好很多了 以前PS時代主流還是四邊形
03/11 23:22, 56F

03/11 23:22, , 57F
你畫一個殺老師是 3D 模組, 但它只有三角形框
03/11 23:22, 57F

03/11 23:22, , 58F
那種鋸齒更誇張
03/11 23:22, 58F

03/11 23:23, , 59F
把殺老師塗成黃色就是貼圖
03/11 23:23, 59F

03/11 23:23, , 60F
那現在還是先分開討論好了
03/11 23:23, 60F

03/11 23:23, , 61F
硬要說是可以用 texture 當來源去修改幾何形狀啦
03/11 23:23, 61F

03/11 23:24, , 62F
一直都可以啊, 就我最開始講的「塗得讓它看起來像球」
03/11 23:24, 62F

03/11 23:24, , 63F
像變形金剛 記得是由幾萬個零件組成 遊戲不太可能做
03/11 23:24, 63F

03/11 23:24, , 64F
到....
03/11 23:24, 64F

03/11 23:25, , 65F
有些平面物件可以用貼圖造成3D的效果
03/11 23:25, 65F

03/11 23:25, , 66F
這是做得到 但這樣三角形就不只是三角形了
03/11 23:25, 66F

03/11 23:25, , 67F
要有關於曲面的資訊才知道要怎樣上色可以以假亂真
03/11 23:25, 67F

03/11 23:25, , 68F
那一開始是如何把想要的形狀分割成三角形的?
03/11 23:25, 68F

03/11 23:26, , 69F
你只要記住遊戲首要注重效能 面數都是能省則省
03/11 23:26, 69F

03/11 23:26, , 70F
那叫凹凸貼圖,現在有 geometry shader 可以做真的變形
03/11 23:26, 70F

03/11 23:27, , 71F
遊戲畫面如果開始頓了 繪圖什麼的都可以犧牲
03/11 23:27, 71F

03/11 23:32, , 72F
這個我知道,就跟電腦跑不動就不要效能全開一樣
03/11 23:32, 72F

03/11 23:33, , 73F
可以去找一些 blender 的教學影片,看看動畫師怎麼做
03/11 23:33, 73F

03/11 23:34, , 74F
modeling。
03/11 23:34, 74F

03/11 23:34, , 75F
至於 3D 模組是怎麼建的那又是另一門學問了
03/11 23:34, 75F

03/11 23:35, , 76F
好吧,那今天就先到這裡好了,感謝大家
03/11 23:35, 76F

03/11 23:38, , 77F
也許可以去 GameDesign 板逛逛 XDD
03/11 23:38, 77F

03/11 23:40, , 78F
可以去Youtube搜尋"電玩畫質簡史"
03/11 23:40, 78F

03/11 23:49, , 79F
版上高手真多啊
03/11 23:49, 79F

03/11 23:58, , 80F
感覺根本不用去討論怎麼運算啊 其實就主機處理能力
03/11 23:58, 80F

03/12 00:14, , 81F
電腦的圓也不是圓阿......
03/12 00:14, 81F

03/12 00:32, , 82F
你要在現實中用人力弄出一個圓就夠困難了
03/12 00:32, 82F

03/12 00:38, , 83F
面數太多會跑不動
03/12 00:38, 83F

03/12 00:45, , 84F
弄一個圓不難好嗎,球才有難度吧
03/12 00:45, 84F

03/12 00:47, , 85F
很簡單 太多面就會超卡 然後你就會靠背很lag
03/12 00:47, 85F

03/12 00:48, , 86F
就算你電腦超爆幹好 不會卡 但是製作的人電腦會卡
03/12 00:48, 86F

03/12 01:00, , 87F
不過這文舉的殺老師那個好像也不用這麼省面數
03/12 01:00, 87F

03/12 03:29, , 88F
圓規表示:
03/12 03:29, 88F

03/12 03:51, , 89F
就連數學軟體畫出來的圓放大看都不是圓了
03/12 03:51, 89F

03/12 03:51, , 90F
遊戲怎麼可能用圓
03/12 03:51, 90F

03/12 03:52, , 91F
電腦數據是不連續的
03/12 03:52, 91F

03/12 04:20, , 92F
無論你用啥繪圖軟體畫cos或sin,放大之後都是斜線
03/12 04:20, 92F

03/12 04:21, , 93F
全部都有鋸齒,就算是世間萬物你微觀來看,大概也沒有完美
03/12 04:21, 93F

03/12 04:21, , 94F
的平滑曲線
03/12 04:21, 94F

03/12 04:23, , 95F
再來就是就算以你想的,單純的sin、cos,問題是3D不可能只
03/12 04:23, 95F

03/12 04:24, , 96F
有一組,以殺老師那顆頭,就要切好幾顆圓出來才會是一顆球
03/12 04:24, 96F

03/12 04:25, , 97F
更別提還要全部運算他在動這回事,越精細運算量越大
03/12 04:25, 97F

03/12 04:25, , 98F
當然實際上3D建模也沒有人用這樣的方式在算就是了
03/12 04:25, 98F
文章代碼(AID): #1MujkQ_8 (C_Chat)