标签:media 浏览器 try tar mes blank 模块使用 过程 soft
三维数据处理软件,一般包含三个模块:数据管理和处理,三维渲染,UI。 这与图形学的三个经典问题是相对应的:建模,渲染和交互。与一般常见的数据处理软件,比如图像视频处理,不同的是,这里的数据展示模块需要三维渲染。与之对应的UI操作,也变成了一些三维空间的变换,比如模型的旋转缩放等。
那么如何快速的搭建一个三维数据处理软件呢?采用搭积木的方式,每个模块都有很多现成的开发包可以选择。比如UI模块处,一般常见的有MFC,QT,MyGUI(Magic3D使用的UI)等。数据处理算法方面,常见的有BGL,Geometry++,CGAL,OpenMesh,PCL等。渲染模块,可以使用OpenGL或者Direct3D,也可以使用渲染引擎,如OGRE,OSG等。
几何算法开发包的生命周期,一般分为三个阶段:算法原型验证,开发和维护升级。其中绝大部分时间都在维护和升级。
几何算法开发包的选择,一般有三种:自主开发,外包,使用第三方库。而第三方库又分为开源库和商业库。开发包的选择,考虑的主要是成本开销。算法原型和开发阶段主要是时间成本,如何快速的实现目标功能是最关键的问题。维护升级阶段需要尽量低的成本开销。
算法的维护升级,一般只有代码作者来做,其他人来做的话,一般只能重写。重写的代价是很大的。一方面是时间成本,开发人员的费用开销,另一方面容易引入算法回归。由于这些因素的关系,很少有公司组建团队开发算法。算法升级是很多公司都很头痛的问题。
外包一般仅限于功能实现,维护升级更是无从谈起。
第三方库有大量客户运营经验和教训,可以少踩很多坑,是一个不错的选择。第三方库又分为开源库和商业库。
很多时候,开源的代码只做到了原型阶段,特别是一些学术圈开放出来的代码。做学术论文,代码只需要做到原型阶段就足够了。工程上的代码,还需要进一步的开发,处理工程上各种实际的情况。开源库虽然很多人用,但一般需要专业人员做适配和二次开发,而这部分的内容是最关键的,并且外人是得不到的。问题反馈给开源库,得到的技术支持也非常有限。这个技术支持,很多时候并不是bug修复,而是领域知识的支持。
商业库的主要优势就是有专业的团队来维护和升级这些SDK,并且成本会比个人做得更低。在领域知识方面,商业库也能有很好的支持。
数字几何处理,一般是指点云网格数据的处理。和传统的NURBS正向建模的模型相比,数字几何处理的对象一般是三维扫描仪采集的数据,是曲面的离散表达,也就是数字化的。它的研究内容包括数据的获取,存储,表示,编辑,可视化等等。
OpenGL是一套跨平台的图形绘制API,它通过一系列API把三维模型渲染到2D屏幕上。OpenGL采用了流水线机制,其绘制过程也称为渲染流水线。此外还有OpenGLES,主要用于嵌入式系统,或者移动平台;WebGL主要用于Web浏览器里的图形绘制。
OpenGL通过一系列API可以设置渲染流水线的状态,所以OpenGL也是一个状态机。三维模型通过一些处理,最终渲染到2D屏幕上:
上面是渲染流水线的大致描述,其中还有很多细节,不同的API也有些细节上的差别。最早的OpenGL是固定的流水线,也就是只能通过API来设置一些流水线中的状态。现代的OpenGL开放出了一些Shader,用户可以自己为Shader写代码,利用Shader可以写出各式各样的渲染效果。
如果渲染模块不是主要业务,建议使用渲染引擎。因为引擎内有很多现成的工具可以使用,减少开发的时间成本。
标签:media 浏览器 try tar mes blank 模块使用 过程 soft
原文地址:https://www.cnblogs.com/threepark/p/11774938.html