當前位置:首頁 » 硬碟大全 » 可視化中的雙緩存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

可視化中的雙緩存

發布時間: 2023-05-11 12:04:55

❶ 數據可視化從數據中提取的信息有哪些

這是一個扮閉非常寬泛的問題,數據可視化只是數據展示的一種手段,這個問題的回答取決於以下幾個方面:
(1)我們希望從數據中獲取什麼信息,也就是所謂的需求是什麼,目標是什麼?只有弄清楚了目標是什麼,才能知道我們要廳陪裂干什麼、需要什麼。
(2)當我們知道自己需要什麼內容之後,就要進一步梳理所需要的數據有哪些,然後一點點去剖析這些數據在什麼地方,可以通過什麼手段或者方法去獲取。
(3)獲取了數據之後,為了達到我們的目標,就需要對這些數據進行整理,整理的過程就是數據信息提亂賣取的過程,以「以終為始」的方式一步步推到、提取所需的信息,這些提取的信息就是有價值的數據,也是就是我們要最終展示的內容。
(4)至於最終展示的形式,可以是可視化的圖形、報表,也可以是明細的數據、結果、文字,就看什麼形式是符合最終用戶要求的,可以清晰、直觀的表達的即可。

❷ 供應鏈數據可視化如何進行數據可視化設計原則

在供應仿培鏈數據可視化中,數據可視化設計原則是非常重要的,可以幫助企業更好地設計和優化數據可視化方案。以下是進行數據可視化設計的一些原則:

  • 明確目的:在設計數據可視化方案之前,需要明確數據可視化的目的。這可能包括跟蹤性能、監控用戶行為和測量流程的有效性等。明確目的可以幫助設計出更有效果的數據可視化方案。

  • 了解受眾:數據可視化的目標受眾是非常重要的。了解受眾可以幫助設計出更符合他們需求和興趣的數據可視化方案。

  • 使用視覺效果正確展示數據:視覺效果在數據可視化中非常重要。正確使用視覺效果可以幫助突出數據的重點和差異,並吸引更多的用戶。

  • 使用最佳實踐:在進行數據可視化設計時,需要遵循最佳實踐。這包括使用適當的顏色、字體、圖形和布局等,以及避免過度設計和復雜性。

  • 避免數據噪音:數據可視化中的噪音通常是指與數據無關的元素。避免數據噪音可以幫助突出數據的重點和差異,並提高數據可視化的效果。

  • 清晰溝通:數據可視化的最終目的是向用戶傳達信息。因此,需要確保數據可視化的設計備並唯與目標受眾的需求和興趣相符,並清晰地傳達信息。

  • 適應變化:數據可視化方案需要適應不斷變化的數據和環境。因蔽猛此,需要對數據可視化方案進行定期評估和更新,以保持其有效性和適應性。

  • 總之,在供應鏈數據可視化中,數據可視化設計原則是非常重要的,可以幫助企業更好地設計和優化數據可視化方案。這些原則包括明確目的、了解受眾、使用視覺效果正確展示數據、使用最佳實踐、避免數據噪音、清晰溝通、適應變化等。

❸ 作為一名產品經理,在產品開發的過程中,有哪些可視化的工作方法/工作流程

作為一名產品經理,可視化的工作方法和工作流程可以幫助更好地理解和交流產品需求和設計,提高工作效率。以下是一些常見的可視化工作方法和工作流程:

  • 用戶旅程地圖(User Journey Map):用戶旅程地圖可以幫助產品經理更好地理解用戶在使用產品時的情感和心理變化。通過繪制用戶旅程地圖,可以更好地識別用戶需求和痛點,並為產品優化提供有價值的信息。

  • 信息架構圖(Information Architecture):信息架構圖可以幫助產品經理更好地組織和伏手啟管理產品的信息結構,以確保用戶能夠輕松地找到他們需要的信息。通過繪制信息架構圖薯櫻,可以更好地了解產品的數據結構和信息關系,並為用戶提供更好的使用體驗。

  • 產品原型(Proct Prototype):產品原型可以幫助產品經理更好地展示產品的設計和功能。通過製作產品原型,可以更好地演示產品的交互設計和功能,並為團隊成員提供可視化的溝通和反饋渠道。

  • 數據可視化(Data Visualization):數據可視化可以幫助產品經理更好地理解產品的數據和趨勢。通過繪制數據可視化圖表,可以更好地分析產品的用戶行為和市場趨勢,並為產品優化提供指導意見缺如。

  • 競品分析(Competitive Analysis):競品分析可以幫助產品經理更好地了解市場上的產品和競爭情況。通過製作競品分析圖表,可以更好地了解市場趨勢和競爭優勢,並為產品優化提供參考。

  • 用戶畫像(User Persona):用戶畫像可以幫助產品經理更好地了解目標用戶和他們的需求。通過製作用戶畫像,可以更好地了解用戶的心理和行為特徵,並為產品設計和優化提供有價值的信息。

  • 以上是一些常見的可視化工作方法和工作流程,產品經理可以根據具體情況選擇合適的工具和方法來提高工作效率和質量。

❹ 蘋果的渲染流程以及屏幕卡頓的原因和解決辦法

主要蘋果在底層是如何渲染畫面到屏幕上的過程,以此來進一步分析屏幕卡頓的原理,最後進行屏幕卡頓的解決。

說明:
大體上分為三部分處理,第一部分是CPU的計算,第二部分是GPU的渲染,第三部分是屏幕顯示

CPU的計算蘋果底層主要是通過核心動畫來實現,包含兩部分,第一是對CALayer的計算,第二是調用OpenGL ES/Metal庫進行調用GPU

CoreGraphics

UIKit:

CoreAnimation:
在蘋果官方的描述中,Render、Compose,and animate visual elements,因此不能被名字欺騙了,其實CoreAnimationg中的動畫只是一部分,它其實是一個復合引擎,主要的職責包括 渲染、構建和動畫實現。

我們平常用的CALayer來自於CoreAnimation框架,CALayer是屏幕上用戶可見內容的基礎,主要是由於可視化內容到最後都會被分解成獨立的圖層(layer),被存儲在圖層樹中。

核心動畫所處的位置

說明:

CoreImage

OpenGL ES/Metal
渲染API,詳情可以查看博客 音視頻開發:OpenGL + OpenGL ES + Metal 系列文章匯總

2018年之後蘋果底層已經從OpenGL ES切換到Metal渲染了。

說明:

擴展:
UIView和CALayer的區別:
UIView

CALayer:

二者關系:

GPU的渲染流程不再追溯,當前使用Metal來進行渲染,因此Metal的渲染流程可以看 十三、Metal - 初探 。這里進行簡單說明

說明:

屏幕顯示的操作是從幀緩存區中拿到幀數據,並且顯示到顯示屏上

說明:

說明:

通過引入雙緩存機制來解決讀取效率低的問題

如果只有一個幀緩沖區,幀租耐襲弊兄緩沖區的讀取和刷新都有較大的效率問題。因此必須等上一幀讀取完之後才能才能將下一幀寫入到緩存區中。效率較低。

因此蘋果引入雙緩沖畝喊機制,也就是兩個幀緩沖區,GPU會預先渲染好一幀放入到幀緩沖區,視頻控制區進行讀取,在讀取的過程中,就可以將新渲染好的一幀放到另一個幀緩沖區,這樣就可以一直不停的進行刷新幀緩沖區,而當視頻控制器讀取完成,GPU會主動的把指針指向第二個緩沖區,這樣讀取和刷新幀緩沖區的效率都提高了

通過垂直同步機制來較大程度解決畫面撕裂問題

上面的雙緩沖機制有一個很大的問題,就是GPU會一直不停的將渲染好的一幀數據放到幀緩沖區中,並且在提交完成後,會主動的把指針指向第二個緩沖區,這樣如果此時視頻控制器還未讀取完成,比如讀取到一半,下一半就變成了下一幀的數據,就會造成畫面撕裂現象

解決:
VSync信號到來後,才開始CPU->GPU->緩沖區,而此時視頻控制器會把上一次的幀數據讀取到,可以說是讀取和更新是同時的,但是讀取和更新都依賴於VSync

幀緩沖區的更新和讀取時同時進行,而且都收到VSync信號的控制,讀取上一個幀數據時,更新下一個幀數據

上面我們已經知道了視圖數據渲染到屏幕上所需要經歷的過程,最後視頻控制器是按照雙緩存機制+垂直同步信號來獲取幀數據的。因此我們按照這個認知來分析卡頓原理

上面所說的雙緩沖機制+垂直同步機制,需要VSync到來時,更新幀數據,下一個VSync到來時,會讀取這次更新的幀數據,而如果下一個VSync到來時,因為CPU或GPU的原因,幀數據還沒有更新到幀緩沖區,就會繼續讀取上一個幀數據,在一個VSync時間內顯示了兩次幀數據, 就會造成卡頓現象

思路一實現方法:用 CADisplayLinker 來計數
CADisplayLink可以以屏幕刷新的頻率調用指定selector,iOS系統中正常的屏幕刷新率為60次/秒,只要在這個方法裡面統計每秒這個方法執行的次數,通過次數/時間就可以得出當前屏幕的刷新率了。

思路二實現方法:通過子線程監測主線程的RunLoop,判斷兩個狀態RunLoop的狀態區域之間的耗時是否達到一定閾值。
開啟子線程,實時計算這兩個狀態區域之間的耗時是否到達某個閥值,便能揪出這些性能殺手,假定連續6次超時50ms認為卡頓(當然也包含了單次超時300ms)

總的來說有兩種,第一是避免使用不必要的操作,第二是必需的操作盡量放到後台執行
避免不必要的操作

必要的操作放到後台執行

GPU的認識:
可進⾏繪圖運算⼯作的專⽤微處理器,是連接計算機和顯示終端的紐帶。
他所做的事情概括起來:1、接收提交的紋理(Textture)和頂點描述。2、應用變換(transform)3、混合並渲染 4、輸出到屏幕上

紋理的渲染

視圖的混合

圖像繪制

❺ 供應鏈可視化如何幫助企業進行供應鏈安全管理


供應鏈可視化管理作用與現狀分析

供應鏈可視化就是利用信息技術,採集、傳遞、存儲、分析、處理供應鏈中的訂單、物流以及庫存等相關指標信息,按照需求以圖形化的方式展現出來。下面是我為大家分享供應鏈可視化管理作用與現狀分析,歡迎大家閱讀瀏覽。

一、供應鏈可視化定義及基本內容

1.供應鏈可視化的定義

供應鏈可視化就是利用信息技術,採集、傳遞、存儲、分析、處理供應鏈中的訂單、物流以及庫存等相關指標信息,按照需求以圖形化的方式展現出來。

2.供應鏈可視化的基本內容

(1)流程處理可視化。包括訂單處理、訂單查收、訂單實現、訂單到賬等。

(2)倉庫可視化。包括對存儲單元進行分類編碼和屬性定義(容量、可存放零件等),入庫時自動分配存儲單元,出庫時提醒操作人員從指定的存儲單元上取貨。

(3)物流追蹤管理可視化。產品物流過程涉及很多企業不同侍陪昌信息,企業需要掌握貨物的具體地點等信息,從而做出及時反應。

(4)應用可視化。用戶可以通過界面採集數據、提煉數據、獲得管理功能,進行分析、統計、報表,以做出管理決策,這也為企業提供了一個數據輸入、導入、上載的平台。

二、供應鏈可視化應用的關鍵技術

1.條碼技術

藉助條碼技術,企業不僅可實現對產品生產數據和生產質量檢查數據的採集,實現對生產過程的監控,以提高生產效率,同時,產品條碼和產品檔案的連接,使得企業可以及時了解到倉庫和在途產品的數量、位置等具體情況,實現對產品從采購到最終消費者手中的全程可視化管理。

2.XML技術

XML技術不僅能將數據嵌入系統,而且能毫無阻礙地在跨平台之間自動分享和交換物流數據,因此XML技術能極大地減少信息系統的整合費用,增強數據的穩定性。

3.Web技術

相比於傳統的Web技術,Web伺服器是一個寬容的連接器,能高效地整合跨企業、跨平台、跨語言的信息應用。

4.EDI技術

EDI技術是通過計算機網路信息系統,使用一種國際公認的標准格式,實現供應鏈上企業的即時數據交流工具,能夠以低成本、高效率來實現企業與企業、企業與其他組織之間的信息交換。

5.EAI技術

EAI是通過建立底層結構,來聯系橫貫整個企業的異構系統、應用、數據源等,完成在企業內部的ERP、CRM、SCM、資料庫、數據倉庫,以及其他內部重要系統之間無縫地共享和交換數據的要求。

6.RFID技術

RFID技術是通過在物料、產品中植入晶元,並將晶元信號與物料產品信息相連接,企業通過計算機、自動識別系統,實現對物料、產品的全程監管。

7.GPS和GIS技術

供應鏈企業可以應用GIS收集、儲存和處理空間信息,並且以GPS來測量任何時間和地點的即時位置信息,實現供應鏈夥伴之間的實時數據傳遞。

三、供應鏈可視化平台在供應鏈管理中的應用

企業通過建立可視化平台系統,實現對數據採集、數據傳輸、數據存儲、數據分析處理以及數據展示等。如圖1所示,供應鏈可視化的數據來自於供應鏈中各節點企業內部系統的資料庫,或者節點企業之間進行交易的EDI、XML文件等數據。利用應用集成網關提供的各種數據介面將其抽取(Extract)、轉換(Transfor)、載入(Load)到目標數據倉庫中;針對可視化對象建立多維數亂吵據集,聯機分析與處理(OLAP),利用多維數據集和數據聚集技術對數據倉庫中的數據進行組織和匯總,用聯機分析和可視化工具對這些數據迅速進行評價;最後使用前端展示工具將可視化信息以各種圖表的方式直觀展示出來,便於用戶分析決策。

⬆ 供應鏈可視化結構模型(圖1)

四、供應鏈可視老扒化管理在企業中的作用

1.節約交易成本。用信息的可視化串聯整合供應鏈,將大大降低供應鏈內各個環節的交易成本,縮短交易時間。

2.降低采購成本,促進供貨商的'管理。由於供貨商能夠方便地取得存貨和采購信息,采購管理人員等可以大幅提高工作效率,從事具有更高價值的工作。

3.減少存貨量。通過擴展組織的邊界,實現聯合庫存,供貨商能夠隨時掌握存貨信息,因此核心製造單元、物流企業均不需要維持較高的存貨量。

4.縮短循環周期。通過供應鏈管理的自動化系統,預測精度將大幅度提高,這將能縮短生產的時間,提高客戶的滿意度。

5.收入和利潤增加。通過組織邊界的延伸,企業能履行他們的合同,增加收入並維持和增加市場份額。

五、實現供應鏈可視化管理存在的難題

1.信息安全。企業在對供應鏈中其他夥伴分享企業信息時,容易造成信息被盜,從而影響企業的發展。

2.人才缺乏。我國物流人才缺乏,擅長供應鏈與計算機技術的物流人才更少,使得我國企業很難形成從上到下全程可視化的供應鏈。

3.系統維護。供應鏈管理系統,理論上比企業內部的所有系統都要龐大,其信息量和承擔的任務也比企業其他系統為更大,使得其系統的維護難度大、成本高;而不維護,一旦信息出錯,又將給企業帶來不小的損失。

六、供應鏈可視化管理的未來展望

隨著我國經濟和企業的不斷發展,供應鏈可視化管理將得到更多的關注。對供應鏈可視化管理的發展方向,我們可以做出以下預測:

1.對RFID在供應鏈中的應用才剛剛開始,現階段的研究主要還是停留於實現產品的全程可視化管理,後期其應用將逐漸擴散到供應鏈的多個部分,如,RFID標簽作為產品從材料原產地開始到消費者手中全過程信息記錄的載體。

2.供應鏈可視化研究的主要對象目前還是國內企業組成的供應鏈,而隨著中國“一帶一路”戰略的實施,跨國供應鏈的研究會成為重點課題。

3.隨著供應鏈可視化管理在企業管理中重要地位的不斷凸顯、以及我國“互聯網 ”戰略的進一步發展,針對中小企業的供應鏈可視化研究將慢慢浮出水面,形成供應鏈管理的新天地。

;

(詳情查看)

(詳情查看)

(詳情查看)

(詳情查看)

(詳情查看)

❻ Cube Engine 引擎

Source引擎總覽

Source並不是一套簡單的3D引擎,也可以是說,他並非只是一套渲染器。Source引擎包含了很多不同的模組,程序員可以在引擎的程序包中方便地取出以及添加進其他的元素。

在這篇文章裡面,我將會為大家展示這些模組是什麼回事並且對游戲產生怎樣的影響。在下面將要陳述的問題主要講解在Source引擎中一些令人驚奇的模組是怎樣對整個游戲的畫面以及游戲效果產生影響,而不是去解釋Source引擎的代碼怎樣去運作。對於此,可能大家會覺得比較枯燥,畢竟,這些在程序實現上的問題針對的是對游戲有一定研究的玩家。我們並沒有打算深入到Source的程序代碼進行研究,因為這些已經不屬於我們一般老百姓可以研究的手余范疇了。在這里必須要給讀者澄清一下,由於目前Source引擎的非公開性,我們並不能准確地將Source引擎中每一個模組的特性都准確地表示出來,如果你一定要深入研究的話,請參考Half-Life 2發布之後的 SDK 參考文檔以及Valve以後的白皮書。本文的章節細分以筆者對Source引擎的了解為依據。請根據實際情況印證並參考其他專著以及文獻。

3D 引擎
渲染器
Pixel 、vertex shaders
光影效果
HDR (High Dynamic Range)
動畫以及角色面部表情
幾何構成
VGUI游戲界面
物理引擎,基於Havok 定製的物理引擎
剛體的動力學模型以及關節約束機制
彈性機構、繩索機構、布紋處理、車輛系統
水以及火光
粒子系統
怪物/NPC/程序 上的物理學系統
材質系統
AI 系統

在這里,我尚且用3D engine來描述造Source引擎中,生成引擎輸出圖像及其幾何體的模組。

渲染器
這部分最能體現顯卡的功力,也是玩家最為注重的一個重點。渲染器的作用主要主要功能就是採集畫面幾何體和材質的數據,通過一系列繁雜的過程,生成一個三維的圖像。Valve並沒有重新創造Source引擎的渲染器而採用了Microsoft DirectX 9.0 的 API,並藉助Half-Life SL高階編程語言編輪此寫引擎,在很大程度上節省了寶貴的時間,這歸功於 DirectX9良好的硬體兼容性以及先進的代碼設計流程。原有的Half-Life 1引擎被設計成支持 OpenGL and Direct3D的雙模式,但正如各位所見,這個引擎在Direct3D模式下的渲染十分糟糕,特別是在目前主流的顯卡上工作時,其效率以及畫質遠不及OpenGL模式下的表現。在設計Source引擎的時候,Valve放棄了ogl的渲染模式進而採用DirectX架構,以增強其硬體兼容性以及對未來特效的支持,比如是Shader2.0b甚至是Shader3.0 Model的支持。
............................

Cube Engine的應用主要是在射擊游戲方面。應用該引擎的第一個作品就叫Cube。
Cube,是一套基於Cube Engine的第一身OpenGL 3D射擊游戲,雖然是免費,但絕不遜色於商業游戲,而且功能齊全,支持單打及連線對打,可以團體模式進行游戲。
Cube的升級版本稱為Sauerbraten
Sauerbraten (Cube 2)是一個基於Cube FPS的從新設計版本的單、多用戶游戲。盡管Sauerbraten和Cube在游戲設計思路上有共同之處,但是它有一個6向定點世界模式。這個補充使游戲具有了更復雜的幾何圖形,和Cube很像的地方在於,游戲的目的並不是簡單的滿足於視覺上的效果,而是在游戲的同時動態的創建地圖。此為這個FPS游戲十分的耐玩,他的引擎正在被用來研發一個RPG游戲。
3d:three dimensional,三維
3ds(3d subsystem,三維子系統)
ae(atmospheric effects,霧化效果)
afr(alternate frame rendering,交替渲染技術)
anisotropic filtering(各向異性過濾)
appe(advanced packet parsing engine,增強形幀解析臘薯迅引擎)
av(analog video,模擬視頻)
back buffer,後置緩沖
backface culling(隱面消除)
battle for eyeballs(眼球大戰,各3d圖形晶元公司為了爭奪用戶而作的競爭)
bilinear filtering(雙線性過濾)
cem(cube environment mapping,立方環境映射)
cg(computer graphics,計算機生成圖像)
clipping(剪貼紋理)
clock synthesizer,時鍾合成器
compressed textures(壓縮紋理)
concurrent command engine,協作命令引擎
center processing unit utilization,中央處理器佔用率
dac(digital to analog converter,數模傳換器)
decal(印花法,用於生成一些半透明效果,如:鮮血飛濺的場面)
dfp(digital flat panel,數字式平面顯示器)
dfs: dynamic flat shading(動態平面描影),可用作加速
dithering(抖動)
directional light,方向性光源
dme: direct memory execute(直接內存執行)
dof(depth of field,多重境深)
dot texture blending(點型紋理混和)
double buffering(雙緩沖區)
dir(direct rendering infrastructure,基層直接渲染)
dvi(digital video interface,數字視頻介面)
dxr: dynamicxtended resolution(動態可擴展解析度)
dxtc(direct x texture compress,directx紋理壓縮,以s3tc為基礎)
dynamic z-buffering(動態z軸緩沖區),顯示物體遠近,可用作遠景
e-ddc(enhanced display data channel,增強形視頻數據通道協議,定義了顯示輸出與主系統之間的通訊通道,能提高顯示輸出的畫面質量)
edge anti-aliasing,邊緣抗鋸齒失真
e-edid(enhanced extended identification data,增強形擴充身份辨識數據,定義了電腦通訊視頻主系統的數據格式)
execute buffers,執行緩沖區
environment mapped bump mapping(環境凹凸映射)
extended burst transactions,增強式突發處理
front buffer,前置緩沖
flat(平面描影)
frames rate is king(幀數為王)
fsaa(full scene anti-aliasing,全景抗鋸齒)
fog(霧化效果)
flip double buffered(反轉雙緩存)
fog table quality(霧化表畫質)
gart(graphic address remappng table,圖形地址重繪表)
gouraud shading,高洛德描影,也稱為內插法均勻塗色
gpu(graphics processing unit,圖形處理器)
gtf(generalized timing formula,一般程序時間,定義了產生畫面所需要的時間,包括了諸如畫面刷新率等)
hal(hardware abstraction layer,硬體抽像化層)
hardware motion compensation(硬體運動補償)
hdtv(high definition television,高清晰度電視)
hel: hardware emulation layer(硬體模擬層)
high triangle count(復雜三角形計數)
icd(installable client driver,可安裝客戶端驅動程序)
idct(inverse discrete cosine transform,非連續反餘弦變換,geforce的dvd硬體強化技術)
immediate mode,直接模式
ippr: image processing and pattern recognition(圖像處理和模式識別)
large textures(大型紋理)
lf(linear filtering,線性過濾,即雙線性過濾)
lighting(光源)
lightmap(光線映射)
local peripheral bus(局域邊緣匯流排)
mipmapping(mip映射)
molate(調制混合)
motion compensation,動態補償
motion blur(模糊移動)
mpps:million pixels per second,百萬個像素/秒
multi-resolution mesh,多重解析度組合
multi threaded bus master,多重主控
multitexture(多重紋理)
nerest mipmap(鄰近mip映射,又叫點采樣技術)
overdraw(透支,全景渲染造成的浪費)
partial texture downloads(並行紋理傳輸)
parallel processing perspective engine(平行透視處理器)
pc(perspective correction,透視糾正)
pgc(parallel graphics configuration,並行圖像設置)
pixel(picture element,圖像元素,又稱p像素,屏幕上的像素點)
point light(一般點光源)
point sampling(點采樣技術,又叫鄰近mip映射)
precise pixel interpolation,精確像素插值
proceral textures(可編程紋理)
ramdac(random access memory digital to analog converter,隨機存儲器數/模轉換器)
reflection mapping(反射貼圖)
render(著色或渲染)
s端子(seperate)
s3(sight、sound、speed,視頻、音頻、速度)
s3tc(s3 texture compress,s3紋理壓縮,僅支持s3顯卡)
s3tl(s3 transformation & lighting,s3多邊形轉換和光源處理)
screen buffer(屏幕緩沖)
sdtv(standard definition television,標准清晰度電視)
sem(spherical environment mapping,球形環境映射)
shading,描影
single pass multi-texturing,單通道多紋理
sli(scanline interleave,掃描線間插,3dfx的雙voodoo 2配合技術)
smart filter(智能過濾)
soft shadows(柔和陰影)
soft reflections(柔和反射)
spot light(小型點光源)
sra(symmetric rendering architecture,對稱渲染架構)
stencil buffers(模板緩沖)
stream processor(流線處理)
superscaler rendering,超標量渲染
tbfb(tile based frame buffer,碎片紋理幀緩存)
texel(t像素,紋理上的像素點)
texture fidelity(紋理真實性)
texture swapping(紋理交換)
t&l(transform and lighting,多邊形轉換與光源處理)
t-buffer(t緩沖,3dfx voodoo4的特效,包括全景反鋸齒full-scene anti-aliasing、動態模糊motion blur、焦點模糊depth of field blur、柔和陰影soft shadows、柔和反射soft reflections)
tca(twin cache architecture,雙緩存結構)
transparency(透明狀效果)
transformation(三角形轉換)
trilinear filtering(三線性過濾)
texture modes,材質模式
tmipm: trilinear mip mapping(三次線性mip材質貼圖)
uma(unified memory architecture,統一內存架構)
visualize geometry engine,可視化幾何引擎
vertex lighting(頂點光源)
vertical interpolation(垂直調變)
vip(video interface port,視頻介面)
virge: video and rendering graphics engine(視頻描寫圖形引擎)
voxel(volume pixels,立體像素,novalogic的技術)
vqtc(vector-quantization texture compression,向量紋理壓縮)
vsis(video signal standard,視頻信號標准)
v-sync(同步刷新)
z buffer(z緩存)

❼ 圖形渲染原理

我們都知道可視化程序都是由 CPU 和 GPU 協作進行的。那麼我們下面先來介紹下這兩個的基本概念:

計算機將存儲在內存中的形狀轉換繪制到屏幕上的過程叫做 渲染 。渲碧如染過程中最常用的技術就是 光嫌慧灶柵化

介紹屏幕圖像顯示原理前,需要先了解下 CRT 顯示器原理。

CTR 電子槍是從上到下呈 Z 字形逐行掃描,掃描完成後會就會呈現一幀的畫面,然後電子槍會回到初始位置從新進行掃描。為了同步顯示器的顯示過程和視屏控制器,顯示器會用硬體時鍾產生一系列的定時信號。當電子槍進行掃描時,顯示器會發出一個水平同步信號(horizonal synchronization),簡稱 HSync;當一幀畫面繪制完成後,電子槍回復到原位,准備繪制下一幀前,顯示器會發出一個垂直同步信號(vertical synchronization),簡稱 VSync。顯示器通常以固定的頻率進行刷新,這個刷新率就是 Vsync 信號產生的頻率。

上圖所示為 CPU、GPU和顯示器常見的工作方式。CPU計算好顯示的內容,提交至 GPU,GPU渲染完成後將數據提交到幀緩沖區中,顯示器會按照 Vsync 信號逐幀讀取幀緩沖區中的數據,經過數模轉換最終在顯示器上顯示。

但是這種情況下是最簡單的情況,幀緩沖區只有一個。當沒有引入垂直同步信號的技術的時候,這里會造成一個常見的問題, 屏幕撕裂

造成的原因是因為,當顯示器讀取幀緩沖區的內容時,當前幀緩沖區的數據還是上一幀的數據,所以,在逐行掃描顯示的是老數據,當GPU在掃描的過程中,提交了新的數據到幀緩沖區後,顯示器會讀取到新的內容,所以導致下方繪制的是新的數據,這種情況就是屏幕撕裂產生的原因。

解決屏幕撕裂的方法,是使用垂直同步信號 (Vsync) ,相當於加鎖操作,只有 GPU 渲染完一幀,放入幀緩沖區中,顯示器才會去讀取幀緩沖區中的內容。

在這種情況下,幀緩沖區的讀取和刷新都會存在較大的效率問題,為了解決效率問題,就引入了新的技術, 雙緩沖區

雙緩沖區的機制芹扮就是,GPU會預先渲染一幀數據放入一個緩沖區中,用於視頻控制器的讀取。當下一幀渲染完畢後,GPU 會直接把視屏控制器的指針指向第二個緩沖區。

但是雙緩沖區仍然會產生掉幀的問題。具體掉幀的原因可以參考我寫的另一篇文章 【UIView的繪制原理及優化】 。

在使用了雙緩沖區和垂直同步信號後,由於總要等待緩沖區交換之後再進行下一幀的渲染,使得幀率無法完全得到硬體的最高水平。所以引進了 三緩沖區

即在等待垂直同步信號到來之前,來回交替兩個離屏緩沖區,而在垂直同步信號到來時,屏幕緩沖區會和最近渲染完成的離屏緩沖區進行交換。

如果你開發過iOS/Mac,就會對此框架比較熟悉。iOS 下使用的是 UIKit,MacOS 下使用的是 AppKit,我們通常使用 UIKit/AppKit 組件中的 Layout 以及 backgroundColor 等屬性來完成日常的界面繪畫工作。
其實 UIKit/AppKit 本身並不具備屏幕成像的能力,它主要負責用戶操作事件的響應。

Core Animation官方文檔

Core Animation Programming Guide

Core Animation,乍一看好像是做動畫的,其實動畫只是 Core Animation 中的一部分。它最初是有一個叫 Layer Kit 演變而來的。

Core Animation 主要用於渲染、混合和動畫視覺元素,可以理解為是一個復合引擎。旨在為了可能快的組合屏幕上不同的顯示內容。這些內容被分解成獨立的圖層,即 CALayer。從本質上來言,CALayer 是用戶所能在屏幕上看到的一切的基礎。

早期蘋果底層也是使用 OpenGL ES 來進行開發的。在 2014 年的時候推出了 Metal,2018年的時候, OpenGL 的 API 已經被蘋果廢棄了。蘋果推出 Metal 說是將 3D 圖像的渲染性能提高了 10 倍。但是主要的原因還是想將核心技術掌握在自己手中。

Metal 類似於 OpenGL ES,也是一套第三方標准。Core Animation、Core Image、SceneKit、SpriteKit 等顯然框架都是構建於 Metal 之上的。

雖然 OpenGL 已經被蘋果所廢棄,但是蘋果已經實現了一套機制將 OpenGL 命令無縫橋接到 Metal 上,由 Metal 擔任真正與硬體交互的工作。

Core Graphics 是基於 Quartz 高級繪圖引擎,主要用於運行時繪制圖像。開發者可以用此框架處理基於路徑的繪圖、轉換、顏色管理、離屏渲染、漸變、陰影、圖像管理等。

圖形處理器,支持 Metal 和 OpenGL ES的圖形硬體。也就是我們常提到的 GPU。

UIKit 中的每一個 UI 視圖控制項內部都有一個關聯的 CALayer,即 backing layer。

由於這種一一對應的關系,視圖層級擁有 視圖樹 的樹形結構,對應 CALayer 擁有 圖層樹 的樹形結構。

其中視圖的職責是 創建並管理 圖層,以確保子視圖在層級關系中 添加以及被移除 時, 其關聯的圖層在圖層樹中也有相應的操作 ,即保證視圖樹和圖層數在結構上的一致。

實際上,app本身並不負責渲染,渲染有一個獨立的進程負責,即 Render Server 進程。

Core Animation 流水線的詳細過程如下:

在 Core Animation 流水線中,app 調用 Render Server 的 Commit Transaction 其實可以細分為以下4個步驟:

以上整個流程所執行的時間遠遠超過了 16.67 ms,因此為了滿足對屏幕的 60FPS 刷新率的支持,需要將這些步驟進行分解,通過流水線的方式進行並行執行,如下圖所示:

計算機那些事(8)——圖形圖像渲染原理

iOS 圖像渲染原理

❽ 我想知道所有的視頻術語(video terms),請高人指教!

3d:three dimensional,三維
3ds(3d subsystem,三維子系統)
ae(atmospheric effects,霧化效果)
afr(alternate frame rendering,交替渲染技術)
anisotropic filtering(各向異性過濾)
appe(advanced packet parsing engine,增強形幀解析引擎)
av(analog video,模擬視頻)
back buffer,後置緩沖
backface culling(隱面消除)
battle for eyeballs(眼球大戰,各3d圖形晶元公司為了爭奪用戶而作的競爭)
bilinear filtering(雙線性過濾)
cem(cube environment mapping,立方環境映射)
cg(computer graphics,計算機生成圖像)
clipping(剪貼紋理)
clock synthesizer,時鍾合成器
compressed textures(壓縮紋理)
concurrent command engine,協作命令引擎
center processing unit utilization,中央處理器佔用率
dac(digital to analog converter,數模傳換器)
decal(印花法,用於生成一些半透宏埋明效果,如:鮮血飛濺的場面)
dfp(digital flat panel,數字式平面顯示器)
dfs: dynamic flat shading(動態平面描影),可用作加速
dithering(抖動)
directional light,方向性光源
dme: direct memory execute(直接內存執行)
dof(depth of field,多重境深)
dot texture blending(點型紋理混和)
double buffering(雙緩沖區)
dir(direct rendering infrastructure,基層直接渲染)
dvi(digital video interface,數字視頻介面)
dxr: dynamicxtended resolution(動態可擴展解析度)
dxtc(direct x texture compress,directx紋理壓縮,以s3tc為基礎)
dynamic z-buffering(動態z軸緩沖區),顯示高絕滲物體遠近,可用作遠景
e-ddc(enhanced display data channel,增強形視頻數據通道協議,定義了顯示輸出與主系統之間的戚脊通訊通道,能提高顯示輸出的畫面質量)
edge anti-aliasing,邊緣抗鋸齒失真
e-edid(enhanced extended identification data,增強形擴充身份辨識數據,定義了電腦通訊視頻主系統的數據格式)
execute buffers,執行緩沖區
environment mapped bump mapping(環境凹凸映射)
extended burst transactions,增強式突發處理
front buffer,前置緩沖
flat(平面描影)
frames rate is king(幀數為王)
fsaa(full scene anti-aliasing,全景抗鋸齒)
fog(霧化效果)
flip double buffered(反轉雙緩存)
fog table quality(霧化表畫質)
gart(graphic address remappng table,圖形地址重繪表)
gouraud shading,高洛德描影,也稱為內插法均勻塗色
gpu(graphics processing unit,圖形處理器)
gtf(generalized timing formula,一般程序時間,定義了產生畫面所需要的時間,包括了諸如畫面刷新率等)
hal(hardware abstraction layer,硬體抽像化層)
hardware motion compensation(硬體運動補償)
hdtv(high definition television,高清晰度電視)
hel: hardware emulation layer(硬體模擬層)
high triangle count(復雜三角形計數)
icd(installable client driver,可安裝客戶端驅動程序)
idct(inverse discrete cosine transform,非連續反餘弦變換,geforce的dvd硬體強化技術)
immediate mode,直接模式
ippr: image processing and pattern recognition(圖像處理和模式識別)
large textures(大型紋理)
lf(linear filtering,線性過濾,即雙線性過濾)
lighting(光源)
lightmap(光線映射)
local peripheral bus(局域邊緣匯流排)
mipmapping(mip映射)
molate(調制混合)
motion compensation,動態補償
motion blur(模糊移動)
mpps:million pixels per second,百萬個像素/秒
multi-resolution mesh,多重解析度組合
multi threaded bus master,多重主控
multitexture(多重紋理)
nerest mipmap(鄰近mip映射,又叫點采樣技術)
overdraw(透支,全景渲染造成的浪費)
partial texture downloads(並行紋理傳輸)
parallel processing perspective engine(平行透視處理器)
pc(perspective correction,透視糾正)
pgc(parallel graphics configuration,並行圖像設置)
pixel(picture element,圖像元素,又稱p像素,屏幕上的像素點)
point light(一般點光源)
point sampling(點采樣技術,又叫鄰近mip映射)
precise pixel interpolation,精確像素插值
proceral textures(可編程紋理)
ramdac(random access memory digital to analog converter,隨機存儲器數/模轉換器)
reflection mapping(反射貼圖)
render(著色或渲染)
s端子(seperate)
s3(sight、sound、speed,視頻、音頻、速度)
s3tc(s3 texture compress,s3紋理壓縮,僅支持s3顯卡)
s3tl(s3 transformation & lighting,s3多邊形轉換和光源處理)
screen buffer(屏幕緩沖)
sdtv(standard definition television,標准清晰度電視)
sem(spherical environment mapping,球形環境映射)
shading,描影
single pass multi-texturing,單通道多紋理
sli(scanline interleave,掃描線間插,3dfx的雙voodoo 2配合技術)
smart filter(智能過濾)
soft shadows(柔和陰影)
soft reflections(柔和反射)
spot light(小型點光源)
sra(symmetric rendering architecture,對稱渲染架構)
stencil buffers(模板緩沖)
stream processor(流線處理)
superscaler rendering,超標量渲染
tbfb(tile based frame buffer,碎片紋理幀緩存)
texel(t像素,紋理上的像素點)
texture fidelity(紋理真實性)
texture swapping(紋理交換)
t&l(transform and lighting,多邊形轉換與光源處理)
t-buffer(t緩沖,3dfx voodoo4的特效,包括全景反鋸齒full-scene anti-aliasing、動態模糊motion blur、焦點模糊depth of field blur、柔和陰影soft shadows、柔和反射soft reflections)
tca(twin cache architecture,雙緩存結構)
transparency(透明狀效果)
transformation(三角形轉換)
trilinear filtering(三線性過濾)
texture modes,材質模式
tmipm: trilinear mip mapping(三次線性mip材質貼圖)
uma(unified memory architecture,統一內存架構)
visualize geometry engine,可視化幾何引擎
vertex lighting(頂點光源)
vertical interpolation(垂直調變)
vip(video interface port,視頻介面)
virge: video and rendering graphics engine(視頻描寫圖形引擎)
voxel(volume pixels,立體像素,novalogic的技術)
vqtc(vector-quantization texture compression,向量紋理壓縮)
vsis(video signal standard,視頻信號標准)
v-sync(同步刷新)
z buffer(z緩存)

❾ Tableau-可視化分析入門

可視化分析是通過互動式可視化界面,從數據中獲得知識和見解的過程。
在 Tableau 中開始分析數據蠢告有兩種方法:

這里選擇第二種,我們首先先向數據集「示例-超市」提出第一個問題:
銷售情況如何隨時間的變化而變化?

Step1:雙擊度量「銷售額」和維度「訂單日期」,Tableau 將使用可視化最佳做法來創建時間表,可以看到銷售額正隨著時間的推移而增長。

此時的標記類型是「自動」。這是 Tableau 使用數據中的欄位,自動匹配最慶檔凱合適的標記類型。我們可以根據需求選擇合適的標記。

第二個問題: 「銷售額」與「利潤」之間有什麼關系?

我們再來看這樣一個視圖,度量自動聚合為視圖的粒度。粒度是由維度決定的,維度欄位可以放在在行、列功能區作為軸的設置;也可以放在標記卡上,作為交互方式的設置。

例如,如果我們將「類別」拖到「顏色」功能區。則每個類別都將具有唯一的顏色標記,顯示此類別的銷售總額和利潤總和。如果將「細分」拖到「形狀」功能區。那麼視圖則會顯示按「類別」和「細分」區分的標記,共 9個標記。維度定義的標記數量,顯示在整個 Tableau 窗口譽喚的左下角。

如果想改變控制顏色的維度,比如想換成維度「郵寄方式」來作為控制顏色的維度,可將其拖放到帶此顏色圖標的「類別」膠囊上。
請注意,在將「郵寄方式」添加到「標記」卡的顏色時,我們最終得到了按「郵寄方式」和「細分」區分的標記,共 12 個標記。

如果我們要按特定粒度生成標記,且不根據顏色或形狀編碼,可以將欄位拖到「標記」卡的詳細級別中。

此處標記選擇為省、自治區。

當把滑鼠懸停在 「郵寄方式」 圖例的「突出顯示」圖標上方時(請注意此圖標顯示為陰影),這表示突出顯示功能已對「郵寄方式」啟用。
如果單擊某個郵寄方式(如標准級),Tableau 會淡化其他顏色,從視覺上突出「標准級」訂單。

若未啟用突出顯示功能,則不發生任何變化。

如果維度並不在「標記」卡的顏色或形狀中應用, 如何使用突出顯示功能呢?
我們只需啟用突出顯示工具即可。

在儀錶板中,「突出顯示操作」可實現交互性。當指定了一個突出顯示的欄位後,該欄位在所有使用它的工作表中都能實現突出顯示。在「故事」視圖中,也可通過使用突出顯示工具,來保留特定突出顯示選擇項。

可視化分析入門的另一個途徑是使用 Tableau 的 「智能推薦」。
按住 Ctrl 鍵,單擊要使用的多個欄位。此處,我們使用曾用過的相同欄位,即「類別」、「郵寄方式」、「銷售額」和「利潤」,然後打開工具欄右側的「智能推薦」。
在「智能推薦」窗口中,可以看到用來呈現選定欄位的一鍵式圖形選項。橙色框表示可視化最佳做法。

注意:「智能推薦」只是 Tableau 中用於創建可視化分析的起點。
在具有可視化基礎模板後, 就可以使用「標記」卡和更多其他功能來修改視圖,使其完全符合我們的分析需求。

文章來源網路

❿ 三維圖形可視化製作技術

(一)OpenGL

OpenGL(Open Graphics Libaray)由SGI公司為其圖形工作站開發的可以獨立於窗口操作和硬體環境的圖形開發系統。其目的是將用戶從具體的硬體和操作系統中解放出來。用此系統可以不去理解這些系統的結構和指令系統,只要按規定的格式書寫應用程序就可以在任何支持該語言的硬體平台上執行。由於OpenGL的高度可重用性,已經有幾十家大公司表示接受OpenGL作為標准軟體介面,目前加入OpenGL ARB(OpenGL體系結構審查委員會)的成員有SGI公司、HP公司、MicroSoft公司、Intel公司、IBM公司、SUN公司、DEC公司、AT&T公司的Unix軟體實驗室等。在該組織的努力下,OpenGL已經成為高性能圖形和互動式視景處理的工業標准,能夠在Windows95/98、Windows NT、Windows 2K、Macos、Beos、OS/2以及Unix上應用。OpenGL的實質是作為圖形硬體的軟體介面,是一組三維的API函數。

1.OpenGL的主要功能

(1)建模。不但有簡單的點線面還提供了復雜的三維物體(球、錐等)以及復雜的曲線曲面(Bezier、Nurbs等)繪制函數。

(2)變換。主要包括基本變換(平移、旋轉等)和投影變換(平行、透視投影等)。

(3)顏色模式設置。RGBA模式、ColorIndex顏色索引。

(4)光照和材質設置。OpenGL光有輻射光、環境光、漫反射光、鏡面光;材質是用光反射率來表示的。場景中物體最終反映到人眼的顏色是光的RGB分量和材質的RGB分量疊加形成的。

(5)紋理映射。主要表達物體表面的細節。

(6)點陣圖顯示和圖像增強。圖像功能除了基本的復制和圖像像素讀寫外,還提供融合(Blending)、反走樣(Antialiasing)、霧化(Fog)等特殊的圖像處理效果。

(7)雙緩沖(Double Buffering)動畫。雙緩沖即前台緩沖和後台緩沖。後台計算場景、產生畫面,前台顯示後台已經計算好的畫面。

(8)交互技術。主要是提供三種工作模式:繪圖模式、選擇模式和反饋模式。繪圖模式完成場景的繪制,可以藉助物體的幾何參數及運動控制參數、場景的觀察參數、光照參數和材質參數、紋理參數、OpenGL函數的眾多常量控制參數、時間參數等和Windows對話框、菜單、外部設備等構成實時交互的程序系統。在選擇模式下,則可以對物體進行命名,選擇命名的物體,控制對命名的物體的繪制。而反饋模式則給程序設計提供了程序運行的信息,這些信息也可反饋給用戶,告訴用戶程序的運行狀況和監視程序的運行進程。

(9)其他。利用OpenGL還能實現深度暗示(Depth Cue)、運動模糊(Motion Blur)等特殊效果。

2.OpenGL的基本原理

OpenGL是一個硬體發生器的軟體介面,其主要目的是將二維、三維物體繪制到一個幀緩沖里,它包括幾百個圖形函數。開發者主要利用這些函數來建立三維模型和進行三維實時交互。

(1)圖元操作和指令。OpenGL能夠從多種可選擇的模式畫圖元,而且一種模式的設置一般不會影響其他模式的設置,無論發生深墨情況,指令總是被順序處理,也就是說,一個圖元必須完全畫完之後,後繼圖元才能影響幀存。

(2)圖形控制。OpenGL提供諸如變換矩陣、光照、反走樣方法、像素操作等參數來控制二維和三維圖形的繪制。它並不提供一個描述或建立復雜幾何物體的手段。OpenGL提供的是怎樣畫復雜物體的機制而非描繪復雜物體本身的面面俱到的工具。即OpenGL是過程性的而非描述性的。

(3)執行模式。OpenGL命令的解釋模式是客戶/伺服器模式的,即由客戶發布命令,命令由OpenGL伺服器(解釋器)來處理,伺服器可以運行在相同的或不同的計算機上,基於這一點,OpenGL是網路透明的。

地下水三維可視化系統開發與應用

3.OpenGL的命令語法與狀態

基於OpenGL標准開發的微機應用程序必須在32位Windows平台下,如Windows98/NT環境,運行時所需的動態連接庫為OpenGL32.DLL、Glu32.DLL。OpenGL包含100多個庫函數,這些函數按一定的格式來命名。

(1)核心函數115個,每個函數以gl開頭,這些函數是最基本的,可以運行在任何工作平台上。這些函數創建二維和三維幾何形體,設置視點,建立視覺體,設置顏色及材質,建立燈光,進行紋理映射,反走樣,處理融合,霧化場景等,它們可以接受不同的參數,因而可派生300多個函數。

(2)OpenGL實用庫函數以glu開頭,共43個。這些函數基於OpenGL核心函數,主要提供對輔助函數的支持,並且執行了核心OpenGL函數的交互,因而是比核心函數更高一層的函數,也更有通用性。可以運行在任何OpenGL工作平台上。

(3)輔助庫函數,共31個。以aux開頭,它們是一類特殊的OpenGL函數,是幫助初學者盡快進入OpenGL編程而做簡單練慣用的。因此並不能在所有平台上運行。但Windows98/NT支持它們。

(4)Windows專用庫函數,以wgl開頭。主要是連接OpenGL和Windows窗口系統的,用它們可以管理著色描述表及顯示列表,擴展功能,管理字體點陣圖等。

(5)Win32 API函數,共6個,用於處理像素格式及緩沖。

(6)OpenGL結構,共4個。

4.OpenGL圖形操作步驟

步驟1:設置像素格式:主要包括建立OpenGL繪制風格、顏色模式、顏色位數、深度位數等;

步驟2:建立模型:建立三維模型;

步驟3:舞檯布景:如何把景物放置在三維空間的適當位置,設置三維透視視覺體以觀察場景;

步驟4:效果處理:設置物體的材質(顏色、光學性能及紋理映射等)加入光照及光照條件;

步驟5:光柵化:把景物及其顏色信息轉化為可在計算機上顯示的像素信息。

(二)VRML

1.VRML簡介

VRML是英文Virtual Reality Modeling Language——虛擬現實造型語言的縮寫。其最初的名字叫Virtual Reality Makeup Language。名字是由第一屆WWW(1994,日內瓦)大會上,由Tim Berners Lee和Dave Raggett所組織的一個名為Bird-of-a-Feather(BOF)小組提出的。後來Makeup改為Modeling。VRML和HTML是緊密相連的,是HTML在3D領域的模擬和擴展。由於VRML在Internet具有良好的模擬性和交互性,因而顯示出強大的生命力。

VRML是一種3D交換格式,它定義了當今3D應用中的絕大多數常見概念,諸如變換層級、光源、視點、幾何、動畫、霧、材質屬性和紋理映射等。VRML的基本目標是確保能夠成為一種有效的3D文件交換格式。

VRML是HTML的3D模型。它把互動式三維能力帶入了萬維網,即VRML是一種可以發布3D網頁的跨平台語言。事實上,三維提供了一種更自然的體驗方式,例如游戲、工程和科學可視化、教育和建築。諸如此類的典型項目僅靠基於網頁的文本和圖像是不夠的,而需要增強交互性、動態效果連續感以及用戶的參與探索,這正是VRML的目標。

VRML提供的技術能夠把三維、二維、文本和多媒體集成為統一的整體。當把這些媒體類型和腳本描述語言(scripting language)以及網際網路的功能結合在一起時,就可能產生一種全新的互動式應用。VRML在支持經典二維桌面模型的同時,把它擴展到更廣闊的時空背景中。

VRML是賽博空間(cyber space)的基礎。賽博空間的概念是由科幻作家William Gibson提出的。雖然VRML沒有為真正的用戶模擬定義必要的網路和資料庫協議,但是應該看到VRML迅速發展的步伐。作為標准,它必須保持簡單性和可實現性,並在此前提下鼓勵前沿性的試驗和擴展。

2.VRML的基本工作原理及其特性

(1)用文本信息描述三維場景。在Internet網上傳輸,在本地機上由VRML的瀏覽器解釋生成三維場景,解釋生成的標准規范即是VRML規范。正是基於VRML的這種工作機制,才使其可能在網路應用中有很快的發展。當初VRML的設計者們考慮的也正是文本描述的信息在網路上的傳輸比圖形文件迅速,所以他們避開在網路上直接傳輸圖形文件而改用傳輸圖形文件的文本描述信息,把復雜的處理任務交給本地機從而減輕了網路的負荷。

(2)統分結合模式。VRML的訪問方式基於C/S模式,其中伺服器提供VRML文件,客戶通過網路下載希望訪問的文件,並通過本地平台的瀏覽器(Viewer)對該文件描述的VR世界進行訪問,即VRML文件包含了VR世界的邏輯結構信息,瀏覽器根據這些信息實現許多VR功能。這種由伺服器提供統一的描述信息,客戶機各自建立VR世界的訪問方式被稱為統分結合模式,也是VRML的基本概念。由於瀏覽器是本地平台提供的,從而實現了VR的平台無關性。

(3)基於ASCII碼的低帶寬可行性。VRML像HTML一樣,用ASCII文本格式來描述世界和鏈接,保證在各種平台上通用,同時也降低了數據量,從而在低帶寬的網路上也可以實現。

(4)實時3D著色引擎。傳統的VR中使用的實時3D著色引擎在VRML中得到了更好的體現。這一特性把VR的建模與實時訪問更明確地隔離開來,也是VR不同於三維建模和動畫的地方。後者預先著色,因而不能提供交互性。VRML提供了6+1個自由度,即三個方向的移動和旋轉,以及和其他3D空間的超鏈接(Anchor)。

(5)可擴充性。VRML作為一種標准,不可能滿足所有應用的需要。有的應用希望交互性更強,有的希望畫面質量更高,有的希望VR世界更復雜。這些要求往往是相互制約的,同時又受到用戶平台硬體性能的制約,因而VRML是可擴充的,即可以根據需要定義自己的對象及其屬性,並通過Java語言等方式使瀏覽器可以解釋這種對象及其行為。

(三)X3D

X3D(Extensible 3D——可擴展3D)是一個軟體標准,定義了如何在多媒體中整合基於網路傳播的交互三維內容。X3D將可以在不同的硬體設備中使用,並可用於不同的應用領域中。比如工程設計、科學可視化、多媒體再現、娛樂、教育、網頁、共享虛擬世界等方面。X3D也致力於建立一個3D圖形與多媒體的統一的交換格式。X3D是VRML的繼承。VRML(Virtual Reality Modeling Language-虛擬現實建模語言)是原來的網路3D圖形的ISO標准(ISO/IEC 14772)。X3D相對VRML有了改進,提供了以下的新特性:更先進的應用程序界面,新添的數據編碼格式,嚴格的一致性,組件化結構(用來允許模塊化的支持標準的各部分)。

1.X3D設計目標

X3D確立了以下的設計目標:

(1)分離數據編碼和運行時間結構;

(2)支持大量的數據編碼格式,包括XML(Extensible Markup Language);

(3)增加新的繪圖對象、行為對象、交互對象;

(4)給3D場景提供可選的應用程序界面(APIs);

(5)定義規格的子集「概貌(Profiles)」以適合不同的市場需要;

(6)允許在不同層次(1evels)的服務上都能實現X3D規格;

(7)盡可能添加完善規格中行為的定義或描述。

2.X3D特性

為了滿足工程設計、科學可視化、多媒體再現、娛樂、教育、網頁、共享虛擬世界等方面使用的需要,X3D添加了以下的新特性:

(1)3D圖形:多邊形化幾何體、參數化幾何體、變換層級、光照、材質、多通道/多進程紋理帖圖;

(2)2D圖形:在3D變換層級中顯示文本、2D矢量、平面圖形;

(3)動畫:計時器和插值器驅動的連續動畫;人性化動畫和變形;

(4)空間化的音頻和視頻:在場景幾何體上映射視聽源;

(5)用戶交互:基於滑鼠的選取和拖曳;鍵盤輸入;

(6)導航:攝像機;用戶在3D場景中的移動;碰撞、接近和可見性檢測;

(7)用戶定義對象:通過創建用戶定義的數據類型,可以擴展瀏覽器的功能;

(8)腳本:通過程序或腳本語言,可以動態地改變場景;

(9)網路:可以用網路上的資源組成一個單一的X3D場景;可以通過超鏈接對象連接到其他場景或網路上的其他資源;

(10)物理模擬:人性化動畫;地理化數據集;分布交互模擬(Distributed Interactive Simulation-DIS)協議整合。

(四)Java 3D

Java 3D用其自己定義的場景圖和觀察模式等技術構造了3D的上層結構,實現了在Java平台使用三維技術。Java 3D API是Sun定義的用於實現3D顯示的介面。3D技術是底層的顯示技術,Java 3D提供了基於Java的上層介面。Java 3D把OpenGL和DirectX這些底層技術包裝在Java介面中。這種全新的設計使3D技術變得不再繁瑣並且可以加入到J2SE、J2EE的整套架構,這些特性保證了Java 3D技術強大的擴展性。Java 3D建立在Java2(Java1.2)基礎之上,Java語言的簡單性使Java 3D的推廣有了可能。Java 3D是在OpenGL的基礎上發展起來的,可以說是Java語言在三維圖形領域的擴展,其實質是一組API即應用程序介面。利用Java 3D所提供的API就可以編寫出一些諸如三維動畫、遠程三維教學軟體、三維輔助設計分析和模擬軟體,以及三維游戲等。它實現了以下三維功能:

(1)生成簡單或復雜的形體(也可以調用現有的三維形體);

(2)使形體具有顏色、透明效果、貼圖;

(3)在三維環境中生成燈光、移動燈光;

(4)具有行為的處理判斷能力(鍵盤、滑鼠、定時等);

(5)生成霧、背景、聲音;

(6)使形體變形、移動、生成三維動畫;

(7)編寫非常復雜的應用程序,用於各種領域如VR(虛擬現實)。

1.Java 3D的數據結構

Java 3D的數據結構和OpenGL的數據結構一樣,採用的是場景圖的數據結構,但Java 3D根據Java語言的特點。Java 3D的場景圖是DAG(Directed-acyclic Graph),其特點是具有方向的不對稱性。Java 3D的場景圖由Java 3D的運行環境直接轉變成具有三維顯示效果的顯示內存數據,從而在計算機上顯示出三維效果,顯示內存中不斷接收Java 3D的運行最新結果,從而產生三維動畫。

2.、Java 3D(API)中的類

Java 3D是根據OpenGL的三維圖形庫及VRML的基礎上開發出來的一個API,裡麵包含了幾乎所有編寫Java互動式三維應用程序所需的最基本的類(類方法)、介面。主要存放在程序包Javax.media.j3d中,這些是Java 3D的核心類。另外,還有提供一個有助於快速編程的應用類型的包(Utility包)com.sun.j3d.utils(可或缺,主要是能大大地提高程序的編寫效率)。除了核心類和Utility包之外,還有:

(1)Java.awt(主要是定義一個顯示用的窗口);

(2)Javax.vecmath(主要是處理定義的矢量計算所用的類,今後核心類);

(3)Java 3D的類根據作用可分為Node、NodeComponent,其中Node又分為Group及Leaf兩個子類。

(五)IDL

1.IDL簡介

IDL(Interactive Data Language)是美國RSI公司(Research System Inc)的產品,它集可視、交互分析、大型商業開發為一體,為用戶提供了完善、靈活、有效的開發環境。IDL的主要特性包括:

(1)高級圖像處理、互動式二維和三維圖形技術、面向對象的編程方式、OpenGL圖形加速、跨平台圖形用戶界面工具包、可連接ODBC兼容資料庫及多種程序連接工具等。

(2)IDL是完全面向矩陣的,因此具有處理較大規模數據的能力。IDL可以讀取或輸出有格式或無格式的數據類型,支持通用文本及圖像數據,並且支持在NASA,TPT,NOAA等機構中大量使用的HDF,CDF及netCDF等科學數據格式及醫學掃描設備的標准格式DICOM格式。IDL還支持字元、位元組、16位整型、長整型、浮點、雙精度、復數等多種數據類型。能夠處理大於2Gb的數據文件。IDL採用OpenGL技術,支持OpenGL軟體或硬體加速,可加速互動式的2D及3D數據分析、圖像處理及可視化。可以實現曲面的旋轉和飛行;用多光源進行陰影或照明處理;可觀察體(Volume)內部復雜的細節;一旦創建對象後,可從各個不同的視角對對象進行可視分析。

(3)IDL具有圖像處理軟體包,例如感興趣區(ROI)分析及一整套圖像分析工具、地圖投影及轉換軟體包,宜於GIS的開發。

(4)IDL帶有數學分析和統計軟體包,提供科學計算模型。可進行曲線和曲面擬合分析、多維網格化和插值、線性和非線性系統等分析。

(5)用IDL DataMiner可快速訪問、查詢並管理與ODBC兼容的資料庫,支持Oracle,Informix,Sybase,MS SQL等資料庫。可以創建、刪除、查詢表格,執行任意的SQL命令。

(6)IDL可以通過ActiveX控制項將IDL應用開發集成到與COM兼容的環境中。用Vi-sual Basic,Visual C++等訪問IDL,還可以通過動態連接庫方式從IDL調用C,Fortran程序或從其他語言調用IDL。

(7)用IDL GUIBuilder可以開發跨平台的用戶圖形界面(GUI),用戶可以拖放式建立圖形用戶界面GUI,靈活、快速地產生應用程序的界面。

(8)IDL為用戶提供了一些可視數據分析的解決方案,早在1982年NASA的火星飛越航空器的開發就使用了IDL軟體。

2.IDL的編程方式

IDL有兩種編程方式,一是利用IDL平台的GUIBuilder進行編程,這種方式的特點是所見即所得,使用IDL自身所具有的控制項進行編程和界面設置,但使用靈活性不夠;另一種是利用IDL平台的集成開發環境的組件編程技術,這種方式的特點是較為靈活,而且功能較強,可以隨著編程者的意願進行設置。另外在IDL中有批處理文件語句,即在命令行中直接輸入命令語句來進行數據的讀入和輸出,以及進行屬性設置和處理。此外,IDL提供IDLDRAW WIDGET控制項,可進行基於COM技術的開發。

3.IDL的應用領域

由於其強大的功能和獨特的特點,IDL語言可以應用地球科學(包括氣象、水文、海洋、土壤、地質、地下水等)、醫學影像、圖像處理、GIS系統、軟體開發、大學教學、實驗室、測試技術、天文、航空航天、信號處理、防禦工程、數學統計及分析、環境工程等很多領域,IDL語言都可以得到廣泛的應用。目前應用IDL語言,已經開發出了ENVI,IMAGIS,RiverTools,醫學等成熟產品。具體的應用實例也非常多,如在2000年澳大利亞悉尼奧運會綜合預報系統、美國國家環境衛星數據和信息服務中心的厄爾尼諾現象分析等工作中得到了成功的應用。

北京市勘察設計研究院應用IDL語言,已開發了真三維地質分析系統AutoDig,能夠直接對簡單的地質數據,或其他帶層次性的數據實現科學的、完整的三維建模;同時也提供真三維顯示功能,不僅能對三維體實現任意的旋轉、放大、縮小,而且也能實現互動式的真三維切割功能。

(六)小結

三維圖形技術是隨著計算機軟硬體技術的發展而發展變化的,其鼻祖是SGI公司推出的OpenGL三維圖形庫。OpenGL是業界最為流行也是支持最廣泛的一個底層3D技術,幾乎所有的顯卡廠商都在底層實現了對OpenGL的支持和優化。OpenGL同時也定義了一系列介面用於編程實現三維應用程序,但是這些介面使用C(C++)語言實現並且很復雜。掌握針對OpenGL的編程技術需要花費大量時間精力。

Java 3D是在OpenGL的基礎上發展起來的,可以說是Java語言在三維圖形領域的擴展,其實質是一組API即應用程序介面。

Direct3D是Microsoft公司推出的三維圖形編程API,它主要應用於三維游戲的編程。眾多優秀的三維游戲都是由這個介面實現的。與OpenGL一樣,Direct3D的實現主要使用C++語言。

VRML2.0(VRML97)自1997年12月正式成為國際標准之後,在網路上得到了廣泛的應用,這是一種比BASIC,JAVASCRIPT等還要簡單的語言。現已發展為X3D。腳本化的語句可以編寫三維動畫片、三維游戲、計算機三維輔助教學。它最大的優勢在於可以嵌在網頁中顯示。

美國RSI公司(Research System Inc)研製和開發的最新可視軟體IDL(Interactive Data Language)互動式數據語言,是進行數據分析、可視化和跨平台應用開發的較佳選擇,它集可視、交互分析、大型商業開發為一體,為用戶提供了完善、靈活、有效的開發環境。三維技術的比較見表1-2。

表1-2 三維技術對比