精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>三维设计>>3D Studio MAX/VIZ>>关于3DMAX的显示程序问题

主题:关于3DMAX的显示程序问题
发信人: alicewong444(紫衣-收拾心情)
整理人: zyg(2001-09-09 23:27:50), 站内信件
希望对大家有帮助。

★原文转载自Graphics版implibo的《Re:3DMAX的两个问题》★
【 在 zypy7 的大作中提到:】
:1.动画渲染的快慢由什么决定的,CPU还是显卡?如果我有一块
: TNT2 Pro的3D加速卡,那么它与普通的2D显卡有没有区别?
:2.在命令行加入参数/h,调出3D Studio MAX Driver setup的对话框,
:  有三项选择:HEIDI、OpenGL、Direct3D,到底选择哪一项(有3D加速卡的情况下), 对运行3D MAX有帮助?
:......
 

渲染是看cpu和内存
作图是看cpu和显存

HEIDT: 3D Studio MAX最早开始使用的驱动程序,当先卡没有适当的驱动程序时,可用Softwave Z-Buffer来作业.
OpenGL:若是用拥有OpenGL的县卡
Direct3D:Microsoft提倡的一种标准
Gustom:使用Heidi使用者所有的驱动程序(特定的县卡用自身的驱动)

HEIDI:  

  这种显示驱动程序使用CPU转换三维物体为二维图像,同时把图像显示在视角中。这种方式无需任何3D加速芯片,而主要靠CPU的计算能力,通常称这种方式为软加速。但3Dlabs GL系列专业显示芯片例外,它使用特殊的HEIDI驱动程序,从而获得3D硬件加速,这也使显示速度最快,但显卡价格惊人,四、五千元只能购买入门级专业显卡。由于HEIDI是为了3D Studio开发的,所以对视角的显示进行了特殊的优化。这也可以解释一些3D加速芯片使用HEIDI软加速反而快于其它硬件加速驱动。非专业显卡使用此方式,显示速度最慢。  

Direct3D (D3D):  

  这是微软为提高3D 游戏在Win 95/98中的显示性能而开发的显示程序。这个基于显示光栅加速引擎非常强大和复杂,它在显示满屏状态,提供多边形计算、贴图场景等优化能力。由于其只能在满屏提供优化能力,所以在3DS MAX中你只能在最大化显示视角时(如最大化显示TOP、RIGHT、LEFT 和 PERSPECTIVE视角),才能获得加速能力。同时,Direct3D不支持windows NT系统。3DS MAX只支持5.0以上的DirectX,Direct 3D只支持光栅级函数调用,Direct 3D常得到廉价的显示卡支持,支持场景数据优化、加速贴图显示(需得到显示卡的支持),场景透视修正。Direct 3D工作在高位显示模式,在这些显示模式下,它可达到一个显示质量和内存占用的平衡点。缺点是,只能工作在Win95/98下,不能工作在Windows NT下,只支持高位颜色显示模式,两个显示通道显示相对较慢,由于Direct 3D分配显示内存的方式问题,在极大化/极小化窗口时会出现显示混乱问题。由于Direct 3D对3DS MAX支持不足,显示速度虽然快于HEIDI,但在3DS MAX并不适用。  

OpenGL:  

  OpenGL是SGI公司开发应用于不同操作系统的三维应用软件,支持Windows95/98、WindowsNT等系统。3DS MAX使用完整的OpenGL内部函数,包括几何转化、灯光、贴图、数据剪切、场景重绘。如果显示卡支持这些函数,3DS MAX可完全使用,OpenGL是多线程程序,可支持双处理器系统。3DS MAX中的所有三维物体都基于OpenGL函数,通过这些函数进行几何和光栅转换。但现在出现了有趣的现象:不是所有支持OpenGL加速的显卡都支持OpenGL内部函数。这意味着在进行三维物体转换时,不能确定CPU是否同时参与进行转换计算。现在部分这种显卡只支持部分OpenGL函数,其它只能依靠CPU进行计算,加重了CPU的计算负担。为何这些显卡只支持部分OpenGL函数?其中一个原因是:电脑游戏只需要这部分OpenGL函数;而另一个原因是,分离几何转换和光栅转换有利于使显示速度提高,把复杂的几何转换交给CPU计算大大快于显示芯片计算。最后你需懂得MCD(简化版OpenGL)和ICD(完全版OpenGL)的区别:前者是在3Dfx Voodoo 系列显卡中使用,为Quake 或 Unreal等游戏的显示引擎;后者是在ATI RAGE TNT/TNT2、permeida 2/3等系列显卡中使用,通常在这些显卡说明书中标称为OpenGL ICD。3DS MAX硬件加速要求:完整的硬件光栅加速,OpenGL ICD,优良的几何硬件加速引擎。但它也非完美,由于三维场景数据都必须通过此驱动程序驱动,可能造成数据传输总线瓶颈现象。由于OpenGL广泛使用于不同操作系统,虽然这是它的优点,但也是其缺点,为了保证各个系统显示的共同性,可能造成场景显示的错误,如:灯光和贴图的显示限制,你可能注意到3DS MAX场景使用显示中贴图和灯光的紊乱现象(在灯光不强和无贴图校正时,尤其明显)。OpenGL支持16位以上真彩色显示,不支持8位彩色显示。OpenGL只能支持场景中最多8盏灯光的显示效果。线框物体不支持背面选择,所以不支持变边多边形。场景中物体表面纹理层叠自动关闭自发光效应,非层叠纹理将显得非常明亮,这有助于提高显示速度。由于在OpenGL设计时未对场景重绘进行优化,3DS MAX场景重绘时比使用HEIDI驱动慢,通常在场景中移动物体会出现显示下降的现象。  
  虽然OpenGL在显示时同样存在问题,但其已成为三维图形软件的标准,在显示速度上也有一定优势,在使用3DS MAX时通常使用此种显示方式(专业显卡除外)。  



一、什么是API? 

  在计算机行业中,所有软件的程序接口,包括3D图形程序接口在内,统称为API(Application Program Interface)——应用程序接口。我写这篇文章的主要目的,是让读者能够对三维图形中最基本、最常用的3种API格式有一些详细的了解,以便能在工作中成为小专家。 

  简单地说,API的出台使得软件开发工作者的工作更加轻松、容易。有了它,各种软件的接口功能就有了可比性。过去,如果您想让它们发挥最大功效,必须做的一件事,就是记录相关硬件设备的地址。现在,API已成为软、硬件之间一种控制的传媒,这道工序就可以省略了。

  开发API的相应功能,首先需要详尽的定义的标准,这些标准在硬件开发、完善阶段已经由生产厂商加以制定,按照提供的标准,软件开发人员可以轻而易举地完成一些复杂程序的调试工作。当他们设计某项功能时,也不再需要知道硬件的特定参数,往往只在程序中添加一条或几条命令就足够了。 

二、常用的API格式

  在图形图像行业里,三维图形的API有许多种。这几年,有3种API格式逐渐确立了它们在图形领域的地位,它们是:Direct3D、OpenGL和Quick Draw 3D(Heidi)。MGA MillenniumⅡ、Mystique 220、G100图形加速卡和ELSA图形卡都支持这3种格式。由下面这张对比表可以看出,它们在界面及功能上的差异确实不大。

  这3种常用的API格式在使用中都体现了一定的扩展性、灵活性和便捷性等,而这些正是图形用户们在乎的。

  附表 :3种图形接口比较表 

功 能 Direct3D OpenGL Heidi

阿尔发混合(Alpha √ √ √ Blending)

纹理映射(Texture √ √ √ Mapping)

MIP映射(MIP Mapping) √ √ √ 

视频动态映射(Video √ × √ Motion Mapping)

雾化(Fogging) √ √ √ 

抗失真过滤(Anti- √ √ √ aliasing Filter)

直接描绘法(Flat Shading) √ √ √

Gouraud描绘法 √ √ √ (Gouraud Shading)

Phone描绘法 × × × (Phone Shading)

光辉的Direct3D

  自从微软公司推出1.0版本的DirectX以来,它又魔术般地变出了DirectX 2.0版本和DirectX 3.0版本。在其抛出DirectX 3.0后,并未象人们想象的那样继续推出DirectX 4.0,而是跳过DirectX 4.0版,直接把DirectX 5.0推向了市场。

  今天这五个DirectX版本是:DirectX 1.0、 DirectX 2.0 、DirectX 3.0 、DirectX 3.0a 、DirectX 5.0。 目前微软公司正在开发DirectX 6.0,预计将同Windows NT 5.0同时推出。

  (1)DirectX 1.0版本是第一个可以直接对硬件信息进行读取的程序。它提供了更为直接的读取图形硬件的性能(比如:显示卡上的块移动功能)以及基本的声音和输入设备功能(函数),使开发的游戏能实现对二维(2D)图象进行加速。这时候的DirectX不包括现在所有的3D功能,但如果您打算制作高级游戏的话,那它就是入门的起步点。

  (2)DirectX 2.0版本的应用程序接口中采用了Direct3D的内容,这种结构使DirectX 2.0和DirectX 1.0有根本不同。在DirectX 2.0中,3D应用程序接口是采用了“平滑模拟和RGB模拟”两种模拟方式对三维(3D)图象进行加速计算的。DirectX 2.0同时也采用了更加友好的用户设置程序并更正了应用程序接口的许多问题。

  (3)DirectX 3.0版本是DirectX 2.0的简单升级版,它对DirectX 2.0的改动并不多。包括对DirectSound(针对3D声音功能)和DirectPlay(针对游戏/网络)的一些修改和升级。

  (4)DirectX 3.0a版本是修正了错误的升级版。在这里,主要的是针对DirectX安装程序的修改。在一些图形加速卡(如加拿大Matrox公司的MGA 系列图形卡)的安装程序上,用不通知或合适/有效的选择方式改写用户的显示驱动程序,以便图形卡的加速性能更好。

  (5)DirectX 5.0主要是针对应用程序接口进行升级。在DirectX 5.0中,为了大幅度提高性能,微软对Direct 3D的内容做了彻底修改,并且使游戏开发商们移植到他们的应用程序接口中更容易、更方便。除此之外,许多应用程序接口的细节部分也得到了改进。 作为Windows下的X模式和DirectDraw发展的产物,Direct3D实际上是DirectX多媒体家族的一员,Windows 95使用了它,主要目的是提高系统缓慢的3D显示速度。一般来说,Direct 3D格式是基于微软的通用对象模式COM(Common Object Mode),同时也被应用于OLE(Object Linking And Embedding)链接与嵌入技术中。DirectDraw面向2D图形,而Direct3D作用于3D显示。它们作为两代标准,虽然有区别,但是也可以相互合作。例如,在某帧图象处理时,Direct3D渲染3D对象,DirectDraw则设置2D背景位图,配合相当默契。微软公司宣称,在最新推出的DriectX 5.0版本里,已经对Direct3D的一些薄弱环节进行了修正。

    Direct3D可以仿真大部分软件中的3D渲染功能。目前Direct3D API的大多数用途是编写游戏软件,而这些游戏都不支持几何加速。就游戏而言,它是DirectX的主要设计成果。用 Direct3D可以非常简单地调用3D图形加速卡的许多新的功能,游戏厂商将不需要过分依赖特殊的硬件设备就可以完成高质量的性能和表现效果。

DirectX的组成部分

  一个完整的DirectX应用程序接口是由以下部分组成:

  DirectDraw:该应用程序接口负责显示内存的管理。

  DirectSound:对声音设备进行统一支持,同时在游戏应用中还增加了特殊3D效果。

  DirectPlay:它可以提供有效方法使游戏满足个人微机的要求。这意味着多用户式的游戏只需通过一个标准的应用程序接口,就可以在调制解调器、电话线、直接电脑连线和使用TCP/IP的Internet上运行。

  DirectInput: 用通用的应用程序接口来统一管理所有的输入设备,如麦克风、游戏杆、高级游戏操纵杆等。

  Direct3D: 就游戏而言,它是DirectX的主要设计成果。用 Direct3D,可以非常简单地调用3D图形加速卡的许多新的功能。用    Direct3D,游戏厂商不需要过分依赖特殊的硬件就可以完成高质量的性能和表现效果。

  DirectSetup:它的作用是安装所有的DirectX的组成部分。 DirectSetup会测试其安装版本,并且智能地对用户使用的DirectX二进制码实行版本升级,同时安装更新的DirectX的驱动程序,使用户同步使用的应用程序更有效。 

非凡的OpenGL

  谈到OpenGL,先看以下两点:

  (1)立即模式和保留模式

  立即模式,是一种源程序模式,它与硬件设置密切相关。

  保留模式,也是一种源程序模式,只是它的大半都是通过一个API接口预先定义好的。

  人们通常认为,程序接口的优劣与两个因素有关,即:硬件水平和程序员直接控制相关硬件功能的程度有关。所以,立即模式更多地被视为一种低级模式。而保留模式,则因为符合这一规定,被视为一种高级模式 。

  (2)由于专业领域使用的CAD/CAM软件获得了巨大成功,现在OpenGL已经稳稳占据纯三维PC市场。那么,什么是OpenGL呢?GL是三维图形技术中图形库的简称。GL支持立即模式的接口。立即模式的好处是可以省略先将图形存储于数据结构的步骤,使用立即模式修改应用软件更容易,显示图形更方便。使用GL技术可以轻松开发出具有实时交互能力的三维图形软件。

  OpenGL是开放式图形GL语言的缩写。它是由Silicon Graphics(SGI)公司开发的,有Windows NT和Windows 95版,其API在工作站上具有可移植性。它是图形标准为图形库提供的一条简捷的途径。OpenGL应用程序接口的版权属于SGI公司,其标准由OpenGL结构监察组指定。该监察组的成员有IBM、Intel、Microsoft、DEC、SGI、Intergraph、Evans&Sutherland。

  OpenGL是对网络透明的3D图形处理接口,用户可以通过一个简单易用的模块化接口生成高质量的3D图形图像。它在硬件、操作系统等方面是独立的,支持C、C++、Pascal、Lisp等多种语言。OpenGL作为一个独立平台,具有立即和显示表模式的鲜明特点,显示表存放着特定的序列,可以被反复使用。因此,进行对象描述时,直接从表上获取相关信息,可以产生很好的效果。但是,如果对象需要进行频繁处理,显示表上的信息就不得不随之更新,这将导致图形显示速度优势丧失殆尽。OpenGL为图形显示提供了一个宽广的范围,从渲染一个简单的几何点、线、多边形,到利用Phong光线、Gouraud阴影、纹理映射贴图、以及反锯齿的点、线、面对一个3D物体进行最复杂的3D变换、剪贴、采集和描绘。由于采用了模块和累加缓冲技术,OpenGL可高效地实现几何实体、阴影、全景反锯齿和动态模糊等效果。   OpenGL程序应用接口的最大贡献就是“通过高级语言,降低了专用图形加速卡的成本,最终导致整个PC图形系统价格的降低,从而抢占了RISC/UNIX系统工作站的市场!”

  Heidi应用程序接口是Autodesk系列产品的守护神。Autodesk是目前全球CAD/CAM/CAE/GIS/MM工业领域中拥有用户量最多的软件公司,也是基于PC平台的全球最大的CAD、动画及可视化软件公司。就目前的AutoCAD的应用状态和用户类型来看,从事纯三维设计的小于25%(用于大型装配设计和复杂工程分析),从事纯二维设计的约25%(用于绘制企业生产性数字化二维工程图),而既从事二维绘图又从事三维设计的大于50%(广泛用于零部件和一般装配设计分析)。Heidi就是Autodesk在CAD、动画及可视化软件领域中最重要的主流支撑应用软件接口。Heidi和OpenGL 的区别在于:它不能通过显示表进行操作。Heidi是一个纯粹的立即模式接口,主要适用于应用开发。著名的3D程序软件,如3D STUDIO MAX/VIZ、AutoCAD 12/13/14、经济建模、商业图形演示和机械设计等都使用Heidi系统。与OpenGL 相比,Heidi还只是一种原始对象接口,功能请求单一化,是靠使用标准界面或者直接利用特定的3D芯片来进行硬件加速。如果没有硬件的密切配合,在对大型的高质、高分、高刷的图形工作时,显示效果会受到很大的影响。Heidi的突出特点是灵活多变,这要归功于Plug-ins(插入式结构)和内部定义的Heidi接口。   简单地说,OpenGL只支持用于大型装配设计和复杂工程分析的纯三维设计工作,其用户群小于25%;而Heidi可以广泛支持用于零部件、一般装配设计分析、工程设计建模、电子游戏开发、影视动画制作及可视化软件领域等既从事二维绘图又从事三维绘图的主流设计工作,其用户群大于70%。

  到此,三维图形的三大“王牌”接口讲完了。我想大家应该对Direct3D、OpenGL和Heidi的渊源、特点和用途有了一些简单的了解。为了加深印象,最后我总结了三句话:“三大接口,各不同;D3D玩游戏;OpenGL用3D;Heidi是主流!” 


3DSMAX R3的启动参数  

参数 功能  
-c othercui 用其他的界面代替3DSMAX缺省用户界面。othercui可以是任意一个已存在的界面文件(xx.cui)。  
-d Track View以双精度缓冲显示,比单精度更顺畅,但占用更多系统资源。  
-g 在Track View、Ram Player、Viedo Post、Loft、Curve Control的对话框中用白色背景取代灰色背景。  
-h 允许选择显示模式:Heidi、OpenGL、Direct3D、Custom。  
-i 启动时用其他的初始化文件取代默认的3dsmax.ini初始化文件。  
-l 启动后自动打开最后一个被保存的场景文件。  
-ma 启动后最大化界面视窗。  
-mi 启动后最小化界面视窗。  
-n 取消网络模式。  
-p 以其他的路径设置取代默认的路径设置。  
-q 启动时直接出现操作界面,不出现启动画面。  
-s 使用服务器模式启动。  
-u 启动后打开面板。  
-v 采用不同的显示驱动程序。在v后面打空格后加上s即启动Software Z-Buffer驱动程序;加o即启动OpenGL;加d即启动Dierct3D;加n即为Null Driver模式。  
-z xx.txt 不启动3DSMAX,只将版本号写入xx.txt文件中。  
xx.max 启动后直接打开名为xx.max的场景文件。xx.max可以是任意一个已存在的场景文件。  
  使用上述参数,需要在命令提示符窗口中来启动3DSMAX。使用的一般格式为:在3dsmax.exe后打一空格,然后加参数(比如“-c”);后面需要加文件时,再打一空格,然后加上需要的有效文件。  
  可以将多个参数连在一起使用。比如,3dsmax.exe -c xx.cui -n -q。 


[关闭][返回]