CN113721905A - 一种三维数字化软件开发的无码化编程系统及编程方法 - Google Patents
一种三维数字化软件开发的无码化编程系统及编程方法 Download PDFInfo
- Publication number
- CN113721905A CN113721905A CN202111004769.7A CN202111004769A CN113721905A CN 113721905 A CN113721905 A CN 113721905A CN 202111004769 A CN202111004769 A CN 202111004769A CN 113721905 A CN113721905 A CN 113721905A
- Authority
- CN
- China
- Prior art keywords
- dimensional
- editor
- project
- data
- dimensional digital
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提出了一种三维数字化软件开发的无码化编程系统及编程方法,属于软件开发系统及方法的技术领域,一种三维数字化软件开发的无码化编程系统,包括:资源管理体系,用以存储作为基础数据文件的设计数据、系统数据和模板数据;项目实例化单元,用以将基于三维引擎生成的项目实例化;对象设计单元,用以为三维引擎实例化的项目设计特定的对象,并将对象放置到对象池中;功能开发单元,用以调用对象池中的对象,为三维数字化软件进行对象开发;项目发布单元,用以在三维数字化软件开发完成后,生成可以运行的三维数字化软件;应用终端,用以对项目开发完成后生成的三维数字化软件进行布署和运行。本发明采用无码化、可视化的操作,即可实现三维数字化软件的全流程开发。
Description
技术领域
本发明属于软件开发系统及方法的技术领域,更具体地说是属于三维数字化软件开发系统及方法的技术领域。
背景技术
软件编程技术的发展,越来越先进的框架技术与编程理念被发掘。无码化编程、可视化编程技术、微云技术、基于AI的自动编程等先进理念,随着应用场景的呈现,而逐渐清晰。越来越多的人,试图通过这些先进理念,来降低软件开发的成本与效率。
软硬件技术的进步带来的变革。芯片制程的进步、信息通讯技术5G的普及、GIS技术对地理三维空间技术的促进、AR/VR技术、三维在线K12教育、大数据挖掘技术的发展,让三维数字化的应用更加广泛,逐渐从静态的展示向动态的交互应用发展,我们也称之为超三维。基于时间轴的三维呈像,能够让数据变化和过程展示更为直观。
物联网导致数字挛生的需求变大。高铁、新能源汽车、风电、光伏等产业,产生的数据越来越多。新型的数字工厂也会逐渐替代传统的工厂,各种不同的传感器,以一种无序的方式分布在物理三维空间中;如一些大型的机电设备,如船舶、飞机等的传感器数量众多,如何行之有效地管理这些传感器,这也一个强烈的需求。
三维虚拟仿真与计算。在科研活动中,三维虚拟仿真技术,广泛应用于对未知的对象进行模拟,对一些理论知识进行具象化;在一些教学培训过程中,基于虚拟仿真技术实施的实验,可保证教学的安全性和减少实验耗材的消耗。
新媒体的需求。在当前的动漫市场,基于三维环境开发的动漫开始成为主流,精美的三维动画的制作,对人员的专业素质要求较高,工作量非常大,资金投入非常高。一种轻量化的三维动漫制作工具,对于动漫制作人员来说,可以根据创意快速开发产品。
传统的三维专业软件,功能过于单一,有的用于三维建模,有的用于科学计算如有限元分析,有的用于制作动画,有的用于装配,大多都是静态的处理功能。无法满足当前复杂的交互应用的需求。同时,这些CAD/CAE/CAM软件,主要支持PC端,而对于web、移动端、VR、AR的应用,相对不是那么友好,在跨平面的应用上,传统的三维软件开发商均存在瓶颈。
常规的制作三维交互软件,采用三维引擎来制作,如unity3d和虚拟引擎。但三维引擎的应用,不仅需要学习开发语言,还需要熟练引擎的功能模块,一名成熟的三维软件开发人员,需要3-5年的培养。技术门槛高,开发成本高,并且开发效率一般,项目不易于维护。
即使采用当前流行的三维引擎开发项目,但大部分需求都存在专业门槛。如机械设计需要掌握机械知识;声学分析软件由需要声学的知识。从需求的角度出发,市场上迫切需求一款针对不同行业专业人员的三维引擎。
发明内容
本发明提出一种三维数字化软件开发的无码化编程系统及编程方法,解决了现有技术中的三维引擎开发项目技术门槛高,开发成本高,并且开发效率一般,项目不易于维护的问题。
本发明的技术方案是这样实现的:
一种三维数字化软件开发的无码化编程系统,包括:
资源管理体系,用以存储作为基础数据文件的设计数据、系统数据和模板数据;
项目实例化单元,用以将基于三维引擎生成的项目实例化;
对象设计单元,用以为三维引擎实例化的项目设计特定的对象,并将对象放置到对象池中;
功能开发单元,用以调用对象池中的对象,为三维数字化软件进行对象开发;
项目发布单元,用以在三维数字化软件开发完成后,生成可以运行的三维数字化软件;
应用终端,用以对项目开发完成后生成的三维数字化软件进行布署和运行。
一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,包括以下步骤:
步骤一、构建三维引擎环境,基于三维引擎生成一个项目,基于资源管理体系创建并导入三维模型,对项目进行实例化,实现三维对象的渲染、变换和可视化界面交互功能逻辑;
步骤二、将通用化、定制化的三维软件功能,通过设计工具进行模块化封装,将抽象的功能对象化和容器化,完成对象模块和功能模块的设计,用于数据的存储与功能的调用;
步骤三、建立一个可视化脚本编辑器和动画编辑器,通过可视化界面设置参数,基于对象容器获得对象,设置对象之间的互相调用关系,实现三维交互功能开发;
步骤四、基于不同的应用场景,根据剧本,导入资源,通过必要的开发工具进行对象和功能的设计,将剧本文案转化成三维数字化软件案例;
步骤五、根据不同的终端,将案例发布成项目包;
步骤六、根据不同的终端,建立执行平台,将项目包在执行平台上进行部署,实现可执行的三维数字化软件项目。
进一步地,在所述步骤二和步骤三中,基于数据表结构,来定义存储对象模块和功能模块,将每个模块对象化和容器化,然后基于自定义的UI控件对对象或功能进行调用。
进一步地,在所述步骤一中,基于资源管理体系创建并导入的数据还包括本地或者云服务器的多媒体文件和数据文件;所述项目实例化还包括图像的渲染、三维变换操作、对象管理、显卡计算、镜头控制管理和交互界面开发。
进一步地,在所述步骤二中,所述设计工具包括数据库编辑器、变量编辑器、图形编辑器、交互界面编辑器、三维建模工具、蓝图编辑器、路径编辑器、灯光编辑器、射线编辑器、快捷键编辑器和事件触发器,在所述步骤三中,所述对象包括变量、数据库、图形、交互界面、三维模型、蓝图和功能对象。
进一步地,在所述步骤四中,所述必要的开发工具包括脚本编辑器、动画编辑器、数字挛生引擎、数字化地图编辑器和考核设计工具。
进一步地,在所述步骤二中,在完成对象模块和功能模块的设计后,导出生成中间件,通过中间件在其他项目进行对象模块和功能模块的复用设计开发。
进一步地,在所述步骤六中,所述执行平台包括VR、AR、PC、Web、Ios和Andriod终端。
本发明采用上述技术解决方案所能达到的有益效果是:
(1)基于本发明实现的三维数字化软件开发是一个闭环的方案,资源可以通过平台下载,涵盖三维引擎、设计工具、开发工具、项目发布,所有操作均为无码化、可视化操作,可以直接引用三维模型,让不懂得编写代码的人可以像三维软件工程师那样开发复杂的三维应用程序。开发过程中,学习成本低、开发成本低。本方法大幅度降低了三维数字化软件开发的门槛,让三维数字化软件开发从专业级过渡至民用级,有利于三维数字化技术的推广与普及。
(2)本方法采用数据、资源、平台三者分离的模式,相比较传统的三维项目定制化的方式,项目易于维护。并且终端的包体小,让项目易于推广与传播。相关资源也可以复用,避免资源的重复开发,也有利于资源分享与管理。由于存在平台分离的特性,一次开发,可以发布成PC、Web、VR、AR、移动端等平台,而对于平台的更新,也不会对旧项目产生影响。
(3)本发明充分体现了多样性的特点;本项目中内嵌了大量的设计工具和开发工具,包括变量设计、平面画图、三维建模、蓝图制作、快捷键编辑等等,这些模块之间相互引用,构成了丰富多样的软件开发生态,并留给开发者大量的想象空间,相关用途也十分广泛,如三维动画制作、数字挛生、三维数字化地图、三维仿真等等。
(4)本发明采用的框架模式,以三维引擎为基础,在设计和开发工具上采用分布式架构,并能够让各模块之间相互引用且不会出现干涉。因此,区别于传统的三维软件难以升级,本发明不管在横向的应用上,还是在纵向的功能模块级扩张,均具有高度的成长性。能够基于硬件环境以及市场的变化,作出兼容性调整。
(5)本发明采用无码化、可视化的操作,即可实现三维数字化软件的全流程开发;通过在可视化界面上操作,实现包括三维引擎的调用、对象设计、对象开发、项目发布等过程。实现方法是以三维引擎作为基础驱动,实现了资源管理、三维渲染、三维变换操作、显卡计算、对象管理、镜头管理等功能;通过模型封装的方式实现了开发元素的设计,包括但不限于变量、图形、交互界面、三维模型、蓝图、事件触发器、路径、灯光、快键键功能、功能对象等,这些元素是构成三维数字化软件的基础对象;通过模块封装的方式实现开发功能,包括脚本的编辑,帧动画的编辑、数字挛生的编辑、三维数字化地图的制作、考核的设计等,基于这些工具,在三维环境中实现复杂的交互功能;最后,根据不同的软硬件环境,发布成不同平台的应用终端。本方法将三维引擎、设计、开发、发布等软件开发流程一体化,形成了一个闭环的开发环境。
(6)本发明的方法在命令执行逻辑上,采用特殊的双驱动的形式,即使用脚本编辑器与动画编辑器实现复杂的程序逻辑开发;脚本编辑器以事件为最小的执行单元,每个事件包含一个事件命令单元阵列,每个命令单元都是封装好的功能模块,通过设置参数即可实现其功能,按顺序阵列中的每一个命令单元,即可执行一个事件;事件可以被事件命令单元、动画编辑器、蓝图、交互界面、事件触发器等触发,从而形成一个单线或者多线的命令执行线,完成三维数字化软件的执行流程;而动画编辑器,以帧动画的形式,可以快速编辑三维对象按照时间执行变换、大小、镜头、高亮、事件、几何、文本等动态变化,帧动画能被事件命令单元引用,将一个个小动画用事件命令单元串联起来,形成一个大的动画。双驱动的命令执行逻辑,再加上丰富多样的设计工具与开发工具,使得本发明有着广阔的应用场景。
(7)本发明为实现复杂的三维数字化软件开发方案,制作了大量的设计工具与开发工具,包括,一个可视化数据库用于操作sqlite数据库;一个变量编辑器用于编辑变量;一个图形编辑器用于编辑平面图形;一个变互界面编辑器用于编辑交互界面;一个蓝图编辑器,用于编辑蓝图;一个三维建模工具用于三维建模;一个事件触发器用于编辑事件触发机制;一个路径编辑器用于编辑路径;一个快捷键编辑器用于设置组合快捷键;一个射线编辑器用于编辑射线;实现了一些功能对象,包括空间文字、线绳体、粒子路径、界面控制器、圆轨道、传送带、参数化网格、长度标注;实现了一个数字挛生引擎,用于开发数字挛生功能;实现了一个数字化地图编辑器,用于开发三维数字化地图功能。这些设计工具和开发工具,开发了丰富多样的对象,以确保开发的三维数字化软件的功能具有多样性、纵深度、想象空间;本发明实现的是一个分布式架构,设计工具和开发工具是可以无限拓展的,有着巨大的成长空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的技术框架图;
图2为数据库编辑器的流程图;
图3为图形编辑器的流程图;
图4为交互界面编辑器的流程图;
图5为三维建模工具的技术框架图;
图6为蓝图编辑器的流程图;
图7为脚本编辑器的流程图;
图8为动画编辑器的流程图;
图9为数字挛生引擎的流程图;
图10为考核设计工具的流程图。
具体实施方式
下面将结合本发明实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,一种三维数字化软件开发的无码化编程系统,包括:
资源管理体系,用以存储作为基础数据文件的设计数据、系统数据和模板数据;
项目实例化单元,用以将基于三维引擎生成的项目实例化;
对象设计单元,用以为三维引擎实例化的项目设计特定的对象,并将对象放置到对象池中;
功能开发单元,用以调用对象池中的对象,为三维数字化软件进行对象开发;
项目发布单元,用以在三维数字化软件开发完成后,生成可以运行的三维数字化软件;
应用终端,用以对项目开发完成后生成的三维数字化软件进行布署和运行。
一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,包括以下步骤:
步骤一、构建三维引擎环境,基于三维引擎生成一个项目,基于资源管理体系创建并导入三维模型、本地或者云服务器的多媒体文件和数据文件,对项目进行实例化,实现三维对象的渲染、变换、可视化界面交互功能逻辑、图像的渲染、三维变换操作、对象管理、显卡计算、镜头控制管理和交互界面开发;
步骤二、将通用化、定制化的三维软件功能,通过设计工具进行模块化封装,将抽象的功能对象化和容器化,完成对象模块和功能模块的设计,用于数据的存储与功能的调用,在完成对象模块和功能模块的设计后,导出生成中间件,通过中间件在其他项目进行对象模块和功能模块的复用设计开发;所述设计工具包括数据库编辑器、变量编辑器、图形编辑器、交互界面编辑器、三维建模工具、蓝图编辑器、路径编辑器、灯光编辑器、射线编辑器、快捷键编辑器和事件触发器;
步骤三、建立一个可视化脚本编辑器和动画编辑器,通过可视化界面设置参数,基于对象容器获得对象,设置对象之间的互相调用关系,实现三维交互功能开发;在所述步骤二和步骤三中,基于数据表结构,来定义存储对象模块和功能模块,将每个模块对象化和容器化,然后基于自定义的UI控件对对象或功能进行调用;所述对象包括变量、数据库、图形、交互界面、三维模型、蓝图和功能对象;
步骤四、基于不同的应用场景,根据剧本,导入资源,通过必要的开发工具进行对象和功能的设计,将剧本文案转化成三维数字化软件、设计文件、多媒体文件和可复用的数据包案例,所述必要的开发工具包括脚本编辑器、动画编辑器、数字挛生引擎、数字化地图编辑器和考核设计工具;
步骤五、根据不同的终端,将案例发布成项目包;
步骤六、根据不同的终端,建立执行平台,将项目包在执行平台上进行部署,实现可执行的三维数字化软件项目,所述执行平台包括VR端、AR端、PC端、Web(网页)端、移动端(Ios和Andriod终端)。
所述资源管理体系采用包括txt、csv、xml、json等格式的文件,作为基础数据文件,主要用于设计数据、系统数据、模板数据的存储。基础数据文件的读写过程如下,首先将文件作为一个数据流进行读取,然后采用解码格式对数据进行解码,在内存中生成文本链,按照数据结构的样式进行解析,生成数据结构体阵列,在内存中以字典的形成存储下来。
对于三维数据文件的解析。采用多种方式导入三维模型:(1)、解析文件并导入,首先将文件作为一个数据流进行读取,然后采用解码格式对数据进行解码,在内存中生成文本链,针对不同格式的三维模型选择解析算法,从数据中提取顶点、法线、三角面、uv信息,根据这些数据生成有一个网格和渲染器的对象,并放入到对象池中。(2)、资源包的形式导入,将三维文件打包成资源包,利用三维引擎将资源包转化为三维对象渲染在对象池中。(3)、基于第三方解决方案的导入,引用第三方的解决方案,从三维模型的源文件中获取顶点、法线、三角面、uv信息,在三维引擎中生成一个有网格和渲染器的对象,并放置到对象池中。
数据库的采用。采用sqlite作为基础数据库。新建项目时,实例化一个.db数据库文件,通过sqlite3对这个.db文件实现数据库操作。在web状态下,无法读取.db数据,则导出为csv格式的数据文件,通过解析csv数据文件,来获得项目数据;sqlite数据库也被用作存储数据库编辑器生成的数据表。通过第三方通用的插件,也可以使用mysql、其他类型的数据库。
多媒件的导入。多媒体文件的导入包括音乐、视频、图片、Gif、pdf、全景视频,通过文件浏览器获得文件,将文件作为数据流进行读取,然后根据扩展名来进行解析,生成对应的对象放入对象池中。
资源库的建立。基于云服务器,实现一个云资源库。资源库总体包括场景、模型、材质、shader、天空盒、纹理贴图、多媒体文件。在编辑器端,会显示一个资源列表,在资源列表中点击下载资源,则会自动将资源下载到本地。通过这种方式,不需要自己制作素材,而可以引用大量的云端素材,减少三维数字化软件的开发成本。
参照图2,所述数据库编辑器基于可视化数据库,仅通过可视化界面的操作,就能够实现数据库表格和数据的创建与修改、数据浏览、数据查询与导出、数据导入、数据计算,所述创建与修改、数据浏览、数据查询与导出和数据导入的实现方法如下:
创建与修改。先执行创建指令,定义/修改表名,定义/修改字段,包括字段名称、字段类型、字段大小、默认值,调整字段在数据表中的位置,如果不需要设定的字段,可以删除该字段,在设计完字段后,发送应用命令,即生成一个数据表;如果不需要数据表,则执行删除命令;通过“重命名”的命令,修改数据表的名称;通过“复制”命令,复制一个相同内容的数据表。
数据浏览。在数据浏览的窗口内,数据以列表的形式呈现,通过数据列表实现数据上移、下移,数据添加、删除、修改,翻页功能,导出为csv等操作。通过“添加数据”命令,弹出一个数据输入的窗口,输入数据的数值,点击确定;选择一条数据,执行“修改数据”命令,在弹窗中修改数据,点击应用即保存;选择一条数据,执行“删除数据”命令,即会删除这条数据;选择一条数据,执行“上移”、“下移”命令,数据的顺序会上移一位或者下移一位;通过“首页”、“上一页”、“下一页”、“尾页”命令,将数据表翻页至首页、上一页、下一页、尾页;执行“导出csv”命令,通过文件管理器选择导出路径,
数据查询与导出。查询编辑条件,首先设置查询条件,打开条件设置窗口,增加一个条件判断单元,并设置这个条件判断的字段名称、逻辑运算符、条件参数,可以设置多个条件判断单元;设置显示的字段,其次设置导出内容,设置要导出的字段名称,将所有的字段名称带复选框的形式列出,勾选该字段内容是否显示;查询结果的查看,在设置好查询条件和导出内容范围之后,执行查询命令,查询内容会按列表进行显示;在这个列表中,实现“首页”、“上一页”、“下一页”、“尾页”的翻页操作;查询结果的导出,通过“导出命令”导出查询的结果,并以“.csv”的格式存储。
数据导入。首先,通过文件管理器选择一个数据文件,将选择的数据文件作为一个数据流进行读取;然后采用解码格式对数据进行解码,在内存中生成文本链,设置解析条件,设置解析的分隔符与起始行作为解析条件,先进行预解析,查看数据的解析是否正确;在解析条件正确后设置导入条件,设置导入的数据与数据表之间的匹配关系,即设置字段名称、对应的列、保留的小数点位数,匹配关系通过设定文件能够存储下来作为复用;然后再定位导入文件,设置导入的行数区间,是否清除原数据,进行预览表格,确保匹配无误;最后执行导入操作,异步导入数据至数据表中,完成将外部文件导入数据表的操作。
本发明采用成熟的三维引擎作为驱动,通过进一步编译的形式,形成的一个新的无码化、可视化的三维数字化软件开发;对于三维引擎的选择,采用可塑性好、控件库丰富的成熟商业化引擎或者开源的三维引擎;商业引擎包括Unity3D引擎、虚幻引擎,开源的三维引擎如three-js、OpenSceneGraph。通过三维引擎的UI库进行显示与指令输入,实现对设计工具、开发工具的模块封装,通过三维引擎的渲染功能实现对象的渲染,通过三维引擎的编译功能并实现播放端的开发;最后,通过项目编译生成一个独立的开发设计程序,用户可以基于该程序,不需要使用任何计算机语言和学习三维引擎,就能建立完全个性化、专业,使用在不同应用终端的三维数字化软件。
通过三维引擎对三维图像进行渲染时,首先生成一个对象;然后通过导入模型文件,或者通过参数化建模的形式获得网格,匹配到这个对象上;在这个对象上添加一个渲染器,设置是否显示阴影和接受阴影,为渲染器分配材质阵列;每一个材质均设置着色器Shader,设置纹理、法线等贴图以及颜色、光滑头等属性;在完成设置后,显卡会根据设置的网格与渲染属性,通过顶点渲染或者版断渲染的方式,实现三维空间中的图像渲染计算;最后,在显示的镜头上设置一个后期渲染效果,进行抗锯齿处理,在终端显示器中呈现最终的三维图像。
通过三维引擎的UI库进行显示与指令输入时,通过树结构进行对象管理,分为基于原始节点的树结构和基于设计对象的树结构,每个节点是可以展开和收缩以方便节点的浏览。基于原始根节点开始遍历,是根据引擎赋予对象的所有子节点的一个遍历;基于设计对象的树结构,对于每个设计对象都设置了父对象和子对象,展开和收缩仅针对于该节点所包含的父对象或者子对象,该种树结构方便了设计对象的管理。
通过三维引擎实现三维变换。设置对象池中的三维对象的空间变换属性,使三维对象进行基于笛卡尔坐标系的平移、缩放、移动操作,根据变换属性,实现三维变换动画。
通过三维引擎实现Compute Shader计算。基于三维引擎携带的Compute Shader入口,使用HLSL语言,调用GPU的计算能力,实现大量数据的快速浮点计算,最后对数据进行三维成像或者二维成像。此种方种,可以实现大数据变化的监测与渲染。
通过三维引擎实现镜头管理,对镜头进行设置,来渲染三维空间的场景与界面;通过界面或者快捷键控制镜头的位置和角度;以百分比数值,设置镜头在屏幕上的显示区域;设置镜头的裁剪区,包括近裁区和远裁区,即只渲染近裁区和远裁区范围内的图像;在一个画布内可以添加多个镜头,设置不同镜头的层级,数值大的显示在上面;选中一个对象,通过快捷键执行命令,调整主镜头的大位置和角度,让这个对象出现在镜头中的中央。
通过三维引擎实现系统的通用操作。调用引擎的快捷键接口,使用快捷键来发送指令;调用系统控制接口,控制软件的开启与关闭。
通过所述变量编辑器设置自定义变量,自定义变量通过脚本编辑器的命令逻辑和蓝图编辑器的计算逻辑发生变化,并最终实现结算,具体流程如下:首先建一个变量管理系统,在一个软件项目内,包含一个变量库阵列,变量库能够添加、删除、复制、重命名;一个变量库包含一个变量阵列,该阵列可以添加、删除、复制、重命名。
通过可视化界面设置变量的属性,包括但不限于存储类型、数据类型、大小区间、默认值、变量描述。所述存储类型分为静态类型和动态类型,静态类型在项目启动时,值都是默认值,而动态类型则是值发生变化后,会进行保存,项目启动或者重置时,会按赋予存储的值;所述数据类型,则是指字符串、整数、浮点灵敏等;大小区间则为最大值和最小值;默认值则为初始值,只可以在变量编辑器中修改。
变量的引用方法,实现了一个变量控件包含变量库列表和变量列表,从变量库列表中选择一个变量库;从这个变量库的变量列表中选择这个变量。
变量的显示,将变量与一个文本框控件绑定;在变量发生变化时,文本框也实时发生变化。
变量值的改变,在脚本编辑器中的相关的命令单元,改变变量的值;在蓝图编辑器中,能通过蓝图执行单元,改变变量的值;变量的值既可以通过文本输入框进行改变,也可以通过引用自定义数据库对应ID、字段中获得值,也能够通过增量的方法来发生改变。
在蓝图编辑器中,变量可以作为判断条件出现在蓝图的判断单元上,用于决定蓝图路线的走向。
通过设置变量,让变量作为判断条件,以及控制变量在蓝图和脚本中按一定逻辑和算法参与运算,这样就获得了基于复杂流程的一个计算系统,可用于工程造价预估、模拟分析的功能,分析的结果,能够以.txt的格式导出作为分析报告。
通过所述图形编辑器,可建立点、线、多边形、曲线、函数体等图元,根据这些图元可拼接成二维的矢量图形,具体方法如下:
所述图形是可以被引用的最小单元。在一个项目中,包含一个图形阵列装载在图形容器中。通过“创建图形”命令,可以创建一个空图形至图形容器中;也可以通过导入图形数据包至图形容器中;通过“复制图形”命令,对当前编辑的图形进行复制;通过“删除图形”命令,删除当前编辑的图形;通过“重命名图形”,更改当前编辑图形的名称。
在图形容器中选择一个图形;图形包含多个图元,这些图元有多种类型,包括但不限于:组、点、线、矩形、多边形、曲线、函数体、传送带、路径、路径片断、路径点。这些图元以树结构的形式生成一个图元列表;每个图元节点包含父对象与子对象,可以展开和收缩,图元节点的父子关系,通过拖曳的形式来改变。通过创建图元或者修改图元来编辑图形;通过三种方式来创建图元,第一种方法是基于图元类型的命令入口快速添加控件,通过可视化界面的图标来添加图元;第二种方法是基于图元的几何特性来添加图元,如根据线段的中点来创建一个圆点;第三种方法是基于图元之间的几何规则,来创建图元,如根据两个圆点生成一条直线。通过图形的树结构,快速找到一个图元节点,实现图元的复制、删除、重命名以及其他的便捷操作。在选择一个图元后,在图元的可视化界面中对图元的属性进行设定,所述的属性包括颜色、线宽、圆角大小、长度等等。基于图元的几何特性,实现图元的属性的快速编辑,如锁定线段的中心再修改线段的长度,即可获得起始点的位置;不同类型的图元属性是不一样的,设置的界面是不一致的。随着属性的改变,图元在画布中也会跟随变化。
参照图3,在图形编辑器中,设置一个画布用于显示图形,将图形的所有图元按照节点的顺序显示画布中,越往下的图元显示的层级越高。图元是基于三维引擎的绘制功能来进行渲染,不对的图元,根据不同的算法,生成一个带顶点阵列和uv阵列的网格,然后基于特殊的着色器在画布中显示出来。
在图形编辑完成后可导出图形数据,通过“导出”命令会显示一个可视化界面,将项目的图形以列表的形式展示,从列表中勾选要导出的图形,通过文件浏览器选择要导出的路径,则会生成一个图形中间文件;这个中间文件可以通过导入的方式,在其他项目中被直接应用。
在图形设计完成后,根据设计文件标准,发布成相应的图形设计文件;图形被交互界面引用,在交互界面编辑器的界面上显示。在生成UI对象后,基于动画编辑器,实现二维动画。
参照图4,通过交互界面编辑器可进行可视化设计,制作可视化界面,实现三维数字化软件的人机交互功能,具体实现方法如下:
交互界面设计:界面UI是可以被引用的最小单元,在一个项目中,包含一个UI阵列装载在UI容器中。通过“创建UI”命令快速创建UI并设置到UI容器中;通过导入UI,导入UI的设计文件中间件,将其他项目设计好的UI导入到当前项目的UI容器中;在UI容器中选择一个UI,通过命令,实现删除、复制、重命名等操作。
在UI容器中选择一个UI,对UI进行编辑。一个UI是由多个控件组成的,这些控件包括但不限于组、按钮、文本、图片、框架、视频、表格、图形、选项组等;UI的控件以树结构的形式生成一个列表;每个控件节点包含父对象与子对象,可以展开和收缩,通过拖曳的形式来改变控件节点的父子关系。通过可视化的控件工具栏,添加不同的控件至UI的控件列表中;在树结构中选择一个控件,来修改编辑控件的属性,如大小、颜色、字体、引用图片、数据库、视频、事件等等,UI编辑完成;不同类型的控件的属性不一样;在控件属性发生改变时,控件在UI画布中的图像也跟随改变;
在交互界面编辑器中,设置一个画布用于显示控件,将UI的所有控件按照树结构节点的顺序显示在画布中,越往下的图元显示的层级越高。对于不同的控件的图像是交互界面编辑器预先设定好的,根据控件的属性会进行适配。按钮控件和选项组控件可以绑定事件,作为项目中触发事件的入口。
UI的应用:交互界面设计完成后,通过导出设置导出UI成为UI资源包,UI资源包被其他的项目引用;在对象池中生成一个界面对象,设置这个界面对象的属性,从UI容器列表中选择一个UI,并设置其为2D显示还是3D显示,或基于动画编辑器,实现二维动画,如果选择2D模式,则显示在临时的UI层中,如果选择3D模式,则显示在三维空间中,这两种模式均可制作交互界面动面;在脚本编辑器中,通过“显示界面”命令,直接选择一个UI,被脚本编辑器调用,显示在通用的UI层中。
交互界面编辑器的所有操作,均是基于可视化界面,通过简单的设置参数就可以制作复杂的交互界面。
参照图5,所述三维建模工具通过设定参数,基于一定算法,获得构成三维网格的顶点、法线、三角面、uv等数据,然后基于这些数据生成一个三维网格,生成一个空间对象至对象池,在三维空间中进行渲染,实现交互应用;将三维网格导出至一个文件用作其他用途。
三维建模工具的建模原理是在三维引擎中,三维模型主要由三维网格构成;一个三维网格包含顶点阵列、法线阵列、三角面阵列、uv阵列、颜色阵列;其中顶点指的是在三维空间中的绝对位置,是一个三维的数值;法线指的是一个三维向量,表述顶点阵列中对应顶点接受光线的方向,法线阵列的数量同顶点数量一致;三角面阵列是一系列顶点序号的集合,可由三个顶点,通过逆时针,生成一个三角面,由此三角面阵列的序号数据是顶点数量的3倍;uv阵列用于三维模块的渲染,uv阵列包括与顶点阵列相同数量的元素,每个元素为一个二维数,表述对应顶点在纹理图片上的取值;颜色阵列包含与顶点阵列相同数量的元素,每个元素为一个四维数,表示一个颜色,用于指定对应顶点的颜色。
三维建模工具通过多种建模方法来获得三维网格,包括但不限于几何建模、点云建模、平面建模、通过第三方库建模。所述几何建模是基于几何体的特性,计算出三维网格的顶点、法线、三角面、uv等,然后生成一个网格;所述点云建模通过三维空间点云数据,直接生成三维模型,以点的形式显示在三维空间中;所述平面建模,通过图形编辑器生成一个平面路径,然后采用转台和凸台的算法进行建模,获得顶点、法线、三角面、uv等,然后生成一个网格;基于第三方库的三维建模,是导入参数后,由第三方库进行计算,返回顶点、法线、三角面、uv等,然后生成一个网格。上述四种方式,均是在闭环的环境下实现的。
三维建模工具实现了模型分割与模型合并的模型操作;所述模型分割,设置一个剖切平面,对三维网格进行剖切分为上下两部分,并分配顶点、三角面;对于发生分割的三角面,则重新计算新的顶点与三角面;对于生成的培切面,采用耳切法,重新计算新的三角面;这样就形成了两个网格,可根据需要是否保留生成的两个新网格;所述模型合并,将两个以上的网格的顶点阵列、法线阵列、三角面阵列、uv阵型等合并生成一个顶点阵列、法线阵列、三角面阵列;将材质的纹理进行合并,并生成新的uv阵型,通过模型合并,可以降低渲染的消耗。
参照图6,所述蓝图编辑器通过可视化设计的方式创建蓝图,制作蓝图单元和连接线,最后用于实现事务流程,具体实现方法如下:
所述蓝图是可执行的最小单元,代表的是一个事务流程,蓝图能够被脚本编辑器相关命令执行,也作为嵌套蓝图镶嵌在一个蓝图中,实现蓝图嵌套。在一个项目中,包含一个蓝图阵列装载在蓝图容器中。通过“创建蓝图”命令快速创建蓝图并加入到蓝图容器中;通过导入蓝图,导入蓝图的设计文件中间件,将其他项目设计好的蓝图导入到当前项目的蓝图容器中;在蓝图容器中选择一个蓝图,通过命令,实现删除、复制、重命名等操作。
蓝图编辑,先通过变量编辑器创建用于蓝图计算和判断的变量;初始化所需要的变量;创建蓝图单元,蓝图单元是蓝图的组成单位,分为执行单元和条件判断单元,执行单元用于执行事件与计算,条件判断单元来决定下一步执行哪一个蓝图单元。蓝图单元之间通过连接线进行连接,一个蓝图单元能够被多条连接线连接,也能够连接多个蓝图单元;实现一个树结构管理这些蓝图单元,树结构节点为蓝图单元和组,组节点关联父节点和多个子节点,通过这种结构,实现节点的展开和收缩,通过拖曳的形式来改变控件节点的父子关系;在树结构中,选择一个蓝图单元或添加蓝图单元,编辑蓝图单元的属性,包括名称、大小、描述、绑定事件、变量计算、嵌套蓝图等。在蓝图编辑时,可进行预览操作,以判断设计是否正确,如果错误则继续编辑蓝图,如果正确则蓝图编辑完成。
在蓝图编辑器中,设置一个画布用于显示蓝图,蓝图的所有蓝图单元按照树结构节点的顺序显示画布中,越往下的图元显示的层级越高。判断型条件判断单元采用菱形的方块表示;执行单元采用长方形的方块表示;蓝图单元之间的连线,通过连接算法,用折线或者曲线的方式来表示,连接的端点用箭头表示以区别起始和结束;
在蓝图完成编辑后,执行导出命令,导出蓝图成为蓝图中间件,蓝图中间件被其他项目引用,直接生成蓝图;通过截图功能,获得一个流程图图片;在数字化软件中执行蓝图,例如:在脚本编辑器中,通过可执行蓝图的命令,来开始执行蓝图,首先设置初始化变量,然后开始按照蓝图规则执行蓝图的流程,在执行过程中,实时监测变量的变化,最终得到蓝图流程的结果。
蓝图编辑器通过这种完全可视化设计的蓝图,可实现工程造价预估、决策演算、AI设计、事务流程、流程动画等业务;所述工程造价,是将工程的每一个步骤作为执行单元,在执行单元设定不同事务的价格变化,得到最终的预估价格;所述决策演算,将事物的成本与收益数值化,通过设定最优实现路径,付出最小成本,获得最大收益;所述AI设计,是将三维空间对象(如角色),通过设定一个行为流程,针对不同的状态,实现不同的反馈;所述事务流程,是将三维空间地点、人物、事物进行关联,按动态的步骤引导找地点、找人、做事情;所述流程动画,是通过交互界面编辑器引用蓝图,在三维空间中生成界面对象,通过动画编辑器,实现流程图的逐步地显示;
本发明实现了一种事件主动触发机制,该触发机制并非是通过交互界面来进行触发,而通过在三维空间中设定一个触发器对象,通过干涉的方法激活事件触发器时,就会触发其绑定的事件,引导事件按照事件的运行规则执行。
所述事件触发器的触发原理如下,在三维空间中创建一个对象,设定网格作为外观,并设定在编辑状态、应用状态下是否渲染;根据对象的大小绑定一个碰撞体;设定冷却规则,设定触发一次消失,或者触发一段时间后,可再次触发;设定事件触发器的触发事件和激活事件;所述触发事件是事件触发器被触发时,执行的事件脚本;所述激活事件,是事件触发器从无法触发的状态转为可触发时,执行的事件脚本。
所述触发方式,根据不同的应用模式,分为屏幕点击触发、碰撞触发、VR射线触发;所述屏幕触发方式,是将点击的屏幕位置通过空间换算算法,转换成三维空间中的位置P,然后根据摄像头位置和位置P,生成一条射线,通过射线与碰撞体间的碰撞检测,检测射线是否发生干涉现象,如果发生干涉现象,再检测对象是否为事件触发器,如果是则触发事件;所述碰撞触发,是通过控制一个携带碰撞体的对象,实时检测是否发生干涉,如果干涉的对象为事件触发器,则触发事件;所述VR射线触发,是通过VR手柄发射一条射线,通过射线与碰撞体间的碰撞检测,检测射线是否发生干涉现象,如果发生干涉现象,则检测对象是否为事件触发器,如果是则触发事件。
一个项目中会包含大量的事件触发器,通过树结构对事件触发器进行管理,通过动画编辑器来对事件触发器进行显示、隐藏来调节事件触发的节奏。
通过路径编辑器编辑路径,所述路径指的是三维空间中的一条无规则的路径;每个项目可以设置一个容器用于装载路径,在引用路径时,通过这个容器生成的列表来查找路径。
路径是被引用的最小单元;通过添加、复制、删除、重命名等命名实现路径的创建、复制、删除、重命名等;一条路径包含多个三维空间点,将这些点通过曲线算法计算出连接点,再进行连线,曲线的算法包括但不限于折线、贝塞尔曲线、自定义曲线等;选择一条路径,通过添加、插入、复制、删除命令实现这条路径空间点的添加、插入、复制、删除,通过上移、下移命令改变空间点在列表中的顺序;通过可视化界面或者空间控制柄,改变空间点的位置,同时刷新路径的路线;通过可视化界面,设置界面的其他属性,包括但不限于开始颜色、结束颜色、箭头颜色、路点颜色、线宽、空间点大小、箭头大小、箭头间距、是否渲染空间点、是否渲染箭头。一条路径,路径的连线、空间点、箭头均会被渲染;通过设置来决定元素是否被渲染。
路径在编辑完后成,会被多种功能调用,包括但不限于物体按照路径移动的命令单元、镜头按照路径移动的命令单元、线绳体、粒子路径等。
通过灯光编辑器对于灯光进行编辑设计,所述灯光为三维空间中的一种对象,为三维空间添加光照信息,提高三维对象渲染的亮度,根据对象属性和灯光属性生成阴影。每个项目可以添加多个灯光,灯光的类型包括直射光、点光源、探照灯、反射球等。通过“创建”灯光命令,创建一个灯光,并设置其类型;通过“复制”、“删除”、“重命名”命令,可以复制、删除、重命名灯光。
所述直射光,即沿着一个方向产生的光照,通过属性设置其方向、强度、颜色、阴影。
所述点光源,即向四周产生光照,但有一个距离,距离光源越远,灯光的效果越弱;通过属性设置其位置、强度、颜色、范围、阴影。
所述探照灯,即为一个有角度和方向的光源,有距离限制,距离光源越远,灯光的效果越弱,直至超出范围没有影响。通过属性设置其位置、方向、角度、强度、颜色、范围、阴影。
所述反射球,即设定一个立体的范围,在范围内,三维对象受其同等的影响。通过属性设置其位置、大小、强度、颜色。
通过射线编辑器对射线进行编辑设计,所述射线为三维空间中有一个起点和终点的线段,可用于三维空间中向量的呈现;
通过“创建射线”命令,创建一条射线;通过复制、删除、重命名命令,对射线进行复制、删除和重命名;
每一条射线,均包含一个起点和终点,通过修改起点和终点的位置,来改变射线的方向;通过设置射线的开始颜色、结束颜色、开始线宽、结束线宽来改变射线的其他属性;
所述快捷键编辑器用于设定通过快捷键直接触发事件。通过设置快捷键规则,来设定快捷键1、快捷键2、事件容器、事件;采用两个快捷键,表示同时按下两个快捷键才会有效果。
设定的快捷键,只有在软件运行的时候,处于非输入状态才会有效果。
通过新建、删除命令来实现快捷键规则的创建与删除。
所述运行规则如下,设定一个字典,键为快捷键1和快捷键2的组合值,值为设定的事件;在运行中循环检测是否触发快捷键,如果触发了快捷键,则查找字典中是否包含这个键;如果包含,则执行对应键值的事件。
快捷键编辑器,通过可视化界面,可以在很短时间内,让用户设计软件的快捷键。
所述功能对象是指具有一定规则的对象,包括但不限于:空间文字、线绳体、粒子路径、界面控制器、圆轨道、传送带、参数化网格、长度标注。在可视化界面上,功能对象以一个列表的形式存在一个容器中,通过拖动的形式,拖拽到三维空间中,生成一个功能对象。
所述空间文字,是在三维空间中设计一个立体的文本,具有720度三维视效。通过三维变换更改空间文字的位置、角度、大小;通过设置空间文字的属性,设定背景长度、背景宽度、线长、线宽、背景色、线条色、文本内容、排列方式、字体大小、字体颜色、字体角度;在设定好空间文字的属性后,通过添加样式,将该空间文字的样式保存下来;通过引用样式,快速修改空间文字的样式;空间文字主要用于三维对象标注。
所述线绳体,在三维空间中设计一段线绳。通过设置界面,给线绳体对象附上一个路径,然后按照网格计算算法,计算线绳网格,即生成一个按路径规划的线绳三维体;设定线绳的线宽、分圆数、材质、颜色;在动画编辑器,在动画帧中,编辑线绳的关键节点,在动画播放时,实时根据关键节点计算三维网格,可实现线绳的动态动画。
所述粒子路径,为一个粒子发射器,通过算法计算出不同时间每一个粒子所在的位置,从而形成一个三维的动态路径。通过设置界面,对粒子路径对象附上一个路径、曲线类型、方向、时间、粒子密度、大小、开始颜色、结束颜色;所述类型是指按照曲线还是按照折线进行移动;粒子路径,可用于指示路径,如气体或者液体流动的方向。
所述界面控制器,在三维空间中设计一个装载界面的对象,从而可以通过对象池进行界面动态的控制与交互界面的三维展示。在设置界面,选择交互界面,选择展示类型为2D或者3D;所述如果展示类型为3D,会具有720度三维视效。
所述圆轨道,在三维空间中设计一个圆轨道。在设置界面,设定长轴、短轴、轨迹颜色、轴的颜色、线宽、偏离角度、轴高、是否显示支撑线;通过设定绕点,定位圆轨迹在三维空间中的位置;通过设定轴向,设置圆轨迹在三维空间中的朝向;圆轨迹可用于物体运行的轨迹,也可用于镜头的运动轨迹;
所述传送带,在三维空间中生成一个传送带网格,并通过控制贴图的tilling达到动态的转动效果。设定一个图形,从图形中选择一个传送带的图元,设定宽度,根据图元的轨迹和宽度信息,通过网格计算算法,生成传送带网格,从而实现传送带三维体。设定传送带的颜色、纹理贴图、tilling来改变传送带的渲染。
所述参数化网格,在三维空间中根据几何体的规则及算法生成一个三维网格对象;所述几何体包括但不限于筒体、长方形、等边三角体等;在选择几何体之后,设置几何体的相关规格,然后通过网格计算算法,生成三维网格;设置材质与颜色,实现网格的渲染。
所述长度标注,在三维空间中生成一段标注。通过设置界面,设置长度、字体大小、字体角度、足高、头高、线宽、字体颜色、线条颜色,实现一个三维的标注。
参照图7,所述脚本编辑器通过可视化界面建立事件容器,在事件容器中建立事件,然后通过添加和修改事件命令单元,对事件进行编辑。所述脚本编辑器,是通过一个3级结构来实现的一个编辑器,即一个软件项目包含多个事件容器,一个事件容器包含多个事件,一个事件包含多个命令单元。
所述事件容器,用于管理事件,对事件进行分类,可用于快速查找事件。通过创建、复制、删除、重命名命令,对事件容器进行编辑。
所述事件为最小执行单元,能够被事件命令单元、交互界面、动画编辑器、蓝图编辑器、事件触发器调用,通过创建、复制、删除、重命名命令,对事件进行操作;通过上移、下移命令,改变事件在事件容器中的位置。在可视化界面中,设置一个事件命令单元列表用于编辑事件的事件命令单元;每个事件均包含大量的事件命令单元,通过事件命令单元列表,添加、插入、编辑、删除、分割、上移、下移、设置断点等操作,并显示命令单元的内容。事件通过命令单元列表,形式一个可执行的代码模块。
所述事件命令单元是一个可执行的功能模块。本发明将各种功能模块进行封装形成事件命令单元,只需要输入相关参数,即可创建一个事件命令单元;事件命令单元分为但不限于以下大类:运动、控制、镜头、界面、媒体、渲染、行为AI;每个大类又包含一些小类;基于可拓展的框架,命令单元的大类和小类均可无限拓展。所述命令单元的相关功能如下:
移动至目标,设置移动对象、移动类型、速度或时间、节奏、是否阻塞,实现功能为对象按照规则进行移动一段时间或者距离。
按方向移动,设置移动对象、移动方向、速度或时间、是否阻塞,实现功能为按照设定的方向进行移动一段时间或者距离。
按路径移动,设置移动对象、路径、朝向、速度或时间、节奏、是否阻塞,实现功能为按照路径进行移动。
环绕,设置环绕对象、围绕点、轴向、高度、半径、速度、时间、是否阻塞,实现功能为对象按照设定的轴向进行绕行。
旋转至角度,设置对象、角度、旋转方法、时间或速度、是否阻塞,实现功能为对象按照设定自旋至一个角度。
振动,设置对象、振动类型、时间、幅度,实现功能为对象按照设定进行振动。
移动并转动,设置对象、目标对象、节奏、时间、是否阻塞,实现功能为对象通过一定时间获得目标对象的位置与角度。
朝向或背向目标,设置对象、目标对象、类型,实现功能为对象获得目标对象指定的朝向。
缩放,设置对象、缩放比例、节奏、时间,实现功能为对象通过一定时间缩放至指定比例。
显示路线,设置类型、路线、是否动态显示,实现功能为显示、隐藏一条路径。
镜头切换,设置镜头、时间、显示方式、镜头大小、节奏、是否阻塞,实现功能为镜头旋转至指定的位置和角度。
多镜头,设置镜头布局类型,实现功能为在屏幕内设置多个渲染镜头,或者关闭镜头。
浮窗,设置类型、相机编号、镜头对象、显示模式、镜头大小、渲染窗口大小、位置。实现功能为在屏幕的某个位置,显示一个浮动窗口;
镜头振动,设置振动时间、位移幅度、角度幅度,实现功能为镜头在位置、角度上进行振动一定的时间。
按路径漫游,设置路径、偏移、朝向、速度或时间、节奏、是否阻塞,实现功能为当前镜头按照路径进行漫游。
镜头环绕,设置类型、环绕点、环绕轴向量、朝向目标,轴高、半径、速度、时间,实现功能为当前镜头围绕指定轴进行移动。
镜头跟随,设置跟随类型、跟随对象、锁定轴,实现功能为当前镜头跟随指定对象进行移动。
焦点跟踪,设置跟踪对象、跟踪类型,实现功能为当前镜头通过改变角度,跟踪设定的对象,使对象一直处于屏幕的中央。
位置跳转,设置对应的位置、角度,实现功能为镜头对象迅速改变为指定的位置与角度,该方法仅适用于VR终端。
播放声音,设置一个声音文件、是否循环播放、播放时间,实现功能为播放指定路径的声音一段时间。
场景视频,设置一个视频对象、类型、开始时间、结束时间,实现功能为控制场景中视频的播放、暂停等。
界面视频,设置一个视频文件、类型、开始时间、结束时间、位置、大小,实现功能为在通用的界面层播放视频。
播放动画,设置动画对象、节点、动画剪辑、开始时间、速率、完成后动画剪辑、完成后速率。实现功能为播放对象携带的骨骼动画。
自定义动画,设置动画对象、起始时间、速率、循环方向、是否阻塞,实现功能为播放能过动画编辑器设计的自定义动画。
TTS,设置文本、音速、音量、音高,实现功能为将文本转化成音效并播放出来。
自定义界面,设置UI对象、是否设为水印、指向事件,实现功能为在通用界面层,显示通过交互界面编辑器设计的UI。
信息提示,设置提示文本、位置、播放设定,实现功能为在通用界面层,显示文本提示内容。
日志设置,设置类型、位置、背景颜色、大小、日志插入方式、日志字体大小,实现功能为日志界面的相关设计和渲染方法。
添加日志,设置日志条目、名称、内容、颜色,实现功能为在日志界面插入一条日志。
淡入淡出,设置类型、背景色、背景图片、透明度、渐入时间、等待时间、渐出时间、内容、是否阻塞,实现功能为界面跳转时的,渐入渐出效果。
弹幕,设置弹幕文件、随机字体大小、随机出现速度、随机移动速度、持续时间,实现功能为在通用界面上播放弹幕,弹幕内容为弹幕文件指定。
广播,设置类型、广播文件、播放顺序、字体大小、移动速度、位置高度,实现功能为在通用界面上播放广播,广播内容为广播文件指定。
对话框,设置样式、人名、位置、内容、颜色、显示后结束设定、对话后事件,实现功能为在通用界面上显示一个带人物图像的对话框。
系统工具,设置工具类型、关闭后事件,实现功能为在通用界面显示一些通用工具,如数据库、数字地图、人物介绍等。
显示地名,设置名称、位置,实现功能为在通用界面上显示地名。
选择题设计,设置考核题目、分数、是否打乱题目顺序,实现功能为在通用界面插入一道选择题目;
工具使用考核,设置对具、节点对象、分数,实现功能为在通用界面上插入一道工具使用的题目;
改变颜色,设置对象、目标颜色、时间、是否阻塞,实现功能为在一定时间将对象修改为目标颜色。
改变材质,设置对象、目标材质,实现功能为直接将对象的材质更改为目标材质。
等待,设置等待时间,实现功能为等待一段时间后,再执行下一个命令;
执行事件,设置事件、执行次数、间隔时间、触发概率,实现功能为生成一个事件生成器,按一定规则生成事件。
随机事件,设置一个事件列表,在列表中添加事件,并设置对应的权重,实现功能为随机取一个0~1的值,然后根据权重决定要执行的事件。
快速执行事件,设置起始事件、终止事件,实现功能为瞬间执行从起始事件开始到终止事件中的一段命令。
条件选择,设置条件描述、确认事件、取消事件,实现功能为在通用UI层显示一个条件选择界面,让用户决定选择哪个事件。
控制脚本,设置对象、设置对象的脚本列表,实现功能为控制脚本上的自动运行的脚本的属性;
重置,设置重置对象,实现功能为重置所选择对象的状态至初始状态。
系统功能,设置为关闭系统、暂停、取消暂停、清除界面、重新开始等功能。
动画暂停与播放,设置为是否暂停自定义动画的播放,实现功能为暂停或启动自定义动画的播放,区别于系统的全局暂停。
场景切换,设置切换的场景,实现功能为场景切换至设定的场景。
父子关系,设置类型、父对象、子对象列表;实现功能为更改子对象的父节点。
显示与隐藏,设置类型、对象列表;实现功能为隐藏或者显示选择的节点。
上述每一个命令单元都是独立的模块,大类和小类是可以无限拓展的,针对用户和市场的需求,能够作出快速反馈,开发出不同的模块,满足市场要求的同时,能够不断地扩大解决方案的规模。
在完成交互命令的编辑后,进行执行预览命令,检查所编辑的命令是否按照设计的剧本执行。选择一个事件进行预览。事件的预览及其他操作执行规则如下:
所述事件是最小的执行单元,有多种触发方式,包括但不限于预览、启动事件、交互界面、事件触发器、快捷键、动画的事件帧、蓝图执行单元;事件在触发后,会加入到事件池中;每帧运行时,对事件池中的所有事件进行遍历执行,对每帧进行判断;如果事件池中为空,则等待事件加入事件池,否则遍历执行所有事件;如果所执行事件互动单元执行完毕,则从事件池中清除,否则遍历执行脚本命令单元;判断脚本命令单元是否阻塞,如是则等待该命令单元执行完成再执行下一个命令单元,否则直接执行下一个命令单元;如果命令单元执行完成,则标记为已完成;判断命令单元的类型是否为项目结束的脚本命令单元,如是则运行结束,否则继续遍历执行脚本命令单元。
参照图8,所述动画编辑器是一种帧动画编辑器,通过在不同时间上设置状态,通过在软件运行基于不同时间获得不同的状态。采用四级结构构成,分别为动画容器、动画、动画剪辑、动画帧。
所述动画容器,用于管理与分类动画,通过创建、复制、删除、重命名等命令,实现动画容器的创建、复制、删除和重命名。选择一个动画容器,动画容器中的动画会以列表形式显示。
所述动画,是可引用的最小单元,通过引用动画来实现帧动画的播放。通过创建、复制、删除、重命名等命令,实现动画的创建、复制、删除和重命名。通过“上移”、“下移”操作,更改动画在列表中的位置。一个动画包含多个节点的动画剪辑,选中一个动画时,即显示其剪辑列表和所有的动画帧。
所述动画剪辑。包含一个节点和代表节点状态的一系列的动画帧。节点的获取是基于一个通用的树结构来获取的。节点的动画效果,分为不同的类型,包括但不限于变换、大小、高亮、材质、事件、镜头、几何、文本;所述变换为动态改变节点的位置和角度;所述大小为动态改变节点的缩放;所述高亮为动态改变节点是否高亮;所述材质为动态改变节点上渲染器的材质;所述事件为在对应时间节点,执行事件;所述镜头为更改主镜头对应的位置与角度;所述几何为动态更改节点附带几何体的形状;所述文本为动态更改节点附带文本的内容。
所述动画帧。代表某个时间点的节点状态;通过“创建”、“复制”、“删除”命令,来创建、复制、删除帧;两帧之间针对不同的剪辑类型,采用插值的形式取值或采用第一个节点的值,来获得当前时间对应的值。对于不同效果的帧,能通过界面设置其属性。
在动画编辑器中,设置一个画布用于显示所有帧。画布的背景采用带时间刻度的网格来定位时间;滚动鼠标让网格来放大和缩小,以方便帧的编辑;设定一个标尺,拖动该标尺,改变当前的时间,场景中对应的对象的状态也随之改变,从而预览当前动画的效果;通过“检测重复帧”命令,检查是否出现重复的剪辑;通过“检测剪辑”命令,检测是否存在空剪辑;“记录帧状态”命令,用于复制标尺指定的帧的状态,并保存至内存中;“粘贴”帧状态,粘贴内存中的帧状态至当前动画的标尺位置。
动画在编辑完成后,通过命令单元引用。在软件项目执行时,会对对象池所有对象的节点设置为初始状态;启动每帧循环监视,对事件池所有事件遍历执行;每个事件执行命令单元时,判断命令单元是否播放动画;如果命令单元播放动画,则将该动画加入至动画池;每帧对动画池进行遍历,执行其中的所有动画,判断动画播放时间是否大于动画时间,若是则从动画池中移除;对一个动画的执行为遍历所有剪辑,根据时间值计算出节点的状态,并对对象的节点状态进行修改。
动画编辑器用于开发小动画,通过脚本编辑器来编辑命令,将小动画连接起来,从而构成一个大动画;相对于传统的骨骼动画,这种动画文件占用资源少,消耗的内存较低,能够快速定位,可循环播放。
参照图9,所述数字挛生引擎是将现实中的对象与虚拟对象进行关联,然后进行联动控制与显示。一对虚实对象的关联称为一个数字挛生。通过命令“创建”、“复制”、“删除”、“重命名”来进行数字挛生的创建、复制、删除、重命名。
所述数字挛生引擎,通过导入三维模型或者参数化建模的方式,实现三维仿真;然后通过数字挛生引擎关联节点,进行引擎设计,所述引擎设计,是基于不同的功能,选择不同的引擎,包括变换、传送带、齿轮、数值显示等;对应不同的引擎设置好参数。
在项目的数字挛生引擎建立之后,进行项目发布;将运行终端与物联网管理系统进行连接;获取物联网管理系统的消息,并向物联网管理系统发送操作命令;运行终端在获得物理传感器的信息后,可实现数据显示、信号渲染、数据计算,并可通过运行终端控制传感器;
所述数字化地图编辑器是在三维空间中编辑节点,赋予节点的关联属性,包括但不限于标注、与其他节点的通行规则、样式、是否显示连线、颜色、节点层级、是否显示标注、标注内容。
所述标签为对节点设置的一个标识,一个节点可以拥有多个标签。标签通过自定义设计,在标签编辑的可视化界面,可以添加、删除标签。所述通行规则,为两个节点之间的通行规则,包括双向通行、单向通行、逆向通行,一个节点有多条通行规则;实现基于一个树结构为节点添加通行节点;实现一个列表显示节点的所有通行规则,在列表上设置通行规则的类型,以及删除通行规则。所述样式为设置节点的模型;所述是否显示连线,是指在三维空间通过三维线段的形式,将连接关系显示出来;所述颜色为设置模型的节点颜色;所述节点层级,是将节点分级,高级的节点可以对低级的节点,实现批量操作;所述是否显示标注与标注内容,为在三维空间中将标注内容显示出来。
基于节点的相关属性,通过功能算法,实现三维数字化地图功能。相关功能包括但不限于三维空间节点化、节点定位、两点寻路、多点寻路、三维漫游、三维节点管理。所述三维空间节点化,通过节点将三维空间标记,通过节点之间的通行规则,实现三维空间网络化;所述节点定位即通过节点的位置,快速查找到节点;所述两点寻路,按照根据节点的通行规则,按照A星寻路算法,查找出两点之间的最小路径;所述多点寻路,执行一次巡逻多点所需要的最小路径,按照A星算法和节点管理算法,计算出最小路径;所述三维漫游,设置节点列表,按照节点列表计算出漫游路线,按照漫游路线进行漫游;所述三维节点管理,将对象池的对象与节点关联,实现对象池对象基于三维空间的管理。
节点可以被蓝图编辑器所引用,与人物管理信息系统相关联,实现三维事务数字化地图。
参照图10,通过考核设计工具,建立题库,创建题目,设计题目的类型、描述、答案分数,脚本编辑器将题目嵌入到脚本流程中实现基于三维动画的考核,具体流程如下:一个软件项目包含多个题库,一个题库包含多个题目;题目可设计问题、答案等属性;完成题库设计,在脚本编辑器中插入执行启动考核的命令;在命令编辑中,加入题目;最后加入一个考核结算的命令;完成脚本编辑,在终端执行考核;考核完毕后,将考核成绩上传至考试管理系统。
题目设计。所述题库用于管理题目,通过“创建”、“复制”、“删除”、“重命名”命令,创建、复制、删除、重命名题库;每个题库都有一个题目阵列,通过导入格式化的外部文件将题目导入到题库中,设计题目;选择一个题库然后编辑题目。
所述题目是可以被引用的最小单元,通过“创建”、“复制”、“删除”、“重命名”命令,创建、复制、删除、重命名题目;设置题目类型和题目属性,题目分为选择题与工具题;所述选择题,设置一个问题,并设置多个答案,可设置为单选和多选,并设定答案;所述工具题,就是设定一个阵列的图标作为工具图标,并设定正确的图标序号作为答案,完成题库设计;在题目设计完成后,可以通过脚本编辑器被事件命令单元引用。
考核脚本设计。考题在设计完成后会在脚本编辑器中被应用。首先在脚本编辑器中设置启动考核命令;其次,在脚本编辑过程中,根据需要插入题目命令,通过题库查找到题目,设置分数,设置是否打乱考核顺序;最后,根据需要在合适的位置设置考核结算命令。
题目的应用。在设计完成后,通过终端执行终端考核流程;当命令执行至开始考试时,启动考试,执行考试初始化;当命令执行至考题时,按类型进行选择题考试或者工具题考试,并根据设定是否打乱答案;用户执行考试,系统监测用户的选择,按照考核逻辑,执行三种结果,一是用户答错中止考试和流程,弹出结算界面;一是用户答错,继续流程,但不加分;一是用户答对,加分,继续流程;当流程执行时考核结算命令时,执行结算,但不中止流程,直至流程结束;考核结束,将考核结果上传至考试管理系统。
在项目设计完成后,根据不同的终端类型进行发布,可发布的终端包括普通电脑(PC)、网页端(Web)、VR端、AR端、移动端(Ios和Andriod)。不同的终端所生成的文件不一致,部署的方法不一样。
所述PC端的部署,生成一个用于PC端播放的平台;把资源(三维模型、多媒体文件、数据文件)打包成PC端适用的格式;设计数据为.db数库据格式;用户通过应用商店下载PC端播放器,然后通过PC端播放器将资源与数据下载至本地;也可以在设计端完成设计后,直接将资源和数据部署到对应的文件夹中;
所述web端的发布,生成一个可通过网页访问的终端;把资源(三维模型、多媒体文件、数据文件)打包成web端适用的格式;设计数据为.csv格式的表格;将web终端、资源、数据按照一定路径,部署到云服务器上;使用者即可通过设定的网址,在浏览器上直接运行程序。
所述移动端的发布,包括Ios端和移动端,基于不同的软件环境,发布成不同的终端;把资源(三维模型、多媒体文件、数据文件)打包成移动端端适用的格式;设计数据为.csv格式的表格;将资源、数据部署至云服务器,用户通过从云服务器下载获取资源,也可将资源直接绑定在.apk或者.ios的安装包中。
所述VR端的发布,生成一个用于VR端播放的平台,对于不同的VR硬件终端,因为调用的库不一致,打包的平台也是不一样的;根据采用的软件环境不同,资源打包的方式也不同,如果应用的是PC环境,资源部署与PC终端一致的格式;如果应用是移动端的环境,则打包成与移动端一致的格式;设计数据为.csv格式的表格;将资源、数据部署至云服务器,用户通过从云服务器下载获取资源,也可直接绑定在.apk或者.ios上。
所述AR端的发布,生成一个用于AR端播放的平台,对于不同的AR硬件终端,打包的平台也是可选的;根据采用的软件环境不同,打包成不同类型的资源,可以将资源部署在本地,也将资源、数据部署至云服务器,用户通过从云服务器下载获取资源。
在平台、资源、数据都部署完成后,通过无码化开发的三维数字化软件,即可交付给最终的受众。
在本实施例中所提到的“导出为设计文件”中的“设计文件”是指基于设计的数据,可以导出为设计图纸、三维模型、数据文件、流程图;所述设计图纸,包括基于三角剖分法形成的二维网络图,将二维图形以.dxf格式的CAD图纸。所述导出三维模型,是将三维空间中的网络导出,导出的文件格式为fbx、obj、stl的三维模型文件。所述导出数据文件,如路径数据、点云数据等,以.txt、.csv、.json等通用格式导出;所述导出流程图,是将通过蓝图编辑器编辑的蓝图以图片或者以流程图文件的形式导出,流程图文件可以被流程图播放器读取。
在本实施例中所提到的“导出为多媒体文件”的“多媒体文件”是指通过内部的截图工具,导出jpg格式的图片;通过内部的录频工具,导出.mp4格式的视频文件。
在本实施例中所提到的“导出为中间文件”的“中间文件”是指通过内部的设计工具,包括图形编辑器、界面编辑器、蓝图编辑器等设计数据,可以被导出成中间文件,然后被其他项目重复引用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种三维数字化软件开发的无码化编程系统,其特征在于,包括:
资源管理体系,用以存储作为基础数据文件的设计数据、系统数据和模板数据;
项目实例化单元,用以将基于三维引擎生成的项目实例化;
对象设计单元,用以为三维引擎实例化的项目设计特定的对象,并将对象放置到对象池中;
功能开发单元,用以调用对象池中的对象,为三维数字化软件进行对象开发;
项目发布单元,用以在三维数字化软件开发完成后,生成可以运行的三维数字化软件;
应用终端,用以对项目开发完成后生成的三维数字化软件进行布署和运行。
2.基于权利要求1所述的一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,包括以下步骤:
步骤一、构建三维引擎环境,基于三维引擎生成一个项目,基于资源管理体系创建并导入三维模型,对项目进行实例化,实现三维对象的渲染、变换和可视化界面交互功能逻辑;
步骤二、将通用化、定制化的三维软件功能,通过设计工具进行模块化封装,将抽象的功能对象化和容器化,完成对象模块和功能模块的设计,用于数据的存储与功能的调用;
步骤三、建立一个可视化脚本编辑器和动画编辑器,通过可视化界面设置参数,基于对象容器获得对象,设置对象之间的互相调用关系,实现三维交互功能开发;
步骤四、基于不同的应用场景,根据剧本,导入资源,通过必要的开发工具进行对象和功能的设计,将剧本文案转化成三维数字化软件案例;
步骤五、根据不同的终端,将案例发布成项目包;
步骤六、根据不同的终端,建立执行平台,将项目包在执行平台上进行部署,实现可执行的三维数字化软件项目。
3.如权利要求2所述的一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,在所述步骤二和步骤三中,基于数据表结构,来定义存储对象模块和功能模块,将每个模块对象化和容器化,然后基于自定义的UI控件对对象或功能进行调用。
4.如权利要求2所述的一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,在所述步骤一中,基于资源管理体系创建并导入的数据还包括本地或者云服务器的多媒体文件和数据文件;所述项目实例化还包括图像的渲染、三维变换操作、对象管理、显卡计算、镜头控制管理和交互界面开发。
5.如权利要求2所述的一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,在所述步骤二中,所述设计工具包括数据库编辑器、变量编辑器、图形编辑器、交互界面编辑器、三维建模工具、蓝图编辑器、路径编辑器、灯光编辑器、射线编辑器、快捷键编辑器和事件触发器,在所述步骤三中,所述对象包括变量、数据库、图形、交互界面、三维模型、蓝图和功能对象。
6.如权利要求2所述的一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,在所述步骤四中,所述必要的开发工具包括脚本编辑器、动画编辑器、数字挛生引擎、数字化地图编辑器和考核设计工具。
7.如权利要求2所述的一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,在所述步骤二中,在完成对象模块和功能模块的设计后,导出生成中间件,通过中间件在其他项目进行对象模块和功能模块的复用设计开发。
8.如权利要求2所述的一种三维数字化软件开发的无码化编程系统的编程方法,其特征在于,在所述步骤六中,所述执行平台包括VR、AR、PC、Web、Ios和Andriod终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111004769.7A CN113721905A (zh) | 2021-08-30 | 2021-08-30 | 一种三维数字化软件开发的无码化编程系统及编程方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111004769.7A CN113721905A (zh) | 2021-08-30 | 2021-08-30 | 一种三维数字化软件开发的无码化编程系统及编程方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113721905A true CN113721905A (zh) | 2021-11-30 |
Family
ID=78679201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111004769.7A Pending CN113721905A (zh) | 2021-08-30 | 2021-08-30 | 一种三维数字化软件开发的无码化编程系统及编程方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113721905A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114612732A (zh) * | 2022-05-11 | 2022-06-10 | 成都数之联科技股份有限公司 | 样本数据增强方法及系统及装置及介质及目标分类方法 |
CN114863034A (zh) * | 2022-06-17 | 2022-08-05 | 桃子科技(嘉兴)有限公司 | 动漫设计3d建模控制系统 |
CN115129201A (zh) * | 2022-09-01 | 2022-09-30 | 杭州易知微科技有限公司 | 一种可视化场景交互事件的绑定方法及全局事件流的交互方法 |
CN115861582A (zh) * | 2023-02-22 | 2023-03-28 | 武汉创景可视技术有限公司 | 基于多智能体的虚拟现实引擎系统及实现方法 |
CN117111944A (zh) * | 2023-10-23 | 2023-11-24 | 中国民用航空飞行学院 | 一种飞机性能软件用户ui交互底层机制设计方法及系统 |
-
2021
- 2021-08-30 CN CN202111004769.7A patent/CN113721905A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114612732A (zh) * | 2022-05-11 | 2022-06-10 | 成都数之联科技股份有限公司 | 样本数据增强方法及系统及装置及介质及目标分类方法 |
CN114863034A (zh) * | 2022-06-17 | 2022-08-05 | 桃子科技(嘉兴)有限公司 | 动漫设计3d建模控制系统 |
CN115129201A (zh) * | 2022-09-01 | 2022-09-30 | 杭州易知微科技有限公司 | 一种可视化场景交互事件的绑定方法及全局事件流的交互方法 |
CN115861582A (zh) * | 2023-02-22 | 2023-03-28 | 武汉创景可视技术有限公司 | 基于多智能体的虚拟现实引擎系统及实现方法 |
CN117111944A (zh) * | 2023-10-23 | 2023-11-24 | 中国民用航空飞行学院 | 一种飞机性能软件用户ui交互底层机制设计方法及系统 |
CN117111944B (zh) * | 2023-10-23 | 2024-01-09 | 中国民用航空飞行学院 | 一种飞机性能软件用户ui交互底层机制设计方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113721905A (zh) | 一种三维数字化软件开发的无码化编程系统及编程方法 | |
Dirksen | Learning Three. js: the JavaScript 3D library for WebGL | |
Parisi | Programming 3D Applications with HTML5 and WebGL: 3D Animation and Visualization for Web Pages | |
Lanham | Learn ARCore-Fundamentals of Google ARCore: Learn to build augmented reality apps for Android, Unity, and the web with Google ARCore 1.0 | |
Goldstone | Unity game development essentials | |
Dirksen | Learning Three. js–the JavaScript 3D Library for WebGL | |
Satheesh | Unreal Engine 4 Game Development Essentials | |
WO2022183519A1 (zh) | 一种可实时交互的三维图形图像播放器 | |
De Byl | Holistic Game Development with Unity 3e: An All-in-One Guide to Implementing Game Mechanics, Art, Design and Programming | |
Moreau-Mathis | Babylon. js Essentials | |
US11625900B2 (en) | Broker for instancing | |
Davison | Pro Java 6 3D Game Development: Java 3D, JOGL, JInput and JOAL APIs | |
Dirksen | Learn Three. js: Programming 3D animations and visualizations for the web with HTML5 and WebGL | |
Benito et al. | Enterprise Augmented Reality Projects: Build real-world, large-scale AR solutions for various industries | |
Borromeo | Hands-On Unity 2020 Game Development: Build, customize, and optimize professional games using Unity 2020 and C | |
Thorn | Moving from Unity to Godot | |
Borromeo | Hands-On Unity 2021 Game Development: Create, customize, and optimize your own professional games from scratch with Unity 2021 | |
Felicia | Getting started with Unity: Learn how to use Unity by creating your very own" Outbreak" survival game while developing your essential skills | |
Mathews | Panda3D 1.6 Game Engine Beginner's Guide | |
Perevalov et al. | openFrameworks Essentials | |
Van der Spuy | AdvancED Game Design with Flash | |
Bateman et al. | The Essential Guide to 3D in Flash | |
Berinstein et al. | Game development tool essentials | |
Battagline | Hands-On Game Development with WebAssembly: Learn WebAssembly C++ programming by building a retro space game | |
Strougo et al. | Learning Cocos2D: a hands-on guide to building iOS games with Cocos2D, Box2D, and Chipmunk |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |