CN1776616A - 三维模型编辑器建模命令框架设计方法 - Google Patents
三维模型编辑器建模命令框架设计方法 Download PDFInfo
- Publication number
- CN1776616A CN1776616A CN 200510130614 CN200510130614A CN1776616A CN 1776616 A CN1776616 A CN 1776616A CN 200510130614 CN200510130614 CN 200510130614 CN 200510130614 A CN200510130614 A CN 200510130614A CN 1776616 A CN1776616 A CN 1776616A
- Authority
- CN
- China
- Prior art keywords
- order
- command
- concretecommand
- data
- dimensional model
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
三维模型编辑器建模命令框架设计方法,包括:命令中心负责管理所有与命令相关的事务;用户请求,通过命令中心创建一个具体命令对象,并指定它的接收者对象;接收者对象,知道如何实施与执行相关的用户请求操作,具体命令,对调用它的的操作以执行该请求;本发明将上述具体命令分为处理拓扑结构的子命令与处理模型数据的子命令两类,再将处理拓扑结构的子命令分为:拓扑增加、拓扑删除、拓扑移动三种子命令,处理模型数据的子命令分为数据修改一种子命令。本发明对命令进行了再分类,解决了逆向命令设计复杂、撤销操作过程中存在误差积累等一系列问题,实现了三维建模软件中无限多层次命令的记录、撤销(Undo)、重做(Redo)等多种操作。
Description
技术领域
本发明涉及一种三维模型编辑器建模命令框架及其实现方法。
背景技术
命令设计模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
一种通用的命令设计模式的类结构如图1所示,其中包括:
●Command
——声明执行操作的接口。
●ConcreteCommand
——将一个接收者对象绑定于一个动作。
——调用接收者相应的操作,以实现Execute。
●Client
——创建一个具体命令对象并设定它的接收者。
●Invoker
——要求该命令执行这个请求。
●Receiver
——知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。
对象之间的交互如图2所示,它说明了Command是如何将调用者和接收者(以及它执行的请求)解耦的,具体的步骤为:
●Client创建一个ConcreteCommand对象并指定它的Receiver对象;
●某Invoker对象存储该ConcreteCommand对象;
●该Invoker对象通过调用Command对象的Execute操作来提交一个请求。若该命令是可撤销的,ConcreteCommand就在执行Execute操作之前存储当前状态用于取消该命令;
●ConcreteCommand对象对调用它的Receiver的一些操作以执行该请求。
通用的命令设计模式可以在多种环境下应用并取得良好的效果,但是,在针对三维建模工具的设计中,通用的命令设计模式有以下两个主要问题:
(1)命令设计模式不对命令再分类,所有的命令都被视为对应用程序数据集的操作,在三维建模工具中,最主要的数据集是模型树,在内部存储为树形数据结构,而建模操作中对模型树拓扑结构的修改又是一种重要的操作;
(2)命令设计模式对撤销命令的执行以执行逆向命令的方式进行。但是,对三维建模工具而言,这种方式并不合适,首先逆向命令方式实现撤销命令操作的非常困难,逆向命令方式使用一组参数表示恢复的方式,在命令执行时记录参数,而在撤销命令时应用参数,对每一个不同的指令,都必须设计相应的逆向命令,才能够正确执行;其次,在三维建模工具中,使用逆向命令方式将引起撤销操作过程中的误差积累。例如,某操作使用一个矩阵M对一系列坐标进行操作,这种情况下,逆向命令很明显是使用M-1对同一系列坐标进行。但是,浮点精度问题可能会导致MM-1=1这个数学定义不能满足。因此,逆向命令执行后的数据与命令执行前的数据不完全一致。在对计算精度要求极高的三维建模软件中,这是用户完全不能接受的。
发明内容
本发明的技术解决问题:针对上述技术的不足,本发明提供一种三维模型编辑器建模命令框架及其实现方法,该方法将建模命令分类处理,大量提高了系统的处理速度,节约了系统的资源,而且通过“备份-恢复”方式来实现反命令的操作,简化了命令的编写与维护工作,使建模命令设计速度大大提高。
本发明的技术解决方案:三维模型编辑器建模命令框架设计方法,包括:
命令管理中心CommandCenter,负责处理所有命令的创建与销毁,保存了所有命令的状态,同时负责撤销命令的管理和执行;
用户请求Client,通过命令中心CommandCenter创建一个具体命令ConcreteCommand对象,并指定它的接收者对象Receiver;
接收者对象Receiver,知道如何实施与执行相关的用户请求操作;
具体命令ConcreteCommand,对调用它的Receiver的操作以执行该请求;
其特点在于:将上述ConcreteCommand分为处理拓扑结构的子命令与处理模型数据的子命令两类,再将处理拓扑结构的子命令分为:
拓扑增加TopoAdd_ConcreteCommand;
拓扑删除TopoRemove_ConcreteCommand;
拓扑移动TopoModify_ConcreteCommand三种子命令,处理模型数据的子命令分为数据修改DataModify_ConcreteCommand一种子命令,同时通过上述4个子命令各自的接口:TopoAdd声明执行拓扑增加操作的接口,TopoRemove声明执行拓扑删除操作的接口,TopoModify声明执行拓扑修改操作的接口及DataModify声明执行数据修改操作的接口,与命令中心接口Command与CommandCenter联络。
命令管理中心CommandCenter负责管理所有与命令相关的事务,包括命令的创建、销毁、执行、分析处理、撤销等。在应用程序启动时,系统中存在着Client对象、Receiver对象与CommandCenter对象。当用户需要执行一个命令时,Client通过CommandCenter创建一个ConcreteCommand对象并指定它的Receiver对象。并将ConcreteCommand的拥有权交给CommandCenter对象。在CommandCenter对ConcreteCommand进行分析命令的作用范围并备份作用范围内的数据之后,CommandCenter对象通过调用Command对象的Execute操作来提交一个请求,完成命令执行操作。对于拓扑命令,命令的作用范围是一个模型子树;对于数据命令,命令的作用范围就是模型树的一个节点。备份的数据根据命令的执行顺序形成一个双向链表。当用户需要撤销一个命令时,CommandCenter根据之前储存的备份数据双向链表尾部节点,直接调用Receiver进行恢复,完成命令撤销操作。
本发明与现有技术相比的优点在于:
(1)本发明将建模命令分为处理拓扑结构的子命令与处理模型数据的子命令两类,并针对这两类子命令分别处理,大量提升了系统速度,节约了系统资源。
(2)本发明根据上述命令分类,对两类子命令分别设计拓扑增加、拓扑删除、拓扑移动以及数据修改两类共四个逆向命令,并通过命令代理模块实现逆向命令的自动生成,极大简化了命令的编写与维护工作。
(3)本发明通过命令管理中心对命令的管理,实现了无限多层次命令的记录、撤销、重做等多种操作,使用户可以回到编辑历史上的任意一个状态。
(4)本发明在命令、逆向命令中保存了更多的细节信息,详细表示了该命令的执行上下文环境、参数以及缩略图,并直接在用户界面进行显示,有利于用户做出更加迅速、准确的动作。
总之,本发明针对三维建模软件,对命令设计模式进行了多处修改:对命令进行了再分类,并在此基础上,将原有的实现撤销命令使用的逆向命令方式改为“备份-恢复”方式,解决了逆向命令设计复杂、撤销操作过程中存在误差积累、恢复指令对内存要求大等一系列问题,取得了良好的效果,最终实现了三维建模软件中无限多层次命令的记录、撤销、重做等多种操作。
附图说明
图1为现有的通用的命令设计模式的类结构图;
图2为现有的通用的命令设计模式对象之间的交互图;其中图2a为命令的创建;图2b为命令的执行;
图3为本发明的命令再分类的类结构图;
图4为本发明的命令再分类的对象之间的交互图;其中图4a为命令的创建;图4b为命令的执行;图4c为命令的撤销;
图5为本发明的对命令与反命令的执行图例。
具体实施方式
如图3所示,实现本发明三维建模的命令设计模式的类图结构,其中:
●Command
——声明执行操作的接口。
●TopoAdd
——声明执行拓扑增加操作的接口。
●TopoRemove
——声明执行拓扑删除操作的接口。
●TopoModify
——声明执行拓扑修改操作的接口。
●DataModify
——声明执行数据修改操作的接口。
●TopoAdd_ConcreteCommand
——将一个接收者对象绑定于一个拓扑增加动作。
——调用接收者相应的操作,以实现Execute。
●TopoRemove_ConcreteCommand
——将一个接收者对象绑定于一个拓扑删除动作。
——调用接收者相应的操作,以实现Execute。
●TopoModify_ConcreteCommand
——将一个接收者对象绑定于一个拓扑修改动作。
——调用接收者相应的操作,以实现Execute。
●DataModify_ConcreteCommand
——将一个接收者对象绑定于一个数据修改动作。
——调用接收者相应的操作,以实现Execute。
●Client
——通过CommandCenter创建一个具体命令对象并设定它的接收者。
●CommandCenter
——要求该命令执行这个请求。
——分析撤销操作参数,并执行撤销操作。
●Receiver
——知道如何实施与执行一个请求相关的操作。任何类都可能作为一个接收者。
CommandCenter对象是全局唯一的对象,它是所有命令的起点和终点,负责具体命令对象的创建与销毁,所有的命令都拥有Command接口,CommandCenter对象利用Command接口操作命令对象。在Command接口的基础上,TopoAdd、TopoRemove、TopoModify与DataModify是本发明设计的第二层接口,称为命令再分类接口。这些接口的具体功能如上所述。在拥有自身特殊方法的同时,这些接口也是Command接口。在命令再分类接口的基础上,软件设计者可以设计并实现TopoAdd_ConcreteCommand、TopoRemove_ConcreteCommand、TopoModify_ConcreteCommand以及DataModify_ConcreteCommand等的具体类。当然,在具体的软件设计中,具体类的个数由软件需求确定,可以为任意数量。
通过本发明的命令再分类方法,CommandCenter可以在命令创建时同时分析该命令,并备份该命令将要修改的数据。同时,基于CommandCenter的设计可以保证命令子系统拥有多项特征:
●提升系统速度,节约系统资源。将命令划分为拓扑类型和数据类型,每个命令只考虑一种情况,令应用程序更加简练。
●自动备份命令将要修改的数据。不需要程序员书写逆向命令,消除了命令与逆向命令之间的一致性问题,降低开发成本。
●多级命令的记录、撤销与重做。本发明加强了CommandCenter的命令管理功能,使其有能力进行复杂的处理。
●命令子系统保留了更多细节信息,有助于用户操作。
Client与Receiver为外部类,不属于本发明的核心内容。Client可以理解为应用程序的主控模块,用于响应用户操作。在需要的时刻(一般为得到软件用户的键盘、鼠标消息时),Client使用基于本发明“命令再分类模式”设计的命令子系统,通过CommandCenter创建并发出命令。而Reciver为此命令的接收者,通常为软件中的数据层中的具体类,负责实施最终操作。
对象之间的交互如图4所示,它说明了Command是如何将调用者和接收者(以及它执行的请求)解耦的,具体的步骤为:
●Client通过CommandCenter创建一个ConcreteCommand对象并指定它的Receiver对象。
●某CommandCenter对象存储该ConcreteCommand对象
●该CommandCenter对象通过调用Command对象的Execute操作来提交一个请求。若该命令是可撤销的,ConcreteCommand就在执行Execute操作之前存储当前状态用于撤销该命令。
●ConcreteCommand对象对调用它的Receiver的一些操作以执行该请求。
●当需要撤销命令时,CommandCenter对象根据之前储存的备份数据,直接调用Receiver的一些操作以完成撤销命令的操作。应用了本发明的三维建模软件命令子系统,具有以下的动态特征。
在应用程序启动时,系统中存在着Client对象、Receiver对象与CommandCenter对象。
在Client对象获得用户输入,需要执行某一命令时,Client通过CommandCenter创建一个ConcreteCommand对象并指定它的Receiver对象。并将ConcreteCommand的拥有权交给CommandCenter对象。此过程如图4a所示。
在CommandCenter对ConcreteCommand进行一定的处理(例如对将要被命令修改的数据进行备份)之后,CommandCenter对象通过调用Command对象的Execute操作来提交一个请求。此过程如图4b所示。
当用户需要撤销一个命令时,CommandCenter通过之前储存的备份数据,直接调用Receiver的一些操作以撤销命令的操作。此过程如图4c所示。
在实现时,具体的三维建模软件系统可以包含任意数量的具体类,也就是图3中的TopoAdd_ConcreteCommand、TopoRemove_ConcreteCommand、TopoModify_ConcreteCommand以及DataModify_ConcreteCommand类。
本发明实现的具体类必须保证符合它的再分类类型约束,具体来说,包括:
拓扑增加命令指对三维模型树的挂接操作。在命令的执行过程中,命令首先根据用户输入的数据产生一个模型子树,然后将模型子树挂街到主模型树之上。大部分创建型命令具有拓扑增加命令属性。例如,创建多边形命令、创建圆形命令以及创建球形命令等都是以拓扑增加为主的命令。拓扑增加命令的撤销命令为拓扑删除命令。
拓扑删除命令指对三维模型树的分离操作。在命令执行过程中,命令首先根据用户的输入,决定需要删除的子树,然后将模型子树由主模型树上分离。具有拓扑删除属性的命令不太多,最主要的是删除命令。执行删除命令之前,用户通常通过选择某一个对象指定其需要被删除,然后选择执行删除命令,最后删除命令得到执行。除了删除命令之外,peak、wall等命令也需要拓扑删除的支持。拓扑删除命令的撤销命令为拓扑增加命令。在删除命令执行之前,由命令中心先对被删除对象进行备份,在需要撤销时,只需简单的将删除的模型子树再增加回去即可。
拓扑移动命令指对三维模型子树的移动。命令执行过程为首先用户指定源模型子树以及目标位置,然后将模型子树由源位置分离,再在目标位置挂接。这样一系列动作后,拓扑移动命令即可完成。具有拓扑移动属性的命令主要是移动命令,此命令在对模型树优化配置方面具有非常重要的作用。通过此命令,用户可以在建模阶段尽可能合并具有相同状态的节点,对运行时效率可以起到重要作用。拓扑移动命令的撤销命令仍为拓扑移动命令,在需要执行撤销命令时,只需将命令的源位置和目标位置恢复即可。
最后,数据修改命令指不改变三维模型树的拓扑结构,只改变某个或某些结点的内容数据。具有数据修改属性的命令数目很多,所有类型的节点数据编辑命令全部具有这个属性。在这个命令执行之前,命令中心首先备份结点的数据内容,然后执行命令。在需要对这个命令进行撤销操作的时候,命令中心对原有的节点内容进行恢复。
以上就是对拓扑增加、拓扑删除、拓扑移动以及数据修改四种命令的再分类类型约束的详细描述。可以看出,这种分类方式有效的解决了现有技术中提到的使用原有的命令设计模式时所可能遇到的多种问题。应用之后,本发明所描述的方法在应用程序的编制简洁、运行快速、内存利用高效等多个方面具有明显的优势。
在实现时,命令管理中心CommandCenter接受主程序(通常是界面子系统)的请求,创建、分析、执行并管理命令。一般地,当接收到一个执行命令请求时,命令管理中心CommandCenter首先根据参数创建某个具体命令类的一个命令对象之后,命令管理中心CommandCenter将分析这些参数。分析参数的主要目的是找出命令的作用范围。对于拓扑命令,命令的作用范围是一个模型子树;对于数据命令,命令的作用范围就是模型树的一个节点。最后,执行这个命令,并将命令保存起来,以备从此之后的使用。当接收到一个命令撤销请求时,命令管理中心CommandCenter根据之前执行命令时的记录和备份数据对系统数据进行恢复,完成撤销操作。
一般地,命令管理中心CommandCenter使用一个列表结构储存已经发生的命令。用户可以随时察看这个命令列表,已确定命令子系统目前的状态。当用户需要撤销一个命令时,命令子系统从后至前处理命令列表。根据命令的再分类类型和参数,命令管理中心执行一个对应类型的撤销命令。命令类型与其对应的撤销命令类型如表1所示。
表1命令类型与撤销命令类型
命令类型 | 撤销命令类型 |
拓扑增加 | 拓扑删除 |
拓扑删除 | 拓扑增加 |
拓扑移动 | 拓扑移动 |
数据修改 | 数据修改 |
在本发明设计的命令系统再分类的基础上,新命令的设计过程得到了有效的改善。新命令的设计过程主要分为以下三步:
首先,确定命令的类型。根据本发明的命令系统再分类设计,所有命令属于表1所列举的四种类型,因此必须首先分析新的待添加命令对数据库的具体操作,然后确定命令的类型。
其次,根据已有的命令接口编写命令。新的命令应符合已经定义的通用接口,并使用C++语言描述,通过算法设计与编写、编译链接、调试等过程,获得新的命令功能模块。
最后,对得到的命令模块进行系统集成测试。系统集成测试保证了命令模块不仅能够正确完成所定义的功能,并且可以与系统中的命令管理中心正确配合。主要的测试项目包括命令的执行、撤销、重做、与已有命令的配合使用等。
与传统方法相比,使用本发明后的新命令设计方法发生了较大的改变。最显著的改变是使用本发明后的新命令设计方法不需要对命令的撤销操作具体编写代码。如上文第二步所示,添加新的命令只需编写命令本身的算法即可,这种改进极大简化了新命令的编写与维护工作。
下面,给出一个具体的例子,说明设计一个新的命令的方法,以模型移动命令作为例子进行说明。
模型移动命令对模型树的某一个子树在三维空间中进行一个平移操作。它的参数主要包括一个id指明模型子树和一个三维向量Vector3指明移动的方向和大小。明显的,模型移动命令需要在内存数据库中的主要操作是对模型顶点数据做出修改。因此,这个命令应该属于数据修改命令子类型。
在确定了命令的子类型之后,在已有的命令接口的基础上进行设计与编码。命令接口接收建模命令对象,并根据命令对象的内容执行命令。所有命令类都由Command类派生而来,接受CommandCenter的管理。
Command类的主要函数接口包括:
●virtual int GetCommandType()=0;
此函数用于获取命令的类型。
●virtual int Execute(Graphltem**ppCreationltem=NULL)=0;
此函数用于执行特定的命令。
●virtual string GetCmdName()=0;
此函数用于获取命令的名称。
●virtual Command*Clone()=0;
此函数用于复制(克隆)命令,在对一系列对象同时指定某一个命令,并需要保存这一系列命令时(ExecuteForSelection),需要使用此函数将命令复制多份。
●void SetTarget(int nTargetld);与int GetTarget();
指定、获取命令target。
通常,对于拓扑增加型命令,target是父节点;对于数据修改型指令或拓扑移动型命令,target是修改或移动的目标;对于拓扑删除型命令,target是被删除的对象。
在Command类函数接口之上,设计了模型移动命令
CommandTranslate类的主要函数接口:
●void SetParameter(Vector3 vTrans);
设置命令参数。vTrans为模型对象平移向量。
●int Execute(Graphltem**ppCreationltem=NULL);
执行move命令。此函数的执行过程为:
(1)调用CollectVertexList收集vertex list节点列表;
(2)对每一个vertex list节点调用MoveVertexList函数进行平移操作;
(3)消除在MoveVertexList函数中调用AddVertex的影响;
(4)清除selection list;
●int MoveVertexList(Graphltem*pltem);
平移一个vertex list中的所有顶点。
其中,最主要的算法位于MoveVertexList函数中。下面的表2列出了此函数的伪代码。
表2 CommandTranslate的MoveVertexList函数设计伪代码
(1)生成平移矩阵;(2)取得一个vertex id,在m_mVertexMapping中查找此vertex是否已经处理过;(3)如果已经处理过,则直接取对应的新id值;(4)否则,计算新的vertex坐标位置,利用AddVertex得到新的id值,并将新的id值记录在m_mVertexMapping之中;(5)使用IncreaseRC函数增加对新vertex id的引用; |
最后经过编码、编译链接、调试以及第三步的系统测试,一个新的命令CommandTranslate就完成了。
如果整个系统不使用本发明的方案,而是使用传统方法,最显著的区别将是除了表2所示的MoveVertexList函数之外,还将有一个主要的算法函数:UndoMoveVertexList,如果存在这样的一个函数,其伪代码将如表3所示。
表3不实际存在的UndoMoveVertexList函数设计伪代码
(1)生成平移矩阵的逆转矩阵;(2)取得一个vertex id,在m_mVertexMapping中查找此vertex是否已经处理过;(3)如果已经处理过,则直接取对应的新id值;(4)否则,计算新的vertex坐标位置,利用AddVertex得到新的id值,并将新的id值记录在m_mVertexMapping之中;(5)使用IncreaseRC函数增加对新vertex id的引用; |
值得注意的是,在表3的第(1)步中,必须生成平移矩阵的逆转矩阵,这就产生了一个重大问题:误差积累。如前面所述,平移操作使用一个矩阵M对一系列坐标进行操作,这种情况下,逆操作很明显是使用M-1对同一系列坐标进行。但是,浮点精度问题可能会导致MM-1=1这个数学定义不能满足。因此,反命令执行后的数据与命令执行前的数据不完全一致。在对计算精度要求极高的三维建模软件中,这是用户完全不能接受的。如果使用本发明的方案,UndoMoveVertexList函数就不再实际存在,而是使用由命令中心提供的“备份-恢复”功能实现撤销操作,就不用再担心误差积累问题了。
另外,还有一个潜在的问题:节点的id问题。在表3中,可以发现,为了恢复“原始状态”,创建了新的Vertex,并将其赋值为旧的坐标值。这样,节点的“值”恢复了。但是,节点本身的id并没有恢复,也永远不可能恢复了。执行并撤销命令的前后,节点的id值发生了变化,这在很多情况下都是不能接受的。如果使用传统方法,这个问题需要很复杂的手段才能解决。而使用本发明的方案,由命令中心提供的“备份-恢复”功能实现撤销操作,这个问题也就不存在了。
综上,可以发现,本发明设计的命令系统再分类方法非常有利于三维建模软件命令系统的设计,实际的简化了命令系统,提高了设计效率与可靠性,有效的降低了软件的设计、实现、测试、维护等多个环节的成本。
在实际应用中,命令系统的“撤销-重做”功能可以直接由应用程序的界面提供。如图5所示,目前使用了字符界面显示当前命令执行的情况,在撤销(undo)命令执行之后,再观察命令的执行情况,可以发现有一条命令(wall)已经处于当前命令位置点(>>>>>)之后。
Claims (7)
1、三维模型编辑器建模命令框架设计方法,包括:
命令中心CommandCenter,负责管理所有与命令相关的事务,包括命令的创建、销毁、执行、分析处理、撤销负责具体命令的创建和销毁;
用户请求Client,通过命令中心CommandCenter创建一个具体命令ConcreteCommand对象,并指定它的接收者对象Receiver;
接收者对象Receiver,知道如何实施与执行相关的用户请求操作;
具体命令ConcreteCommand,对调用它的Receiver的操作以执行该请求;
其特征在于:将上述ConcreteCommand分为处理拓扑结构的子命令与处理模型数据的子命令两类,再将处理拓扑结构的子命令分为:
拓扑增加TopoAdd_ConcreteCommand;
拓扑删除TopoRemove_ConcreteCommand;
拓扑移动TopoModify_ConcreteCommand三种子命令,处理模型数据的子命令分为数据修改DataModify_ConcreteCommand一种子命令,同时通过上述4个子命令各自的接口:TopoAdd声明执行拓扑增加操作的接口,TopoRemove声明执行拓扑删除操作的接口,TopoModify声明执行拓扑修改操作的接口及DataModify声明执行数据修改操作的接口,与命令中心接口Command与CommandCenter联络。
2、根据权利要求1所述的三维模型编辑器建模命令框架设计方法,其特征在于:所述的命令管理中心CommandCenter的工作过程为:当用户需要执行一个命令时,Client通过CommandCenter创建一个ConcreteCommand 对象并指定它的Receiver对象,并将ConcreteCommand的拥有权交给CommandCenter对象,在CommandCenter对ConcreteCommand进行分析命令的作用范围并备份作用范围内的数据之后,CommandCenter对象通过调用Command对象的Execute操作来提交一个请求,完成命令执行操作,对于拓扑命令,命令的作用范围是一个模型子树;对于数据命令,命令的作用范围就是模型树的一个节点。备份的数据根据命令的执行顺序形成一个双向链表;当用户需要撤销一个命令时,CommandCenter根据之前储存的备份数据双向链表尾部节点,直接调用Receiver进行恢复,完成命令撤销操作。
3、根据权利要求1所述的三维模型编辑器建模命令框架设计方法,其特征在于:所述的拓扑增加命令指对三维模型树的挂接操作,在命令的执行过程中,命令首先根据用户输入的数据产生一个模型子树,然后将模型子树挂街到主模型树之上。
4、根据权利要求1所述的三维模型编辑器建模命令框架设计方法,其特征在于:所述拓扑删除命令指对三维模型树的分离操作,在命令执行过程中,命令首先根据用户的输入,决定需要删除的子树,然后将模型子树由主模型树上分离。
5、根据权利要求4所述的三维模型编辑器建模命令框架设计方法,其特征在于:所述拓扑删除命令的撤销命令为拓扑增加命令。在删除命令执行之前,由命令中心先对被删除对象进行备份,在需要撤销时,只需简单的将删除的模型子树再增加回去即可。
6、根据权利要求1所述的三维模型编辑器建模命令框架设计方法,其特征在于:所述的拓扑移动命令指对三维模型子树的移动,在命令执行过程为首先用户指定源模型子树以及目标位置,然后将模型子树由源位置分离,再在目标位置挂接。
7、根据权利要求1所述的三维模型编辑器建模命令框架设计方法,其特征在于:所述的数据修改命令不改变三维模型树的拓扑结构,只改变某个或某些结点的内容数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510130614 CN1776616A (zh) | 2005-12-15 | 2005-12-15 | 三维模型编辑器建模命令框架设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510130614 CN1776616A (zh) | 2005-12-15 | 2005-12-15 | 三维模型编辑器建模命令框架设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1776616A true CN1776616A (zh) | 2006-05-24 |
Family
ID=36766156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510130614 Pending CN1776616A (zh) | 2005-12-15 | 2005-12-15 | 三维模型编辑器建模命令框架设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1776616A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605059B (zh) * | 2009-07-14 | 2012-07-04 | 中兴通讯股份有限公司 | 用于处理关联删除的方法和装置 |
CN102736910A (zh) * | 2011-05-11 | 2012-10-17 | 新奥特(北京)视频技术有限公司 | 一种基于插件的通用命令接口定义方法 |
CN108805990A (zh) * | 2018-05-28 | 2018-11-13 | 上海华筑信息科技有限公司 | 基于Unity引擎的三维图形编辑器模型管理系统 |
CN112000321A (zh) * | 2020-09-01 | 2020-11-27 | 杭州宏深科技有限公司 | 适用于三维检测软件的撤销和/或重做实现方法及装置 |
CN113378008A (zh) * | 2021-04-29 | 2021-09-10 | 上海工程技术大学 | 一种支持树形模型的操作回撤方法 |
-
2005
- 2005-12-15 CN CN 200510130614 patent/CN1776616A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605059B (zh) * | 2009-07-14 | 2012-07-04 | 中兴通讯股份有限公司 | 用于处理关联删除的方法和装置 |
CN102736910A (zh) * | 2011-05-11 | 2012-10-17 | 新奥特(北京)视频技术有限公司 | 一种基于插件的通用命令接口定义方法 |
CN102736910B (zh) * | 2011-05-11 | 2017-07-28 | 新奥特(北京)视频技术有限公司 | 一种基于插件的通用命令接口定义方法 |
CN108805990A (zh) * | 2018-05-28 | 2018-11-13 | 上海华筑信息科技有限公司 | 基于Unity引擎的三维图形编辑器模型管理系统 |
CN112000321A (zh) * | 2020-09-01 | 2020-11-27 | 杭州宏深科技有限公司 | 适用于三维检测软件的撤销和/或重做实现方法及装置 |
CN112000321B (zh) * | 2020-09-01 | 2024-06-07 | 杭州宏深科技有限公司 | 适用于三维检测软件的撤销和/或重做实现方法及装置 |
CN113378008A (zh) * | 2021-04-29 | 2021-09-10 | 上海工程技术大学 | 一种支持树形模型的操作回撤方法 |
CN113378008B (zh) * | 2021-04-29 | 2022-10-11 | 上海工程技术大学 | 一种支持树形模型的操作回撤方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Flemming | Case-based design in the SEED system | |
CN1246776C (zh) | 用于管理网络文件系统的方法 | |
CN1153142C (zh) | 通过事务对多个文件实现原子更新的事务文件系统 | |
US8443351B2 (en) | Parallel loops in a workflow | |
CN1299489A (zh) | 利用相关数据库实现非循环定向图形结构的方法 | |
CN1783123A (zh) | 基于资源需求和业务影响的过程执行管理 | |
CN1755647A (zh) | 测试自动化的堆栈分层 | |
CN1959717A (zh) | 订单驱动的海量遥感数据集群化预处理系统及其方法 | |
CN1828530A (zh) | 自动化数据组织 | |
CN1890643A (zh) | 异构型计算机系统间的复杂计算 | |
CN1776616A (zh) | 三维模型编辑器建模命令框架设计方法 | |
CN1429362A (zh) | 通信服务供应方法和设备以及用于开发供应模块的对象编程语言 | |
CN1716249A (zh) | 延迟取出用户定义类型的指定成员的系统和方法 | |
CN1766835A (zh) | 用于在设计和运行时间无缝制作和编辑工作流的框架 | |
CN1866219A (zh) | 基于自动化测试脚本对被测对象进行测试的方法和系统 | |
CN1866250A (zh) | 对系统数据进行管理的方法和系统 | |
CN106446019A (zh) | 一种软件功能处理方法和装置 | |
CN112835714A (zh) | 云边环境中面向cpu异构集群的容器编排方法、系统及介质 | |
Wang et al. | A simulation approach to the process planning problem using a modified particle swarm optimization. | |
CN100346315C (zh) | 基于脚本的三维建模软件自动测试方法 | |
CN101079736A (zh) | 模型化的网格资源定位方法 | |
CN102799960B (zh) | 面向数据模型的并行业务流程异常检测方法 | |
CN1976320A (zh) | 数据访问控制方法及系统 | |
CN111078705A (zh) | 基于Spark平台建立数据索引方法及数据查询方法 | |
CN111638939B (zh) | 一种Kubernetes容器平台应用生命周期的管理系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |