当前位置:首页 » 硬盘大全 » 可视化中的双缓存
扩展阅读
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 三维技术对比