1. 概述
1.1. 什么是图形平台
图形平台指的是某行业的某专业类软件所需要的基础框架及功能的统称,比如我们常见的AUTOCAD,就是面向建筑,水暖,石油等专业行业的一个极具代表性的通用性图形平台。图形平台是一个底层的框架,在这个框架的基础之上,可以根据公司自身需要或者市场需求开发众多的类似的软件。开发一个强大的具备可维护性,复用性,扩展性的图形平台的技术难度非常高,必须具备深厚的技术储备,和一个契合度很高的开发团队。一般来说,公司的图形平台作为基础工具,属于一个公司的核心资产,只会在它的基础上开发新的产品,一般不会对外出售源代码。
1.2. 国内图形平台的现状
国内具备开发图形平台实力的公司并不多,特别是能够开发高质量的图形平台的公司更是少之又少,国内公司一般是使用国外的图形平台做二次开发。国外有名的图形平台比如二维的AUTOCAD,三维的Revit等都封装了底层接口,为专业开发人员提供了二次开发方法或者函数库,开发人员使用这些图形平台,可以在一定程度上满足了开发和应用的需要,提高了应用系统的开发效率,但是由于是基于别人的源发平台,不可能与我们自身的需求完全无缝满足,由于无法获知其内数据组织结构和核心算法,深层开发和系统优化受到极大限制,一些国家处于战略方面的考虑,在图形平台高端效果和核心算法方面禁止或部分限制对我国的出口,造成事实上的技术壁垒和垄断,而且外国商业化的图形平台大都价格昂贵,根据开放程度一套售价数万或者数十万美元,长期使用国外图形平台,势必要持续花费大量的资金,同时造成我国在这一领域缺乏核心技术。
2. 图形平台的一般结构
2.1. 图形平台的示意图
2.1.1. 数据库
数据库是整个系统的核心,用来管理对象模型,是从专业角度抽象而来,整个图形平台是通过数据库驱动运转的,数据库包括创建对象,对象动态识别,对象的存储,对象的组织和对象的通讯,这些对象是以相互继承的关系展开的,如果我们做同一类软件话,整个平台最主要的作用就按照专业定义相应的数据库。
2.1.2. 图形
图形的作用是用来展示数据库中存储的专业数据, 数据库中的专业数据和图形数据形成映射关系,使用者对图形的操作最终会反映到数据库数据的操作上。图形模块同时提供了加速优化算法,比如各种空间分割技术(八叉数,四叉数等),图形系统主要负责对图形的组织,管理与显示,具有图形表示的对象通过调用图形系统的功能,完成对象的显示。
2.1.3. UI
用户界面主要完成对交互事件的组织与管理,并协同图形系统,实现对象的各种交互方式。系统在处理交互事件时,给出一个统一的流程,处理不同的交互事件,如场景的各种显示方式,各种交互的建模方法,同时用户界面模块还包括语法解决模块,用来对键盘输入的字符进行解析。
2.1.4. 控制器
在程序架构中,有一种典型的模式,叫做模型视图控制器(MVC)模式,这里的控制器就是关联数据库和图形的部分,控制器作为一种插件式的模块,把数据库和图形完全隔离开,使他们两者彻底接触耦合,能够分别的复用,比如,数据库如果完全独立,则可以成为专门存储数据的地方,就叫做数据中心,如果图形完全独立,则除了专门用于工程领域外,也可以用于三维仿真等其它领域。
2.2. 图形平台不同模块的组织关系
数据库做为图形平台的核心部分,控制着其它模块的运行,其它模块都要围着数据库转,图形平台各个模块之间可以设计成插件式的组织方式,插件式的组织方式有很多优点,比如可以控制错误,如果在某一模块出现错误,错误不至于影响其它模块,便于复用,开发不同的产品的时候,可直接拖用,容易扩展,在原有插件的基础上开发新的插件。
2.3. 图形平台与产品的关系
2.3.1. 同一类产品
对于同一类产品来说,只需重新定义数据库即可,其它模块如图形模块,算法模块,均可复用,例如钢结构,如果做出了门刚这样的软件,那么再做栈桥这样的软件,只要把数据库按照栈桥的专业逻辑重新定义,其它所有模块都可以复用,专业需求和产品的关系如下:
2.3.2. 不同类的产品
由于整个图形平台是数据库驱动的,所以平台的核心就是定义数据库,如果不同的产品差别太大,亦或完全不同的两个行业,比如建筑行业和石油行业,这样会导致整个数据库完全没有共同点,那么数据库模块和控制器模块都不能复用,只有图形模块可以,具体项目需要具体对待。原则上不同类的产品需要启用不同的开发平台,当然不同平台的设计思路还是有一定共通行的。
3. 评估图形平台的难度及开发成本
由于图形平台技术含量很高,工程量很大(想象一下AUTOCAD和Revit这类二维和三维图形平台的难度),并且需要大量的资金投入,不同的行业需要的图形平台也不同,所以在不知道需求的情况下,无法对公司需要的平台的难度和规模做出一个准确评估。这就要求公司决策层一定要明确设计方向和功能模块,确保完成一个成熟产品,然后从成熟产品里面提取出公共部分,就会形成一个图形平台。避免人力物力的无谓消耗,相当于无形中降低了开发难度和成本。
欢迎交流图形平台技术及3D的一切 微信 likeyou135 公众号 GraphicsPlatform