革命性的3D引擎 Microsoft Excel

2021-05-24 07:18:22 字數 3935 閱讀 2984

感謝高傑的翻譯和投遞:

從國外**上自己翻譯過來,以前cnbeta上有報道,這篇是此技術原創者的官方解釋翻譯,若有錯誤,敬請指正.

出色的電腦遊戲都會使用不同的圖形引擎處理子系統—我們常說的3d引擎.例如soure引擎(國內譯名」起源」引擎,half life 2所使用),unreal引擎(國內譯名」虛幻」引擎,虛幻競技場實用).idtech4引擎(for:doom4),cry2引擎(for:孤島危 機),clever』s paradox引擎,這些都是在玩家間及遊戲業界非常出名的圖形引擎.下面您將了解到的是乙個全新的3d圖形引擎:microsoft excel

為我們所熟知的excel是個全方位的辦公工具軟體,但它也有不為人所熟知的另一面,那就是它擁有一些功能特性,使得excel可以作為乙個優質的3d繪圖引擎被使用。

通過這篇文章,我會展示excel的算術運算,嵌入式渲染子系統(這裡有兩個不同的渲染子系統)和革命性的方法,理解這些僅需要你做乙個思維觀念上的重大 轉變。我希望你能發現excel有效地和迅速地整合了實用性等眾多的特點,多平台的可移植性,和基於獨特且超現實的3d引擎特性為依託的高效能

章節中甚至有演示程式和短片, 這些都是由excel 3d引擎建立的。

警告:非專家請謹慎嘗試!

數**算:

也許證明excel的數**算功能,僅需要有乙個示範,至少在所有需要演示中這項是最少的。3d物體的操縱的核心函式(例如:四則運算,三角函式,矩陣代 數)是excel的本質所在---但它們是值得研究的,因為他們無與倫比的布局特點和良好的簡約性,目前在整個流行的3d引擎領域,excel猶如高塔般 聳立。(作者有點誇張,因為網上的演示雖然值得稱讚,但遠沒有到達作者誇耀的地步)

合理的布局

很可能不會有遊戲引擎能夠解決整個三維演算法問題,僅僅在半個螢幕大小的空間上。上半部分圖1包含的空間位移,旋轉的x , y , z軸和透視投影等等。這些都可以在演示程式看到,多邊形的透視,z緩衝(是在為物件進行著色時,執行「隱藏面消除」工作的一項技術,所以隱藏物件背後的部 分就不會被顯示出來。在3d環境中每個畫素中會利用一組資料資料來定義畫素在顯示時的縱深度,即z軸座標值。z緩衝所用的位數越高,則代表該顯示卡所提供 的物件縱深感也越精確。目前的3d加速卡一般都可支援16位的z buffer)和反射的計算,所需的螢幕大小近似.

圖1:3d引擎的實質

黃色標記了使用者定義的引數,綠色指出的是引擎的計算數值,數字區域包含了如下一些資料(以下基於本人的計算機圖形學知識)

1.透視投影的引數。

2.3d物體的座標相對座標(相對於物體的中心)

3.矩陣平移變換和旋轉變換

(更多資訊可以通過如下鏈結找到http://en.wikipedia.org/wiki/3d_projection)

4.旋轉引數

5.在平移變換和旋轉變換後,點的3d絕對座標。

6.透檢視影后,點的2維座標。

7.點的螢幕座標

8.物體邊緣的終點

9.矩陣的平移旋轉變換中的重要公式,這裡我們可以更簡潔和緊湊,看得非常清楚.

簡潔性

excel的開發環境,不僅允許程式設計師在編寫時可以使用無格式的原始碼或者語法高亮突出的源**,而且它也提供了其所有眾所周知的格式化功能函式給引擎開發 人員:一些字型可以同時使用(不同的大小和型別);單元格和彩色文字;允許新增可彈出的提示;甚至是聲音 (例如: 「sit down」),也可以在整個電影需要的地方插入。

渲染方式

開發人員可以選擇在2個渲染子系統間選擇:

1.excel自身的單元格圖形(以下簡稱ecg)

2.基於office套件的圖形抽象層(以下簡稱ogal)

excel自身的單元格繪圖

啟動excel後,立刻忘記以往的習慣,我們可以看到充斥著單元格的excel**在螢幕上,以及包含我們所需資料的單元格,文字和公式。在這個螢幕上嘗試著認為這個**就是普通引擎的螢幕,而單元格就是乙個個畫素。

在此基礎上不尋常的辦法:

工作表=引擎的可視螢幕

單元格=畫素點

毫無疑問,這是乙個令人驚嘆的模擬近似,接下來的問題就是如何將這些散裝矩形形狀的單元格可被視為畫素?但我們會看到,這些矩形只是展現乙個獨特的功能的細胞圖形,事實上,在適當的時候,和一般的小,老式的方塊畫素一樣,在需要的時刻這些細胞圖形的用法與以前並無二致。

拋開你對新事物的反感情緒,並看看ecg特性:

畫素是可以調整大小的,因此如果有人想像過去那樣.繼續使用小的,老式的方塊畫素來開發,就像在傳統的三維引擎中那樣,也許能使他/她覺得這樣可以開發更容易些(請見圖2和3) 。

圖2:excel中的預設畫素例項

圖3:調整大小(色調)的畫素,趨於傳統

應該指出的是,這種革新是該系統的乙個有機組成部分,允許所使用的畫素,在每行每列的大小不同,可以看出在圖4

圖4:畫素在每行設定不同的大小

這個特殊的大小調整的最好例子,就是excel的預設設定,在預設設定下常規畫素變成了矩形形狀,這是很容易讓我們混淆,將他們作為資料輸入區來看待。

大多數使用者甚至不會意識到,這些都是畫素,僅僅見他們作為資料區域來看.

圖5:沒有網格線的渲染

圖6:帶有網格線的渲染

圖7:運算中的引擎(ecg渲染子系統)

缺點是ecg的速度不夠快和缺乏一些常見的引擎功能(例如,繪製線,材質貼圖等) ,必須由開發員自行開發。

基於office套件的圖形抽象層

若是沒有對ecg的先進功能的需要,像是可調整大小畫素和可變長寬比率,那麼 excel的其他繪製子系統-整體中剝離的圖形抽象層---是另乙個選擇。

ogal提供的附加功能(多邊形繪圖,填充等),體現出更高的效能和相容性與其他應用程式的的ms office套件。如果需要將3d的應用程式進行移植,此相容性能是非常有用的.

這是乙個奇特的渲染過程,渲染是表現在工作表單之外的乙個單獨的層,所以子系統可以在不修改現有的內容的工作狀態下執行

此特性使得有可能執行ogal和ecg並駕齊驅,或顯示的背景和他們的計算結果就在同乙個螢幕上-這有助於除錯過程。截圖執行ogal子系統在下面可以看到(圖8 ) 。

在工作表單前面的獨渲染層是很便於觀察的:雖然旋轉立方體的畫面是由這一層提供,但3d的計算的部分由引擎負責,可以在背景中看到。

圖8:執行中的引擎(使用的基於office元件的抽象影象渲染層)

乙個典型ogal子系統表現的例子就是可見的多邊形:而借鑑於目前的3d引擎的基本處理物件是三角形, ogal也支援其他多邊形(如四邊形,五邊形等)。

這裡不需要乙個單獨的背景緩衝區,因為ogal將會處理好一切。顏色可以設定由24位存貯方式,而子系統為的透明度提供了額外的alpha通道。示範檔案可在我的例子中excel檔案引擎找到-對於如何避免實時時間,在錄影中都有演示:

警告:你非常-非常確定你是個專家!否則慎用

思維的轉變

連續性從本質上影響我們在實際程式設計中的語句表達。它出現在你程式設計事業的每乙個角落:每天數以千計的程式**,一步步建立可執行檔案(就像定義在make程式的描述檔案那樣),除錯執行一條條命令。

數以千計不同的程式和幾十億的源**行,都是被連續性思維方式所創造。連續性貫穿我們目前的程式設計模式,使許多程式設計師不會懷疑其存在的合理性,並被它的侷限性所制約,這是理所當然的事。

注意:請不要低估習慣的力量!也許您有乙個qwerty鍵盤(指我們所用的標準鍵盤),其實那是乙個有意排列使你不舒服的布局!

3D列印技術將對水質改善產生革命性影響 創想三維

今天,世界上將近五分之一的人口生活在缺水地區。到2025年,這個數字將上公升到18億人。從飲用水到漁場用水,再到廢水處理,我們需要徹底改變獲取和使用水來生存。當我們最需要的時候,3d印表機技術正在引發一場水革命。3d印表機利水服務 3d列印在水和廢水行業中經濟高效地處理受汙染的水,3d列印技術開啟了...

CAD技術的革命性突破

長期以來,變數化技術只能在二維上實現,三維超變數化技術一直困擾著cad廠商和使用者。有人曾斷言,三維變數化技術過於複雜,實現它僅僅只是一種幻想 乙個神話。現在,神話已被打破,幻想已經變成眼前的現實。今年7月,全國首屆cad應用工程博覽會上,一種新興變數化技術引起了與會的廣泛關注。這一被業界稱為21世...

3D手機遊戲引擎

一,寒霜2引擎 frostbite 2 engine 但手機上貌似不支援 二,虛幻3引擎 unreal engine 3 沒用過 三,unity 引擎 本人使用過 以上3d引擎我推測應該都是基於 opengl es2.0圖形庫支援嵌入式裝置。2d手機遊戲引擎 一,cocos2d x cocos2d ...