1. Web3D技术的具体流行技术
Java3D和GL4Java(OpenGl For Java)
JAVA3D可用在三维动画、三维游戏、机械CAD等领域。
可以用来编写三维形体,但和VRML不同,JAVA3D没有基本形体,不过我们可以利用JAVA3D所带的UTILITY生成一些基本形体如立方体、球、圆锥等,我们也可以直接调用一些软件如ALIAS、LIGHTWARE、3DS MAX生成的形体,也可以直接调用VRML2.0生成的形体。
可以和VRML一样,使形体带有颜色、贴图。
可以产生形体的运动、变化,动态地改变观测点的位置及视角。
可以具有交互作用,如点击形体时会使程序发出一个信号从而产生一定的变化。
可以充分利用JAVA语言的强大功能,编写出复杂的三维应用程序。
JAVA3D具有VRML所没有的形体碰撞检查功能。
作为一个高级的三维图形编程API,JAVA3D给我们带来了极大的方便,它包含了VRML2.0所提供的所有功能。
这里有一段国内资深3d程序员的评论:
GL4Java、VRML、JAVA3D的比较
由于OPENGL的跨平台特性,许多人利用OPENGL编写三维应用程序,不过对于一个非计算专业的人员来说,利用OPENGL编写出复杂的三维应用程序是比较困难的,且不说C/C++语言和java的掌握需要花费大量时间精力,当我们需要处理复杂问题的时候,我们不得不自己完成大量非常繁琐的工作。当然,对于编程高手来说,OPENGL是他们发挥才能的非常好的工具。
VRML2.0(VRML97)自1997年12月正式成为国际标准之后,在网络上得到了广泛的应用,编写VRML程序非常方法(VRML语言可以说比BASIC、JAVAs cript等语言还要简单),同时可以编写三维动画片、三维游戏、用于计算机辅助教学,因而其应用前景非常广阔尤其适合在中国推广应用。不过由于VRML语言功能目前还不是很强(如目前没有形体之间的碰撞检查功能),与JAVA语言等其它高级语言的连接较难掌握,因而失去了一些计算机高手的宠爱。但我们认为,我们可以让大学里的文理科学生利用VRML编写多媒体应用程序,让学生很快地对编写程序感兴趣,从而使国内的计算机水平得到提高。DIRECT3D是Microsoft公司推出的三维图形编程API,它主要应用于三维游戏的编程,目前相关的学习资料难于获得,由于它一般需要VC等编程工具进行编程,需要编程人员具有较高的C++等高级语言的编程功底,因而难以普及。
JAVA3D是建立在JAVA2(JAVA1.2)基础之上的,JAVA语言的简单性使JAVA3D的推广有了可能。OPENGL和JAVA3D之间的比较可以看成汇编语言与C语言之间的比较,一个是低级的,一个是高级的(也许这样比较不太恰当)。JAVA3D给我们编写三维应用程序提供了一个非常完善的API,它可以帮助我们:
生成简单或复杂的形体(也可以直接调用现有的三维形体)
使形体具有颜色、透明效果、贴图。
可以在三维环境中生成灯光、移动灯光。
可以具有行为(Behavior)的处理判断能力(键盘、鼠标、定时等)
可以生成雾、背景、声音等。
可以使形体变形、移动、生成三维动画。
可以编写非常复杂的应用程序,用于各种领域如VR。 由于Fluid3D并不是一个Web编写工具,因此它着眼于强化3D制作平台的性能。直到最近才公诸于世的Fluid3D插件填补了市场 的一个空白,尽管到目前为止它的应用范围还相当有限。它的主要功能是可以用来传输高度压缩的3D图像,而这种图像的下载通常是相当麻烦和耗时的。它的运用有助于使Web的3D技术更实用和切合实际,使之对桌面用户而言更有乐趣。
Superscape(VRT)
Superscape VRT是Superscape公司基于Direct3D开发的一个虚拟现实环境编程平台。它最重要的特点是引入了面向对象技术,结合当前流行的可视化编程界面,另外,它还具有很好的扩展性。 用户通过VRT可以创建真正的交互式的3D世界,并通过浏览器在本地或Internet上进行浏览。 它是3DS MAX的一款插件,可生成输出FLASH的文件与Adobe Illustrator的AI文件。
Viewpoint(Metastream)
Viewpoint Experience Technology (简称VET)的前身是由metacreation和Intel开发的metastream技术。提到metacreation,相信不少人曾对这家有传奇色彩的公司感兴趣过,他出品的软件虽算不上什么大手笔,却个个功能极具特色,像有名的Bryce、Poser、KPT滤镜等。奇怪的是为了全面发展metastream技术,matacreation卖光了他所有的产品,并把自己名字改为Metastream。
在2000年夏,Metastream购买了Viewpoint公司并继承了Viewpoint的名字。Viewpoint data lab是一家专业提供各种三维数字模型出售的厂商,Metastream收购Viewpoint的目的是利用Viewpoint的三维模型库和客户群来推广发展metastream技术。
在mts2.0(metastream)时代metastream的技术优势就已经表现出来。它生成的文件格式非常小,三维多边形网格结构具有scaleable(可伸缩)和Steaming(流传输)特性,使得它非常适合于在网络上的传输。你可以在三维数据下载的过程中看到一个由低精度的粗糙模型逐步转化为完整的高精度模型过程。
VET(也即mts3.0)继承metastream以上特点,并实现了许多新的功能和突破,想当年Viewpoint被PC-Magzine评为Top100计算机产品,可谓风光一时。 在结构上它分为两个部分,一个是储存三维数据和贴图数据的mts文件,一个是对场景参数和交互进行描述的基于XML的mtx文件。它具有一个纯软件的高质量实时渲染引擎,渲染效果接近真实而不需要任何的硬件加速设备。VET可以和用户发生交互操作,通过鼠标或浏览器事件引发一段动画或是一个状态的改变,从而动态地演示一个交互过程。VET除了展示三维对象外还犹如一个能容纳各种技术的包容器。它可以把全景图像作为场景的背景。把flash动画做为贴图使用。
Viewpoint的主要运用市场是作为物品展示的产品宣传和电子商务领域。许多着名的公司与电子商务网站使用了此技术作为产品展示。虽然不如Cult3D那样普及,但凭借着强大的功能还是赢得了不少用户的青睐,像Fuji、Dell、Sony等公司。 Pulse在娱乐游戏领域发展已经有好多年的历史,现在,Pulse凭着在游戏方面的开发经验把3D带到了网上,他瞄准的目标市场也是娱乐业。Pusle提供了一个多媒体平台,囊括2D、3D图形、声音、文本、动画。
Pusle平台分为三个组件:Pusle Player,Pusle Procer和Pusle Creator。 Pusle Player也即播放器插件,除了为IE和Netscape提供的浏览器插件外,Pusle还得到了Apple和Real net work的支持,在Quicktime和RealPlayer中已经包含了Pulse播放器。Pulse Procer:是用来在三维动画工具中输出Pulse所需数据的插件。目前支持的有3d studio max和Maya的插件。能够输出到Pulse中的数据包括:几何体网格、纹理、骨骼变形系统(支持Character Studio),Morph网格变形动画,关键帧动画,音轨信息,摄像机信息。pulse还支持从Vrml和BioVision的输入。Pulse Creator:这是Pulse总的组装平台。导入Pulse Procer生成的数据后,Pulse Creator进行以下的功能操作:
加入交互性、打光、压缩、 流传输和缓存。 这是在图像处理和出版领域具有权威地位的Adobe公司前不久才推出的一个可以通过互连网连接多用户的三维环境式在线聊天工具。在Atmosphere中浏览的感觉类似于玩DOOM类三维视频游戏。所不同的是Atmosphere场景可以通过Internet连接多个用户,连接到同一场景的用户可以彼此实时地看到代表对方的对象(avatar)位置和运动情况,并且可以向所有用户发送聊天短讯。Atmosphere环境提供了对自然重力和碰撞的模拟,使浏览的感受极具真实性。
值得注意的是Atmosphere使用了viewpoint的技术,安装Atmosphere的浏览器插件同时也安装了Viewpoint插件。Atmosphere场景中的三维对象包括由参数定义的基本几何体和viewpoint对象。viewpoint技术提供了对三维几何体高质量的压缩和实时渲染,Adobe直接使用viewpoint技术,既得到了很好的效果,又免除了自己开发的过程。
Atmosphere场景的开发相对来说比较容易。Adobe提供了制作工具Atmosphere Builder,目前此软件还处于Beta版本的测试阶段,可在Adobe的站点免费下载。
从场景的质量看Atmosphere还比较粗糙;从短信息聊天功能上看,只支持一对多的方式;从扩展性上看,Atmosphere目前只能在浏览器和它自己的播放器内运行,还不支持嵌入其它的环境中;从服务器端支持看,Adobe还未提供用来处理多用户交互信息传送的服务器端程序,目前建立的Atmosphere场景只能连接到Adobe的服务器上使用。 Macromedia的shockwave技术,为网络带来了互动的多媒体世界。shockwave在全球拥有一亿三千七百万用户。2000年8月SIGGRAPH大会,intel和Macromedia联合声称将把Intel的网上三维图形技术带给Macromedia shockwave播放器。现在Macromedia Director shockwave studio8.5已经推出,其中最重大的改变就是加入了shockwave3D 引擎。
其实在此之前已经有Director的插件产商为之开发过3D插件,而且有的是shockwaveable的(意味着可以运用于网络并且能够流式传输)。3Dgroove,主要是用于开发网上三维游戏,他的作品多次在出现,智能和交互性已经具有很高的水准。3DDreams,也提供了完整的三维场景建造和控制功能,但在速度上感觉较吃力。
Intel的3D技术具有以下特点。对骨骼变形系统的支持;支持次细分表面,可以根据客户端机器性能自动增减模型精度;支持平滑表面、照片质量的纹理、卡通渲染模式,一些特殊效果如烟、火、水。
Director为shockwave3D加入了几百条控制lingo,结合Director本身功能,无疑在交互能力上shockwave3D具有强大的优势。鉴于Intel和Macromedia在业界的地位,hockwave3D自然得到了众多软硬件厂商的支持。Alias|Wavefront, Discreet,Softimage/Avid,Curious Labs在他们的产品中加入了输出W3D格式的能力。Havok为Shockwave3D加入了实时的模拟真实物理环境和刚体特征,ATI 、NVIDIA也发布在其显示芯片中提供对Shockwave3D硬件加速的支持。
前景和运用。从画面生成质量上看,Shockwave3D还无法和Viewpoint、Cult3D抗衡,因此对于需要高质量画面生成的产品展示领域,它不具备该优势。而对于需要复杂交互性控制能力的娱乐游戏教育领域,Shockwave3D一定能够大显身手。 blaxxun3D和Shout3D是一个基于JAVA applet的渲染引擎,它渲染特定的VRML结点而不需要插件的下载安装。他们都遵循VRML、X3D规范
Shout3D支持的特征:
使用插件直接从MAX中输出3D内容和动画。
支持直接光、凹凸、环境、Alpha、高光贴图模式以及之间的结合。
支持光滑组和多重次物体贴图。
使用六张图像作为全景背景。
骨骼变形,支持Character Studio。
支持多个目标对象之间的变形动画。
blaxxun3D则是Brilliant Digital娱乐公司的产品,这是一个座落在洛杉矶并涉足澳大利亚电脑游戏业的公司。Brilliant于Siggraph2000大会上发布了他们给3d studio max提供的b3d技术。
Brilliant的程序员开发了一个数据压缩和发布技术,使得使得在窄带下也能够实现3D数据流的传输。它引入了以对象为基础的数据库将数据流和所存贮的数据连接起来。然后角色按情节指令进行动画。艺术家和动画师可以直接从3d studio max中直接输出动画到b3d授权环境下,在那里文件被压缩并使用Brilliant的数字播放技术发布到web上。
B3D独特之处是可制作具宽频效果的立体动画,并透过互联网传送至窄频用户。这些档案占用空间小﹑下载时间短及全屏幕显示的互联网立体动画内容。凭着这项崭新的立体动画技术,客户可将既具互动性﹑又富创意的内容传送予目标观众。Brilliant Digital播放器提供对实时灯光及实时阴影的直接控制,并且它不依赖点的颜色来模拟这些效果。这一切都给动画师提供了将同样的角色放置于不同场景不同灯光条件下的非常大的灵活性。 从功能来看,Plasma可以说是3ds max的Web 3D版本,简洁的界面,直观的用法,强大的Havoc引擎,从各种角度来说都是一个相当不错的软件。而且,Plasma支持Flash、Shockwave和VRML的输出,对于大部分3D设计师来说,这些功能已经很足够了。但是,也有不少人认为,Plasma有点像是专门为Shockwave设计的建模工具,应用范围大大缩小了。而且,Plasma的内容输出到Shockwave以后,固然能够表现出不错的质量,但是在Flash里面却并非如此,这似乎与注重写实感的Web 3D项目开发用途有些不符。另外,它在支持VRML输出方面的功能比起3ds max或者其他软件来说并不占优势。
Havoc引擎是Plasma最大的特征之一,但是它只能在Shockwave里面实现,而Flash仍然只是支持关键帧方式,VRML里面则根本不能实现任何Havok引擎的效果。所以,不少人都觉得,与其说Plasma是Web 3D软件,不如说,它是专门为Shockwave3D而设计的3D建模工具。
因为Plasma是以Discreet公司的3D技术为基础的,所以性能相当稳定。而且它还考虑到平面用户不熟悉三维界面的问题,特地设计了十分具有亲和力的用户界面。其实大家只要看一下Plasma的界面,就会发现它与Photoshop和Illustrator的界面十分相似。
Plasma可以说是世界上最早的专门为2D/3D Web用户设计的三维建模、动画和渲染软件。作为3D建模工具,它完全继承了3ds max强大的建模功能,而且支持Web Rendering(Flash Renderer)和Exporting Tool,另外它还统合了Macromedia公司的Flash、Shockwave 3D等设计工具和文件格式。从这些现象看来,Discreet推出Plasma的一个很大的目标就是,通过让平面设计师掌握3D工具,从而能够更快地生成Web 3D内容。
Plasma的主要功能和特征
可以转换为Shockwave 3D文件 Plasma文件可以输出成Web 3D文件——Shockwave 3D Scene Export,而且还可以导入到Director8.5。此外,Plasma还可以输出为*.AL(Illustrator文件)、*.DXF(AutoCad文件)和*.VRL(VRML文件)等三种格式。
Flash动画制作 这可以说是Plasma最重要的功能之一。Plasma有两种渲染方式,一种是3ds max中Bitmap方式的Scanline渲染方式,另外一种是矢量方式的Flash渲染方式。这样,以前Flash用户需要经过长时间手动操作方能完成的建模过程就可以通过Plasma轻松完成了,而且能够节省大量的时间和费用。Flash渲染方式不支持纹理,所以,渲染后的画面有明显的漫画风格。
3ds max的基本建模技法和贴图、动画功能 在Plasma中可以执行Bone&Skin和IK动画等功能。
通过Havok执行Shockwave 3D的功能 Havok原来是3ds max的插件,Plasma中也内置了这个插件。因为Shockwave中支持Havok的所有功能,所以在Plasma中可以通过Havoc执行Shockwave 3D功能。 位于瑞典的Cycore 原是一家为Adobe After Effect和其它视频编辑软件开发效果插件的公司。为了开发一个运用于电子商务的软件,Cycore动用了50多名工程师来开发他的流式三维技术。现在,Cycore 的Cult3D技术在电子商务领域已经得到了广泛的推广运用。
和Viewpoint相比,Cult3D的内核是基于JAVA,它可以嵌入JAVA类,利用JAVA来增强交互和扩展,但是对于Viewpoint,他的Xml构架能够和浏览器与数据库达到方便通信。Cult3D的开发环境比Viewpoint人性化和条理化,开发效率也要高得多。
Cult3D技术信息
目前支持的系统平台和浏览器 Internet Explorer / Microsoft Office/Netscape v4.x/Adobe Acrobat
视窗 95/98/SE/ME
视窗 NT/2000 (x86)
MacOS (PPC) (非微软办公系列)
Linux 2.0 / Linux Red Hat
Solaris
硬件要求
至少奔腾 MMX 233 MHz or 100% 兼容/支持dx7以上的显示卡/64mb以上内存
推荐:PIII800Mhz 256mbSD/DDR ram Geforce2
浏览器插件文件大小 Internet Explorer/ActiveX: 1.2 MB
Netscape: 1.2 MB
Adobe Acrobat: 1.9 MB (win) 2.2 MB (mac)
谁会是Web3D之战最后的赢家?
无法定论。如果你要发布你的产品到网络上观看,viewpoint或Cult3D都是不错的选择;如果你要开发三维在线游戏,我看好shockwave3D;如果你要在网上播放一场交互3D电影,那B3D能提供很好的解决方案,而对于java3d/Gl4java,那永远是行家里手青睐的角色。
你想要为你的web加入交互的三维吗?是的,那你有很多东西要学。现在还很难定论哪3D技术会是最佳的选择,而且也无法选择。但是现在就开始的话将为你的开发积累经验,毕竟,最主要的过程和时间阶段是建立三维场景的过程,而不是转为网上三维格式。
2. Web3D技术的Web3D简介:
你可以先去【绘学霸】网站找“3d建模”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=307&zdhhr-11y17r-1242127761902295699
想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。
自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。
王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】: www.huixueba.com.cn/school/3dmodel?type=2&zdhhr-11y17r-1242127761902295699
在“3d建模”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。
大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html
3. 3d max web没有了怎么调出来
这个你得用max的广度学灯光才有。
4. 产品该怎么用web3D展示出来
web3d展示是依托于VR虚拟现实技术而出现的,与传统的2D图形或是动画的表现方法不同,web3d展示应用在多个行业,包括:商品展现与贩卖、在线教学与娱乐、样板间展示、3D景点、虚拟展厅等等。可以让人们通过鼠标或者键盘,打开网页就能置身其中,实现360度的自由观看的效果,让用户能够快速的体验3D带来的真实感受。
利用web3d展示技术,企业可以搭建出线上“3D虚拟线上展厅”。实现无件插化,将二维的图纸或照片,用生动形象的三维虚拟现实技术效果表现出来,真正的让人们感受到高科技带来的便利与身临其境的视觉体验。
现在,web3d展示技术可以实现浏览者在网上以任意角度浏览三维虚拟产品,手上不用拿着实物就如同实物在眼前的效果。相信,随着VR虚拟现实技术的应用与普及,以虚拟现实为核心、Web3D展示产业应用将越来越广泛,将会像以往任何一次互联网技术变革一样,带给人们生活方式的巨大变化。
5. Web3D技术的介绍
Web3D技术是实现网页中虚拟现实的一种最新技术。VRML是互联网3D图形的开放标准。VRML是3D图形和多媒体技术通用交换的文件格式,它基于建模技术,描述交互式的3D对象和场景,不仅应用在互联网上,也可以用在本地客户系统中,应用范围极广。由于网上传输的是模型文件,故其传输量大大小于视频图像。
6. 3d显示器如何测试效果
首先要注意3D显示器的成像技术有两种,一种是偏光式也就是需要红蓝眼睛的。这类显示器画质损失较高,而且成本很低。还有一种是主动快门式,这类就是一般电影院在使用的3D成像技术,成本较高但是画质高清。选择3D显示器要看其运用的是什么有的是自身可以把2D转3D的显示器有的则需要显卡来发挥其功效。这点要注意。是不一样的显示器自身转换,兼容性好,而需要调配显卡则需看显卡的能力这点对显卡要去较高
7. 如何3d模型在web网页显示展示用什么技术
用threejs很容易做到,加载模型到网页上显示出来。要想添加点击效果,再加些代码来判断点击到哪个模型,要弹窗什么东西。
Threejs是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精彩的演示。
不过,这款引擎还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏)three.js的代码托管在github上面。
3d模型就是三维的、立体的模型,D是英文Dimensions的缩写。
3D模型也可以说是用三维软件建造的立体模型,包括各种建筑、人物、植被、机械等等,比如一个大楼的3D模型图。3D模型也包括玩具和电脑模型领域。
3D模型也分为:人物,交通运输,建筑装饰,家具电器,机械,动物、怪物、植物,服装,饰品,日常用品,乐器,艺术品等等。
譬如,欧式家具3D模型沙发座椅、床、餐椅、居室灯具、衣柜、电器等。欧式3D模型在室内设计表现风格中常用到,一般常用3D模型欧式沙发类,见图1-欧式沙发3D模型。
发展历史:
互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的5年时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯、电子阅读、网络游戏、虚拟社区、电子商务、远程教育等等。甚至对于旅游业。
3D互联网也能够起到推动的作用,一些世界名胜、雕塑、古董将在互联网上以3D的形式来让用户体验,这种体验的真实震撼程度要远超的2D环境下的模型。
8. 三维图形可视化制作技术
(一)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 三维技术对比
9. Web3D技术的核心技术及其特征
目前,走向实用化阶段的Web3D的核心技术有基于VRML、Java、XML、动画脚本以及流式传输的技术,为网络教学资源和有效的学习环境设计和开发、组织不同形式的网络教学活动,提供了更为灵活的选择空间。由于采用了不同的技术内核,不同的实现技术也就有不同的原理、技术特征和应用特点(见表1)。
表1:Web3D的核心技术及特征对比 Web3D的
核心技术 实现原理 技术特征 应用特点 基于
VRML技术 服务器端提供的是VRML文件和支持资源,浏览器通过插件将描述性的文本解析为对应的类属,并在显示器上呈现出来。 通过编程、三维建模工具和VRML可视化软件实现;在虚拟三维场景展示时,文件数据量很大。 高版本浏览器预装插件;文件传输慢,下载时间长;呈现的图像质量不高;与其他多技术集成能力及兼容性弱。适合于三维对象和场景的展示。 基于
XML技术 将用户自定义的三维数据集成到XML文档中,通过浏览器对其进行解析后实时展现给用户。 通过三维建模工具和可视化软件实现;在三维对象和三维场景展示时,文件数据量小。 需要安装插件;文件传输快,可被快速下载;呈现的图象质量较好;与其他多技术集成能力强;兼容性好。适合于三维对象和场景的展示。 基于
Java技术 通过浏览器执行程序,直接将三维模型渲染后实时展现三维实体。 通过编程和三维建模工具来实现;在三维对象和三维场景展示时,文件数据量小。 不需要安装插件;文件传输快,可被快速下载;呈现的图象质量非常高;兼容性好。适合于三维对象和场景的展示。 基于动画
脚本语言 在网络动画中加入脚本描述,脚本通过控制各幅图像来实现三维对象。 通过脚本语言编程来实现;在三维对象和三维场景展示时,文件数据量较小 需要插件;文件传输快,可被快速下载;呈现的图象质量随压缩率可调;兼容性好。适合于三维对象和场景的展示。 基于流式
传输的技术 直接将交互的虚拟场景嵌入到视频中去。 通过实景照片和场景集成(缝合)软件来实现;在场景模拟时,文件数据量较小。 需要下载插件;用户可快速浏览文件;三维场景的质量高;兼容性好。实现360度全景虚拟环境。
10. Web3D技术的Web3D的实现技术
Web3D 的实现技术,主要分三大部分,即建模技术、显示技术、三维场景中的交互技术。 三维复杂模型的实时建模与动态显示是虚拟现实技术的基础。目前,三维复杂模型的实时建模与动态显示技术可以分为两类。一是基于几何模型的实时建模与动态显示;二是基于图像的实时建模与动态显示。在众多的Web3D开发工具中,Cult3D是采用基于几何模型的实时建模与动态显示的技术,而 APPLE 的 QTVR 则是采用基于图像的三维建模与动态显示技术。
(1)基于几何模型的实时建模与动态显示技术在计算机中建立起三维几何模型,一般均用多边形表示。在给定观察点和观察方向以后,使用计算机的硬件功能,实现消隐、光照及投影这一绘制的全过程,从而产生几何模型的图像。这种基于几何模型的建模与实时动态显示技术的主要优点是观察点和观察方向可以随意改变,不受限制,允许人们能够沉浸到仿真建模的环境中,充分发挥想象力,而不是只能从外部去观察建模结果。因此,它基本上能够满足虚拟现实技术的3I即“沉浸”、 “交互”和“想象”的要求。基于几何模型的建模软件很多,最常用的就是3DMAX和 Maya。3DMAX是大多数Web3D软件所支持的,可以把它生成的模型导入使用。
(2)基于图像的建模技术自 20 世纪90 年代,人们就开始考虑如何更方便地获取环境或物体的三维信息。人们希望能够用摄像机对景物拍摄完毕后,自动获得所摄环境或物体
的二维增强表象或三维模型,这就是基于现场图像的VR建模。在建立三维场景时,选定某一观察点设置摄像机。每旋转一定的角度,便摄入一幅图像,并将其存储在计算机中。在此基础上实现图像的拼接,即将物体空间中同一点在相邻图像中对应的象素点对准。对拼接好的图像实行切割及压缩存储,形成全景图。基于现场图像的虚拟现实建模有广泛的应用前景,它尤其适用于那些难于用几何模型的方法建立真实感模型的自然环境,以及需要真实重现环境原有风貌的应用。相对来说,基于图像的建模技术显然只能是对现实世界模型数据的一个采集,并不能够给 VR 设计者一个充分的、自由想象发挥的空间。
(3)三维扫描成型技术
三维扫描成型技术是用庞大的三维扫描仪来获取实物的三维信息,其优点是准确性高,但这样的扫描设备十分昂贵,对于 VR 的普通用户来说这似乎又遥不可及了。 把建立的三维模型描述转换成人们所见到的图像,就是所谓的显示技术。因为在浏览Web3D文件时,一般都需要给用户安装一个支持Web3D的浏览器插件,这个对于初级用户来说也是一件麻烦的事情。但JAVA 3D技术在这方面有很大优势,它不需要安装插件,在客户端用一个 JAVA 解释包来解释就行了。不过,最近 MICROSOFT 公司宣布,基于安全的理由,它不再支持JAVA,其最新的操作系统Windows XP也没有内建JAVA 虚拟机,所以如果在
Windows XP 使用 JAVA 3D也必须安装 JAVA 虚拟机。其它Web3D软件是必须在客户端安装浏览器插件的。 网络的关键在于交互,Web3D 实现的用户和场景之间的交互是相当丰富的,而在交互的场景中,实现用户和用户的交流也将成为可能。总的来说,建立模型是用户首先要做的事情,也是相对困难的步骤;而显示是由软件通过计算机的运算完成的,用户不需要过问,只要选择显示质量能满足我们要求的技术就行了;交互功能的强弱由Web3D软件本身决定,但用户可以通过适当的编程来改善软件的不足。