精華區beta C_Chat 關於我們 聯絡資訊
這個問題一直困擾我很久,現在剛好想到上來問一下 為什麼遊戲的3D模組邊緣無法很圓滑? 譬如說剛剛有人發暗殺教室的3DS遊戲,殺老師圓形的頭有很多稜角 明明感覺只是sin跟cos的正圓,為什麼無法做好一點? 到底硬體的效能如何影響到模組的精緻度,有人可以幫我解惑嗎?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.202.182 ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1457707930.A.FC8.html
pikachu2421: 因為3D模型都是用多邊形(polygon)組成的 03/11 22:53
stringargs23: 你真的以為是那麼簡單喔? 03/11 22:54
festa: 曲面上每一個點的光影角度都不一樣,算不完吧 03/11 22:55
realion: http://i.imgur.com/rQDd6yy.gif 03/11 22:55
allen20937: https://i.imgur.com/NmndqJ4.jpg 跟製作組的愛有關 03/11 22:55
realion: http://i.imgur.com/nFqqIPq.gif 03/11 22:56
ededws1: 就不知道詳細情況才上來問的,我當然知道沒這麼簡單 03/11 22:57
yshinri: sin 跟 cos 才是不好算的東西 03/11 22:58
devilshadow: 反鋸齒開到最大 03/11 22:58
yshinri: 一般來說 3D 模型都是用三角形拼起來的, 這才是最好畫的 03/11 22:59
yshinri: 那些看起來像是圓表面的都是很多小三角形加上著色計算 03/11 23:00
crazycy: 因為現在電腦硬體都是以多邊形來建構3D模組 03/11 23:00
yshinri: 至於三角函數這種東西, 軟體解幾乎都是插值多項式 03/11 23:02
feartis: 不是有一種方法叫向量繪圖嗎?那拿來畫3D會怎麼樣? 03/11 23:02
yshinri: 硬體解沒研究過不清楚, 不過比較可能是查一張大表再內插 03/11 23:02
yshinri: 就算用向量, 你還是得把三維圖形投影到二維螢幕上 03/11 23:04
ededws1: 所以模型的複雜程度取決于裡面有多少小三角形? 03/11 23:04
yshinri: 計算量是不會少的 03/11 23:04
gm79227922: 跟愛有關 03/11 23:05
yshinri: 是的, 複雜的地方就會有比較多的三角形描述 03/11 23:05
senria: 就3DS效能不夠 跑不動更精緻的而已 03/11 23:06
ededws1: 我還是不懂為什麼直接用函數畫圖會不好算? 03/11 23:07
ededws1: 假設要畫一個圓就直覺上不是直接打方程式會比用三角形拼 03/11 23:10
ededws1: 出來簡單嗎? 03/11 23:10
kisc32950: 要達到你想的畫面那分割要切到很密阿...掌機處理器負荷 03/11 23:10
kisc32950: 不了吧... 03/11 23:11
yshinri: 建 3D 模組是先蓋好直接讀點畫 03/11 23:12
yshinri: 你那樣呼叫就是在 real time 算函數值再畫 03/11 23:12
yshinri: 首先我上面提過三角函數呼叫成本比較高, 然後又要當下算 03/11 23:13
ededws1: ?不懂,可以換個說法嗎 03/11 23:13
yshinri: 要算到一樣的精細度畫圖當下的計算量差很多 03/11 23:14
kirimaru73: 要給電腦處理的資料 必須建立一套通用的規則 03/11 23:14
kirimaru73: 3D通用的規則就是三角形 因為可以處理任何形狀 03/11 23:14
kirimaru73: 圓形當然最好模擬殺老師的頭 但不能為了他一人而破壞 03/11 23:15
Kenqr: 計算最花時間的是光影的部份 三角形只要算三個點 剩的內插 03/11 23:15
kirimaru73: 規則 當然你會想說"有些用圓形 有些用三角形就好啦" 03/11 23:15
Kenqr: 圓形你要算到死 03/11 23:15
ededws1: 意思是如果要動起來叫函數的計算量比較大嗎? 03/11 23:15
brmelon: 因為模組會動 同樣的一個圓面從不同角度看投到2D上也不同 03/11 23:15
kisc32950: 遊戲畫面還是動態...及時運算量太大~不建模無法負荷吧 03/11 23:15
kirimaru73: 但這種"選擇性"所消耗的資源過於龐大而不切實際 03/11 23:16
kirimaru73: 應該說"圓形"根本不能用 沒人能用球拼出任意形狀 03/11 23:17
kirimaru73: "球面的一部分"才可以當成基本單位 03/11 23:18
Bencrie: 圓跟球對 surface rendering 不太親切啦 03/11 23:18
kirimaru73: 但是"球面的一部分"光要描述就要十幾個參數了 03/11 23:18
Bencrie: 對 ray tracing 的話就很容易 03/11 23:18
Bencrie: 但是一般來說你不會用 ray tracing 在遊戲上 03/11 23:19
ededws1: 加入“貼圖”這個東西解釋起來會比較容易嗎? 03/11 23:20
yshinri: 對一般物體 ray tracing 本來就是大工程... 03/11 23:21
ededws1: “貼圖”又是什麼?介紹大作遊戲時常會被提到 03/11 23:21
Bencrie: 貼圖就 ... 查表 03/11 23:21
yshinri: 「貼圖」管的是我上面講的「著色計算」 03/11 23:21
darkbrigher: 可以換HD材質mod 比如skyrim等等 03/11 23:21
yshinri: 那個跟在空間中畫出一個物體的外表是兩回事 03/11 23:22
darkbrigher: 當然本身電腦顯卡 cpu 記憶體 都要撐得住 03/11 23:22
rockmanx52: 現在用三角形已經好很多了 以前PS時代主流還是四邊形 03/11 23:22
yshinri: 你畫一個殺老師是 3D 模組, 但它只有三角形框 03/11 23:22
rockmanx52: 那種鋸齒更誇張 03/11 23:22
yshinri: 把殺老師塗成黃色就是貼圖 03/11 23:23
ededws1: 那現在還是先分開討論好了 03/11 23:23
Bencrie: 硬要說是可以用 texture 當來源去修改幾何形狀啦 03/11 23:23
yshinri: 一直都可以啊, 就我最開始講的「塗得讓它看起來像球」 03/11 23:24
darkbrigher: 像變形金剛 記得是由幾萬個零件組成 遊戲不太可能做 03/11 23:24
darkbrigher: 到.... 03/11 23:24
ko27tye: 有些平面物件可以用貼圖造成3D的效果 03/11 23:25
kirimaru73: 這是做得到 但這樣三角形就不只是三角形了 03/11 23:25
kirimaru73: 要有關於曲面的資訊才知道要怎樣上色可以以假亂真 03/11 23:25
ededws1: 那一開始是如何把想要的形狀分割成三角形的? 03/11 23:25
ko27tye: 你只要記住遊戲首要注重效能 面數都是能省則省 03/11 23:26
Bencrie: 那叫凹凸貼圖,現在有 geometry shader 可以做真的變形 03/11 23:26
kirimaru73: 遊戲畫面如果開始頓了 繪圖什麼的都可以犧牲 03/11 23:27
ededws1: 這個我知道,就跟電腦跑不動就不要效能全開一樣 03/11 23:32
Bencrie: 可以去找一些 blender 的教學影片,看看動畫師怎麼做 03/11 23:33
Bencrie: modeling。 03/11 23:34
yshinri: 至於 3D 模組是怎麼建的那又是另一門學問了 03/11 23:34
ededws1: 好吧,那今天就先到這裡好了,感謝大家 03/11 23:35
Bencrie: 也許可以去 GameDesign 板逛逛 XDD 03/11 23:38
penguinbon: 可以去Youtube搜尋"電玩畫質簡史" 03/11 23:40
jo7777777: 版上高手真多啊 03/11 23:49
bluejark: 感覺根本不用去討論怎麼運算啊 其實就主機處理能力 03/11 23:58
chigo520: 電腦的圓也不是圓阿...... 03/12 00:14
newgunden: 你要在現實中用人力弄出一個圓就夠困難了 03/12 00:32
chris850210: 面數太多會跑不動 03/12 00:38
nahsnib: 弄一個圓不難好嗎,球才有難度吧 03/12 00:45
sniper2824: 很簡單 太多面就會超卡 然後你就會靠背很lag 03/12 00:47
sniper2824: 就算你電腦超爆幹好 不會卡 但是製作的人電腦會卡 03/12 00:48
bluejark: 不過這文舉的殺老師那個好像也不用這麼省面數 03/12 01:00
Alu76521: 圓規表示: 03/12 03:29
garman0403: 就連數學軟體畫出來的圓放大看都不是圓了 03/12 03:51
garman0403: 遊戲怎麼可能用圓 03/12 03:51
garman0403: 電腦數據是不連續的 03/12 03:52
batora: 無論你用啥繪圖軟體畫cos或sin,放大之後都是斜線 03/12 04:20
batora: 全部都有鋸齒,就算是世間萬物你微觀來看,大概也沒有完美 03/12 04:21
batora: 的平滑曲線 03/12 04:21
batora: 再來就是就算以你想的,單純的sin、cos,問題是3D不可能只 03/12 04:23
batora: 有一組,以殺老師那顆頭,就要切好幾顆圓出來才會是一顆球 03/12 04:24
batora: 更別提還要全部運算他在動這回事,越精細運算量越大 03/12 04:25
batora: 當然實際上3D建模也沒有人用這樣的方式在算就是了 03/12 04:25