創作內容

1 GP

11/23,目的與手段,3D程式簡史與概念(已寫完,不足處哪天想到再補)

作者:李兒諳│2017-11-23 14:27:03│巴幣:2│人氣:156
在做件事情時,若對該件事情的歷史背景有些了解
或者說是做這件事情的目的知曉的話
通常會有些幫助

人的精力是有限的
2D與傳統繪畫或者是現在的電繪
各類技法,水墨畫油畫厚塗等也都很讓人心動
但為何我們還是要發展3D?

因為2D在仿真(白話說法是動畫)情形下太費功了
就算是Live2D也是有些限制在
(但Live2D、E-mote等的效果還真得蠻不錯的,有種躍然紙上的感覺)
Disney也就是迪士尼,成立於1923年
於1928年的《汽船威利號》是第一部有聲卡通
(主角是米老鼠,然後反派好像是長得像擬人化動物的船長的那部黑白卡通)

用的技法就是一堆畫家畫類似的圖
然後連續播放產生動畫的視覺效果
因此就算是2017年的今天
想要再次重現《汽船威利號》的光輝
或者稍微熱門些的作品《白雪公主》1937年出版的彩色卡通或說電影
也只能靠錄製原有影片的方式重現
正常人是畫不過來的
這就像是《軒轅劍三外傳─天之痕》以後
純2D作品幾乎只現於獨立遊戲這樣
2D作品對於多媒體團隊的成員門檻很高(而程式方面就相對輕鬆些)
但是產出的美術素材難以複用
不太能讓一作品的成功導向另一個作品的成功
(靠2D美術素材重複使用來取得成功的
近年來比較例外的就我所知的就是
《式姬草子》,《式姬之庭》,《式姬─幽界之門》,《塵世之帳》,《終日式姬》系列)

好的
回正題
我們的螢幕與畫布
其實也都是二維的(當然略帶有些立體,但基本上六個面中只有正對我們的這面被使用到)
那3D程式的核心宗旨就是
把3D模型的資料轉成2D的螢幕座標
再次呈現在螢幕上
這樣的話我們只要對原始資料做些微的更動或運算
就能實現旋轉、移動等效果
不用刻苦的一幀一幀(frame,在Adobe flash中又稱為影格)的畫
而那靠的就是矩陣運算
也因此線性代數與離散數學是計算機科學基礎課程
線性代數在圖學有廣泛運用
且與電腦程式語言中的陣列極度類似
離散數學則是對於哪些方法比較不耗電腦資源做研究
又或者是電腦能處理哪些事情

那為什麼每個3D程式課
幾乎一開始都是畫三角形呢?
因為模型的最小單位就是三角形
或者說是無論怎樣的模型總是能畫分成各個三角形來處理

接著要來說的是
為什麼這麼好的東西
要道軒轅劍肆之後才出現?

各位知道《軒轅劍參外傳─天之痕》容量占多少嗎?
大約1.5GB
而那時我家的電腦硬碟才3GB
顯示卡不記得是用哪家的(應該也只有nVidia跟ATI螃蟹卡,那我家那時好像是螃蟹卡)
(15:59更新,抱歉,查了下,螃蟹卡是Realtek,而且不是顯示卡是網路卡)
反正《軒轅劍肆》出來時,安裝失敗不能玩
後來換了新電腦後才能玩的

因為「3D模型資料轉成2D螢幕座標」簡單的一句話
用程式來做效果有限
很大程度要靠硬體的改良
(而且早期電腦的改良還有時脈頻率的改良
那時每一年的電腦能力都有段差距
甚至還出了幾個定律
摩爾定律,什麼每18個月運算能力提升一倍但成本下降這樣)
而電腦...老實說不玩遊戲的人電腦還真的幾乎不太需要換
硬體很多的改良是配合遊戲產業的發展

接著是今天研究的成果
早期顯示卡開始支援3D後
跟現代顯示卡支援3D中間有段技術落差

因此較古老的技術被稱為
Fixed Function Pipeline
而較新的技術被稱為
Shader(OpenGL中較傾向於稱為Program)

簡單來說
Fixed Function Pipeline
是不可程式化的
而Shader呢?
在之前談WebGL這篇中的程式碼我們可以看到
是內嵌有些像C語言的程式的做法
現代的顯示卡基本上只支援Shader了
用Fixed Function Pipeline
也僅是把Shader可程式化的那部份棄用模擬得出而已

那首先我想還是要先從Fixed Function Pipeline技術開始掌握
「由儉入奢易,由奢入儉難」
下篇就開始談
若用Fixed Function Pipeline大概怎樣呈現立體效果
與矩陣、投影、投影幾何大概是怎麼一回事
若不順利的話下一篇之後好幾篇也還是在談同一件事情

那本篇重點是什麼呢?
想寫3D程式
根據難度而定
但要先有好的顯示卡

由於我們的目標僅是要減少與2D相比作圖的工作量
還有3D模型在不同地圖、氣候下、燈光下相比2D可能要重繪的困擾少很多
與3D模型的動作做一份可以套用到其它模型上
而2D的相對困難
最後是2D的甚至可以用3D的來做
這樣打光等利用3D技術看起來也像是專做2D的
各類考量下

因此數學工具的採用
跟旋轉、平移、扭曲一類3D模型座標轉成2D螢幕座標等無關的
我們就捨棄不用了
這就是為何三種矩陣乘法只用 橫的乘豎的的那種的原因
就那個方法目前被證實可以大幅減少旋轉、平移的所需的運算量

那為何要學四元數,而不學八元數、十六元數?
因為模型很複雜時
用矩陣來存太花資源
而矩陣通常用4*4的就夠了
那近似的數學工具是四元數
因此還有其它有趣的課題
但就被我們捨棄掉了這樣!!

本篇就此結束~
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3798008
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★y541258 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:11/23,做正事前的暢... 後一篇:11/23起,奇數日時研...

追蹤私訊切換新版閱覽

作品資料夾

zzz54872qw所有人
【敬啟:無法重來的你。】第一集終於完成!謝謝一直以來持續閱讀的讀者們!看更多我要大聲說昨天15:11


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】