针对3D对象编辑实现可撤销操作的方法、系统及设备技术方案

技术编号:37676108 阅读:17 留言:0更新日期:2023-05-26 04:40
本发明专利技术公开了一种针对3D对象编辑实现可撤销操作的方法、系统及设备,属于计算机技术应用领域,其中方法内容包括:定义基类;定义子类;定义命令接口与实现所述命令接口的命令类以及命令管理器;通过所述命令接口,由所述命令管理器对命令对象进行压栈出栈操作,所述命令对象是所述命令类的实例化。本发明专利技术解决了3D场景的编辑过程中因增加新类导致代码开发和维护成本增加的问题,实现了使用固定数量命令类的命令模式在编辑3D对象中的可撤销操作。类的命令模式在编辑3D对象中的可撤销操作。类的命令模式在编辑3D对象中的可撤销操作。

【技术实现步骤摘要】
针对3D对象编辑实现可撤销操作的方法、系统及设备


[0001]本专利技术涉及计算机技术应用领域,具体涉及一种针对3D对象编辑实现可撤销操作的方法、系统及设备。

技术介绍

[0002]目前在3D对象编辑过程中,使用命令模式实现可撤销操作的功能,命令模式是GOF(Gang of Four,四人组)定义的设计模式的一种,具体是通过把实现其他对象行为的命令类抽象成统一的实现接口的命令对象,达到存储行为,并通过压栈出栈的操作方式实现可撤销的功能。随着产品功能的增加,新类会随着功能的增加而产生和不断增加,那么随之而来就会增加与之相关的命令类,这样就会产生代码开发成本以及维护成本增加问题。目前这种类膨胀问题还没有技术解决。

技术实现思路

[0003]为解决现有技术中的不足,本专利技术提出了一种针对3D对象编辑实现可撤销操作的方法、系统及设备。
[0004]第一方面,本专利技术提出了一种针对3D对象编辑实现可撤销操作的方法,包括如下步骤:
[0005]步骤S1:定义基类,定义两个或两个以上成员变量,所述基类包括状态基类和对象基类,所述成员变量的类型继承于状态基类;
[0006]步骤S2:定义子类,所述子类继承于对象基类,定义专属于所述子类的成员变量状态子类,所述成员变量状态子类用来描述所述子类的特殊属性,并继承于其中一成员变量的状态基类,所属成员变量包含子类信息,所述子类信息为子类独有;
[0007]步骤S3:定义命令接口、实现所述命令接口的命令类以及命令管理器;
[0008]步骤S4:通过所述命令接口,由所述命令管理器对命令对象进行压栈出栈操作,所述命令对象是所述命令类的实例化。
[0009]所述定义基类,还包括定义方法,所述方法用于输入继承于状态基类类型的状态对象,根据所述状态对象的状态类型,更新相同状态类型的成员变量。
[0010]定义实现所述命令接口的命令类包括:定义创建对象命令类、定义删除对象命令类和定义更改属性命令类。
[0011]所述命令接口,包括实现执行操作方法和实现撤销操作方法。
[0012]所述定义创建对象命令类,包括:
[0013]初始化构造函数的时候记录3D对象信息,所述3D对象信息为所述成员变量的属性值;
[0014]通过创建3D对象实现执行操作方法,所述创建3D对象是根据所述3D对象信息创建的;
[0015]通过删除3D对象实现撤销操作方法。
[0016]所述定义删除对象命令类,包括:
[0017]初始化构造函数的时候记录3D对象信息;
[0018]通过删除3D对象实现执行操作方法;
[0019]通过重新创建3D对象实现撤销操作方法,所述重新创建3D对象是根据所述3D对象信息创建的。
[0020]所述定义更改属性命令类,包括:
[0021]初始化构造函数传入的预修改成员变量值,所述预修改成员变量值对应的成员变量类型继承于状态基类,保存所述预修改成员变量值,同时记录所述成员变量的原成员变量值;
[0022]通过采用基类中定义方法传入所述预修改成员变量值实现执行操作方法;
[0023]通过传入对应修改成员变量的原成员变量值实现撤销操作方法。
[0024]第二方面,本专利技术提出了一种针对3D对象编辑实现可撤销操作的系统,包括:
[0025]基类定义模块,用于定义基类,定义两个或两个以上成员变量,所述基类包括状态基类和对象基类,所述成员变量的类型继承于状态基类;
[0026]子类定义模块,用于定义子类,所述子类继承于对象基类,定义专属于所述子类的成员变量状态子类,所述成员变量状态子类用来描述所述子类的特殊属性,并继承于其中一成员变量的状态基类,所述成员变量包含子类信息,所述子类信息为子类独有;
[0027]命令接口定义模块,用于定义命令接口、实现所述命令接口的命令类以及命令管理器;
[0028]命令实现模块,用于通过所述命令接口,由所述命令管理器对命令对象进行压栈出栈操作,所述命令对象是所述命令类的实例化。
[0029]第三方面,本专利技术提出了一种针对3D对象编辑实现可撤销操作的设备,包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发设备执行所述的一种针对3D对象编辑实现可撤销操作的方法。
[0030]第四方面,本专利技术提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,当其在计算机上运行时,使得计算机执行所述的一种针对3D对象编辑实现可撤销操作的方法。
[0031]本专利技术采用一种使用固定数量命令类的命令模式实现3D对象编辑的可撤销操作功能,解决了目前在3D场景内进行对象编辑过程中,以增加新类方式实现可撤销操作功能,导致代码开发成本和维护成本增加的问题。
[0032]本专利技术附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术实践了解到。
附图说明
[0033]图1为本专利技术实施例的一种针对3D对象编辑实现可撤销操作的方法流程图;
[0034]图2为本专利技术实施例的一种针对3D对象编辑实现可撤销操作的系统原理框图;
[0035]图3为本专利技术实施例的成员变量状态子类、成员变量与状态基类之间类型继承关系示意图。
具体实施方式
[0036]以下结合附图对本专利技术的原理和特征进行描述,所举实施例只用于解释本专利技术,并非用于限定本专利技术的范围。
[0037]针对目前在实现3D对象编辑的可撤销操作的功能中,现有技术面临类膨胀导致的代码开发成本和维护成本增加的问题,本专利技术提出使用固定数量命令类的命令模式实现可撤销操作功能,具体是在现有命令模式的基础上加以改进。
[0038]目前基于命令模式,可以实现3D对象编辑中的undo(撤销)和redo(重做)操作,所述命令模式使用的所有命令对象,所述命令对象是所述命令类的实例化结果,都是实现于命令接口,每个命令对象里执行的动作都是对3D对象进行编辑,命令接口只有方法,传统方法中对命令对象中每类3D对象的不同操作,需要实现不同的命令类,结果就会造成随着命令类的增多,命令对象就会增多,代码开发和维护成本增大。而本专利技术的改进是采用3D对象继承于基类的命令模式,基类有数据和方法,基类所含方法在编辑器中可以实现根据输入3D对象对编辑器成员变量更新前后属性值的保存和记录,此特征保证了3D对象属性每次都是重新生成的,而不是在其基础上修改,这样就保证了数据的不变性,因此在3D对象编辑过程中进行创建、修改、删除的时候,可以直接使用3D对象的属性,不用担心其会被外部修改。
[0039]本专利技术把3D对象属性集中到四个成员变量,因为四个成员变量类型都继承于BaseState(基本状态)基类,以下简称状态基类,修改命令里只需要存储状态基类类型的数据,这样修改3D对象属性的命令就只需一个实现命令就可以了,剩下的就是增删的命令,一共只有三个命令。这本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对3D对象编辑实现可撤销操作的方法,其特征在于,包括如下步骤:步骤S1:定义基类,定义两个或两个以上成员变量,所述基类包括状态基类和对象基类,所述成员变量的类型继承于状态基类;步骤S2:定义子类,所述子类继承于对象基类,定义专属于所述子类的成员变量状态子类,所述成员变量状态子类用来描述所述子类的特殊属性,并继承于其中一成员变量的状态基类,所述成员变量包含子类信息,所述子类信息为子类独有;步骤S3:定义命令接口、实现所述命令接口的命令类以及命令管理器;步骤S4:通过所述命令接口,由所述命令管理器对命令对象进行压栈出栈操作,所述命令对象是所述命令类的实例化。2.根据权利要求1所述的针对3D对象编辑实现可撤销操作的方法,其特征在于,所述定义基类,还包括定义方法,所述方法用于输入继承于状态基类类型的状态对象,根据所述状态对象的状态类型,更新相同状态类型的成员变量。3.根据权利要求2所述的针对3D对象编辑实现可撤销操作的方法,其特征在于,定义实现所述命令接口的命令类包括:定义创建对象命令类、定义删除对象命令类和定义更改属性命令类。4.根据权利要求1所述的针对3D对象编辑实现可撤销操作的方法,其特征在于,所述命令接口,包括实现执行操作方法和实现撤销操作方法。5.根据权利要求3所述的针对3D对象编辑实现可撤销操作的方法,其特征在于,所述定义创建对象命令类,包括:初始化构造函数的时候记录3D对象信息,所述3D对象信息为所述成员变量的属性值;通过创建3D对象实现执行操作方法,所述创建3D对象是根据所述3D对象信息创建的;通过删除3D对象实现撤销操作方法。6.根据权利要求3所述的针对3D对象编辑实现可撤销操作的方法,其特征在于,所述定义删除对象命令类,包括:初始化构造函数的时候记录3D对象信息;通过删除3D对象实现执行操作方法;通过重新创建3D对象实...

【专利技术属性】
技术研发人员:潘振兴井刚吴俊华黄正雨
申请(专利权)人:北京优锘科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1