當前位置:編程學習大全網 - 編程語言 - 計算機那些復雜的三維動畫,是怎麽用0和1的代碼構成的呢?

計算機那些復雜的三維動畫,是怎麽用0和1的代碼構成的呢?

計算機也好,機械設備也好.都是在自身的邏輯體系內做事情的.

比如高壓鍋,當壓力達到壹定的值,就會把鍋蓋掀開,那麽可以認為:

壓力=f1,鍋蓋=open,這個過程不需要人為幹預,只要這種條件滿足,就壹定會發生這種自然現象.

記住,這裏要強調自然現象.因為我們無論做什麽事情,都是在利用自然現象中體現的自然規律的.說白了還是事物的性質.

回過頭來繼續說.

條件滿足,現象發生,這是壹個必然.

對於計算機三維動畫,也是很簡單的原理,但是實現起來確實極端麻煩,否則也不會人類幾百萬年,到現在幾十年才研究出這個東西來.

我不知道妳得知識結構如何,我下面用打比方的說法給妳解釋壹下.

首先說顏色,假定我們只需要表示256中顏色,如果用0和1表示的話,需要多長才能表達出來?

2的8次方=256.也就是說,我們需要8個長度的0和1就可以表達這些色彩.

假設,我們要8個導線,每個導線要麽通電,要麽不通電.通電的話,壹般電壓是5v,不通電,電壓是0v.

這樣的話,我們已經將色彩表現出來了.

假設,屏幕的分辨率是1024*800,那麽就是說我們壹***需要1024*800*8根導線,我們就可以在屏幕上顯示256種色彩了.到此位置,顯示色彩的問題解決了.

那麽在那個像素上顯示指定的顏色呢?很顯然,還需要在上面的基礎上在增加壹個表達坐標的數據,坐標應該是(x,y)這種形式,就上面的來說橫向有1024個位置,那麽x的範圍是0到1023.同理,縱向的範圍是0-799.

與色彩數量相似,我們在表達坐標的時候,也要導線來輸出電壓.

現在針對橫坐標:

0-1023,壹***是1024個數,也就是2的10次方.換句話說,我們需要10根導線就可以表達橫坐標了.

縱坐標同理,我就不算了哈.

現在我們已經做到了在指定位置顯示指定顏色.換句話說,我們已經可以在屏幕上顯示壹幅圖像了.

妳可以顯示自己照片了,呵呵.

還有壹個問題.就是圖像的變換.

我們學過動畫原理就應該知道,所謂動畫是由於人眼的視覺殘留作用引起的.如果壹部動畫片的幀率是24幅圖像每秒,就是說每秒鐘要繪制24幅圖像,我們看起來就是連貫的動畫了,如果幀率是10,我們會感覺到動畫變動非常大,或者說非常卡.

在計算機屏幕上播放動畫就是每秒鐘刷新多少次屏幕內容即可.

最後壹個問題,關於三維.

其實三維是虛擬的,是壹個數據結構在屏幕上的投影.這個屏幕是假想的壹個邏輯概念.這裏面要用到線性代數的知識.

假定壹個模型,比如壹個桌子,它是可以用坐標表達自身架構的.我可以描述從某點到某點是壹條直線.某些直線和某些直線就是壹個平面.每個平面對應壹個貼圖,也就是桌子的紋理圖片.這種對應關系我描述出來,就是對桌子的建模.如果妳有3dmax或者maya妳就會了解到這些內容.

模型建好之後,要向壹個假想的平面投影.這個投影就是我們看到的內容.怎麽投影呢?用矩陣進行數據轉換.最簡單的數學例子就是壹個向量經過矩陣相乘得到另壹個向量.同樣的道理壹個向量組(也就是這個模型)通過矩陣進行相乘得到在另壹個平面的投影.

這裏我們把投影得到的數據放到壹個存儲空間存儲起來.可以是內存也可以是顯存.這些數據通過讀取,顯卡把這些數據按照坐標/色彩的方式告訴顯示器的屏幕芯片.屏幕根據這種數據進行顯示妳就看到內容了.

整理壹下:

每秒鐘刷新屏幕-----數據轉換/線性代數元算---放入顯存----顯卡讀取---屏幕顯示----每秒鐘刷新屏幕.

上面這種說法很不嚴格.只是讓妳了解就行了.

可能妳會問,為什麽用導線傳遞數據阿.

答案是:導線通電和不通電就是2中狀態.可以認為是1和0.我們都是這麽認為的,以後的運算都是按照這種標準,所以大家都這麽做,就不會出現數據問題.

其次,導線數量妳可以看到,那是非常的多,可能達到幾千萬個.這怎麽辦?這就需要芯片內有這麽大的數據容量保存這些數據,所以現在顯卡或者內存都是1G,2G的了.否則生成的數據和傳輸就非常慢了,妳在電腦上看到的動畫,就非常的卡.卡.卡...而至於屏幕怎麽顯示,這又是另壹個問題,這裏提壹下,屏幕,現在壹般都是液晶的了,屏幕上的每壹個點就是壹個像素,每壹個像素具有壹定的色彩值,也就是顯示色彩的範圍,說白了就是顏色種類。每壹個像素實際上就是壹個液晶體,非常非常小,但是如果妳用眼睛貼近屏幕去看,妳能看到每壹個像素都是壹個方形的東西。屏幕的分辨率也就是橫向坐標數量和縱向坐標數量,他們數量的多少***同決定了壹個圖像的顯示精度。所以,同樣的圖片在低分辨率下看到的往往很粗糙,反之就很精細。顯示屏的芯片負責從主板或者說顯卡過來的數據進行處理,按照坐標、色彩的方式讓指定的像素顯示指定的顏色。這就是顯示器的原理。可以看到,壹個顯示其屏幕,擁有多少個像素,其數量非常之龐大。所以全球能做顯示器的公司很多,但是能做液晶的公司並不多,壹般都是歐美、韓日和臺灣這些比較發到的地方。

還有壹個就是,數據怎麽傳輸,壹般在主板上都有專門的通信線路,可能是串口/並口/啥的,還有PCI啥的.反正就是用線纜去傳輸,同時傳送幾個位就可以.很顯然,傳輸速度必須非常快才能讓我們看到流暢的動畫效果.

再次回答妳得問題,0和1就是電壓有和沒有,是0v電壓還是5v電壓.?電路板會根據電壓的情況進行模擬信號和數字信號處理.現在都是數字信號了.如果妳再繼續問,那妳應該學學與非門這樣的門電路,還有各數字運算電路,妳就能知道為什麽運算了.

總結:

需要電子元件本身的性質進行物理數據轉換和傳輸.

需要線性代數和其他數學知識進行數據轉換,得到我們要的數據.

最重要的,是各種電子元件的物理性質.人類利用的只是自然規律。計算機或者電子設備做的事情是人類設定的程序,做的實際上是各種數據的轉換工作。轉換工作來自於模擬電子和數字電子的知識?。

如果妳未來希望擺脫當代技術的限制,妳想讓信號直接傳到大腦,自己就能看見某些圖像動畫,而不需要眼睛來看,也是可以的。這取決於妳傳遞的信號能否為大腦所感知和處理。

希望未來能有這樣的人物出現再領風騷。

補充壹點:

現代技術的最強動力是電子技術,也即是元器件的開發和改良,已經集成電路的設計制造。於是現在嵌入式設備極為強勢。手機、平板電腦都是嵌入式設備。它們身上已經繼承了大量的人類知識,比如電子、物理、化學、機械,這些***同構成了硬件設備本身,而運行於之上的軟件,比如qq、360等,都是代碼。代碼本身就是妳說的010101010這種東西,它們是按照約定的格式書寫的內容。加載到硬件芯片中,更新指定的存儲單元結構。於是軟件就變成了硬件的壹種形態。?

如果妳想系統了解這些內容,建議學習:

線性代數(用於圖像處理)

高等數學(微積分等內容,用於電子電路分析)

物理學(尤其是電子學,用於電路設計)

英語(用於編程開發)

心理學(用於設計硬件和軟件,提高可用性)

算法(用於程序邏輯設計)

設計模式(用於可拓展的程序設計思想套路)

計算機組成原理、匯編語言、c語言(讓妳了解計算機的工作方式,以及軟硬件如何交互)

如果有疑問,歡迎聯系。

  • 上一篇:神奇的熱帶雨林探險之旅的構成
  • 下一篇:軟件測試需要具備哪些條件
  • copyright 2024編程學習大全網