當前位置:編程學習大全網 - 編程語言 - 如何提高3dmax運行速度

如何提高3dmax運行速度

對於3DS Max使用者來說,選擇壹個合適的圖形加速卡是十分重要的,因為在建模、動畫編輯和預覽等階段幾乎都是圖形密集的操作。3DS Max支持多種三維圖形顯示標準,它幾乎是目前唯壹同時支持OpenGL和Direct3D的壹個專業圖形軟件,同時,3DS Max還提供了完全軟件方式的Heidi供沒有3D加速的系統選用。除此之外,3DS Max還允許圖形卡制造商提供為3DS Max開發的專用驅動程序。

3DS Max的最新版本是3DS Max4。3DS Max4和以前的版本相同,分別支持Heidi/Software Z-Buffer、OpenGL、Direct3D以及第三方定制驅動(Custom)這四種驅動界面。OpenGL和Direct3D適合大多數硬件支持OpenGL和Direct3D的圖形卡,而壹些專業圖形卡則為了能夠得到更好的性能和更多的功能,專門針對3DS Max推出了各自的專門優化驅動程序。

3DS Max4與以前版本有很大不同的是3DS Max4支持Microsoft新的DirectX 8。DirectX8作為壹個新的API,在3D處理方面的改進十分大。在DirectX8中,3D處理的流程與原來的處理方式有很大不同。

CPU在完成3D模型的預處理後,會將模型的頂點數據送入3D處理流水線中進行處理。對於現代的圖形處理器來說,大都具有完整的幾何與光源處理單元。因此,CPU生成的頂點數據壹般就直接交由圖形處理起來進行處理。圖形處理器首先根據視點的變化或者物體的移動進行坐標變換(Transformation)計算,得出新坐標值,然後根據光源的情況計算出每個頂點上的光照的值(Lighting)。完成這兩個步驟以後,頂點的數據在Setup單元中構建成三角形並進行光柵化,將數學方式表示的三維數據轉換成具體的像素值。下壹步的工作就是對像素進行著色、對紋理進行貼圖等處理,最後,壹幀處理完成以後,處理好的數據放入幀緩存中用於顯示。在這整個3D處理流程中,CPU壹旦完成處理工作,數據送入3D處理流水線後,應用程序就無法再對3D處理的過程進行任何幹預了,而且硬件能夠完成的具體功能在硬件設計完成後就是不能改變的,應用程序只能應用到那些硬件具備的3D功能和效果。上述這種情況在DirectX8推出後情況有了很大的改變。DirectX8中有關3D處理的部分Direct3D中,最重要的就是以Vertex Shader代替了原來的Transformation和Lighting單元,用Pixel Shader代替了像素和紋理單元的工作。

Vertex Shader和Pixel Shader並非僅僅是名字的改變而以,它最重要之處是它們完全是個可以由開發者編程的單元。在Vertex Shader和Pixel Shader中,軟件的開發者可以各用多至128條指令來完成各種復雜的操作。在Vertex Shader中,除了必須完成常規運算如坐標變換、光照計算等操作外,還可以進行各種其他操作,如在處理的過程中改變頂點的坐標從而使得物體變形,通過對Vertex Shader進行編程,還可以處理骨架仿真、關鍵幀動畫以及視覺殘留(在高速運動的物體後面出現拖尾現象)等功能,這些效果看起來和3DS Max中的相關功能很類似,但這壹切都是在完全支持DirectX8的圖形處理器中完全由硬件來實時處理的。Pixel Shader也是個功能強大的處理單元,它可以完全由硬件完成過去很難完成的各種效果,如真實感的陰影、帶有環境映射的凹凸貼圖(Blinn Bump Mapping)、高質量的反鋸齒等等效果。

DirectX8的Vertex Shader和Pixel Shader均需要硬件支持才能發揮作用,因此,3DS Max4在使用Direct3D作為3D接口就要求圖形卡必須能夠提供對DirectX8的支持。目前,在專業圖形卡中,只有ELSA/Nvidia的Gloria DCC/Quadro DCC才是完全能夠硬件支持DirectX8特性的顯卡。不過,由於ELSA Synergy III/2000以及Gloria II/III雖然在硬件上並不完全符合DirectX8的要求,但是它們的Windows 9X/Windows 2000驅動程序提供了對Direct3D的支持,因此也可以正常使用,只不過在使用效率上不如Gloria DCC而已。

3DS Max提供圖形顯示的效果更多了,因此對圖形卡的要求更高,不僅僅是Direct3D,它對OpenGL也有更高的要求。按照Discreet的要求,OpenGL圖形卡必須支持以下壹些函數才能保證正常運行:

GL_KTX_buffer_region (dual planes)

GL_WIN_swap_hint (incremental scene rendering)

PFD_SWAP_COPY pixel formats

GL_EXT_bgra (BGRA pixel/texture format)

不過這僅僅是最基本的要求,實際上,如果要能夠表現出完美的效果,需要圖形卡支持更多的功能。3DS Max4的Samples中提供了壹些表現新特性的場景,這些場景可以用來對圖形卡的顯示效果和速度進行衡量。如其中有個場景Viewport-Dragon,表現的是個噴火龍噴火的情況。這個場景正常的顯示畫面應該看見火、樹和地面的紋理、噴火時龍身上映射的紅光等部分應該表現正常,但是由於某些顯卡或者是硬件支持的效果有限,或者是驅動程序的問題

對於需要經常進行復雜場景設計的人來說,性能是另壹個需要關註的重要方面。3DS Max4支持的顯示特性眾多,打開或者關閉某種特性會嚴重影響性能的發揮。如ELSA專門為3DS Max而開發的驅動程序Maxtreme可以方便地開關或者調節某些特性(如透明度、反鋸齒、不同的紋理過濾效果等)從而可以獲得較快的速度或者較好的顯示效果。對於經常使用在線框模式的人來說,我強烈建議大家使用三角形條帶化(Triangle Strips)優化,這個選項可以在ELSA Maxtreme的調節面板中可以看見Use Triangle Strips選項,而其他壹些顯卡如3DLabs的5110的驅動安裝好以後缺省就是采用這種模式,不能更改。Use Triangle Strip打開後,它通過對模型的三角形進行帶狀優化可以極大地降低頂點的傳送數量,從而大大提升線框模式下的性能。根據在ELSA Gloria III上的測試,打開Triangle Strip優化後線框模式下的顯示性能可以提升數倍之多。使用三角形條帶化後,主要的缺陷就是模型都是由三角形來表現,在線框模式下需要顯示更多的線條,從而使得顯示更加紛亂。不過,與它帶來的性能提升相比,這種代價我認為還是值得的

市面上的專業圖形卡中,那些顯卡在3DSMax4種可以得到較好的性能可能是大家關心的問題,我做了壹個小小的測試,圖形卡是目前最高檔的3DLabs WildCat 5110、ELSA Gloria III以及ATI尚未正式推出的FireGL 8800的原型R200。測試的平臺是采用雙1.5GHz至強(Xeon)和512M RDRAM的系統,我運行了3DS Max4中自帶的場景Viewport-Dragon,看看這幾塊圖形卡的運行情況。我首先安裝了3DS Max4,運行這個場景,然後再將3DS Max升級到4.2,看看運行的速度是否有所變化。在測試中,ELSA的Gloria III看起來很正常,在4和4.2版中OpenGL性能基本上處在19FPS(幀/秒)左右,畫面壹切正常;5110的情況十分特別,當采用OpenGL時,在4.0版的3DS Max中龍噴出的火表現成了壹個個紅色方塊,顯然是不支持透明度造成的

不過3DLabs也註意到這個問題,因此在安裝好5110針對3DS Max4的優化程序後畫面就顯得壹些正常。不過,當我升級到4.2版後,5110的表現卻反過來了,在OpenGL中它的畫面基本正常(出現的小問題是樹幹上有壹道道的透明橫線),而使用3DS Max4的定制驅動則不能表現正常的火焰,看來這個驅動不能夠支持3DS Max4.2。5110在4.0和4.2版中運行這個場景速度為8-9FPS,僅僅為Gloria III的壹般不到,讓人略感驚訝,估計是驅動中仍然有些地方未能完善,或者是某些效果由軟件計算從而影響整體的性能;ATI的R200由於是早期的版本,因此使用OpenGL根本不能進入3DS Max,而采用Direct3D後速度為10FPS左右,這個速度還是不錯的。以上的測試是個較粗糙的測試,不過也可以大致了解目前壹些專業圖形卡在運行3DS Max時的性能表現。

  • 上一篇:CPLD與FPGA的二者關系
  • 下一篇:經濟名人簡介
  • copyright 2024編程學習大全網